다양한 스토리를 담고 있는 연재를 만나보세요.
[초심자를 위한 생물학+정보학] 로제타폴드의 설치와 사용 - 58
Bio통신원(고주온)
이번에는 앞서 소개했던 알파폴드에 비견되는 로제타폴드 (RoseTTAFold)에 대해서 알아보고, 그 설치와 사용에 관하여 다루어 보고자 한다.
설치에 앞서, 로제타폴드 설치에 필요한 준비 사항을 알아보자. 로제타폴드 역시, 연산 병렬화가 용이해서 심화 학습 (deep learning)에 사용되는 그래픽 처리 장치를 필요로 하므로 하드웨어와 소프트웨어 (우분투 리눅스)는 이전에 소개한 알파폴드와 유사한 수준으로 가정하고 설치와 활용을 진행하기로 한다.
로제타폴드는 기본적으로 배시 (Bash)와 파이썬 (Python)을 주로 사용하며, 분석 목표에 따라서 매우 다양한 라이브러리 등의 도구들을 적용하고 있기 때문에 파이썬의 버전 관리가 필요하다. 따라서 파이썬에서 가상 환경을 제공하고 관리하는 콘다 (conda)를 사용한다. 더 정확하게는 미니콘다 (Miniconda)를 사용하는데, 미니콘다는 아나콘다 (Anaconda)에서 콘다를 사용하는 최소한의 도구들을 추려낸 저장소 관리 꾸러미라고 보면 된다. 아나콘다는 700개가 넘는 패키지를 모두 설치한다. 나중에 보겠지만, 로제타폴드는 필요에 따라 conda 가상 환경을 선택하고 그 환경에서 작업을 수행하게 된다. 다음의 설치 관련 내용은 로제타폴드의 깃허브1에서 확인할 수 있다.
로제타폴드의 설치 과정은 비교적 간단하다. 다만, 설치와 실행에 필요한 conda 가상 환경과 각 도구들의 사용 허가 (라이선스, license)에 유의해야 한다.
===
# 미니콘다 설치
# RoseTTAFold 클로닝 (git)
# 서열 및 구조 데이터베이스 내려받기
# RoseTTAFold-linux.yml을 이용한 콘다 환경 구축
# folding-linux.yml을 이용한 콘다 환경 구축
# 신경망 가중치 도구 내려받기
# Third-party 도구 설치
# 파이로제타 (PyRosetta) 설치
# 로제타폴드 실행
===
설치를 진행하기에 앞서, 주의 사항 몇 가지를 짚고 가자. 세부 내용에 대해서 지금은 이해하지 못한다 해도 점차 알게 될 것이니 걱정할 필요는 없다.
=== 주의 사항 ===
# 라이선스가 필요한 도구의 경우, 사용 조건을 확인하고 수락한 후 설치하고 사용한다.
# 각 실행 명령의 가상 환경 (conda environment)에 대해 유의한다.
# 설치 전, 리눅스 파일 시스템의 파일 및 디렉터리 권한 설정을 확인한다.
======
이제부터 위의 주의 사항에 유의하면서 설치를 진행해 보자.
# 미니콘다 설치
Conda 환경을 구성하기 위해 다음과 같이 미니콘다를 설치한다.
---
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh <-- (1)
$ sh Miniconda3-latest-Linux-x86_64.sh <-- (2)
$
---
미니콘다를 위와 같이 내려받은 후 (1), 셸 명령을 사용하여 설치하면 (2), 로그인 계정 홈 디렉터리에 miniconda3/ 디렉터리가 생성되면서 설치된다. 이후, 로제타폴드 사용을 위한 콘다 가상 환경은 ~/miniconda3/envs/ 디렉터리에서 찾아볼 수 있다. 위 (1)에서 내려받는 미니콘다는 최신 버전으로서 2022년 3월 현재, Miniconda3-py39_4.11.0-Linux-x86_64.sh와 동일하다. 이는 사용자 시스템의 파이썬이 3.x 대 버전인 경우 잘 동작하며, 이후 시스템의 변화에 따라 필요한 버전의 미니콘다를 설치할 수 있다.
이렇게 미니콘다를 설치한 다음, conda 기본 환경으로 진입하려면 로그아웃한 후, 다시 로그인하면 아래와 같이 가상 환경이 표시된다2.
---
(base) john@sb:~$ <-- (1)
(base) john@sb:~$ conda deactivate <-- (2)
john@sb:~$ conda activate <-- (3)
(base) john@sb:~$ <-- (4)
---
위에서 보는 것처럼, conda activate 명령으로 가상 환경을 설정한다 (3). 가상 환경을 해제하고자 할 때는 conda deactivate 명령을 실행하면 된다 (2). 이 명령 옵션은 나중에 (RoseTTAFold) 및 (folding) 가상 환경에도 사용된다.
# RoseTTAFold 클로닝
이제 로제타폴드를 설치할 디렉터리로 가서 이전 연재 회차에서 언급했던 깃 (git)을 사용하여 다음과 같이 로제타드를 설치한다.
---
$ git clone https://github.com/RosettaCommons/RoseTTAFold <-- (1)
---
이렇게 하면, 현재 디렉터리에 RoseTTAFold라는 새 디렉터리가 만들어지면서 로제타폴드 설치에 필요한 내용들을 가져오게 된다. 이후, conda 명령을 이용하여 로제타폴드 실행에 필요한 환경을 구축하게 되는데, 이전 알파폴드에서도 보았듯이 로제타폴드 역시 심화 학습 (deep learning)에 필요한 단백질 관련 데이터베이스를 필요로 하며, 이들 데이터베이스의 용량이 거대하므로 먼저 이들을 로제타폴드 디렉터리에 내려받도록 한다. 이후의 데이터베이스 설치와 로제타폴드 사용 환경 설치는 로제타폴드 디렉터리에서 작업한다.
# 서열 및 구조 데이터베이스 내려받기
Git으로 설치한 로제타폴드 디렉터리에서 다음과 같이 단백질 관련 데이터베이스를 설치한다. 각 .tar.gz 파일들이 대용량이기 때문에 각각의 파일들에 대해서 새로운 터미널을 열어서 작업하는 것이 더 효율적일 것이다. 데이터베이스의 압축을 모두 풀면 용량은 2T가량 된다.
--- uniref30 [46G] ---
$ wget http://wwwuser.gwdg.de/~compbiol/uniclust/2020_06/UniRef30_2020_06_hhsuite.tar.gz <-- (1)
$ mkdir -p UniRef30_2020_06 <-- (2)
$ tar xfz UniRef30_2020_06_hhsuite.tar.gz -C ./UniRef30_2020_06 <-- (3)
--- BFD [272G] ---
$ wget https://bfd.mmseqs.com/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt.tar.gz <-- (1')
$ mkdir -p bfd <-- (2')
$ tar xfz bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt.tar.gz -C ./bfd <-- (3')
--- structure templates (including *_a3m.ffdata, *_a3m.ffindex) [over 100G] ---
$ wget https://files.ipd.uw.edu/pub/RoseTTAFold/pdb100_2021Mar03.tar.gz <-- (1")
$ tar xfz pdb100_2021Mar03.tar.gz <-- (2")
---
wget 명령을 사용하여 UniRef30 데이터를 내려받는다 (1). 데이터 받기가 완료되면, 해당 데이터를 풀어놓을 디렉터리를 생성하고 (2), tar 명령으로 데이터를 해당 디렉터리에 푼다 (3). BFD 데이터에 대해서도 동일한 방식으로 처리한다 (1'-3'). pdb100 데이터도 내려받아 (1") tar 명령으로 데이터를 풀어 설치한다 (2"). 참고로, tar 명령의 -C 옵션은 압축된 자료를 지정 디렉터리에 풀어놓으라는 의미이다.
# RoseTTAFold-linux.yml을 이용한 콘다 환경 구축
위에서 데이터를 받는 시간이 네트워크의 상황에 따라 수십 시간이 걸리는 경우도 있으므로, 그동안 다음과 같이 로제타폴드의 사용을 위한 콘다 가상 환경을 구축한다. 이 역시 로제타폴드 디렉터리에서 수행한다.
---
$ conda env create -f RoseTTAFold-linux.yml
---
여기에서 사용되는 .yml 파일은 .yaml3과 같은 형식의 데이터 직렬화 양식 파일이다. 유사한 용도로 사용되는 것으로 XML, JSON 등의 형식 파일들이 있으며, 주로 타 시스템과 자료를 주고받을 때 사용 일관성 유지를 위해 사용된다. 이렇게 .yml 파일을 이용하여 로제타폴드 환경을 설치한 다음, 아래와 같이 conda 명령을 통하여 RoseTTAFold 가상 환경 설정을 확인한다.
---
$ conda activate RoseTTAFold
(RoseTTAFold) $ conda deactivate
$
---
이렇게 conda 명령을 통하여 RoseTTAFold 가상 환경 설정을 확인한다.
# folding-linux.yml을 이용한 콘다 환경 구축
마찬가지로 folding 환경에 대해서도 다음과 같이 conda 명령으로 가상 환경을 설치하고 확인한다.
---
$ conda env create -f folding-linux.yml <-- (1)
.
.
.
$ conda activate folding <-- (2)
(folding) $ conda deactivate <-- (3)
$
---
folding-linux.yml 파일을 이용하여 folding 가상 환경을 구축하고 (1), folding 환경을 확인한다 (2). 다시, conda 명령으로 folding 가상 환경을 해지한다 (3). 후에 파이로제타 설치 시에 다시 언급하겠지만, 로제타폴드를 사용하기 위해서는 다양한 종류의 도구들이 적용되었기 때문에 버전 관리가 매우 중요하다. 파이로제타를 설치할 때에는 folding 가상 환경에서 작업하는 것에 유의해야 한다.
# 신경망 가중치 도구 내려받기
로제타폴드에 필요한 신경망 가중치 도구를 다음과 같이 내려받아 설치한다. 이 작업 역시 로제타폴드 디렉터리에서 진행한다.
---
$ wget https://files.ipd.uw.edu/pub/RoseTTAFold/weights.tar.gz
$ tar xfz weights.tar.gz
---
이렇게 하면, 로제타폴드 디렉터리에 weights 디렉터리가 생성되고 그 안에 관련 자료가 준비된다.
# Third-party 도구 설치
또한, 로제타폴드 디렉터리에서 아래와 같이 third-party 도구들을 내려받아 설치한다.
---
$ ./install_dependencies
---
이 작업으로 csblast 및 lddt (local distance difference test) 등의 도구들이 설치된다.
# 파이로제타 (PyRosetta) 설치
파이로제타4는 로제타폴드를 발표한 미국 워싱턴대학교의 Baker교수 연구실에서 개발한 단백질 구조 계산 도구로서 이를 사용하려면 사용자 라이선스가 있어야 한다. 사용자가 대학에 재학 또는 재직하는 것으로 가정하고 해당 URL (https://els2.comotion.uw.edu/product/pyrosetta)에서 academic license를 받아 설치하는 것으로 진행해 보자. 위의 URL에 가면 오른쪽 위에 'PyRosetta Software Academic License'라는 구역이 있다. 이곳에서 사용자 (id)와 암호 (password)에 관한 허가를 받아 다음과 같이 파이로제타를 사용한다.
파이로제타는 https://graylab.jhu.edu/download/PyRosetta4/archive/release/에 가면 여러 버전이 있음을 알 수 있는데, 이 가운데 파이썬 3.7의 최신 버전을 내려받는다. 설치할 호스트에서는 다음과 같이 사용자와 암호를 추가하면 현재 디렉터리에 내려받을 수 있다. 파이로제타 설치 시에 루트 디렉터리와 관련된 오류가 발생할 수 있으므로, 현재 로제타폴드 설치 디렉터리에서 내려받아 설치 진행하는 것을 권장한다.
파이로제타 설치 시 가장 주의해야 할 점은 파이로제타를 사용하는 가상 환경 하에서 설치해야 한다는 것이다. 특히 설치 명령을 실행할 때 사용하는 파이썬은 반드시 folding 가상 환경 상의 파이썬 버전이어야 한다는 것이다. 아래의 내용을 참고하여 주의 깊게 설치해 보자.
---
$ conda activate folding <-- (1)
(folding) $ wget --http-user=<ID> --http-password=<PASSWORD> https://graylab.jhu.edu/download/PyRosetta4/archive/release/PyRosetta4.Release.python37.ubuntu/PyRosetta4.Release.python37.ubuntu.release-314.tar.bz2 <-- (2)
(folding) $ tar vjxf PyRosetta4.Release.python37.ubuntu.release-314.tar.bz2 <-- (3)
(folding) $ cd PyRosetta4.Release.python37.ubuntu.release-314/ <-- (4)
PyRosetta4.Release.python37.ubuntu.release-314$ cd setup && sudo /home/<USER>/miniconda3/envs/folding/bin/python3 setup.py install <-- (5)
(folding) $
---
먼저, conda의 folding 가상 환경을 설정한다 (1). 콘솔의 프롬프트에 folding 가상 환경을 확인하고, wget 명령으로 파이썬 3 (Python 3.7) 버전의 최신 파이로제타 압축 파일을 내려받는다 (2). 여기서 밑줄이 표시된 <ID>와 <PASSWORD>는 각각 파이로제타의 라이선스에 기록된 사용자와 암호를 가리킨다. 이후, 내려받은 파일을 tar 명령어로 풀고 (3), 해당 디렉터리로 이동한다 (4). 파이로제타 디렉터리에서 설치 관련 명령어를 입력한다 (5). 이때 주의할 점은 파이썬 실행 명령어 (python3)는 미니콘다의 folding 환경에 설치된 파이썬 (굵은 글자로 표시)을 사용해야 한다는 것이다. 이는 conda의 folding 환경에서 사용하는 파이썬이 3.7 버전이어서 파이로제타도 파이썬 3.7 버전용을 사용해야 하며, 설치할 때에도 conda의 가상 환경에 설치된 파이썬 3.7 버전을 사용해야 한다5. 여기서 <USER>는 로제타폴드를 설치하는 우분투 리눅스의 현재 사용자 계정이다. Conda의 RoseTTAFold 및 folding 가상 환경은 사용자의 miniconda3 디렉터리 내에 설치된다. 파이로제타의 원래 설치 문서에는 시스템 파이썬을 사용하는 것으로 되어 있으나, 이렇게 설치하면 후에 나올 run_pyrosetta_ver.sh 명령 실행 시에 오류가 발생하며 실행이 중지된다. 이는 파이로제타가 시스템의 파이썬에 의해 /usr/local/lib/python3.x/dist-packages/ 디렉터리에 설치되기 때문이다. 이에 대해서는 다음과 같이 확인할 수 있다.
---
$ python3 -V <-- (1)
Python 3.9.10 <-- (2)
$ conda activate <-- (3)
(base) $ python3 -V <-- (4)
Python 3.9.7 <-- (5)
$ conda activate RoseTTAFold <-- (6)
(RoseTTAFold) $ python3 -V <-- (7)
Python 3.8.10 <-- (8)
$ conda activate folding <-- (9)
(folding) $ python3 -V <-- (10)
Python 3.7.11 <-- (11)
(folding) $
---
시스템 프롬프트에서 파이썬 버전을 확인하면 (1), 시스템에 설치되어 있는 파이썬의 버전을 확인할 수 있다 (2). 이어, conda 환경을 활성화한 후 (3), 파이썬 버전을 확인하면 (4), conda에서 기본적으로 사용하는 파이썬 버전이 표시된다 (5). Conda의 RoseTTAFold 가상 환경에서 사용하는 파이썬 버전을 확인하기 위하여 RoseTTAFold 가상 환경을 활성화하고 (6) 그 파이썬 버전을 확인하면 (7), 해당 가상 환경에서 사용하는 파이썬 버전이 표시된다 (8). 마찬가지로 folding 가상 환경에서 사용하는 파이썬 버전도 확인할 수 있다 (9-11). 이렇게 도구 실행 환경 별로 파이썬 버전이 다르므로 이를 독립적으로 사용할 수 있도록 가상 환경을 관리하면서 작업하도록 설계되어 있음을 알 수 있다.
또 다른 유의점은 파이로제타 설치 시에 사용자의 umask 환경이 ugo 공히 rx 권한이 허용되어 있어야 한다 (755 또는 775). 시스템 보안을 위해 700 또는 750으로 되어 있으면, 설치 후 사용 시에 파일을 찾을 수 없다는 오류가 발생한다. 파이로제타 설치 시에만 잠시 권한을 부여했다가 다시 보안을 강화해도 실행에는 문제가 없다.
이렇게 파이로제타 설치를 마치고, 앞서 내려받은 데이터베이스를 마저 설치하고 나면 이제 로제타폴드를 사용할 준비가 된 것이다.
# 로제타폴드 실행
로제타폴드 디렉터리에는 설치 시에 함께 만들어진 example 디렉터리가 있고, 여기에는 예제로 사용할 FASTA 포맷의 input.fa 파일이 있다. 로제타폴드가 정상적으로 설치되었는 지 시험해 보기 위해서 로제타폴드 디렉터리에 임의의 디렉터리 (ex. test_ex)를 만들고 example 디렉터리의 input.fa 파일을 이곳으로 복사한 다음, test_ex 디렉터리에서 다음과 같이 로제타폴드의 파이로제타 버전을 실행한다.
---
$ cd test_ex <-- (1)
test_ex$ ../run_pyrosetta_ver.sh input.fa . <-- (2)
Running HHblits
Running PSIPRED
Running hhsearch
Predicting distance and orientations
Running parallel RosettaTR.py
Running DeepAccNet-msa
Picking final models
Final models saved in: ./model
Done
---
위의 보기는 실행이 정상적으로 완료되었을 때의 콘솔 출력이다. 로제타폴드 디렉터리에서 사용자가 만든 예제 디렉터리로 이동하고 (1), 파이로제타 버전의 명령을 실행한다 (2). 이때 주의할 점은 명령문 마지막에 있는, 현재 디렉터리를 의미하는 '.'을 잊지 말고 입력해야 한다는 것이다. 실행 결과물인 구조 예측 모델의 상위 5개 모델은 실행 디렉터리에 생성되는 model 디렉터리에 .pdb 파일의 기호 연결 (symbolic link)로 만들어진다. 또한, 이렇게 실행되는 동안의 여러 상황에 대해서는 실행 디렉터리에 만들어지는 log 디렉터리 내에 .stdout과 .stderr 파일로 기록된다. 실행이 비정상적으로 종료된다면 이 파일들을 들여다보면 그 내용을 알 수 있다.
참고로, 컴퓨터의 사양에 따라서 명령 수행 시간이 수십 분에서 수시간이 될 수도 있기 때문에, 작업을 네트워크를 통해서 진행하는 경우에는 연결이 불안정하여 중간에 실행이 중단될 수 있다. 이런 우려가 있을 때에는 다음과 같이 nohup (no hang-up) 명령어를 사용함과 동시에 실행을 백그라운드 (background)로 돌리고, 결과를 리디렉션 (redirection)함으로써 네트워크가 끊어지거나 로그아웃될 경우에 대비할 수 있다.
---
$ nohup ../run_pyrosetta_ver.sh input.fa . 2>&1 &
---
이때에는 콘솔에 출력되는 내용이 실행 디렉터리 내 nohup.out 파일로 기록된다.
--------------------------------------------
1. https://github.com/RosettaCommons/RoseTTAFold
2. 로그인 시 자동으로 가상 환경으로 들어갈 지 여부는 미니콘다를 설치할 때 설정하게 된다. 이에 대해서는 'conda config --set'의 conda 옵션으로 재설정할 수 있다.
3. 'Yet Another Markup Language' 또는 "YAML Ain't Markup Language"
4. https://www.pyrosetta.org/
5. /home/<USER>/miniconda3/envs/folding/bin/python3
- "초심자를 위한 생물학+정보학"은 아래 PDF 다운 받으셔서 읽는 것도 가능합니다. -
본 기사는 네티즌에 의해 작성되었거나 기관에서 작성된 보도자료로, BRIC의 입장이 아님을 밝힙니다. 또한 내용 중 개인에게 중요하다고 생각되는 부분은 사실확인을 꼭 하시기 바랍니다.
[기사 오류 신고하기]
(http://bioprofiler.tistory.com) IBM-XT시절부터 개인용 컴퓨터를 사용하였으나, 강산이 변한 지금도 어제 코딩한 내용을 오늘 기억하지 못하는 자유인. 박사학위는 분자유전학 분야로 받았으며, 물리학과 화학에 관심만 있음. 현재 대학 교수로 재직 중.
다른 연재기사 보기
전체 보기