2022년 2월 11일 금요일

Torsten Seemann의 nullarbor 테스트

호주 관광청의 눌라보 평원 관광 안내(링크)
앞으로 96 킬로미터를 더 달려야 캥거루를 만날 수 있다고? 단 한번도 굽은 길을 만나지 않고? 

nullarbor를 conda로 한꺼번에 설치하는 것은 쉽지 않았다. 어제 저녁부터 명령을 걸어 놓았는데 도무지 진도가 나가질 않는다. 소스는 git clone으로 복사해 놓고, 필요한 패키지를 conda install로 하나씩 설치하였다. 약간의 오타가 있지만 애교로 봐 주자. 예를 들어 newick-utils라는 dependency가 있는데, 이는 newick_utils를 잘못 적은 것이었다.

Nullarbor GitHub 웹사이트에서 기술한 모든 dependency(링크)를 수작업으로 전부 설치하였다. 새로운 환경을 만들지는 않았고, 이전에 만들어 둔 snippy 환경에 하나씩 더해 나간 다음 환경 이름을 아예 바꾸어 버렸다. 이름은 prokaryotic whole genome analysis의 약자인 pwga로 하였다. Conda는 rename이라는 유틸리티를 제공하지 않기 때문에, 이미 설치한 환경의 이름을 바꾸려면 조금 까다롭다(참고의 글).

패키지를 하나씩 설치하다가 맨 마지막인 centrifuge 단계에서 에러가 발생했다. 파이썬 버전이 맞지 않는다는 것이었다. Centrifuge는 꽤 오래전에 만들어진 것이라서 데이터베이스 업데이트를 제외하면 더 이상 개선이 이루어지지 않는 것 같다. 이미 설치된 파이썬 버전을 3.7에서 3.6으로 내려서 해결을 했다. Cetrifuge의 개발자인 김대환 교수는 미국에서 활동하는 한국인 생명정보학자이다. TopHat의 개발자라고 하면 더 빨리 기억할 수 있을 것이다. 구글 스칼라 정보를 보니 인용 횟수 역시 대단하다. 아마 Steven Salzberg가 그의 지도교수였던 것 같다.

필요한 것을 다 설치했는데 이제는 fq, fa라는 실행파일이 없다고 한다. 이건 또 뭔가? Conda로 배포되는 패키지도 아니고... 크! nullarbor 배포본의 bin 디렉토리에 있는 자체 스크립트였다. 필요한 것들이 다 설치되었는지 확인하려면 'nullarbor.pl --check'를 실행하면 된다. 'You deserve a medal!'이라는 익살맞은 메시지와 함께 준비가 다 되었음을 알려주었다. 앞으로 pwga 환경에서 미생물 유전체를 다루는 대부분의 일을 해도 될만큼 많은 프로그램이 한꺼번에 설치되었다.

테스트 실행을 해 보았다. Roary 때문에 최소 4개 isolate의 시퀀싱 자료가 필요하다고 한다. 탭으로 구분된 샘플 설명 파일을 만든 뒤 실행 준비를 시키면 이런 메시지가 나온다.

Run script를 별도로 만들어 주는 것이 아니라 'nice make all...' 명령어를 쓰라는 것이다. make는 프로그램 빌드를 할 때나 쓰는 것 아니었나? 뭔가 있어 보이는 실행 방법이라는 생각이 든다.

최종적으로 만들어진 html 리포트는 Tormes의 그것보다 좀 더 전문적으로 보인다. 단, 구식 Kraken(DB: minikraken_20171019_8GB.tgz)를 이용한 k-mer based species identification에서는 결과가 나오지 않았다. Kraken 2 및 centrifuge를 이용하도록 설정을 바꾸어 보도록 하자. Assembler 등 사용자가 선택할 수 있는 것들이 있는데 이를 어디에서 건드려야 하는지는 확실하지 않다. 어디 보자... 아, Makefile에서 plugin이라는 이름으로 바꿀 수가 있다. 다음에 Makefile의 일부를 보였다. "TAXONER"의 오른쪽 항목을 다른 것으로 바꾸면 원하는 프로그램을 쓰게 되는 것이다.

NAME := TEST
GCODE := 11
MIN_CTG_LEN := 500
PUBLISH_DIR := /home/hyjeong/public_html/MDU
ASSEMBLER := cpus=$(CPUS) opts="" /data/apps/nullarbor/bin/../plugins/assembler/skesa.sh
TREEBUILDER := cpus=$(CPUS) opts="" /data/apps/nullarbor/bin/../plugins/treebuilder/iqtree_fast.sh
TAXONER := cpus=$(CPUS) opts="" /data/apps/nullarbor/bin/../plugins/taxoner/centrifuge.sh
ANNOTATOR := cpus=$(CPUS) opts="" /data/apps/nullarbor/bin/../plugins/annotator/prokka_fast.sh
NW_DISPLAY := nw_display -S -s -w 1024 -l 'font-size:12;font-family:sans-serif;' -i 'opacity:0' -b 'opacity:0' -v 16
SNIPPY := snippy --force
SNIPPYCORE := snippy-core
ROARY := roary -v
ABRICATE := abricate --threads $(CPUS)

내가 nullarbor를 설치한 것은 centrifuge를 좀 쉽게 써 보려는 이유도 있다. 마치 zga 내부에서 checkm을 이용할 수 있는 것처럼 말이다.
 

댓글 없음: