本家様 https://github.com/RosettaCommons/RoseTTAFold
蛋白質立体構造予測プログラム
[root@rockylinux9 ~]# cat /etc/redhat-release
Rocky Linux release 9.1 (Blue Onyx)
[root@rockylinux9 ~]# getenforce
Enforcing
[root@rockylinux9 ~]#
[root@rockylinux9 ~]# cd /apps/
[root@rockylinux9 apps]# git clone https://github.com/RosettaCommons/RoseTTAFold
RoseTTAFold/folding python実行環境 †
まずは RoseTTAFold と folding のpython実行環境を用意します.
RoseTTAFold の実行にcuda11を使うなら「RoseTTAFold-linux.yml」を、cuda10なら「RoseTTAFold-linux-cu101.yml」を使用します
cuda11、cuda10の分かれ目ですが、AmpreチップなGPUならcuda11が必須、それ以外のGPUチップならcuda10でも可って感じかな.
ここではA2000(Ampre)を使っているので cuda11 版を使います.
環境を確認してみると
[root@rockylinux9 ~]# cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 525.89.02 Wed Feb 1 23:23:25 UTC 2023
GCC version: gcc version 11.3.1 20220421 (Red Hat 11.3.1-2) (GCC)
[root@rockylinux9 ~]#
python実行環境はpyenv/anacondaでここでは用意していて、まずは下準備
pyenv/anaconda環境が用意されていなければ、crYOLOのように下記を実行します
git clone https://github.com/yyuu/pyenv.git /apps/pyenv
export PYENV_ROOT=/apps/pyenv
export PATH=$PYENV_ROOT/bin:$PATH
pyenv install anaconda3-2022.10
pyenv global anaconda3-2022.10
export PATH=$PYENV_ROOT/versions/anaconda3-2022.10/bin:$PATH
もしcrYOLOとかでpyenv/anaconda環境を既に作ってるなら
export PYENV_ROOT=/apps/pyenv
export PATH=$PYENV_ROOT/bin:$PATH
export PATH=$PYENV_ROOT/versions/anaconda3-2022.10/bin:$PATH
と環境を整えておく. その後に「RoseTTAFold-linux.yml」を下記のように実行.
[root@rockylinux9 ~]# conda env create -f /apps/RoseTTAFold/RoseTTAFold-linux.yml
そしてもう一つ folding 向けに
[root@rockylinux9 ~]# conda env create -f /apps/RoseTTAFold/folding-linux.yml
とします.
環境が作られたかは「conda env list」で確認します
[root@rockylinux9 ~]# conda env list |grep -e RoseTTAFold -e folding
RoseTTAFold /apps/pyenv/versions/anaconda3-2022.10/envs/RoseTTAFold
folding /apps/pyenv/versions/anaconda3-2022.10/envs/folding
[root@rockylinux9 ~]#
trained weights and data †
既にトレーニングされたweightsデータを展開します. 展開場所はRoseTTAFoldの直下です.
[root@rockylinux9 ~]# cd /apps/RoseTTAFold
[root@rockylinux9 RoseTTAFold]# wget https://files.ipd.uw.edu/pub/RoseTTAFold/weights.tar.gz
[root@rockylinux9 RoseTTAFold]# tar xvf weights.tar.gz
weights/
weights/RoseTTAFold_e2e.pt
weights/RoseTTAFold_pyrosetta.pt
weights/RF2t.pt
weights/Rosetta-DL_LICENSE.txt
[root@rockylinux9 RoseTTAFold]#
install third-party software †
必要なアプリを追加します. 「install_dependencies.sh」を実行すればインストールされます.
lddt(Local Distance Difference Test, https://swissmodel.expasy.org/lddt
)とcs-blast(Context-specific mutation probabilities for protein sequencing searching, https://github.com/soedinglab/csblast
)
[root@rockylinux9 RoseTTAFold]# ./install_dependencies.sh
installing for linux
downloading lddt . . .
:
Archive: lddt.zip
inflating: lddt/stereo_chemical_props.txt
inflating: lddt/lddt
downloading cs-blast . . .
:
[root@rockylinux9 RoseTTAFold]# ls -l
:
drwxr-xr-x. 4 root root 58 Mar 7 16:53 csblast-2.2.3
drwxr-xr-x. 2 root root 51 Mar 7 16:53 lddt
:
[root@rockylinux9 RoseTTAFold]#
実際にはこのほかに「GNU parallel」が必要で epelリポジトリにある「parallel.noarch」でもいいのかもしれないが、ここでは最新版をソースから持ってきて入れている
wget https://ftp.jaist.ac.jp/pub/GNU/parallel/parallel-20210722.tar.bz2
tar xf parallel-20210722.tar.bz2
cd parallel-20210722
./configure; make ; make install
これで「/usr/local/bin」に「parallel」がインストールされます. 最新版にする理由ですが、他のアプリ(I-TASSER)で問題があり、最新版を使っていたため. なのでepelリポジトリ提供の「GNU parallel」が RoseTTAFold が動かないとかは不明です
sequence and structure databases †
データセットを用意します
必要なデータセットは3種. BFD と uniref30 と structure templates
それぞれの取得先は下記参照
BFD | _ttps://storage.googleapis.com/alphafold-databases/casp14_versions/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt.tar.gz |
uniref30 | _ttp://wwwuser.gwdg.de/~compbiol/uniclust/2020_06/UniRef30_2020_06_hhsuite.tar.gz |
structure templates | _ttps://files.ipd.uw.edu/pub/RoseTTAFold/pdb100_2021Mar03.tar.gz |
この内BFDは、Alphafoldの構築で bfd として取得済み、uniref30 はRaptorX-3DModelingで取得済みなので流用します
ここではこれらを「/Public/alphafold」の中に展開していて、それをRoseTTAFoldにシンボリックリンクで配置させてます
[root@rockylinux9 RoseTTAFold]# ln -s /Public/alphafold/bfd bfd
[root@rockylinux9 RoseTTAFold]# ln -s /Public/alphafold/HH-suite UniRef30_2020_06
[root@rockylinux9 RoseTTAFold]# ln -s /Public/alphafold/pdb100_2021Mar03 pdb100_2021Mar03
[root@rockylinux9 RoseTTAFold]# ls -l bfd pdb100_2021Mar03 UniRef30_2020_06
lrwxrwxrwx. 1 root root 21 Mar 7 16:55 bfd -> /Public/alphafold/bfd
lrwxrwxrwx. 1 root root 34 Mar 7 16:56 pdb100_2021Mar03 -> /Public/alphafold/pdb100_2021Mar03
lrwxrwxrwx. 1 root root 26 Mar 7 16:56 UniRef30_2020_06 -> /Public/alphafold/HH-suite
[root@rockylinux9 RoseTTAFold]#
PyRosetta licence and install the package †
PyRosettaを「folding」実行環境に組み込みます.
PyRosettaは python バージョンで複数用意されているのでまずは「folding」実行環境のpythonバージョンを調べます.
[root@rockylinux9 ~]# source activate folding
(folding) [root@rockylinux9 ~]#
(folding) [root@rockylinux9 ~]# conda list | grep python
python 3.7.16 h7a1cb2a_0
python-dateutil 2.8.2 pyhd3eb1b0_0
(folding) [root@rockylinux9 ~]#
っとどうやら「python-3.7」みたい. なので 取得すべき PyRosetta は python-3.7 系となる.
そしてPyRosettaにはインストール方式が複数あって、.tar.gzのsetupコマンドで入れるか、.whlのpipを使うかのどちらか.
ここではcondaで環境整備しているので whl 形式のファイルを使うことにしました.
実際のPyRosettaの入手ですが、ライセンス品で手続きが必要です. https://els2.comotion.uw.edu/product/pyrosetta
から入手してください.
ここでは「PyRosetta4.Release.python37.linux.wheel」の「pyrosetta-2023.9+release.4388618-cp37-cp37m-linux_x86_64.whl」を取得しました.
ファイルを取得後に、下記のようにして「folding」実行環境に組み込みます.
(folding) [root@rockylinux9 ~]# which pip
/apps/pyenv/versions/anaconda3-2022.10/envs/folding/bin/pip
(folding) [root@rockylinux9 ~]#
/apps/pyenv/versions/anaconda3-5.3.1/envs/folding/bin/pip
(folding) [root@rockylinux9 ~]# pip install ./pyrosetta-2021.29+release.d8f5566-cp37-cp37m-linux_x86_64.whl
(確認)
(folding) [root@rockylinux9 ~]# conda list
:
cudatoolkit 10.1.243 h6bb024c_0
:
numpy 1.21.5 py37h6c91a56_3
numpy-base 1.21.5 py37ha15fc14_3
:
pyrosetta 2023.9+release.4388618 pypi_0 pypi
:
(folding) [root@c ~]#
となる.
....A2000なので「cudatoolkit 10.1.243」は微妙...
EnvironmentModules †
「/apps/modulefiles/RoseTTAFold 」
#%Module1.0
prepend-path PATH /apps/pyenv/versions/anaconda3-2022.10/envs/RoseTTAFold/bin:/apps/RoseTTAFold
使い方 †
同封されている「run_pyrosetta_ver.sh」を使用するが一部修正
| --- run_pyrosetta_ver.sh.orig 2023-03-07 17:07:27.138282772 +0900
+++ run_pyrosetta_ver.sh 2023-03-07 17:08:32.516866293 +0900
@@ -1,4 +1,8 @@
#!/bin/bash
+if [ $# != 2 ]; then
+ echo " useage: $0 <input fasta> <workdir>"
+ exit 1
+fi
# make the script stop when error (non-true exit code) is occured
set -e
@@ -6,7 +10,7 @@
############################################################
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
-__conda_setup="$('conda' 'shell.bash' 'hook' 2> /dev/null)"
+__conda_setup="$('/apps/pyenv/versions/anaconda3-2022.10/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
eval "$__conda_setup"
unset __conda_setup
# <<< conda initialize <<<
|
同じく「run_e2e_ver.sh」も一部修正
| --- run_e2e_ver.sh.orig 2023-03-07 17:09:07.799180861 +0900
+++ run_e2e_ver.sh 2023-03-07 17:09:37.870447731 +0900
@@ -1,4 +1,8 @@
#!/bin/bash
+if [ $# != 2 ]; then
+ echo " useage: $0 <input fasta> <workdir>"
+ exit 1
+fi
# make the script stop when error (non-true exit code) is occured
set -e
@@ -6,7 +10,7 @@
############################################################
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
-__conda_setup="$('conda' 'shell.bash' 'hook' 2> /dev/null)"
+__conda_setup="$('/apps/pyenv/versions/anaconda3-2022.10/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
eval "$__conda_setup"
unset __conda_setup
# <<< conda initialize <<<
|
共に引数のエラーハンドルとcondaへの絶対PATH指定を入れた.
その上で
[saber@rockylinux9 ~]$ module use --prepend /apps/modulefiles/
[saber@rockylinux9 ~]$ module load RoseTTAFold
[saber@rockylinux9 ~]$ mkdir -p test/RoseTTAFold
[saber@rockylinux9 ~]$ cd test/RoseTTAFold
[saber@rockylinux9 RoseTTAFold]$ vi input.fa
>T1078 Tsp1, Trichoderma virens, 138 residues|
MAAPTPADKSMMAAVPEWTITNLKRVCNAGNTSCTWTFGVDTHLATATSCTYVVKANANASQASGGPVTCGPYTITSSWSGQFGPNNGFTTFAVTDFSKKLIVWPAYTDVQVQAGKVVSPNQSYAPANLPLEHHHHHH
[saber@rockylinux9 RoseTTAFold]$
[saber@rockylinux9 RoseTTAFold]$ run_pyrosetta_ver.sh input.fa out
メモ †
- DAN_msa.stderr
「dtypes.py:550: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, ...」が表示される
folding環境のnumpyが最新すぎる. 「numpy=1.16」位にする
[root@rockylinux9 ~]# source activate folding
(folding) [root@rockylinux9 ~]# conda install numpy=1.16
実行中でファイルに書き込み出来ないとしてエラーが発生した. 恐らく個人個人でRoseTTAFoldを構築する際には所有者も実行者はも同じなのでエラーが起こらなかったのだろうが、ここはrootが整備して、複数の方々が利用する環境を想定して作っているため難しい所がある.
なので下記のように調整してます.
#code(nonumber){{
chmod 666 /apps/RoseTTAFold/network/equivariant_attention/from_se3cnn/cache/trans_Q/mutex
ただ、これって複数人が同時に使用したらアウトっぽい気がする...