2022년 7월 22일 금요일

MicroPIPE 설치 후 테스트 실행을 성공적으로 마치다 - 덩달아 알게 된 프로그램 몇 가지(JAPSA, singularity, Easyfig)

이틀 전에 올린 글(링크)에서 나노포어 유래 박테리아 게놈 시퀀싱 자료의 조립 파이프라인인 MicroPIPE를 소개했었다. 오늘은 이 소프트웨어를 소개한 논문(링크)의 자료 일부를 가져다가 테스트 러닝을 돌리는 중이다. 테스트용 자료는 ST131 계열의 요로감염 대장균인 S129EC이다. 2004년 캐나다의 임상 시료에서 분리된 균주로서 나노포어 데이터는 MicroPIPE 개발팀인 호주 퀸스랜드 대학에서(SRR13089722), 그리고 일루미나 데이터는 Sanger Institute에서(ERR161292) 생산하였다. 서로 다른 기관에서 약 8년의 간격을 두고 별도로 생산하여 등록한 자료라서 BioSample이나 BioProject는 모두 별도로 존재한다.

MicroPIPE(GitHub)를 설치하는 것은 그렇게 간단하지 않다. 'sudo apt install'이나 'conda install'로 쉽게 해결되지 않는 사전 요구 사항을 충족해야 하기 때문이다.

  1. Nextflow가 있어야 하고
  2. Singularity가 필요하며,
  3. MicroPIPE 소스도 가져다가 설치해야 한다. 이것 자체는 분량이 많지 않다.

Nextflow는 소프트웨어 컨테이너를 이용하는 파이프라인이다. 그럼 singluarity는 무엇인가? Docker와 유사한 개념인데, 최근에는 Apptainer라는 이름으로 바뀌었다. Apptainer를 설치하려면 Go 언어가 필요하다. 그런데 우분투 20.04에서 apt 명령어로 golang 패키지(v1.13)를 설치하면 최신 apptainer(v1.0.3)와 궁합이 맞지 않는다. 그래서 Go language는 다음 사이트의 method 2를 참조하여 소스로부터 버전 1.17.7을 설치하였다. Go를 알지도 못하고 앞으로 쓰게 될 것 같지도 않지만 apptainer를 쓰려면 Go 컴파일러를 설치해야 한다. 만약 비슷한 이유로 Ruby까지 써야 한다면(이미 우분투에 깔려 있다!) 정말 울고 싶어질 것이다...

How to install Go 1.17 on Ubuntu 20.04

병원성 대장균 S129EC에 대한 MicroPIPE 조립이 끝났다.


flowchart_dat.svg


각 단계를 구성하는 작업 모듈은 대부분 알고 있는 것이지만 porechop과 flye 사이에 위치한 japsa라는 것은 매우 생소하여 도대체 무슨 기능을 하는 것인지 찾아 보았다. JAPSA는 'Just Another JAva Package for Sequence Analysis'의 약자이다. 공식 문서 사이트를 방문해 보니 일반적인 서열 자료 처리와 더불어 나노포어 데이터를 다루는 기능도 포함하고 있었다. 아마도 MicroPIPE는 demultiplexing 작업을 JAPSA에게 맡기는 것 같다.

JAPSA에 포함된 도구 중 하나인 jsa.hts.n50을 singularity 컨테이너 상태에서 실행하려면 어떻게 해야 할까? 이미지를 받아 놓았으니 JAPSA를 별도로 설치하려고 애를 쓸 필요가 없을 것이다. 다음과 같이 입력하니 깔끔하게 결과가 나온다. 

$ singularity exec /opt/singularity_cache/vmurigneux-japsa-latest.img jsa.hts.n50 --input=assembly.fasta
593033	19	3844865.0

MinION으로부터 생성된 fast5 파일을 입력물로 하여 guppy basecalling과 demultiplexing부터 시작하게 만들 수도 있지만, 이를 GPGPU가 장착되지 않은 컴퓨터에 설치하기는 곤란한 상황이다. MinION MK1 running과 Guppy HAC basecall/바코드 해독은 전용 컴퓨터에서 실시한 뒤 중간 결과물을 MicroPIPE가 설치된 컴퓨터로 옮겨서 조립 및 polish를 실행하면 될 것이다.

Docker와 Singularity, 어느 것이 더 좋은가? 구글에서 'docker vs singularity'라는 검색으로 찾았을 때 제일 위에 나오는 문서(Containerization for HPC in the Cloud: Docker vs Singularity)에는 이런 문구가 있다.

Docker is currently the most widely deployed framework, ideally suited for micro-service architecture. Singularity is a framework that aims to provide mobidity of compute with a focus on bare-metal HPC cluster systems.

어렴풋하게 두 시스템의 차이점을 이해할 수 있을 것 같다. 다음 주에 나노포어 시퀀싱을 재개할 예정이니 이번에 새롭게 익힌 MicroPIPE를 본격적으로 사용할 기회가 될 것이다. 

ST131 대장균의 레퍼런스라 할 수 있는 EC958 균주의 유전체는 MicroPIPE의 개발팀인 호주 Scott Beatson 그룹에서 시퀀싱을 하여 2014년에 공개하였었다. 논문(링크)을 찾아서 훑어보다가 염색체 수준의 비교를 깔끔하게 그림으로 표현한 것이 눈에 뜨였다. Easyfig라는 소프트웨어를 썼다고 밝혀 놓았는데, 참고문헌을 확인한 결과 이것 역시 Beatson이 교신저자로 참여한 논문으로 소개되어 있었다(Easyfig: a genome comparison visualizer 논문 링크). 2011년에 Bioinformatics에 발표된 논문으로서 아직 웹사이트에서 프로그램을 배포하고 있다.

Easyfig 웹사이트 화면 갈무리.


Easyfig 개발자인 Mitchell J. Sullivan은 홈페이지)를 통해서 자신이 개발한 다양한 시각화 도구를 공개하고 있다. 아무리 복잡한 계산을 수행하였다 하더라도 결국은 이를 잘 정돈하여 연구자의 철학과 미적 감각을 담아서 시각적으로 표현하는 것이 중요하다.


댓글 없음: