====== MetAMOS test 2017 ====== 많은 어려움을 뚫고서 2016년 초여름에 MetAMOS를 설치하여 어느 상태로는 돌아가게 만드는데 성공하였다. 그러나 인쇄한 매뉴얼이 너덜너덜해지도록 줄을 치고 메모해가면서 정독하고 테스트를 하였지만 아직 완벽한 상태는 아니다. 만 1년이 되기 전에 사용법을 완전히 익히고 어느 리눅스 서버에든 쉽게 재설치를 할 수 있도록 다시 한 번 종합적인 테스트를 실시한다. ===== Candidatus Carsonella ruddii 샘플을 이용한 테스트 ===== MetAMOS의 샘플 데이터는 160 kb의 작은 유전체를 지닌 bacterial endosymbiont "Candidatus Carsonella ruddii PV"의 50x read를 사용하는 것으로 되어있다. fasta 및 fastq 파일과 reference(complete)가 전부 존재한다. _pe_가 암시하듯이 interleaved 형태의 paired end sequence이다. 8000000 bp / 100000 seqs; 80.0 average length -- carsonella_pe_filt.fna 8000000 bp / 100000 seqs; 80.0 average length -- carsonella_pe_filt.fq 159662 bp / 1 seqs; 159662.0 average length -- carsonella_reference.fna 실행 위치는 전부 path/to/metAMOS-1.53rc/Test 디렉토리이다. ==== initPipeline ==== interleaved fasta file의 사례이다. ../initPipeline -f -m carsonella_pe_filt.fna -d test1 -i 500:3500 ==== runPipeline의 이해 ==== -f STRING(force this step)과 -n STRING(step to skip)을 지정하지 않으면 MultiAlign, FunctionalAnnotation, FindRepeats, FindScaffoldORFS 단계를 생략한다. 실제로 사용된 명령어 라인은 output_directory/Logs/COMMANDS.log를 열어보면 그대로 나온다. === runPipeline -d test1만 수행하면? === default assembler인 SOAPdenovo(k-mer 31)에 의한 조립은 되지만 Abundance(no plot), Annotate(100% no hits) Classify (all unknown: 13 = 17 contigs + 6 scaffolds) 결과는 이상하다. Postprocess에 의하여 proba.ctg.fa와 proba.scf.fa가 나온다. 이제 옵션을 하나씩 추가해 보자. === runPipeline -d test1 -k 55 -f Abundance,Annotate,Classify === Abundance(no plot), Annotate(100% no hits) Classify (all unknown) === runPipeline -d test1 -k 55 -c fcp -f Abundance,Annotate,Classify === default annotate program인 FCP를 명시적으로 설정한다. 드디어 Annotate 결과가 나타났고 Classify도 100% Gammaproteobacteria로 나왔다. 그러나 Abundance는 여전히 플롯을 그리지 못한다. === runPipeline -d test1 -k 55 -c kraken -f Abundance,Annotate,Classify === -c kraken을 설정하면 Annotate(100% No hits), Classify(unknown) 그러나 Abundance는 플롯이 없다. === runPipeline -c kraken -d test1 -k 55 -f Assemble,MapReads,FindORFS,Annotate,Propagate,Classify,Abundance === 이렇게 하면 run_pipeline_test.sh와 거의 같아진다. 그러나 결과는 나아지지 않았다. **도저히 이해하기 어렵지만 run_pipeline_test.pl의 마지막 라인과 같은 형식으로 하지 않으면 잘 되지 않는다는 뜻이다.** ==== run_pipeline_test.sh의 실패 원인은? ==== MetAMOS 설치 뒤 가장 먼저 실행하는 [[https://github.com/marbl/metAMOS/blob/v1.5rc3/Test/run_pipeline_test.sh|run_pipeline_test.sh]] 스크립트는 **FindScaffoldORFs 스텝에서 에러**가 발생한다. #/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 FindScaffoldORFs 스텝이 이 스크립트에서는 반드시 실시하는 것으로 되어있지만 실제로는 필수가 아니다. 매뉴얼을 살펴보면 이 단게의 목적은 "Find ORFs in scaffolds, mainly serves as an extra validation step after Scaffold"라 설명하였다. 이 에러를 피하려면 다음의 두 가지 방법이 있다. - FindScaffoldORFs를 생략한다. runPipeline에서 -f 이하 목록에서 이를 제거한다. 필수 스텝이 아니므로 - FindScaffoldORFs를 그대로 실행하되 기본 프로그램인 FragGeneScan을 MetaGeneMark로 바꾼다(-g metagenemark) === Abundance/Annotate/Classify 결과가 비정상 === -c kraken을 -c fcp(default)로 바꾸면 Annotate와 Classify는 제대로 작동한다. FCP가 default이므로 -c STRING 옵션을 아예 주지 않아도 될것 같으나 그렇지는 않다. 따라서 kraken의 설치상태가 완벽하지 않다고 보면 된다. 다른 위치에 설치한 minikraken_20141208 디렉토리를 /path/to/metAMOS-1.5rc3/Utilities/DB/kraken이란 명칭으로 심볼릭 링크를 만든 뒤 다시 실행하니 여전히 결과는 비어있다. 왜 그럴까? kraken을 실행한 커맨드를 찾아보았다. Annotate를 담당하는 소프트웨어는 FCP, Kraken 그리고 PhyloSift 3종이다. Abundance는 metaphyler가 담당한다.