Table of Contents

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 설치 뒤 가장 먼저 실행하는 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”라 설명하였다. 이 에러를 피하려면 다음의 두 가지 방법이 있다.

  1. FindScaffoldORFs를 생략한다. runPipeline에서 -f 이하 목록에서 이를 제거한다. 필수 스텝이 아니므로
  2. 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가 담당한다.