metamos_installation
Differences
This shows you the differences between two versions of the page.
metamos_installation [2016/11/24 15:28] – [Kraken DB] hyjeong | metamos_installation [2021/03/17 13:09] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== MetAMOS의 설치와 활용 ====== | ||
+ | ===== 개요 ===== | ||
+ | * [논문] MetAMOS: a modular and open source metagenomic assembly and analysis pipeline. [[https:// | ||
+ | * [공식 문서] http:// | ||
+ | * [iMetAMOS 논문] Automated ensemble assembly and validation of microbial genomes. [[https:// | ||
+ | * [내 블로그에서 발췌: **매우 중요함**] [[http:// | ||
+ | |||
+ | MetAMOS를 처음으로 설치할 때에는 python 2.7과 gcc를 별도로 설치하여 virtualenv 등의 골치아픈 방법으로 사용하느라 그 고생이 이루 말할 수 없었다. 지금은 Linuxbrew를 사용하여 정말 행복한(? | ||
+ | ===== 사전 준비 ===== | ||
+ | |||
+ | ==== 설치 환경 ==== | ||
+ | ** 본 테스트 작업은 " | ||
+ | |||
+ | CentOS 6.8을 기준으로 하되 [[http:// | ||
+ | |||
+ | $ cat / | ||
+ | CentOS release 6.8 (Final) | ||
+ | |||
+ | Linuxbrew를 설치하려면 최소한 development tool(yum groupinstall " | ||
+ | |||
+ | === Python === | ||
+ | 다음을 실행하면 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에 의존하기 싫다면? === | ||
+ | Linuxbrew가 제공하는 gcc는 버전이 5.x대라서 다소 높은 감이 없지 않다. Linuxbrew 없이 gcc의 버전을 높이려면 소스에서 직접 빌드하거나 devtoolset를 사용하는 방법이 있다. [[https:// | ||
+ | |||
+ | === Prerequisite 설치 === | ||
+ | MetAMOS 공식 문서를 보면 미리 설치해야 할 Perl module 및 python module이 있다. cpanm을 일반 유저로서 실행하면 관리자만이 쓰기 권한이 있는 디렉토리에 설치하지 못한다는 경고가 뜨지만 무시하라. | ||
+ | |||
+ | $ cpanm File:: | ||
+ | $ pip install cython | ||
+ | $ pip install numpy (이걸 먼저 깔아야 matplotlib을 설치할 수 있다) | ||
+ | $ pip install matplotlib==1.3.0 (버젼 지정하기; | ||
+ | $ pip freeze (설치된 라이브러리 확인) | ||
+ | |||
+ | 사실은 여기서 설치하지 않아도 나중에 metAMOS의 설치 스크립트를 실행할 때 알아서 설치하기는 한다. | ||
+ | |||
+ | === matplotlib 1.3.0 설치가 안되는 문제 === | ||
+ | |||
+ | 이는 아마도 Linuxbrew로 설치한 gcc 5.3.0과 matplotlib 1.3.0이 서로 맞지 않아서 생기는 문제일 것이다. 그냥 pip install matplotlib이라고 하면 1.5.3이 깔리는데, | ||
+ | |||
+ | === 주의할 사항 === | ||
+ | 설치 과정에서 다양한 DB가 깔리는데 그 용도를 정확히 파악하는 것이 중요하다. | ||
+ | |||
+ | ===== 설치 ===== | ||
+ | |||
+ | 최신 버젼의 설치 파일([[https:// | ||
+ | |||
+ | ==== INSTALL.py의 오류 ==== | ||
+ | |||
+ | python INSTALL.py core를 실행하기 전에 먼저 고려할 사항이 있다. INSTALL.py 스크립트를 몇 가지 고쳐야 한다는 점이다. 물론 이것을 고치지 않는다고 해서 설치가 아예 안된다는 것은 아니다. | ||
+ | === 프로그램 다운로드 URL의 오류 === | ||
+ | == 1. CBCB(Center for Bioinformatics and Computational Biology) == | ||
+ | CBCB에서 관리하는 프로그램은 ftp:// | ||
+ | |||
+ | == 2. 다른 사이트의 프로그램 == | ||
+ | googlecode.com에 있던 프로그램(psutil, | ||
+ | |||
+ | metAMOS 설치 테스트를 너무 자주하게 되어서 아예 CBCB 사이트의 [[http:// | ||
+ | |||
+ | === 더 이상 존재하지 않는 DB === | ||
+ | 유전체 데이터가 점점 증가하고 NCBI genome ftp site의 구조가 변경되면서 bacterial genome sequence를 전부 모아놓은 ftp:// | ||
+ | |||
+ | **all.fna.tar.gz** 파일은 quast 및 kraken 설치(아랫부분 참조)시 전부 필요하다. | ||
+ | |||
+ | # since quast requires a reference, also download refseq | ||
+ | ftpSite = " | ||
+ | ftpSiteOld = " | ||
+ | file = " | ||
+ | if not os.path.exists(" | ||
+ | print " | ||
+ | print " | ||
+ | os.system(" | ||
+ | os.system(" | ||
+ | |||
+ | **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에서 찾는 것들이 무엇이 있는지를 조사해 보았다([[Scripts requiring all.fna.tar.gz|결과]]). 이걸 다 고쳐야 한단 말인가? 상당히 고민스럽다. | ||
+ | ==== INSTALL.py의 실행 ==== | ||
+ | |||
+ | 오류를 수정했다고 가정하고 이제부터 본격적인 설치 작업에 착수해 보자. 우선 맛보기로서 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 | ||
+ | << | ||
+ | Selected to install workflowName: | ||
+ | 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 설치 과정이다. | ||
+ | |||
+ | * NCBI taxonomy 자료(metAMOS-1.5rc3/ | ||
+ | * uniprot_sprot.fasta(metAMOS-1.5rc3/ | ||
+ | |||
+ | 설치 여부를 묻는 것은 다음의 프로그램 혹은 DB이다. | ||
+ | |||
+ | ==== optional program (or workflow)의 설치 ==== | ||
+ | isolate genome assembly를 위한 workflow인 iMetAMOS를 설치해 보자. | ||
+ | |||
+ | $ python INSTALL.py iMetAMOS | ||
+ | |||
+ | * Unordered List Itemquast 설치 직후에 비로소 refseq genomes(Bacteria/ | ||
+ | |||
+ | $ python INSTALL.py metaphyler | ||
+ | (FCP/NB를 위한 genome model download 여부 문의; 설치에 시간 소요) | ||
+ | (PhyloSift bianry 설치 여부 문의; marker + refseq protein DB 다운로드에 장시간 소요) | ||
+ | <= 특히 fastacmd 실행에 많은 시간이 걸림 | ||
+ | |||
+ | 이제 옵션 없이 설치 스크립트를 실행해 보자. | ||
+ | |||
+ | $ python INSTALL.py | ||
+ | << | ||
+ | Selected to install workflowName: | ||
+ | Selected to install workflowName: | ||
+ | Selected to install workflowName: | ||
+ | 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.. | ||
+ | / | ||
+ | normalized_version, | ||
+ | running install_scripts | ||
+ | running egg_info | ||
+ | writing metAMOS.egg-info/ | ||
+ | writing top-level names to metAMOS.egg-info/ | ||
+ | writing dependency_links to metAMOS.egg-info/ | ||
+ | reading manifest file ' | ||
+ | writing manifest file ' | ||
+ | running build_scripts | ||
+ | copying build/ | ||
+ | copying build/ | ||
+ | changing mode of / | ||
+ | changing mode of / | ||
+ | running build_ext | ||
+ | skipping ' | ||
+ | skipping ' | ||
+ | skipping ' | ||
+ | skipping ' | ||
+ | skipping ' | ||
+ | skipping ' | ||
+ | skipping ' | ||
+ | | ||
+ | 여기까지 왔으면 python INSTALL.py optional을 해도 더 이상 설치되는 것이 없다. | ||
+ | | ||
+ | ==== 문제점 발견 ==== | ||
+ | === kraken-build 과정에서 옛날 all.fna.tar.gz 다운로드 시도 === | ||
+ | {{ : | ||
+ | 메모리가 100 GB 미만이거나 nodbs를 지정하지 않은 경우(if (mem < 100) and not nodbs: - psutil은 메모리 측정에 필요) minikraken DB([[https:// | ||
+ | |||
+ | - INSTALL.py를 중간에 오류가 발생한 상태로(all.fna.tar.gz를 다운로드하지 못했다고 해서 install 과정 전체가 중단되지는 않는다) 일단 끝까지 가도록 한 다음, minikraken을 수동으로 설치한다. | ||
+ | - 또는 kraken 패키지의 download_genomic_library.sh 내의 all.fna.tar.gz 파일 주소를 고치고 나서 다음 명령을 직접 실행한다. 단, kraken DB를 만들려면 jellyfish v1.x가 필요하므로 metAMOS 환경에서 설치된 jellyfish binary가 $PATH에 포함되도록 해야만 한다. 상당히 시간이 많이 걸리니 각오하라! | ||
+ | |||
+ | $ bin/ | ||
+ | $ ls -l / | ||
+ | 합계 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.1.1.2-537.tar.gz가 더 이상 존재하지 않음 === | ||
+ | |||
+ | ea-utils는 [[https:// | ||
+ | |||
+ | ===== 첫 테스트 러닝(run_pipeline_test.sh) ===== | ||
+ | metAMOS-1.5rc3/ | ||
+ | |||
+ | $ cd Test | ||
+ | $ cat run_pipeline_test.sh | ||
+ | #/bin/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 / | ||
+ | Use runPipeline.py to start Pipeline | ||
+ | [Steps to be skipped]: | ||
+ | Starting Task = runpipeline.RUNPIPELINE | ||
+ | Starting metAMOS pipeline | ||
+ | .. | ||
+ | Starting Task = findscaffoldorfs.FINDSCAFFOLDORFS | ||
+ | ***************************************************************** | ||
+ | *************************ERROR*********************************** | ||
+ | During findscaffoldorfs, | ||
+ | >> / | ||
+ | *************************ERROR*********************************** | ||
+ | ***************************************************************** | ||
+ | rm: cannot remove `/ | ||
+ | Oops, MetAMOS finished with errors! see text in red above for details. | ||
+ | |||
+ | 설치되지 않은 프로그램에 대한 경고(Celera Assembler, BLASR, Newbler, FRCbam)는 나중에 검토하기로 하자. 당장 필수적인 것은 아니기 때문이다. 십중팔구는 **FindScaffoldORFS 단계**에서 에러를 발생하면서 비정상 종료를 할 것이다. 이는 FragGeneScan 바이너리의 호환성에 의한 문제로서 metAMOS의 GitHub 사이트에서도 여러차례 리포트가 된 상태이다. 공식적인 해결 방안은 FragGeneScan보다 우수한 프로그램인 MetaGeneMark의 실행파일인 gmhmmp([[http:// | ||
+ | |||
+ | 이번에는 끝까지 잘 진행되면서 결과 파일(metAMOS-1.5rc3/ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 그러나 주의하라. 아직 해결되지 않은 문제가 있다. | ||
+ | * Abundance는 100% Gammaproteobacteria로 제대로 된 결과가 나왔지만 | ||
+ | * Annotate(taxonomic classification; | ||
+ | * Classify에서는 세 개의 contig가 전부 unknown으로 나타난다. | ||
+ | |||
+ | ==== Classifier 바꾸어보기 ==== | ||
+ | Classifier(-c 옵션)을 FCP 또는 metaphyler로 바꾸어 보았다. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Annotation coverage가 두 결과 사이에서 일치하지는 않지만 아무 것도 나오지 않은 kraken과는 매우 다르다. 특히 FCP를 사용한 것에서는 classify 결과도 제대로 표현되었다. | ||
+ | |||
+ | ==== minikraken을 사용하면 문제가 해결될까? | ||
+ | minikraken DB를 다운로드하여 압축을 푼 뒤, Utilities/ | ||
+ | |||
+ | [[custom kraken DB test]] | ||
+ | |||
+ | ==== FRCbam 설치 문제 ==== | ||
+ | |||
+ | FRCbam은 내 경험으로는 metAMOS 설치 전체 과정에서 가장 까다로운 것으로 생각된다. boost library를 같이 설치하는 과정부터가 쉽지 않고, 궁합이 맞는 gcc를 찾는 것도 어렵다. 이미 Linuxbrew를 이용항 gcc v5.3.0을 갖춘 상태라서 이것만을 하위 버전으로 만드는 것은 상당히 골치가 아프다. 만약 / | ||
+ | |||
+ | $ export CC=/ | ||
+ | $ export CPP=/ | ||
+ | $ export CXX=/ | ||
+ | |||
+ | 또는 **scl enable devtoolset-1.1 bash**을 실행하여 gcc v4.7.2 상태로 전환한 뒤 INSTALL.py를 실행한다면? | ||
+ | |||
+ | === 1. boost library 1.54.0 설치(FRC_align을 위한 필수 사항) === | ||
+ | ' | ||
+ | |||
+ | # cd / | ||
+ | # ./ | ||
+ | # ./b2 | ||
+ | # ./bjam link=static stage (이것이 대단히 중요하다) | ||
+ | |||
+ | === 2. FRC_align 설치 === | ||
+ | |||
+ | root 상태를 그대로 유지하면서(즉 gcc v4.4.7을 사용한다는 의미) [[https:// | ||
+ | |||
+ | 요지는 바로 이것이다. gcc v5.3.0이 결코 만능은 아니라는 것! | ||
+ | |||
+ | ===== iMetAMOS test(test_ima.sh) ===== | ||
+ | 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이 필요) 후속 분석 작업을 진행한다. | ||
+ | |||
+ | FRCbam을 빌드하여 설치하였으므로 실행 시 나오는 첫 경고문에는 Celera Assembler, Newbler, BLASR이 없다고만 표시된다. | ||
+ | ==== 사전 점검 ==== | ||
+ | - FRCbam binary가 준비되었는가? | ||
+ | - metAMOS-1.5rc3/ | ||
+ | - test_ima.ini에서는 NC_008512.fna의 URL이 선언되었다. 그러나 이는 더 이상 유효한 URL이 아니므로, | ||
+ | - prokka에 딸려온 **cmscan**과 **phmmer**이 / | ||
+ | - Classification용 kraken DB는 miniKraken으로 전환하였는가? | ||
+ | |||
+ | ==== test_ima.sh ==== | ||
+ | #/bin/sh | ||
+ | ../ | ||
+ | ../ | ||
+ | | ||
+ | ==== test_ima.ini (metAMOS-1.5rc3/ | ||
+ | inherit: | ||
+ | modify:True | ||
+ | command: -q -u -r -v -I -c kraken -g metagenemark -p 16 -a spades, | ||
+ | asmcontigs: | ||
+ | lib1format: | ||
+ | lib1mated: | ||
+ | lib1innie: | ||
+ | lib1interleaved: | ||
+ | lib1f1: ftp:// | ||
+ | |||
+ | ==== 결과 ==== | ||
+ | http:// | ||
+ | |||
+ | ===== Database update ===== | ||
+ | |||
+ | ==== Kraken DB ==== | ||
+ | metAMOS process에서 Annotate와 Functional Annotate는 엄격하게 구분된다. Annotate는 바로 taxonomic classification을 의미한다. 현재 지원되는 소프트웨어는 FCP, Kraken(default), | ||
+ | |||
+ | === MIDAS DB는 어떠한가? | ||
+ | * An integrated metagenomics pipeline for strain profiling reveals novel patterns of bacterial transmission and biogeography ([[http:// | ||
+ | * https:// | ||
+ | ==== KronaTools taxonomy data ==== | ||
+ | 이것은 INSTALL.py를 통한 자동 업데이트 기능은 없는 것으로 보인다. nodbs 옵션을 주지 않은 상태에서 tax_key.tab 파일이 없을 떄에만 설치가 된다. 필요하다면 다음을 이따금 실행하면 될 것이다. ${METAMOS_ROOT}KronaTools/ | ||
+ | |||
+ | $ cd ${METAMOS_ROOT}/ | ||
+ | $ ./ | ||
+ | >>>>> | ||
+ | >>>>> | ||
+ | >>>>> | ||
+ | >>>>> | ||
+ | >>>>> | ||
+ | >>>>> | ||
+ | >>>>> | ||
+ | >>>>> | ||
+ | >>>>> | ||
+ | >>>>> | ||
+ | $ 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 | ||
+ | $ cd .. | ||
+ | $ cat KronaTools/ | ||
+ | ==== RefSeq protein ==== | ||
+ | INSTALL.py를 실행할 때마다(nodbs가 설정되지 않은 조건) Christiam Camacho의 스크립트인 metAMOS-1.53rc/ | ||
+ | |||
+ | ==== Uniprot/ | ||
+ | 이것은 functional annotation을 위한 DB이다. 한번 설치되면 업데이트되지 않는다. 다운로드 사이트는 CBCB이니 업데이트될 이유가 없다([[ftp:// | ||
+ | |||
+ | |||
+ | |||
+ | ===== 해결해야 할 문제점 ===== | ||
+ | - **PhyloSift** --thread 8에서는 잘 작동하지만 --thread 16으로 설정하면 진행이 되지 않는다. |