本家様 https://github.com/deepmind/alphafold

AIを使った蛋白質立体構造予測プログラム.

[root@c ~]#  cd /apps
[root@c apps]# git clone https://github.com/deepmind/alphafold
 
(確認)
[root@c apps]# ls -l alphafold/
total 56
drwxr-xr-x 6 root root    77 Jul 20 02:49 alphafold/
-rw-r--r-- 1 root root   973 Jul 20 02:49 CONTRIBUTING.md
drwxr-xr-x 2 root root    89 Jul 20 02:49 docker/
drwxr-xr-x 2 root root    54 Jul 20 02:49 imgs/
-rw-r--r-- 1 root root 11358 Jul 20 02:49 LICENSE
-rw-r--r-- 1 root root 15665 Jul 20 02:49 README.md
-rw-r--r-- 1 root root   189 Jul 20 02:49 requirements.txt
-rw-r--r-- 1 root root 11065 Jul 20 02:49 run_alphafold.py
-rw-r--r-- 1 root root  2433 Jul 20 02:49 run_alphafold_test.py
drwxr-xr-x 2 root root   231 Jul 20 02:49 scripts/
-rw-r--r-- 1 root root  1829 Jul 20 02:49 setup.py
 
[root@c apps]#

databases

遺伝子配列データセットと蛋白質立体構造データセットが必要. 取得用のスクリプトが用意されている.

そのスクリプトの実行には rsync や aris2 コマンドが必要で事前に入れておく.

[root@c ~]# yum --enablerepo=epel install rsync aria2

っでデータセットを入れておく場所を用意して、取得用スクリプトを実行する.

[root@c ~]# mkdir /apps/AlphafoldData
 
[root@c ~]# /apps/alphafold/scripts/download_all_data.sh  /apps/AlphafoldData

*注意. 「download_all_data.sh」を途中で止めて、再度実行するとまた初めからダウンロードします. 既に取得したにも関わらす再度ダウンロードを行うので注意.

「download_all_data.sh」の中身を見ると、各データセットごとのスクリプトを連続して実行しているだけなので、
もし途中で止まったら、既にダウンロード完了したスクリプトを除いて続ければ幸せになるのかと.

下記ファイルがダウンロードされる

AlphaFold parametersdownload_alphafold_params.sh_ttps://storage.googleapis.com/alphafold/alphafold_params_2021-07-14.tar
BFDdownload_bfd.sh_ttps://storage.googleapis.com/alphafold-databases/casp14_versions/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt.tar.gz
MGnifydownload_mgnify.sh_tp://ftp.ebi.ac.uk/pub/databases/metagenomics/peptide_database/2018_12/mgy_clusters.fa.gz
PDB70download_pdb70.sh_ttp://wwwuser.gwdg.de/~compbiol/data/hhsuite/databases/hhsuite_dbs/old-releases/pdb70_from_mmcif_200401.tar.gz
PDB mmCIF filesdownload_pdb_mmcif.shrsync.rcsb.org::ftp_data/structures/divided/mmCIF/
Uniclust30download_uniclust30.sh_ttp://wwwuser.gwdg.de/~compbiol/uniclust/2018_08/uniclust30_2018_08_hhsuite.tar.gz
Uniref90download_uniref90.sh_tp://ftp.uniprot.org/pub/databases/uniprot/uniref/uniref90/uniref90.fasta.gz

ダウンロードが遅ければミラーサイトを使用するのもありかと.

  • download_uniref90.sh
    https://ddbj.nig.ac.jp/public/mirror_database/uniprot/uniref/uniref90/ と代替可能かな.
  • download_pdb_mmcif.sh
    rsync.rcsb.org::」は「ftp.pdbj.org::」 へ変更可能かな.「ftp.pdbj.org::」はオリジナルよりも早いみたい.
    --- download_pdb_mmcif.sh.orig  2021-07-21 20:23:27.824176063 +0900
    +++ download_pdb_mmcif.sh       2021-07-21 20:33:27.762131908 +0900
    @@ -41,8 +41,8 @@
     
     echo "Running rsync to fetch all mmCIF files (note that the rsync progress estimate might be inaccurate)..."
     mkdir --parents "${RAW_DIR}"
    -rsync --recursive --links --perms --times --compress --info=progress2 --delete --port=33444 \
    -  rsync.rcsb.org::ftp_data/structures/divided/mmCIF/ \
    +rsync --recursive --links --perms --times --compress --info=progress2 --delete  \
    +  ftp.pdbj.org::ftp_data/structures/divided/mmCIF/ \
       "${RAW_DIR}"
     
     echo "Unzipping all mmCIF files..."

最終的な各フォルダのサイズは下記のようになる

[root@c AlphafoldData]# du -hs ./*
1.8T    ./bfd
64G     ./mgnify
3.5G    ./params
56G     ./pdb70
206G    ./pdb_mmcif
87G     ./uniclust30
59G     ./uniref90
 
[root@c AlphafoldData]#

あとファイル所有者が 600 とかもあるので適時修正. bfd とか uniclust30 とか pdb70 とかにあった
「find . ! -perm -o=r」で検索かな. othersが読めないファイルを探す

*メモ
rsyncでダウンロードするdownload_pdb_mmcif.shですが、自分のサイトから実行する際に下記のように言われる時がある

rsync: failed to connect to ftp.pdbj.org (133.1.158.161): Connection timed out (110)
rsync error: error in socket IO (code 10) at clientserver.c(125) [Receiver=3.1.2]

これはPROXYの設定で回避可能かもしれません。
「export RSYNC_PROXY=<proxyサーバ>:<port>」と設定してください.

Alphafold 実行環境

