AlphaFold2無痛安裝教學(超級詳細)

2023-04-03 12:02:31

介紹

AlphaFlod2作為最近在生物領域非常的火的AI,給生物醫藥領域帶來了劃時代的影響,許多研究者都開始嘗試使用AlphaFold2介入各自的工作。

但是由於AlphaFold2涉及到了很多模組和細節,在我安裝過很多次之後(踩過很多坑之後),希望通過這篇文章讓大家能夠無痛的安裝和使用AlphaFold2。

環境

Linux(Ubuntu)
cmake=3.23
python=3.9/3.10

安裝

CMAKE安裝

CMAKE下載地址
CMAKE的安裝包有Source Distribution 和 Binary Distribution兩個版本,前者需要使用者自己編譯安裝,後者是已經編譯好的可執行程式

# 檢視Linux系統位數
getconf LONG_BIT

# 編譯安裝
# 根據系統位數下載原始碼
tar -xvf cmake-version.tar
cd cmake-version
./bootstrap 
make
make install

# 測試安裝是否成功
cmake -h

hmmer安裝

# 通過軟體倉庫安裝
sudo apt install hmmer                     # Linux (Ubuntu, Debian...)
sudo dnf install hmmer                     # Linux (Fedora)
sudo conda install -c biocore hmmer        # Anaconda

# 編譯安裝(未測試)
wget http://eddylab.org/software/hmmer/hmmer.tar.gz
tar zxf hmmer.tar.gz
cd hmmer-3.3.2
./configure --prefix=/usr/bin/ # 可自定義安裝路徑,如果未安裝到系統目錄下,則需要在安裝完成之後,把安裝目錄加入PATH環境變數中
make
make check                 # optional: run automated tests
make install               # optional: install HMMER programs, man pages
(cd easel; make install)   # optional: install Easel tools

# 測試安裝是否成功
jackhmmer -h

HHsuite安裝

# 編譯安裝
git clone https://github.com/soedinglab/hh-suite.git
mkdir -p hh-suite/build && cd hh-suite/build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/bin ..
make -j 4 && make install

# 測試安裝是否成功
hhblits -h

注意:請通過編譯的方式安裝hhsuite否則在使用該模組時可能會出現奇怪的問題

Kalign安裝

Kalign安裝包下載

tar -zxvf kalign-<version>.tar.gz
cd kalign-<version>
mkdir build 
cd build
cmake .. 
make 
make test 
make install

OpenMM安裝

# 編譯安裝
git clone https://github.com/openmm/openmm.git
mkdir build && cd build
ccmake ../openmm
make && sudo make install
pip install --user numpy cython
make PythonInstall

# 使用conda安裝(未測試)
conda install -c conda-forge openmm
# 如果使用conda的版本大於4.8.4,則conda可以根據你的cuda編譯一個適合你cuda版本的OpenMM,且支援特定的cuda版本
conda install -c conda-forge openmm cudatoolkit=10.0

# 驗證OpenMM是否安裝成功
python -m openmm.testInstallation

PDBfixer安裝

pip install git+http://github.com/openmm/pdbfixer.git

Python依賴包安裝

# 手動安裝
pip install --user absl-py
pip install --user biopython
pip install --user git+https://github.com/deepmind/dm-haiku
pip install --user dm-tree
pip install --user immutabledict
pip install --user jax
pip install --user "jax[cuda11_cudnn82]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
pip install --user ml_collections
pip install --user numpy
pip install --user pandas
pip install --user matplotlib
pip install --user sonnet
pip install --user scipy
pip install --user tensorflow
pip install --user tqdm

# 通過Alphafold提供的requirements檔案安裝
pip install --user -r requirements.txt

AlphaFold安裝

AlphaFold

# 克隆AlphaFold庫
git clone https://github.com/deepmind/alphafold

# stereo_chemical_props.txt下載
wget -P alphafold/alphafold/common/ https://git.scicore.unibas.ch/schwede/openstructure/-/raw/7102c63615b64735c4941278d92b554ec94415f8/modules/mol/alg/src/stereo_chemical_props.txt

# 資料庫安裝
## 下載全部資料庫
./scripts/download_all_data.sh <DOWNLOAD_DIR>

## 如果你的硬碟空間不足,也可以嘗試只下載reduced database
./scripts/download_all_data.sh <DOWNLOAD_DIR> reduced_dbs

# 建立結果儲存目錄
mkdir ./output

# 使用reduced DB執行AlphaFold Demo
python ./run_alphafold.py \
  --fasta_paths=test_sequence.fasta \
  --max_template_date=2020-05-14 \
  --model_preset=monomer \
  --db_preset=reduced_dbs \
  --data_dir=$DOWNLOAD_DIR \     
  --output_dir=./output

# 使用full DB執行AlphaFold 
python ./run_alphafold.py \
  --fasta_paths=test_sequence.fasta \
  --output_dir=./output \
  --data_dir=$DOWNLOAD_DIR
  --uniref90_database_path=$DOWNLOAD_DIR/uniref90/uniref90.fasta \
  --mgnify_database_path=$DOWNLOAD_DIR/mgnify/mgy_clusters.fa \
  --template_mmcif_dir=$DOWNLOAD_DIR/pdb_mmcif/mmcif_files/ \
  --max_template_date=2020-05-14 \
  --obsolete_pdbs_path=$DOWNLOAD_DIR/pdb_mmcif/obsolete.dat \
  # 如果GPU視訊記憶體不是很大不建議開啟relax,會超視訊記憶體
  --run_relax=false \
  --use_gpu_relax=false \
  --db_preset==full_dbs \
  --bfd_database_path=$DOWNLOAD_DIR/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt \
  --uniclust30_database_path=$DOWNLOAD_DIR/uniclust30/uniclust30_2018_08/uniclust30_2018_08 \
  --model_preset=monomer \
  --pdb70_database_path=$DOWNLOAD_DIR/pdb70/pdb70

# $DOWNLOAD_DIR=資料庫安裝路徑, 可以是任意位置

報錯處理

  1. cuda_error_out_of_memory
    如果GPU的型號在比較老,視訊記憶體小於6G,使用最新版本的jax可能會出現out of memory錯誤,只需要回退jax和jaxlib的版本到0.3.15即可
pip install --user jax==0.3.15 jaxlib==0.3.15+cuda11.cudnn82 -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
  1. No module named 'simtk.openmm.app.internal'
    請看另一篇部落格有具體的解決方案:解決方法

  2. GnuTLS recv error (-110): The TLS connection was non-properly terminated

    • 檢視是否開啟代理,取消所有代理
    • Github伺服器的問題,只需要不斷嘗試即可

後續

  • 後續有空也會出有關AlphaFold2的論文精讀
  • 如有錯誤請留言或私信指出,如遇到問題也可以評論留言或者私信看到會及時回覆