AlphaFold2をinstallして使ってみました

参考にしたサイトは

[https://qiita.com/Ag_smith/items/7c76438906b3f665af38](https://qiita.com/Ag_smith/items/7c76438906b3f665af38)
[https://www.af2anatomia.jp/](https://www.af2anatomia.jp/)

上の２つのサイトを見ればほぼ出来るのであろうが、linux初心者には
すんなりinstallできなかったので気になった点やうまく行った順番を初心者目線で記録しておきます
（dockerなしのやり方です）

必要な環境
・4TBのSSD（installに3TB近くとられるので4TBあるとよい）
・32GB以上のメモリ
・linux　（ubuntu20.04）

### 1. GitHubよりdatabaseのダウンロードに必要なスクリプトファイルをダウンロードしておく
<font color="red">※databaseのダウンロードの前にやっておく</font>
homeのすぐ下をINSTALLDIRと指定してファイルをダウンロード
（gitがinstallされていない場合は入れてください）
~~~
INSTALLDIR=/home/あなたのPCのuser名
mkdir -p ${INSTALLDIR}
cd ${INSTALLDIR}
git clone https://github.com/deepmind/alphafold.git
cd alphafold
~~~
homeのすぐ下にalphafoldのフォルダができます
### 2. databaseのダウンロード
時間がかなりかかります(9時間かかりました）。事前に強力なダウンロードコマンドを入れておくといいそうです
~~~
sudo apt -y install rsync aria2
~~~
ミラーサイトを利用するとダウンロードの時間が早くなります
`/alphafold/scripts/download_pdb_mmcif.sh`を開きます
![img0_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/e4f622b4-0e5b-7e1f-46a1-64d591c44727.png)
48,49行目あたりの
`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/ \`
に変更しておきます
![img0_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/5f858d3f-405b-fd1b-3088-006b32253d37.png)

圧縮してダウンロードすると早いです
`/alphafold/scripts/download_pdb_seqres.sh`を開きます
![img0_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/b4638207-9578-2e77-45ec-0f12a1e60246.png)
34行目くらいの
`SOURCE_URL="ftp://ftp.wwpdb.org/pub/pdb/derived_data/pdb_seqres.txt"`
を
`SOURCE_URL="https://ftp.pdbj.org/pub/pdb/derived_data/pdb_seqres.txt.gz"`
に変更しておくと早いです
![img0_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/ff79908a-cf21-2629-4144-826e4e9d7277.png)

ダウンロードする場所を指定します
今回はhomeのすぐ下にdatabaseフォルダを作成します
~~~
mkdir -p $INSTALLDIR/database
~~~
<font color="red">注意！ここで作成した際のフォルダ名は以後変更しないでください。</font>
ここではその中にダウンロードします。

作成したdatabaseフォルダをダウンロードする場所として指定します

~~~
DOWNLOAD_DIR=${INSTALLDIR}/database
~~~
ダウンロードを開始します。（私は9時間かかりました）
※ミラーサイトの利用など、変更しておかなかったら、３日たっても終わらなかったです
ダウンロード内容の詳細や、もっと時間を短縮したい方は[こちらのサイト](https://qiita.com/Ag_smith/items/7c76438906b3f665af38)に記載されています
~~~
scripts/download_all_data.sh ${DOWNLOAD_DIR}
~~~
ダウンロードが終了すると
作成したDownloadフォルダ内に9つのフォルダができています
bfd　mgnify　params　pdb70　pdb_mmcif　pdb_seqres　uniprot　uniclust30　uniref90
※圧縮してダウンロードするように修正した場合は、圧縮したファイルが`pdb_seqres`にあるので、解凍しておきます。
~~~
cd ${DOWNLOAD_DIR}/pdb_seqres
gunzip pdb_seqres.txt.gz
~~~


### 3. AlphaFoldのインストール

1で作成されたalphafoldのフォルダをALFAFOLDDIRと指定します
~~~
ALPHAFOLDDIR=${INSTALLDIR}/alphafold
~~~
動作に必要とされるファイル「stereo_chemical_props.txt」をダウンロード
Alphafold/commonのフォルダ内にダウンロードされます
~~~
wget -q -P ${ALPHAFOLDDIR}/alphafold/common/ https://git.scicore.unibas.ch/schwede/openstructure/-/raw/7102c63615b64735c4941278d92b554ec94415f8/modules/mol/alg/src/stereo_chemical_props.txt --no-check-certificate
~~~
仮想環境を作成するためにminicondaをインストールします
~~~
cd ${ALPHAFOLDDIR}
wget -q -P . https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash ./Miniconda3-latest-Linux-x86_64.sh -b -p ${ALPHAFOLDDIR}/conda
rm Miniconda3-latest-Linux-x86_64.sh
~~~
minicondaを使って、仮想環境を作り、必要なソフトをインストールします
~~~
. "${ALPHAFOLDDIR}/conda/etc/profile.d/conda.sh"
export PATH="${ALPHAFOLDDIR}/conda/condabin:${PATH}"
conda create -p ${ALPHAFOLDDIR}/alphafold-conda python=3.8 -y
conda activate ${ALPHAFOLDDIR}/alphafold-conda
conda update -n base conda -y
~~~

~~~
conda install -y -c conda-forge openmm==7.5.1 cudnn==8.2.1.32 cudatoolkit==11.1.1 pdbfixer==1.7
conda install -y -c bioconda hmmer==3.3.2 hhsuite==3.3.0 kalign3
~~~
~~~
pip install pandas 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
pip install --upgrade jax==0.2.25 jaxlib==0.1.72 -f https://storage.googleapis.com/jax-releases/jax_releases.html
~~~
パッチをあてる
~~~
cd ${ALPHAFOLDDIR}/alphafold-conda/lib/python3.8/site-packages/ && patch -p0 < ${ALPHAFOLDDIR}/docker/openmm.patch
~~~
binフォルダをAlphafoldフォルダ内に作成
~~~
mkdir -p $ALPHAFOLDDIR/bin
cd $ALPHAFOLDDIR/bin
~~~
GitHubより[alphafold shell script](https://gist.github.com/YoshitakaMo/bcff18a6ea4e77a7613c2c5c102e5b1a)をダウンロードします。zipファイルがダウンロードされるのでextract hereで解凍します。
中にはalphafoldのshell scriptファイルが１つあります。
binフォルダ内に置きます

alphafold shell scriptの中を編集します。
Text Editorで開きます
AlphaFoldの場所とデータベースの場所を自分の環境に修正します。
![img8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/f3f1b0d5-b97d-549d-5309-5d85533506f1.png)
`bin`フォルダに保存した`alphafold`ファイルに権限を渡します
~~~
chmod +x alphafold
~~~

次に、以下のシェルスクリプトファイルも作成します
（ファイル名はrun_alphafold.shでalphafold内に保存）
Text EditorにコピペでOK
~~~
export PATH="/home/あなたのPCのuser名/alphafold/bin:$PATH"

# Specify a fasta file whose structure you want to predict.
FASTAFILE="1ema.fasta"
# Specify a folder to save output files
OUTPUTDIR="."
# You can restrict the structures that AlphaFold selects as templates
# before the release date specified as DATE
DATE="2099-07-14"
# 以降AlphaFold処理。以下は特に変更する必要なし。
mkdir -p ${OUTPUTDIR}
alphafold --fasta_paths=${FASTAFILE} \
          --output_dir=${OUTPUTDIR} \
          --model_preset=monomer_ptm \
          --run_relax \
          --use_gpu_relax \
          --num_multimer_predictions_per_model=1 \
          --max_template_date=${DATE}
# ディスク容量節約のため、計算終了後のresult_model_*_pklを削除する処理（※任意）
FILE=${FASTAFILE%.*}
rm ${OUTPUTDIR}/${FILE}/result_model_*.pkl
~~~

FASTAFILE="1ema.fasta"　の部分はあなたが使うfastaファイル名に変更します。
OUTPUTDIR="."なので、結果の保存場所はalphafoldフォルダ内になっています。好きな場所に変更可能です。

※fastaファイルのサンプルは[PDBのサイト](https://www.rcsb.org/)で入手できます。
1. [PDBのサイト](https://www.rcsb.org/)にアクセスし、`PDB Archive`に`PDB ID`か`タンパク質名`を入力　　ex.　1EMA
![img9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/8653c5fa-e2ef-72a2-3f18-a1c2d1b286b1.png)

1. 表示されたら`Display filesfasta`より`FASTA Sequence` を選択
![img10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/4d204d22-2da8-cdbf-b316-0571a105f3a7.png)

1. アミノ酸配列が表示されるので、すべてコピーしてText Editorに貼り付ける
拡張子は`.fasta`でalphafoldフォルダ内に保存しておきます
![img11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/0f437b2d-d0df-ad0a-5d3f-704e3c954502.png)

### 4. AlphaFoldを実行する
`run_alphafold.sh`があるフォルダに移動
~~~
cd ${ALPHAFOLDDIR}
~~~
`run_alphafold.sh`に実行権限を渡します
~~~
chmod +x run_alphafold.sh
~~~
実行します
~~~
./run_alphafold.sh
~~~
こんな感じで実行されていきます。

![img12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/1b4f7d83-b4b4-e4a2-66a5-93bf043e95a0.png)

終了するとalphafoldフォルダ内にfastaファイル名のフォルダができます。

### 5. pdbファイルを開いてみましょう
出来上がったフォルダの中に.pdbファイルがありますが、pdbのviewerがないと3D画像を見ることができません。
無料のソフト等沢山ありますので、インストールしておくとよいでしょう。
また、PDBのサイトにアップするとみることもできます。
1. [PDBの3D view](https://www.rcsb.org/3d-view) サイトを開きます
![img13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/c15c2ff9-e55c-a42e-31bc-d10848ed10b2.png)

`Open Files`でファイルを選択すると3D画像が表示されます(ドラッグアンドドロップでも可）

ex.緑色蛍光タンパク質1EMAの3D（Alphafold実行時間　2時間かかりました）
![1EMA.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/5bc6d302-0156-5cb2-a976-f6e189c81a61.png)
クリックすると拡大表示されます
![1EMA_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/5e0851b8-d028-eb1c-2131-269060c9b73d.png)
ちなみに次は緑色蛍光タンパク質1EMAにカルシウムがくっついた3D（Alphafold実行時間　22時間かかりました)
![7fhk.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666944/a9d85918-31c8-6a1d-e4ca-ea3665c47aba.png)



ーーーーーーーーーーー
うまく行かなくて苦労した点、初心者がやらかした失敗点
* databaseをDownload した後フォルダ名を別名に変更しました。path等の記述もすべて変更しなおしたのに実行するとなぜか変更前のフォルダ名を探しに行ってしまい、Download した時点でどこかにフォルダ名が記録されているのではないかと思ったが、探せなかったので、結局元の名前に戻して実行したらうまくいきました。
* databaseのダウンロードが途中でエラーが起きたため、削除し、再度ダウンロードをしたが、完全削除ではなくゴミ箱に捨てただけで再ダウンロードを実行したため、空き容量がなくなり、GUIでの削除ができなくなった。
* alphafoldのdatabaseが同じSSDの中じゃないとうまく行かなかった
※500GBのSSDにalphafold,4TBのHDDにdatabaseと分けてインストールしたらうまく行かなかったので4TBのSSD１本で行いました。
* Alphafoldのフォルダを一度削除して再インストールしたらインストールされないフォルダがあったminiconda関係
* 仮想環境を一度削除しようと思ったが上記のやり方が仮想環境名を登録しないやり方だったため、仮想環境名がない仮想環境の削除方法を見つけるのに苦労した
* bin/alphafold  と　run_alphafold.sh の両方に実行権限が必要だった