2016년 9월 28일 수요일

Python 3.5.2 설치하고 pyani 실행하기

미생물 유전체의 average nucleotide identity와 관련한 계산 및 그림을 그려주는 도구(pyani)를 설치하려고 보니 python 3이 필요하다. 내 리눅스 컴퓨터에는 CentOS 6.7이 제공하는 python 2.6 및 linuxbrew가 제공하는 python 2.7이 공존한다. 이제 python 3.5는 또 어떻게 설치할 것인가?

루트 권한을 가지고서 소스로부터 설치하는 방법이 있는가 하면, pyenv를 쓰는 방법이 있다. 다른 버전을 그대로 둔 상태에서 평화롭게 공존하도록 설치해야 함이 관건이다.

소스로부터 설치하기

GCC는 여전히 4.4.7이다. linuxbrew가 설치된 상태이므로 su 명령으로 관리자 권한을 획득하면 GCC 5.3.0을, su -로 전환하면 GCC 4.4.7을 쓰게 된다. GCC 4.4.7로는 make test를 통과하지 못했다. 따라서 GCC 5.3.0을 쓰기로 한다. 가장 마지막 단계에서 "make altinstall"을 하는 것이 매우 중요하다. 만약 make install을 해 버리면 기존의 python 명령어를 덮어쓸 것이고, 어떤 문제가 생길지 나도 모른다!

# ./configure --prefix=/usr/local
# make
# make test
# make altinstall
...
Installing collected packages: setuptools, pip
Successfully installed pip-8.1.1 setuptools-20.10.1
# ls /usr/local/bin/python*
/usr/local/bin/python2.7         /usr/local/bin/python3.4m         /usr/local/bin/python3.5m
/usr/local/bin/python2.7-config  /usr/local/bin/python3.4m-config  /usr/local/bin/python3.5m-config
/usr/local/bin/python3.4         /usr/local/bin/python3.5

여기서 궁금증이 발생한다. python3이 관여하는 pip-8.1.1이 도대체 어디에 있단 말인가? 테스트를 해 보자.

# pip -V
pip 8.1.2 from /usr/local/lib/python3.5/site-packages (python 3.5)
# pip2 -V
pip 8.1.2 from /usr/local/lib/python2.7/site-packages (python 2.7)
# pip3 -V
pip 8.1.2 from /usr/local/lib/python3.5/site-packages (python 3.5)
# exit
$ pip -V
pip 8.1.2 from /home/hyjeong/.linuxbrew/Cellar/python/2.7.12_1/lib/python2.7/site-packages (python 2.7)
$ pip2 -V
pip 8.1.2 from /home/hyjeong/.linuxbrew/Cellar/python/2.7.12_1/lib/python2.7/site-packages (python 2.7)
$ pip3 -V
pip 8.1.2 from /usr/local/lib/python3.5/site-packages (python 3.5)

정말 복잡한 환경이다!

pyani 설치하기

관리자 권한으로 pip3 install pyani를 실행하니 GCC 5.3.0에서는 에러가 발생한다. GCC 4.4.7에서는 잘 설치가 되었다. 도대체 왜 이렇게 복잡한 것인가...  어쨌든 설치는 했으니 실행을 해 보자. average_nucleotide_identity.py가 핵심 스크립트이다. output directory는 이미 존재하는 디렉토리를 지정하면 안된다. 특별히 지정하지 않으면 mummer를 사용하여 순식간에 nucleotide 간의 identity를 계산한다. 가용한 thread를 다 사용하여 계산을 하니 당연한 결과일지도 모른다.

$ average_nucleotide_identity.py -v -i . -o out -g


결과 그림을 보자. 어쩌면 앞으로는 JSpecies를 쓰지 않게 될지도 모르겠다.


pyani는 NCBI tax ID를 이용하여 한번에 유전체 정보를 내려받을 수 있는 스크립트인 genbank_get_genomes_by_taxon.py도 포함하고 있다. ANI 분석을 할 때 매우 유용하게 쓸 수 있을 것이다. 너무 많은 genome 파일을 내려받지만 않을 수 있다면 말이다.

pyenv는 어떻게 하라고?

홈 디렉토리에 .pyenv라는 디렉토리가 있는 것으로 보아 분명히 pyenv를 설치하여 사용한 경험이 있다! 각 파이썬 버전은 ~/.python/version에 설치하도록 되어있다. 소스로부터 /usr/local에 이미 python 3.x를 설치해 버렸으니 pyenv를 경유하여 쓰도록 다시 설치하는 것은 혼란을 줄 여지가 있다. 우선은 그냥 두자!

댓글 없음: