MetAMOS를 처음으로 설치할 때에는 python 2.7과 gcc를 별도로 설치하여 virtualenv 등의 골치아픈 방법으로 사용하느라 그 고생이 이루 말할 수 없었다. 지금은 Linuxbrew를 사용하여 정말 행복한(?) 프로그램 설치 작업을 즐기고 있다.
본 테스트 작업은 “test”라는 계정을 새로 만들어서 실시하였다. — Haeyoung Jeong 2016/11/17 19:17
CentOS 6.8을 기준으로 하되 Linuxbrew를 철저히 이용하여 관리자가 아닌 일반 사용자 수준에서도 프로그램 빌드에 필요한 환경을 손쉽게 갖추는 것을 전제로 기술하였다.
$ cat /etc/centos-release CentOS release 6.8 (Final)
Linuxbrew를 설치하려면 최소한 development tool(yum groupinstall “Development tools”)과 ruby는 미리 깔려 있어야 한다. Linuxbrew 홈페이지를 참조하여 설치를 한 다음 brew doctor를 실행하니 git를 업데이트하라는 메시지가 나온다. brew install git를 하면 glibc, binutils 등 git가 의존하는 패키지가 자동적으로 설치될 것이다. 다음으로는 공식 문서에서 요구하는 prerequisite인 java(6+), perl(5.8.8+), python(2.7.3+), R(2.11.1+ with PNG support), gcc(4.7+), curl 및 wget이 설치되어 있는지 확인하라. gcc -v를 실행하면 linuxbrew를 통해서 5.3.0이 설치되었음을 확인할 수 있다. 현재 내가 쓰는 서버의 패키지 설치 상황은 여기를 참조하라.
다음을 실행하면 python 2.7.12가 설치된다. pip도 이미 설치된 상태이다. Perl module을 편하게 설치하고 싶으면 cpanm도 설치하라. 설치된 패키지의 목록을 확인하려면 brew list, 진단을 위해서는 brew doctor를 실행한다.
$ brew install python $ brew install cpanm $ brew install open-mpi $ pip install --upgrade pip
Linuxbrew가 제공하는 gcc는 버전이 5.x대라서 다소 높은 감이 없지 않다. Linuxbrew 없이 gcc의 버전을 높이려면 소스에서 직접 빌드하거나 devtoolset를 사용하는 방법이 있다. Anaconda를 이용하면 최고한 파이썬 실행 환경은 2.7대로 올릴 수 있다.
MetAMOS 공식 문서를 보면 미리 설치해야 할 Perl module 및 python module이 있다. cpanm을 일반 유저로서 실행하면 관리자만이 쓰기 권한이 있는 디렉토리에 설치하지 못한다는 경고가 뜨지만 무시하라.
$ cpanm File::Copy::Link (나머지 Perl module도 마찬가지 방법으로...) $ pip install cython $ pip install numpy (이걸 먼저 깔아야 matplotlib을 설치할 수 있다) $ pip install matplotlib==1.3.0 (버젼 지정하기; 그러나 아마 빌드에 실패할 것이다 - 아래 참조) $ pip freeze (설치된 라이브러리 확인)
사실은 여기서 설치하지 않아도 나중에 metAMOS의 설치 스크립트를 실행할 때 알아서 설치하기는 한다.
이는 아마도 Linuxbrew로 설치한 gcc 5.3.0과 matplotlib 1.3.0이 서로 맞지 않아서 생기는 문제일 것이다. 그냥 pip install matplotlib이라고 하면 1.5.3이 깔리는데, metAMOS 공식 문서에서는 1.3.0보다 신규한 버전을 깔면 작동을 보장하지 못한다는 글귀가 있다.
설치 과정에서 다양한 DB가 깔리는데 그 용도를 정확히 파악하는 것이 중요하다.
최신 버젼의 설치 파일(v1.5rc3.zip, GitHub for browsing)을 가져다가 압축을 푼다.
python INSTALL.py core를 실행하기 전에 먼저 고려할 사항이 있다. INSTALL.py 스크립트를 몇 가지 고쳐야 한다는 점이다. 물론 이것을 고치지 않는다고 해서 설치가 아예 안된다는 것은 아니다.
CBCB에서 관리하는 프로그램은 ftp://ftp.cbcb.umd.edu/pub/data/metamos/에 위치하는데, 이를 존재하지 않는 경로인ftp://cbcb.umd.edu/pub/data/metamos/로 잘못 표시한 것이 있다. Statistics-Descriptive-3.0203.tar.gz, Reapr_1.0.16.tar.gz, 그리고 FRC_align-master.zip가 그러하다.
googlecode.com에 있던 프로그램(psutil, pysam, prodigal, idba, ea-utils, spareshash)은 이제 더 이상 유효하지 않다. 이것은 인터넷을 적당히 뒤져서 원본 파일을 찾아내어 수작업으로 설치해야만 한다. 다행히 python library는 pip를 이용하여 공식화된 저장소로부터 직접 다운로드하여 설치할 수 있다.
metAMOS 설치 테스트를 너무 자주하게 되어서 아예 CBCB 사이트의 미러를 만들어 버렸다. 하지만 이 사이트는 방화벽 내부에 설치되어서 외부에서는 접근이 안된다.
유전체 데이터가 점점 증가하고 NCBI genome ftp site의 구조가 변경되면서 bacterial genome sequence를 전부 모아놓은 ftp://ftp.ncbi.nih.gov/genomes/Bacteria/all.fna.tar.gz는 이제 존재하지 않는다(관련 블로그 문서, NCBI gebines download (FTP) FAQ). 대신 ftp://ftp.ncbi.nih.gov/genomes/archive/old_refseq/Bacteria/ 하위를 뒤지면 예전 genome sequence file이 보관되어 있으니 여기에 있는 all.fna.tar.gz를 활용하면 된다. 이 파일은 갱신되지 않으니 유의하라. INSTALL.py를 다음과 같이 수정하면 된다(ftpSiteOld라는 새로운 변수를 설정). Virus 관련 파일은 아직 다운로드 URL이 변경되지 아니하였다.
all.fna.tar.gz 파일은 quast 및 kraken 설치(아랫부분 참조)시 전부 필요하다.
# since quast requires a reference, also download refseq ftpSite = "ftp://ftp.ncbi.nih.gov/genomes/" ftpSiteOld = "ftp://ftp.ncbi.nih.gov/genomes/archive/old_refseq/" file = "all.fna.tar.gz" if not os.path.exists("./Utilities/DB/refseq/") and not nodbs: print "Downloading refseq genomes (Bacteria/%s, Viruses/%s)..."%(file,file) print "\tThis file is large and may take time to download" os.system("curl -L %s/Bacteria/%s -o bacteria.tar.gz"%(ftpSiteOld, file)) os.system("curl -L %s/Viruses/%s -o viruses.tar.gz"%(ftpSite, file))
all.fna.tar.gz는 quast를 설치하겠다고 선언했을 때(packagesToInstall) 비로소 다운로드한다. 다시 말하자면 core가 아니라 iMetAMOS workflow 설치를 지정해야만 깔린다는 것이다. 그런데 INSTALL.py 내의 all.fna.tar.gz 다운로드 경로를 수정하는 것으로 모든 문제가 해결되지 않는다. 왜냐하면 INSTALL.py가 호출하는 다른 스크립트가 또 all.fna.tar.gz를 다운로드하려고 시도하기 때문이다. 모든 스크립트를 뒤져서 all.fna.tar.gz를 옛날 URL에서 찾는 것들이 무엇이 있는지를 조사해 보았다(결과). 이걸 다 고쳐야 한단 말인가? 상당히 고민스럽다.
오류를 수정했다고 가정하고 이제부터 본격적인 설치 작업에 착수해 보자. 우선 맛보기로서 core를 설치한다.
$ pip freeze backports-abc==0.5 blinker==1.4 certifi==2016.9.26 configobj==5.0.6 cycler==0.10.0 Cython==0.25.1 enum34==1.1.6 matplotlib==1.5.3 nose==1.3.7 numpy==1.11.2 psutil==0.6.1 pyparsing==2.1.10 pysam==0.9.1.4 python-dateutil==2.6.0 pytz==2016.7 singledispatch==3.4.0.3 six==1.10.0 tornado==4.4.2 $ python INSTALL.py core <<Welcome to metAMOS install>> Selected to install workflowName: CORE. Will automatically install: Pysam Setuptools Fastqc Matplotlib Metavelvet Lap Kronatools Cython Sra Velvet Velvet-Sc Kraken Psutil Uniprot Amos Numpy MetAMOS would like to record anonymous usage statistics, is this ok ? Enter Y/N: y
특별히 시간이 오래 걸리는 것은 다음의 DB 설치 과정이다.
설치 여부를 묻는 것은 다음의 프로그램 혹은 DB이다.
isolate genome assembly를 위한 workflow인 iMetAMOS를 설치해 보자.
$ python INSTALL.py iMetAMOS
$ python INSTALL.py metaphyler (FCP/NB를 위한 genome model download 여부 문의; 설치에 시간 소요) (PhyloSift bianry 설치 여부 문의; marker + refseq protein DB 다운로드에 장시간 소요) <= 특히 fastacmd 실행에 많은 시간이 걸림
이제 옵션 없이 설치 스크립트를 실행해 보자.
$ python INSTALL.py <<Welcome to metAMOS install>> Selected to install workflowName: CORE. Selected to install workflowName: OPTIONAL. Selected to install workflowName: IMETAMOS. Will automatically install: Pysam Fastqc Ca Ale Sga Velvet-Sc Metaphyler Phylosift Metavelvet Velvet Soap2 Frcbam Quast Eautils Ray Numpy Freebayes Fcp Edena Uniprot Cython Cgal Mira Matplotlib Prokka Idba Cmake Lap Masurca Kronatools Abyss Sra Spades Kraken Psutil Setuptools Amos Phmmer Kmergenie Reapr Checking whether refseq_protein is complete. Expecting 27 partitions. Run setup.py.. /home/test/.linuxbrew/Cellar/python/2.7.12_3/lib/python2.7/site-packages/setuptools/dist.py:285: UserWarning: Normalizing '1.0b' to '1.0b0' normalized_version, running install_scripts running egg_info writing metAMOS.egg-info/PKG-INFO writing top-level names to metAMOS.egg-info/top_level.txt writing dependency_links to metAMOS.egg-info/dependency_links.txt reading manifest file 'metAMOS.egg-info/SOURCES.txt' writing manifest file 'metAMOS.egg-info/SOURCES.txt' running build_scripts copying build/scripts-2.7/initPipeline.py -> /home/test/metAMOS-1.5rc3 copying build/scripts-2.7/runPipeline.py -> /home/test/metAMOS-1.5rc3 changing mode of /home/test/metAMOS-1.5rc3/initPipeline.py to 775 changing mode of /home/test/metAMOS-1.5rc3/runPipeline.py to 775 running build_ext skipping './src/preprocess.c' Cython extension (up-to-date) skipping './src/annotate.c' Cython extension (up-to-date) skipping './src/fannotate.c' Cython extension (up-to-date) skipping './src/mapreads.c' Cython extension (up-to-date) skipping './src/findorfs.c' Cython extension (up-to-date) skipping './src/findscforfs.c' Cython extension (up-to-date) skipping './src/scaffold.c' Cython extension (up-to-date)
여기까지 왔으면 python INSTALL.py optional을 해도 더 이상 설치되는 것이 없다.
메모리가 100 GB 미만이거나 nodbs를 지정하지 않은 경우(if (mem < 100) and not nodbs: - psutil은 메모리 측정에 필요) minikraken DB(파일 다운로드, kraken 웹사이트)를 설치하지만 그렇지 않다면 all.fna.tar.gz을 내려받아서 직접 custom kraken DB를 만들도록 되어있다. Utilities/cpp/Linux-x86_64/kraken/bin/kraken-build 스크립트 내부에서 download_genomic_library.sh 스크립트를 불러서 실행하는데, 바로 여기에 옛날 주소의 all.fna.tar.gz가 들어있는 것이다. INSTALL.py 실행 중에 kraken 소스를 내려받아서 설치하도록 되어있으므로, 이를 동시에 고칠 수는 없는 노릇이다. 그러면 해결 방법은 다음과 같다.
$ bin/kraken-build --standard --threads $NUM_THREDS --db $METAMOSPATH/Utilities/kraken (장시간 소요) $ ls -l /home/test/metAMOS-1.5rc3/Utilities/DB 합계 148994540 -rw-rw-r-- 1 test test 8589934608 2016-11-17 20:33 database.idx -rw-rw-r-- 1 test test 71973546172 2016-11-17 20:31 database.jdb -rw-rw-r-- 1 test test 71973546172 2016-11-17 21:17 database.kdb -rw-rw-r-- 1 test test 16389717 2016-11-17 20:53 file2taxon.map -rw-rw-r-- 1 test test 16952797 2016-11-17 20:52 gi2file.map -rw-rw-r-- 1 test test 0 2016-11-17 21:21 lca.complete drwxrwxr-x 4 test test 4096 2016-11-17 19:54 library drwxrwxr-x 2 test test 4096 2016-11-17 17:24 taxonomy
ea-utils는 GitHub로 옮겨갔으며 버전과 디렉토리 구조도 달라졌다. 일단 파일명은 ExpressionAnalysis-ea-utils-27a4809.tar.gz이고 압축을 풀면 clipper라는 하위 디렉토리가 아래에 소스가 있다. 이를 ea-utils.1.1.2-537라는 이름의 폴더로 옮겨서 잠시 눈속임(?)을 하여 설치를 진행하였다. 가장 가까와 보이는 버젼으로는 ea-utils.1.1.2-805.zip을 구해 놓은 것이 있다.
metAMOS-1.5rc3/Test 디렉토리에는 테스트를 위한 갖가지 스크립트가 수록되어있다. 이를 사용하여 설치 상태가 완벽한지를 알아보도록 하자. run_pipeline_test.sh를 실행하면 Carsonella 유래의 10만개의 read를 조립하여 3개의 contig(단일 스캐폴드)를 만든 뒤 이에 대한 분석 작업을 실시하게 된다.
$ cd Test $ cat run_pipeline_test.sh #/bin/sh ../initPipeline -f -m carsonella_pe_filt.fna -d test1 -i 500:3500 ../runPipeline -a soap -c kraken -g fraggenescan -p 15 -d test1 -k 55 -f Assemble,MapReads,FindORFS,Annotate,FunctionalAnnotation,Propagate,Classify,Abundance,FindScaffoldORFS -n FunctionalAnnotation $ ./run_pipeline_test.sh Warning: Celera Assembler is not found, some functionality will not be available Warning: BLASR is not found, some functionality will not be available Warning: Newbler is not found, some functionality will not be available Warning: FRCbam is not found, some functionality will not be available Project dir /home/test/metAMOS-1.5rc3/Test/test1 successfully created! Use runPipeline.py to start Pipeline [Steps to be skipped]: set(['FunctionalAnnotation', 'FindRepeats']) Starting Task = runpipeline.RUNPIPELINE Starting metAMOS pipeline .. Starting Task = findscaffoldorfs.FINDSCAFFOLDORFS ***************************************************************** *************************ERROR*********************************** During findscaffoldorfs, the following command failed with return code -11: >> /home/test/metAMOS-1.5rc3/Utilities/cpp/Linux-x86_64/FragGeneScan -s /home/test/metAMOS-1.5rc3/Test/test1/Scaffold/out/proba.linearize.scaffolds.final -o /home/test/metAMOS-1.5rc3/Test/test1/FindScaffoldORFS/out/proba.orfs -w 0 -t complete *************************ERROR*********************************** ***************************************************************** rm: cannot remove `/home/test/metAMOS-1.5rc3/Test/test1/Logs/findscaffoldorfs.ok': 그런 파일이나 디렉터리가 없습니다 Oops, MetAMOS finished with errors! see text in red above for details.
설치되지 않은 프로그램에 대한 경고(Celera Assembler, BLASR, Newbler, FRCbam)는 나중에 검토하기로 하자. 당장 필수적인 것은 아니기 때문이다. 십중팔구는 FindScaffoldORFS 단계에서 에러를 발생하면서 비정상 종료를 할 것이다. 이는 FragGeneScan 바이너리의 호환성에 의한 문제로서 metAMOS의 GitHub 사이트에서도 여러차례 리포트가 된 상태이다. 공식적인 해결 방안은 FragGeneScan보다 우수한 프로그램인 MetaGeneMark의 실행파일인 gmhmmp(다운로드 사이트)를 각자 입수하여 쓰는 것이다. 라이센스 발급 문제로 인하여 MetaGeneMark를 metAMOS 배포판에 넣을 수가 없었던 것으로 생각된다. 예전에 작성한 블로그 글을 참조하여 MetaGeneMark를 사용 가능하게 만든 다음, run_pipeline_test.sh 내의 -g fraggenescan을 -g metagenemark로 고친다. 바로 직전 러닝에서 만들어진 test1 디렉토리를 제거한 뒤 다시 run_pipeline_test.sh를 실행해 본다.
이번에는 끝까지 잘 진행되면서 결과 파일(metAMOS-1.5rc3/Test/test1/Postprocess/out/html/summary.html)이 자동으로 웹브라우저에 나타난다.
그러나 주의하라. 아직 해결되지 않은 문제가 있다.
Classifier(-c 옵션)을 FCP 또는 metaphyler로 바꾸어 보았다.
Annotation coverage가 두 결과 사이에서 일치하지는 않지만 아무 것도 나오지 않은 kraken과는 매우 다르다. 특히 FCP를 사용한 것에서는 classify 결과도 제대로 표현되었다.
minikraken DB를 다운로드하여 압축을 푼 뒤, Utilities/DB/kraken으로 심볼릭 링크(원본: minikraken_20140104)를 하여 다시 run_pipeline.sh를 실행하였다. 이번에는 Annotate와 Classify 결과가 생성되었다. 그렇다면 수작업으로 만든 kraken DB에 문제가 있다는 뜻이 된다.
FRCbam은 내 경험으로는 metAMOS 설치 전체 과정에서 가장 까다로운 것으로 생각된다. boost library를 같이 설치하는 과정부터가 쉽지 않고, 궁합이 맞는 gcc를 찾는 것도 어렵다. 이미 Linuxbrew를 이용항 gcc v5.3.0을 갖춘 상태라서 이것만을 하위 버전으로 만드는 것은 상당히 골치가 아프다. 만약 /usr/bin/gcc와 /usr/bin/g++을 이용하여 INSTALL.py 스크립트를 실행할 수만 있다면 에러 없이 FRCbam을 설치할 수 있을지도 모른다. 아직 테스트를 해 보지는 않았다.
$ export CC=/usr/bin/gcc $ export CPP=/usr/bin/cpp $ export CXX=/usr/bin/c++
또는 scl enable devtoolset-1.1 bash을 실행하여 gcc v4.7.2 상태로 전환한 뒤 INSTALL.py를 실행한다면? 이건 나중을 위한 숙제로 남기자. 나는 다음과 같은 꼼수를 이용하였다.
'su'가 아니라 'su -'를 실행하면 gcc 4.4.7을 쓸 수 있다. 이 상태에서 boost library 1.54.0을 /usr/local/boost_1_54_0에 압축 해제하여 다음과 같은 방법으로 설치한다. 참고한 사이트는 여기이다.
# cd /usr/local/boost_1_54_0 # ./bootstrap.sh # ./b2 # ./bjam link=static stage (이것이 대단히 중요하다)
root 상태를 그대로 유지하면서(즉 gcc v4.4.7을 사용한다는 의미) FRC_align을 설치한다. 만들어진 FRC 바이너리를 metAMOS-1.5rc3/Utilities/cpp/Linux-x86_64/FRCbam/bin/ 디렉토리에 복사한다. 그러나 나중에 test_ima.sh를 실행해 보니 입축력 인터페이스가 바뀌어서 또 에러가 난다. 확인된 사용 가능 버전은 FRC_align-3398ca469b2077d6672b85317eee6fea171b6a27이다. 이것은 CBCB의 metAMOS 사이트에 있는 이 압축파일에 해당한다.
요지는 바로 이것이다. gcc v5.3.0이 결코 만능은 아니라는 것!
run_pipeline_test.sh 스크립트와는 달리, test_ima.sh는 test_ima.ini에서 모든 작업 내용을 설정한다는 것이 다르다. test_ima.sh 스크립트가 하는 것은 결과 프로젝트와 워크플로우를 선언하고 사용할 thread 수를 결정하는 것 정도이다. 이 테스트 러닝에서는 read file(carsonella_pe_filt.fna.gz)을 다운로드하여 전처리(kmer Genie; best k-mer 및 genome size 예측)를 한 뒤 여러가지 de novo assembler로 조립을 한 다음, 이를 reference assembly(Candidatus_Carsonella_ruddii_uid58773.fna)와 비교하여 최선의 것을 선택한 뒤(re-mapping이 필요) 후속 분석 작업을 진행한다. 원래 reference assembly까지 인터넷에서 다운로드하도록 파일이 짜여져 있으나, 앞에서 여러차례 소개했듯이 이미 유효하지 않은 URL이 되었기에 다른 방법으로 입수하여 실행 스크립트에 투입하였다. 선택된 assembly와 가장 가까운 genome을 reference genome DB로부터 recruit하는 것도 중요한 기능 중 하나이다.
FRCbam을 빌드하여 설치하였으므로 실행 시 나오는 첫 경고문에는 Celera Assembler, Newbler, BLASR이 없다고만 표시된다.
#/bin/sh ../initPipeline -d test_ima -W test_ima ../runPipeline -d test_ima -p 8
inherit:iMetAMOS modify:True command: -q -u -r -v -I -c kraken -g metagenemark -p 16 -a spades,idba,mira,velvet-sc,metavelvet,abyss,ray,edena,sga,masurca,soap,soap2,velvet -t metamos -f Postprocess,FunctionalAnnotation -z phylum asmcontigs: Candidatus_Carsonella_ruddii_uid58773.fna lib1format: fasta lib1mated: True lib1innie: True lib1interleaved: True lib1f1: ftp://ftp.cbcb.umd.edu/pub/data/metamos/carsonella_pe_filt.fna.gz,2000,5000,3500,500
http://genoglobe.kr/data/2016-11-18_test_ima_out/html/summary.html ← metAMOS-1.5rc3/Test/test_ima/Postprocess/out/ 디렉토리만을 옮긴 것임.
metAMOS process에서 Annotate와 Functional Annotate는 엄격하게 구분된다. Annotate는 바로 taxonomic classification을 의미한다. 현재 지원되는 소프트웨어는 FCP, Kraken(default), 그리고 Phylosift가 있다. 설치 단계에서 INSTALL.py nodbs를 지정하거나 혹은 메모리의 크기가 100GB 미만이면 minikraken을 설치하게 되어있다. INSTALL.py에서 설정된 다운로드 위치는 다운로드 여기이다.
이것은 INSTALL.py를 통한 자동 업데이트 기능은 없는 것으로 보인다. nodbs 옵션을 주지 않은 상태에서 tax_key.tab 파일이 없을 떄에만 설치가 된다. 필요하다면 다음을 이따금 실행하면 될 것이다. ${METAMOS_ROOT}KronaTools/taxonomy/taxonomy.tab과 ${METAMOS_ROOT}/Utilities/DB/tax_key.tab이 무엇이 다른지 비교해 보라. NCBI taxonomy DB를 kraken과 krona 설치작업 양쪽에서 따로 내려받는 것은 낭비라고 생각된다.
$ cd ${METAMOS_ROOT}/KronaTools $ ./updateTaxonomy.sh >>>>> Updating GI to taxID dump (nucleotide)... >>>>> Unzipping GI to taxID dump (nucleotide)... >>>>> Updating GI to taxID dump (protein)... >>>>> Unzipping GI to taxID dump (protein)... >>>>> Updating Taxonomy dump... >>>>> Unzipping Taxonomy dump... >>>>> Creating combined GI to taxID index... >>>>> Extracting taxonomy info... >>>>> Cleaning up... >>>>> Finished. $ ls -l taxonomy 합계 4390084 -rw-rw-r-- 1 hyjeong hyjeong 4417218044 2016-11-24 13:58 gi_taxid.dat -rw-rw-r-- 1 hyjeong hyjeong 78222171 2016-11-24 13:59 taxonomy.tab $ cd .. $ cat KronaTools/taxonomy/taxonomy.tab | awk -F "\t" '{print $1"\t"$NF}' > ./Utilities/DB/tax_key.tab
INSTALL.py를 실행할 때마다(nodbs가 설정되지 않은 조건) Christiam Camacho의 스크립트인 metAMOS-1.53rc/Utilities/perl/update_blastdb.pl refseq_protein이 실행되어 DB를 최신 것으로 바꾼다.
이것은 functional annotation을 위한 DB이다. 한번 설치되면 업데이트되지 않는다. 다운로드 사이트는 CBCB이니 업데이트될 이유가 없다(uniprot.tar.gz, 548 Mb). 이것이 옛날 것이라고 해서 functional annotation에 특별히 실패할 가능성은 거의 존재하지 않는다. 최신 것을 UniProt download center에서 받고 싶다면 클릭하여 들어가거나, FASTA 파일이 필요하면 이 링크를 활용하여 BLAST DB를 생성하면 된다.