====== Running PhyloPythiaS+ (PPS+ or PPSP) under Ubuntu ====== ===== 개요 ===== PPSP는 metagenomic sequence에 대한 자동적인 taxonomic binning을 실시하는 도구이다. 입력물은 contig/scaffold sequence, 혹은 1 kb 이상의 long read가 전부 가능하다. 원래 expert analysis를 필요로하는 PhyloPytiaS를 개선하여 이 과정을 자동화함과 동시에 marker gene에 의한 분석이 추가된 것이다. * 논문(//PhyloPythiaS+//: a self-training method for the rapid reconstruction of low-ranking taxonomic bins from metagenomes. [[https://peerj.com/articles/1603/|PeerJ 2016]]) [[https://github.com/algbioi/ppsp/blob/master/Installation_instructions.pdf|Supporting Text S2 (installation instructions)]] [[https://github.com/algbioi/ppsp/blob/master/Tutorial.pdf|Supporting Text S3 (tutorial)]] * [[https://github.com/algbioi/ppsp/wiki|위키 사이트]] * PPS+ 프로그램 다운로드(GitHub) (주의) PPS+ 개발자는 Oracle VirtualBox용 가상머신 이미지를 제공하여 사용하는 것을 권장한다. 그러나 ova 파일을 다운로드할 수 있는 [[http://algbio.cs.uni-duesseldorf.de/software/ppsp/1_4/ppsp_1_4_vm_64bit.ova|URL]]이 현재 유효하지 않은 것 같다. Reference DB 역시 그러하다.--- //[[hyjeong@kribb.re.kr|Haeyoung Jeong]] 2017/05/02 15:59// ===== Ubuntu 환경 준비 ===== PPS+를 우분후 환경에 설치하는 것은 가상머신을 그대로 가져다 임포트하여 쓰는 것보다는 조금 불편하다. 대신 하드웨어 성능을 최대한으로 활용할 수 있다는 장점이 있다. 2012년 5월 도입하여 만 5년 동안 업무용으로 사용했던 컴퓨터(Intel Xeon E5520, 메모리 16 GB, NVIDIA GTS 450 그래픽스 카드)에 우분투 데스크탑 **16.04 LTS**를 설치한 후 PPS+를 설치하여 활용하고자 하였다. Installation instructions 문서에서는 우분투 12.04 LTS를 기준으로 기술하고 있다. 우분투 설치 직후에 한 일은 다음과 같다. - 이더넷 어댑터 설정 - 업데이트(sudo apt-get update && sudo apt-get upgrade) 후 재부팅(update만 입력하면 실제 업그레이드는 되지 않는다. yum과는 좀 다름). sudo apt-get dist-upgrade는 어떤 명령어인가? 나중에 알아보자. - SSH 설정(sudo apt-get install openssh-server; /etc/ssh/sshd_config를 편집하여 Port 변경; sudo systemctl restart sshd.service) <= 12.04LTS에서는 sshd 서비스를 기동하는 명령이 약간 다르다. 실로 오랜만에 우분투가 설치된 컴퓨터(가상머신이 아닌)를 갖게 되었다. 내가 사용하는 모든 리눅스 서버에는 CentOS가 설치되어 있다. ===== 우분투에 PPSP 설치하기 ===== 물리적 메모리와 swap의 합이 최소한 20 GB가 되는지 확인한다. $ free --giga total used free shared buff/cache available Mem: 15 0 15 0 0 15 Swap: 15 0 15 ==== 필요한 패키지 설치하기 ==== $ sudo apt-get install python-biopython $ sudo apt-get install ruby1.8 $ sudo apt-get install sqlite3 $ sudo apt-get install libsqlite3-dev $ sudo apt-get install rubygems (이것은 좀 이상함) $ sudo apt-get install ruby-sqlite3 $ sudo apt-get install libsqlite3-ruby1.8 (이것도 좀 이상함) $ sudo apt-get install p7zip-full $ sudo apt-get install vim $ sudo apt-get install git rubygems과 libsqlite3-ruby1.8은 Ubuntu 12.04 LTS에서 설치할 때에는 아무런 오류 메시지 없이 지나갔었다. 어쩌면 Ununtu 16.04 LTS에서는 패키지들의 이름이 바뀌거나 다른 패키지에 해당 기능이 포함되었는지도 모른다. [[http://packages.ubuntu.com/|Ubuntu package search 사이트]]에서 약간의 힌트를 얻을 것으로 기대하였으나 rubygems 패키지는 무슨 용도인지 아직 파악하기 어렵다. python으로 치자면 pip와 유사한 것이라는 생각이 드는데... * Package rubygems (12.04LTS): package management framework for Ruby libraries/applications * Package rubygems (16.04LTS): Virtual package. Provided by ruby * Package libsqlite3-ruby1.8 (12.04LTS): transitional package for ruby-sqlite3 ==== 디렉토리 구성 ==== 먼저 /mnt/host_shared 디렉토리를 만든다. 여기에는 모든 reference data가 복사될 것이다. 다른 곳에 압축을 푼 뒤 심볼릭 링크를 만들어도 무방하다. 압축파일로서 크기는 약 13 GB이다. 원래 PPS+ 프로그램을 설치한 다음 여기에 포함된 update -r 명령으로 이를 다운로드하여 설치하는 것이 정석이다. 그러나 무슨 이유인지 update 명령이 작동하지 않는다. 아마도 서버의 주소에 문제가 생긴 것으로 보인다. 따라서 이전에 시험삼아 설치하였던 reference_NCBI2014513.tar.xz 파일을 이용하기로 하였다. **xz**는 다소 생소한 압축 파일 포맷이다. $ sudo mkdir /mnt/host_shared $ cd /mnt/host_shared $ sudo cp path-to-reference/reference_NCBI2014513.tar.xz . $ sudo xz -d reference_NCBI2014513.tar.xz (상당한 시간이 소요됨) $ sudo tar xvf reference_NCBI2014513.tar (상당한 시간이 소요됨) 다음으로는 /apps/pps 디렉토리를 만들고, /mnt 아래에 /apps의 심볼릭 링크를 만든다. 약간 혼동스러우니 조심하여 실행한다. $ sudo mkdir -p /apps/pps $ sudo ln -s /apps /mnt/apps (차라리 ln -s /apps /mnt라고 입력하는 것이 더 명확할 것이다) 이제 PPS+ 배포용 패키지를 가져다가 압축을 해제한 뒤 지정된 위치에 옮긴다. $ git clone https://github.com/algbioi/ppsp.git $ cd ppsp $ sudo cp * /apps/pps $ cd /apps/pps $ sudo 7za x ppsp_distribution.7z (distr/ 아래에 압축이 풀림) $ sudo mv distr/* . 마지막으로 ~/.bashrc에 다음을 추가한다. PATH=/apps/pps/sys:/apps/pps/tools:$PATH export PYTHONPATH=/apps/pps/sys:/apps/pps/tools/ppsplus:$PYTHONPATH /apps/pps 디렉토리(하위 포함)의 소유주를 사용자로 바꾸면 매번 sudo를 하지 않아도 된다. $ sudo chown -R hyjeong.hyjeong /apps/pps $ sudo chown -R hyjeong.hyjeong /mnt/host_shared/reference_NCBI20140513 ==== 업데이트는 필요하지 않다! ==== 설치가 완료되면 update -s 및 update -t 명령으로 system tool과 패키지를 업데이트하라고 Installation instructions 파일(steps 6-7)에 나와있지만, 이미 최신 버전을 GitHub에서 받았으니 그럴 필요가 없다. 실제로 update 명령을 실행하면 에러만 나온다. 그리고 reference data도 이미 위에서 설치를 하였다. ===== Test running ===== 설치 상태가 온전한지 확인하기 위한 테스트 러닝을 실시해 보자. 입력용 FASTA file, 출력물 디렉토리 및 모든 파라미터는 configuration file에서 지정한다. 프로그램 패키지에는 reference에 따라서 두 종류의 configuration 파일이 들어있다. 이번에 사용할 파일은 /apps/pps/tools/config_ppsp_vm_refNCBI20140513_example.cfg이다. 이 파일을 열어보면 입력용 파일과 결과/임시 데이터가 저장될 곳을 다음과 같이 지정하고 있다. 결과물용 디렉토리는 이미 만들어져 있어야 한다. inputFastaFile=/apps/pps/samples/test_3strains/test_3strains.fna pipelineDir=/apps/pps/tests/test02 ==== 최초 실행하기 ==== test_3strains.fna 파일이 수록한 유전체 서열 정보는 다음과 같다(total ~19 Mb). ambiguous base의 최대 크기는 nnnnnn(N=6)이다. 쉽게 말해서 sequence gap을 long 'nnnnn...n'으로 포함하지 않은, 순수한 contig sequence에 해당한다. 2825 19090046 52316 10355 6757 (count, total, max, n50, average) $ time ppsp -c /apps/pps/tools/config_ppsp_vm_refNCBI20140513_example.cfg -n -g -o s16 mg -t -p c -r -s ... ------------------------------------------------- PPS "train" return code: 1 Traceback (most recent call last): File "/apps/pps/tools/ppsplus/algbioi/core/run.py", line 998, in main() File "/apps/pps/tools/ppsplus/algbioi/core/run.py", line 508, in main raise Exception("PPS train returned with non-zero %s status: %s" % (trainProc.returncode, trainCmd)) Exception: PPS train returned with non-zero 1 status: /mnt/apps/pps/tools/PhyloPythiaS/1_3/scripts/train.rb /apps/pps/tests/test02/working/PPS_config_generated.txt real 7m23.628s user 9m19.720s sys 0m12.852s ==== 실패의 원인은 무엇일까? ==== 아무래도 ruby의 버전이 문제인 듯하다. $ ruby -v ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu] ruby1.8을 설치했다고 믿었는데 그렇지가 않은 모양이다. 이젠 ruby까지 공부해야 하는가? ==== 우분투 버전을 바꾸어서 해결하다 ==== 동일 서버에 ** Ubuntu 12.04LTS**를 재설치하여 PPS+와 레퍼런스 데이터를 재설치한 뒤 테스트 러닝을 실시하니 무사히 끝났다. 요즘 기준으로 12.04LTS는 매우 오래된 배포판이지만 어쩔 도리가 없다. 설치 후 해야할 작업을 적어보자. * SSH 데몬 구동 * NVIDIA GTS 540 드라이버 설치: sudo apt-get install nvidia-current 나머지 필요한 작업은 위에서 살펴본 **우분투에 PPSP 설치하기**를 그대로 적용하면 된다. ===== 가상 머신을 이용한 활용 사례 ===== 64비트 Oracle VirtualBox([[http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html|다운로드 링크]])를 설치한 뒤 가상머신 파일([[http://algbio.cs.uni-duesseldorf.de/software/ppsp/1_4/ppsp_1_4_vm_64bit.ova|다운로드 링크)]]을 가져다가가 파일->가상 시스템 가져오기...로 불러서 임포트하면 된다. 문제는 2017년 5월 4일 현재 이 .ova 파일의 다운로드 링크가 유효하지 않다는 것이다. 가상머신을 최초로 부팅하기 전에 공유 폴더를 설정해야 한다. 가상머신 안에서 /mnt/host_shared로 마운트되는 영역을 실제 디스크 드라이브 내의 적정한 곳에 지정하라. 그 다음으로는 여기에 reference data를 풀어야 한다. ==== Windows 10 ==== ==== CentOS ==== ==== macOS Sierra(10.12.4) ==== 설치 환경은 VirtualBox 5.1.20이다. 가상머신을 임포트하여 공유 폴더를 설정한 뒤 부팅을 하니 /mnt/apps/ppa/tools/ 디렉토리가 없는 것을 발견하였다. ppsp 등 중요한 프로그램은 여기에 있어야 한다. GitHub에서 가져온 압축파일을 풀어서 해당 디렉토리를 복사해 넣었다. 테스트 러닝에는 약 두 시간이 소요되었다. 참고로 [[ppsp_output_screen]]출력 화면을 캡쳐하여 소개한다. ===== 일반적인 실행 방법 =====