2019년 10월 29일 화요일

Minimus2 circlator 실행을 위한 편법

Long read assembly에서 유래한 contig를 정리하여 염색체 형태로 완성된 염기서열을 얻는데 circlator만큼 편한 것은 없다. Circlator가 하는 일은 의외로 복잡하다. 원형의 replicon을 다 커버하고 끝부분에서 남는 서열(즉 앞부분에 해당하는 염기서열이 뒤에서 다시 나타나는)을 제거한 뒤 dnaA 유전자가 첫번째 ORF가 되도록 방향을 바꾸는 것만이 전부가 아니다. 만약 약간의 gap이 남아있다면 long read로부터 조립을 하여 이어주고, major contig 내부에 포함될만한 짧은 contig가 있다면 이를 병합하는 등의 일도 수행한다. 그렇게 때문에 circlator를 실행할 때에는 assembly와 더불어 long read(raw data)가 항상 필요한 것이다.

만약 말단에 겹칩이 확인되어 circularization이 확실시되는 contig가 있다고 하자. 양 끝에서 발견되는 말단을 제거하는 일만을 하고 싶지만 raw read에 해당하는 것이 없는 상황을 생각해 볼 수 있다. 그러면 minimus2 circularization pipeline을 따르면 된다고 하는데, 이때 필요한 amos가 골칫거리이다.

Bioconda의 circlator 패키지 레시피를 보면 amos 3.1.0 상이 필요하며, 파이썬은 3 이상이 필요하다. 하지만 실제 conda install circlator를 하면 amos는 저절로 깔리지 않는다. Amos는 고약하게도 파이썬 2.7까지만 작동한다.

AMOS는 whole genome assembly software의 모음이다. bank라는 독특한 데이터 체계를 사용하고 있으며, 나도 이를 이용하여 유전체를 조립한 뒤 hawkeye로 조립물의 시각화를 해 본 경험이 있다. 워낙 오래 전에 만들어진 프로그램이라서 파이썬 3 환경에서 작동하도록 개선이 되리라는 기대를 하기 어렵다.

그러면 어떻게 하면 될까? circlator의 minimus2 파이프라인에서 필요로하는 것은 toAmos와 minimus2 두 가지가 전부이다. 일단 amos를 파이썬 2.7 기반의 환경에 설치한 다음, 이 두 가지 스크립트를 실행 경로가 있는 곳에 추가하고, 파이썬 3 기반의 환경에서 circlator minimus2를 실행하면 될 것 같았다.

양 끝에 겹침을 인위적으로 도입한 대장균 K-12 MG1655의 유전체 서열을 만들어서 테스트를 해 보았다. 이어지지를 않는다. 왜 그럴까? 메시지를 찾아보니 show-coords가 제대로 작동하지를 않은 것이었다. toAmos와 minumus2 중 show-coords와 delta-filter를 내부적으로 부르는 것은 minimus2이다. minimus2를 열어보니 이 두 가지 실행파일의 경로가 /usr/local/bin/로 설정된 것이었다. 이를 제대로 고쳐주니 minimus2 파이프라인이 제대로 돌아가기 시작했다.

bioconda를 통해 배포되는 생명정보 분석용 프로그램이 이제는 족히 수천 가지는 될 것이다. 이들 사이에 의존성이 항상 완벽하게 맞아 떨어지는 것은 아니니 개별적인 사안에 대해서는 적절한 꼼수를 찾이 않을 수가 없다.




댓글 없음: