2015년 9월 25일 금요일

CEGMA와 BUSCO란? 그리고 WIse2 패키지(genewise) 설치

Genome assembly의 완결성을 점검하기 위하여 모든 유전체라면 능히 가지고 있어야할 핵심 유전자가 assembly 내에 있는지를 확인하는 작업이 종종 필요하다. 특히 novel eukaryotic genome이라면 더 그러하다. 2007년도에 처음 논문으로 나온 CEGMA는 이러한 용도에 적합한 도구였다. CEGMA는 Core Eukaryotic Genes Mapping Approach라는 full name에서 알 수 있듯이, 정확하게 말하자면 core gene의 구조를 예측하는 도구이다.

CEGMA는 GitHub에서 아직까지 배포되고 있다. 그러나 Korf Lab의 홈페이지에서도 밝혔듯이 2015년 중반을 끝으로 이제 더 이상의 개발은 되지 않을 것이라 한다.

Goodbye CEGMA, hello BUSCO!

대신 다른 연구그룹에서 최근에 개발한 BUSCO가 이제 떠오르고 있다. BUSCO는 universal single-copy ortholog를 이용하여 genome assembly와 annotation을 점검하는 도구이다. 여기에서는 중요한 6가지 phylogenetic clade(vertebrates, arthropods, metazoan, fungi and bacteria)에 대한 core protein set를 구축하였고 이를 이용하여 input sequence를 검색하는 스크립트가 제공된다. 파이썬 라이브러리 설치 문제로 아직 제대로 BUSCO를 실행해보지는 않았다. BUSCO의 기반이 되는 것은 같은 연구그룹에서 개발한 OrthoDB이다.

그래서 CEGMA 마지막 버전을 테스트삼아서 효모(Candida의 일종)에 대해서 돌려보려 하였는데, 설치를 완벽하게 하기가 쉽지 않다. 효모는 워낙 genome이 작고 novel genome이라 보기도 어려우니 CEGMA와 같은 도구를 돌리는 것은 약간 넌센스일 수도 있다.

  • genewise를 리눅스에서 설치하는게 어렵고(우분투에서는 sudo apt-get install wise 한 방으로 해결이 된다던데 내 컴퓨터는 CentOS이다!)
  • NCBI BLAST+ v2.2.30은 CEGMA가 요구하는 최소 word size를 수용하지 않으므로 v2.2.29까지만 사용할 수 있다(관련 문서 링크).
  • 환경변수 설정에 대한 설명이 혼동스럽다. 이 문제는 최초의 테스트 런(지금 돌리고 있음)이 성공적으로 끝나면 따로 정리하여 포스팅하겠다.
과거에도 genewise의 설치가 쉽지 않아서 전산인프라팀의 도움을 받은 적이 있다. GitHut의 CEGMA 사이트에는 이를 위한 설치 가이드(우분투 기준)가 실려있다. 그러면 내가 이 설치 가이드를 근거로 실제로 어떻게 하여 CentOS 6.7에서 genewise를 설치했는지 그 과정을 기록해 보겠다.

프로그램 패키지로 EBI의 공식 배포 사이트에 있는 최신판인 Wise2.4.1를 받았다. CEGMA의 GitHub 사이트에서는 v2.2.3rc 및 이를 수정한 버전의 링크를 실어놓았고, 설치 가이드에서는 v2.4.1의 다른 링크를 걸어 놓았다.

압축을 풀고 src 디렉토리에서 make all을, src/dyc 디렉토리에서 make linux(그냥 make라고 하면 에러 발생)를 하면 된다. 만들어진 바이너리를 적당한 위치로 복사하는 것은 사용자가 알아서 하면 된다. 그런데 src에서 make를 하면 이러한 에러를 만나게 된다.

첫번째 에러

sqio.c:232: error: conflicting types for ‘getline’
/usr/include/stdio.h:673: note: previous declaration of ‘getline’ was here
make[1]: *** [sqio.o] 오류 1
make[1]: Leaving directory `/usr/local/apps/wise2.4.1/src/HMMer2'
make: *** [realall] 오류 2

해결책

$ cd wise-2.4.1/src/HMMer2
$ sed 's/getline/getline_new/' sqio.c > a && mv a sqio.c
 이를 해결하고 다시 make all을 하면 또 에러가 발생한다.

두번째 에러

phasemodel.o: In function `Wise2_read_ProteinIntronList':
phasemodel.c:(.text+0x3157): undefined reference to `isnumber'
collect2: ld returned 1 exit status
make[1]: *** [estwise] 오류 1
make[1]: Leaving directory `/usr/local/apps/wise2.4.1/src/models'
make: *** [realall] 오류 2

또 해결책

src/models/phasemodel.c로 이동하여 23번째 라인을 다음과 같이 수정한다.
if( !isnumber(line[0]) ) {     //수정 전
if( !isdigit(line[0]) ) {     // 수정 후
오류 메시지를 복사해 두지 않았지만, make all을 하는 과정에서 헤더 파일이 없다는 오류가 발생하였었다. 이는 yum install glib-devel.x86_64을 하여 해결하였다. 이상과 같이 하여 만들어진 바이너리(dyc 포함)를 PATH에 포함시키고, 마지막으로 WISECONFIGDIR 환경변수만 세팅하면 끝이다.

댓글 1개:

jihee han :

박사님..
fragmented BUSCOS 이런건 어떤의미인가요~?
results report받아보면서 공부하다~ 넘어오게 되었네요~

잘지내시죠???
날이 시원해지면 찾아뵐께요 ㅠ0ㅠ


늘 행복하시구~~!!! 건강하세요!!!!!! 연락드릴께요^^

-지희 올림-