本家様では docker の利用を提案している.
そのままなぞれば実行できるみたい. ここでは https://github.com/kalininalab/alphafold_non_dockerにある docker を使わない方法を採用してみる.
ただ、https://github.com/kalininalab/alphafold_non_dockerはminicondaを使っている. それもいいのだが、crYOLOとかtopazでここではanacondaを使っているのでそれに合わせて.

git clone https://github.com/yyuu/pyenv.git /apps/pyenv
export PYENV_ROOT=/apps/pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init - --no-rehash)"
 
pyenv install anaconda3-5.3.1
pyenv global anaconda3-5.3.1
export PATH=$PYENV_ROOT/versions/anaconda3-5.3.1/bin/:$PATH
conda update --all

Alphafold 実行環境を作ります

[root@c ~]# conda create -n alphafold python==3.8
 
[root@c ~]# source activate alphafold
(alphafold) [root@c ~]# conda install -y -c conda-forge openmm==7.5.1 cudnn==8.2.1.32 cudatoolkit==11.0.3 pdbfixer==1.7
(alphafold) [root@c ~]# conda install -y -c bioconda hmmer==3.3.2 hhsuite==3.3.0 kalign2==2.04
 
(alphafold) [root@c ~]# cd /apps
(alphafold) [root@c apps]# wget -q -P alphafold/alphafold/common/ \
https://git.scicore.unibas.ch/schwede/openstructure/-/raw/7102c63615b64735c4941278d92b554ec94415f8/modules/mol/alg/src/stereo_chemical_props.txt
 
(alphafold) [root@c apps]# ls -CF alphafold/alphafold/common/
__init__.py    protein_test.py            stereo_chemical_props.txt
confidence.py  residue_constants.py       testdata/
protein.py     residue_constants_test.py
 
(alphafold) [root@c apps]# pip install absl-py==0.13.0 biopython==1.79 chex==0.0.7 dm-haiku==0.0.4 dm-tree==0.1.6 \
 immutabledict==2.0.0 jax==0.2.14 ml-collections==0.1.0 numpy==1.19.5 scipy==1.7.0 tensorflow==2.5.0
[この段階で jax と jaxlib は 0.2.14/0.1.69 となっている]
 
(alphafold) [root@c apps]# pip install --upgrade jax jaxlib==0.1.69+cuda111 -f https://storage.googleapis.com/jax-releases/jax_releases.html
[この更新で jax は 0.2.18に jaxlibは 0.1.69+cuda111 となる]
 
 
(alphafold) [root@c apps]# cd /apps/pyenv/versions/anaconda3-5.3.1/envs/alphafold/lib/python3.8/site-packages/
(alphafold) [root@c site-packages]# patch -p0 < /apps/alphafold/docker/openmm.patch
[このpatchで変更されるのは ./simtk/openmm/app/topology.py ]
 
(alphafold) [root@c site-packages]# source deactivate
[root@c site-packages]#

スクリプトの準備

[root@c ~]# cd /apps/src
[root@c src]# git clone https://github.com/kalininalab/alphafold_non_docker
 
[root@c src]# cp alphafold_non_docker/run_alphafold.sh /apps/alphafold/
[root@c src]# vi /apps/alphafold/run_alphafold.sh
  :
-current_working_dir=$(pwd)
+current_working_dir=$alphafold_path
 alphafold_script="$current_working_dir/run_alphafold.py"
  :
[root@c src]#
--- alphafold/common/residue_constants.py.orig  2021-07-23 04:32:45.571621605 +0900
+++ alphafold/common/residue_constants.py       2021-07-23 09:10:14.099424040 +0900
@@ -20,6 +20,7 @@
 
 import numpy as np
 import tree
+import os
 
 # Internal import (35fd).
 
@@ -403,7 +404,7 @@
     residue_bond_angles: dict that maps resname --> list of BondAngle tuples
   """
   stereo_chemical_props_path = (
-      'alphafold/common/stereo_chemical_props.txt')
+      os.environ['alphafold_path'] + '/alphafold/common/stereo_chemical_props.txt')
   with open(stereo_chemical_props_path, 'rt') as f:
     stereo_chemical_props = f.read()
   lines_iter = iter(stereo_chemical_props.splitlines())

EnvironmentModules

「/etc/modulefiles/Alphafold」

#%Module1.0
set          alphafold_path  /apps/alphafold
set          root /apps/pyenv/versions/anaconda3-5.3.1/envs/alphafold
setenv       alphafold_path  $alphafold_path
 
prepend-path PATH $root/bin:$alphafold_path

使ってみる

環境変数「CUDA_VISIBLE_DEVICES」が正しく設定されていないとGPUで計算をしてくれない

module load Alphafold
run_alphafold.sh -d /apps/AlphafoldData -o . -m model_1 -f ./query.fasta -t 2020-05-14 -g true -a 0

各引数は「run_alphafold.sh」を実行すると説明が表示される.
「-f」は入力ファイル. fasta形式のファイル.
「-g」はGPUを使うなら「-g true」、使わないなら「-g 0」とかにする. 初回リリースから変更されたみたい
「-a」の値はGPUIDの番号. 1枚目のGPUを使うなら「-a 0」. 二枚目なら「-a 1」.
「-o」は出力先. 「-o .」で実行場所に結果が展開される

メモ

「-g」を有効にする値は「-g true」のみ. それ以外は無効みたい.
Unable to initialize backend 'tpu_driver': Not found: Unable to find driver in registry given worker: local://」は気にしない.
Unable to initialize backend 'tpu': Invalid argument: TpuPlatform is not available.」も気にしない.
gpuは1枚で十分?
インストールされるtensorflowがcuda-11を要求するみたい.


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2021-09-30 (木) 02:18:26 (20d)