2024年11月11日の夜(日本時間)にAlphaFold3のコードが公開されました。GitHubリポジトリはこちら。
Dockerがある場合はそちらを使えば簡単に実行できますが、共用計算機環境向けのインストール方法を記述します。
更新情報
- 2026-05-18 AlphaFold v3.0.2のリリースに合わせて、インストール方法を変更。uvを使うインストール方法の方がうまく行きやすいです
- 2026-01-20 RTX 50xx, DGX Spark, RTX PRO 6000 maxq (Blackwell世代GPU)でのインストール方法をuvを使うものに変更
- 2025-06-17 RTX 50xxシリーズでのAlphaFold3の実行例を追加
- 2025-05-09 TSUBAME 4.0でEnvironment ModulesからAlphaFold 3.0.1を使う方法を追記
- 2025-02-15 スパコンMiyabiでの使い方を追加
- 2025-02-13 AlphaFold v3.0.1のインストール法についてアップデート
- 2025-01-24 AlphaFold v3.0.1がリリースされました。リリースノート
- 2024-12-27 スパコン不老での使い方、インプットjsonについてのTIPS、予測結果の解釈を追加。
- 2024-12-23 TSUBAME 4.0で
module load alphafold3_database/202411の仕様の追加。 - 2024-12-06 TSUBAME 4.0での実行例を追加。
- 2024-11-25 11月19日にデータベースの構築方法が変更されていたので修正
はじめに
AlphaFold3のモデルパラメータは、Google DeepMind社に利用申請して認可された人のみが利用可能という規約になっています。この仕様のため、AlphaFold2のときのように何も準備なしに構造予測を利用するということはできないことになっています。しかしながら、ダウンロードしてきたモデルパラメータのディレクトリをmodelsという名前に設定して、使いたい計算機の上にアップロードすれば利用可能なので(※他の人がアクセスできるパーミッション設定にはしないようにしましょう)、スパコンの上で使うことも可能です。
申請はGoogle Formsから行います(当然英語)。また、Gmailアカウントが必要で、非営利目的で使用する誓約を行います。申請後、通常は2〜3営業日で認可され、ダウンロードリンクがメールで送られてきます。
システム要件
- GCC 11以上。9.4未満ではAlphaFold3に必要な一部のソフトウェア(PDB-REDOのlibcifpp)をビルドできません(ビルドできてしまえばあとは不要)。GCC 10でOKかは未確認。
- Python 3.12が推奨です。また、uvを使ったPython環境構築とインストールが公式に推奨されています。
- Ubuntu 24.04が推奨です。Ubuntu 22.04でも動作しますが、Python 3.12を手動でインストールする必要があります。
- uvを使っている場合は、
uv python install 3.12でPython 3.12をインストールできるかもしれません。
- uvを使っている場合は、
ハードウェア要件
- RAM 64GB
- 高速にMSAを作成するために必要
- SSD 最低650GB以上の容量
- AlphaFold2のときより少なくて済みます。展開前でおよそ250GB, 展開後で640GBほどの空き容量を必要とします。
- CUDA 12.9以上が動作するNVIDIA製GPU。
- VRAMはもちろん大きい方が良い(RTX3090, RTX4090とか)。スパコンに搭載されているA100, H100でももちろん動作する。
インストール手順
必要なものは以下の通りです
- Python 3.12環境
- cudaとnvidia driver (現在はcuda 12.9以上を推奨)
- HMMER 3.4のインストール
- AlphaFold3のコード、配列・構造データベースの配置
- モデルパラメータのダウンロードと配置
- AlphaFold3のインストール
1, 2, 3は独立にインストールできますが、4, 5, 6は順番に行う必要があります。
gccコンパイラ, pythonバージョンの確認
GCCは11以上(9.4以上ならOK?)、Pythonは3.12以上が必要です。Python 3.12以上が計算環境に存在する場合は省略してください。
Ubuntu 24.04であればデフォルトでGCC 13とPython 3.12が入っているのでこの手順は不要です。
cudaとnvidia driver
すでにNVIDIA driverとCUDA 12.9以上が入っている場合は、この手順は不要です。入っていない場合は以下の手順でインストールしてください。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install nvidia-open
sudo apt-get -y install cuda-toolkit-12-9
終わったらマシンを再起動し、nvidia-smiでGPUの状態が表示されればOKです。
$ nvidia-smi [/mnt/database]
Mon May 18 00:25:47 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.126.20 Driver Version: 580.126.20 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 4090 On | 00000000:01:00.0 On | Off |
| 0% 46C P8 29W / 450W | 9MiB / 24564MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+
NVIDIA DriverとCUDAのインストール方法は、常に公式ページの手順に従ったほうが良いです。ネットの日本語記事は古い方法のままになっていることがあります。
HMMER 3.4のインストール
HMMERを使ったMSA作成を行うので、これをインストールします(AlphaFold2のときはhhblitsなどでしたが変わったようです)。下の例では/home/moriwaki/apps/hmmer/3.4にインストールしていますが、好きなところにインストールしてOKです。
HMMER_DIR="/home/moriwaki/apps/hmmer/3.4"
wget http://eddylab.org/software/hmmer/hmmer-3.4.tar.gz
tar zxvf hmmer-3.4.tar.gz
cd hmmer-3.4
./configure --prefix=${HMMER_DIR}
make -j8
make -j8 install
# easelの追加インストール
cd easel
make install
AlphaFold3のコード、配列・構造データベースの配置
パブリックな配列・構造データベースをダウンロードします。AlphaFold2のときと違い、DeepMindが動作に必要なファイルをまとめてくださっているので簡単にセットアップできます。
ただし、最新の圧縮&展開ソフトウェアZstandard (zstd)が必要です。ない場合は先にインストールしておきましょう。
# Ubuntuの場合
sudo apt -y install zstd
# RedHat系(CentOSなど)の場合
sudo yum -y install zstd
TIPS: zstdはCMakeがあれば手動ビルド&インストールも簡単にできると思う
次に以下のコマンドでダウンロードします。下の例ではAlphaFold3ディレクトリ内のpublic_databasesというディレクトリ内に作成し、そこに入れています。
これはDockerfileでのやり方を真似ています。
※ 2024年11月25日: 公式のやり方が変更されていたので修正
# ディレクトリの指定
APPDIR="/home/moriwaki/apps"
# データベースディレクトリの指定
DB_DIR="/mnt/database/public_databases"
##### 以下コピペ #####
mkdir -p $APPDIR
cd $APPDIR
git clone https://github.com/google-deepmind/alphafold3.git
ALPHAFOLD3DIR="$APPDIR/alphafold3"
# クローンしてきたalphafold3ディレクトリに移動
cd ${ALPHAFOLD3DIR}
# 動作に必要なデータベースのダウンロード
./fetch_databases.sh $DB_DIR
public_databasesのサイズは展開後で641,428MB (640GB)でした。これくらいの容量を確保しておいてください。
public_databases
├── mmcif_files/ # この直下に200,000以上のmmcifファイルが存在する
├── bfd-first_non_consensus_sequences.fasta
├── mgy_clusters_2022_05.fa
├── nt_rna_2023_02_23_clust_seq_id_90_cov_80_rep_seq.fasta
├── pdb_seqres_2022_09_28.fasta
├── rfam_14_9_clust_seq_id_90_cov_80_rep_seq.fasta
├── rnacentral_active_seq_id_90_cov_80_linclust.fasta
├── uniprot_all_2021_04.fa
└── uniref90_2022_05.fa
配列・構造データベースディレクトリの場所
public_databasesディレクトリはどこに配置しても構いませんが、必ずHDDやネットワークファイルドライブ上ではなくSSDの中に置いてください。これはMSA作成時に大量のファイルアクセスが発生するため、HDDやネットワークファイルドライブだと計算時間が大幅に遅くなるからです。modelsディレクトリはそこまでファイルサイズが大きくないので、HDDやネットワークファイルドライブ上でも問題ありません。
また、Dockerを使う場合、public_databasesディレクトリはalphafold3リポジトリのディレクトリの外に配置してください。そうでないと、Dockerが大きなイメージを作成しようとすることになり、ビルドがとても遅くなります。
モデルパラメータのダウンロードと配置
メールで送られてきた学習済みパラメータはたった1.1GBくらいで、これもZstdでファイル展開する必要があります。
zstd -d af3.bin.zst
手元のmacOSなどでHomebrewを用いてbrew install zstdでZstandardをインストールしておき、同コマンドで展開してからGPUつきLinux計算機上にアップロードしてもOKです。
展開し終わったら、中身af3.binを適当なmodelsディレクトリの中に配置します。
models/
├── af3.bin
└── af3.bin.zst
例えばこれを/home/moriwaki/modelsに配置した場合、後述のrun_alphafold.shの中で--model_dir=/home/moriwaki/modelsと指定します。
AlphaFold3のpipインストール
先ほどインストールした、またはもともと存在するpython3.11を使って仮想環境を作成し、それを用いてpipで必要なモジュールと、AlphaFold3本体のインストールを行います。
ver. 3.0.2をインストールしたい場合
タグつきのバージョン(例:v3.0.1, v3.0.2...)をインストールしたい場合は、以下のようにします。AlphaFold3のリポジトリの中に移動してから実行してください。
2026年1月16日からuvを使ったインストール方法が公式に実装されました。uvを使うとPython開発とテスト環境構築が非常に楽になるため、こちらを使うことをお勧めします。
-
uvをインストールする
公式ドキュメントのInstallationに従って計算機にuvをインストールします。以下はmacOSまたはLinuxでのインストール例です。
curl -LsSf https://astral.sh/uv/install.sh | sh少し前にuvをインストールしたことがある人は、以下のコマンドでuvを最新バージョンにアップデートしておくことをお勧めします。
uv self update -
AlphaFold3をuvでインストールする
GitHubのAlphaFold3リポジトリをクローンし、その中でuvを使ってAlphaFold3をインストールします。以下のコマンドを実行してください。git clone https://github.com/google-deepmind/alphafold3.git cd alphafold3 # checkout to v3.0.2 git checkout v3.0.2 # Python versionを3.12にする uv python pin 3.12 # uv syncの実行。ここでuvが自動的に仮想環境を作成し、必要な依存関係をインストールした後にAlphaFold3をインストールしてくれます。 uv sync # Using CPython 3.12.3 interpreter at: /usr/bin/python3.12 # Creating virtual environment at: .venv # Resolved 70 packages in 4ms # Built alphafold3 @ file:///home/moriwaki/apps/alphafold3 # Prepared 55 packages in 2m 26s # Installed 70 packages in 2.04s # # - absl-py==2.3.1 # - aiofiles==25.1.0 # - alphafold3==3.0.2 (from file:///home/moriwaki/apps/alphafold3) # - annotated-types==0.7.0 # - chex==0.1.91 # - dm-haiku==0.0.16 # - einshape==1.0 # - etils==1.13.0 # - flax==0.12.2 # - fsspec==2026.1.0 # - humanize==4.15.0 # - immutabledict==4.2.2 # - importlib-resources==6.5.2 # - iniconfig==2.3.0 # - jax==0.9.1 # - jax-cuda12-pjrt==0.9.1 # - jax-cuda12-plugin==0.9.1 # - jaxlib==0.9.1 # - jaxtyping==0.3.5 # - jmp==0.0.4 # - markdown-it-py==4.0.0 # - mdurl==0.1.2 # - ml-dtypes==0.5.4 # - msgpack==1.1.2 # - nest-asyncio==1.6.0 # - numpy==2.4.1 # - nvidia-cublas-cu12==12.9.1.4 # - nvidia-cuda-cccl-cu12==12.9.27 # - nvidia-cuda-cupti-cu12==12.9.79 # - nvidia-cuda-nvcc-cu12==12.9.86 # - nvidia-cuda-nvrtc-cu12==12.9.86 # - nvidia-cuda-runtime-cu12==12.9.79 # - nvidia-cudnn-cu12==9.17.1.4 # - nvidia-cufft-cu12==11.4.1.4 # - nvidia-cusolver-cu12==11.7.5.82 # - nvidia-cusparse-cu12==12.5.10.65 # - nvidia-nccl-cu12==2.29.2 # - nvidia-nvjitlink-cu12==12.9.86 # - nvidia-nvshmem-cu12==3.5.19 # - opt-einsum==3.4.0 # - optax==0.2.6 # - orbax-checkpoint==0.11.31 # - packaging==25.0 # - pillow==12.1.0 # - pluggy==1.6.0 # - protobuf==6.33.3 # - psutil==7.2.1 # - pydantic==2.12.5 # - pydantic-core==2.41.5 # - pygments==2.19.2 # - pytest==9.0.2 # - pyyaml==6.0.3 # - qwix==0.1.5 # - rdkit==2025.9.4 # - rich==14.2.0 # - scipy==1.17.0 # - simplejson==3.20.2 # - tabulate==0.9.0 # - tensorboardx==2.6.4 # - tensorstore==0.1.80 # - tokamax==0.0.11 # - toolz==1.1.0 # - tqdm==4.67.1 # - treescope==0.1.10 # - typeguard==2.13.3 # - typing-extensions==4.15.0 # - typing-inspection==0.4.2 # - wadler-lindig==0.1.7 # - zipp==3.23.0 # - zstandard==0.25.0 # インストールが終わったら、.venv/bin/build_dataを実行してください .venv/bin/build_data
インストール後、.venv/bin/build_dataを実行してalphafold3/constants/converters/chemical_component_sets.pickleというファイルを作成します。これはリガンドのccdファイルlibcifpp/components.cifと構造式の対応表を作成しているものです。
$ .venv/bin/build_data
# writing to /home/moriwaki/apps/alphafold3/.venv/lib/python3.12/site-packages/alphafold3/constants/converters/chemical_component_sets.pickle
# Done
最後に、uv run python3.12 run_alphafold.py --helpでエラーなくヘルプメッセージが表示されればOKです。python3.12ではなくuv run python3.12が必要なのは、ただいま構築したAlphaFold3用のuvの仮想環境でPythonを実行するためです。
$ uv run python3.12 run_alphafold.py --help
AlphaFold 3 structure prediction script.
AlphaFold 3 source code is licensed under CC BY-NC-SA 4.0. To view a copy of
this license, visit https://creativecommons.org/licenses/by-nc-sa/4.0/
...
...
--uniprot_cluster_annot_z_value: The Z-value representing the database size in number of sequences for E-value calculation. Must be set for sharded
databases.
(a non-negative integer)
--uniref90_database_path: UniRef90 database path, used for MSA search. The MSA obtained by searching it is used to construct the profile for
template search.
(default: '${DB_DIR}/uniref90_2022_05.fa')
--uniref90_z_value: The Z-value representing the database size in number of sequences for E-value calculation. Must be set for sharded databases.
(a non-negative integer)
Try --helpfull to get a list of all flags.
実行時の引数一覧
flags:
run_alphafold.py:
--buckets: Strictly increasing order of token sizes for which to cache compilations. For any input with more tokens than the largest bucket size, a
new bucket is created for exactly that number of tokens.
(default: '256,512,768,1024,1280,1536,2048,2560,3072,3584,4096,4608,5120')
(a comma separated list)
--[no]compress_large_output_files: If True, compresses the output mmCIF and confidences JSON files (the two largest files) using zstandard. Note
that embeddings and distogram, if saved, are already stored in a compressed format.
(default: 'false')
--conformer_max_iterations: Optional override for maximum number of iterations to run for RDKit conformer search.
(a non-negative integer)
--db_dir: Path to the directory containing the databases. Can be specified multiple times to search multiple directories in order.;
repeat this option to specify a list of values
(default: "['/home/moriwaki/public_databases']")
--flash_attention_implementation: <triton|cudnn|xla>: Flash attention implementation to use. 'triton' and 'cudnn' uses a Triton and cuDNN flash
attention implementation, respectively. The Triton kernel is fastest and has been tested more thoroughly. The Triton and cuDNN kernels require
Ampere GPUs or later. 'xla' uses an XLA attention implementation (no flash attention) and is portable across GPU devices.
(default: 'triton')
--[no]force_output_dir: Whether to force the output directory to be used even if it already exists and is non-empty. Useful to set this to True to
run the data pipeline and the inference separately, but use the same output directory.
(default: 'false')
--gpu_device: Optional override for the GPU device to use for inference, uses zero-based indexing. Defaults to the 0th GPU on the system. Useful on
multi-GPU systems to pin each run to a specific GPU. Note that if GPUs are already pre-filtered by the environment (e.g. by using
CUDA_VISIBLE_DEVICES), this flag refers to the GPU index after the filtering has been done.
(default: '0')
(an integer)
--hmmalign_binary_path: Path to the Hmmalign binary.
--hmmbuild_binary_path: Path to the Hmmbuild binary.
--hmmsearch_binary_path: Path to the Hmmsearch binary.
--input_dir: Path to the directory containing input JSON files.
--jackhmmer_binary_path: Path to the Jackhmmer binary.
--jackhmmer_max_parallel_shards: Maximum number of shards to search against in parallel. If unset, one Jackhmmer instance will be run per shard.
Only applicable if the database is sharded.
(a positive integer)
--jackhmmer_n_cpu: Number of CPUs to use for Jackhmmer. Defaults to min(cpu_count, 8). Going above 8 CPUs provides very little additional speedup.
(default: '8')
(a non-negative integer)
--jax_compilation_cache_dir: Path to a directory for the JAX compilation cache.
--json_path: Path to the input JSON file.
--max_template_date: Maximum template release date to consider. Format: YYYY-MM-DD. All templates released after this date will be ignored.
Controls also whether to allow use of model coordinates for a chemical component from the CCD if RDKit conformer generation fails and the
component does not have ideal coordinates set. Only for components that have been released before this date the model coordinates can be used as
a fallback.
(default: '2021-09-30')
--mgnify_database_path: Mgnify database path, used for protein MSA search.
(default: '${DB_DIR}/mgy_clusters_2022_05.fa')
--mgnify_z_value: The Z-value representing the database size in number of sequences for E-value calculation. Must be set for sharded databases.
(a non-negative integer)
--model_dir: Path to the model to use for inference.
(default: '/home/moriwaki/models')
--nhmmer_binary_path: Path to the Nhmmer binary.
--nhmmer_max_parallel_shards: Maximum number of shards to search against in parallel. If unset, one Nhmmer instance will be run per shard. Only
applicable if the database is sharded.
(a positive integer)
--nhmmer_n_cpu: Number of CPUs to use for Nhmmer. Defaults to min(cpu_count, 8). Going above 8 CPUs provides very little additional speedup.
(default: '8')
(a non-negative integer)
--ntrna_database_path: NT-RNA database path, used for RNA MSA search.
(default: '${DB_DIR}/nt_rna_2023_02_23_clust_seq_id_90_cov_80_rep_seq.fasta')
--ntrna_z_value: The Z-value representing the database size in megabases for E-value calculation. Must be set for sharded databases.
(a non-negative number)
--num_diffusion_samples: Number of diffusion samples to generate.
(default: '5')
(a positive integer)
--num_recycles: Number of recycles to use during inference.
(default: '10')
(a positive integer)
--num_seeds: Number of seeds to use for inference. If set, only a single seed must be provided in the input JSON. AlphaFold 3 will then generate
random seeds in sequence, starting from the single seed specified in the input JSON. The full input JSON produced by AlphaFold 3 will include the
generated random seeds. If not set, AlphaFold 3 will use the seeds as provided in the input JSON.
(a positive integer)
--output_dir: Path to a directory where the results will be saved.
--pdb_database_path: PDB database directory with mmCIF files path, used for template search.
(default: '${DB_DIR}/mmcif_files')
--[no]resolve_msa_overlaps: Whether to deduplicate unpaired MSA against paired MSA. The default behaviour matches the method described in the
AlphaFold 3 paper. Set this to false if providing custom paired MSA using the unpaired MSA field to keep it exactly as is as deduplication
against the paired MSA could break the manually crafted pairing between MSA sequences.
(default: 'true')
--rfam_database_path: Rfam database path, used for RNA MSA search.
(default: '${DB_DIR}/rfam_14_9_clust_seq_id_90_cov_80_rep_seq.fasta')
--rfam_z_value: The Z-value representing the database size in megabases for E-value calculation. Must be set for sharded databases.
(a non-negative number)
--rna_central_database_path: RNAcentral database path, used for RNA MSA search.
(default: '${DB_DIR}/rnacentral_active_seq_id_90_cov_80_linclust.fasta')
--rna_central_z_value: The Z-value representing the database size in megabases for E-value calculation. Must be set for sharded databases.
(a non-negative number)
--[no]run_data_pipeline: Whether to run the data pipeline on the fold inputs.
(default: 'true')
--[no]run_inference: Whether to run inference on the fold inputs.
(default: 'true')
--[no]save_distogram: Whether to save the final distogram in the output. Note that the distogram is a large float16 array: num_tokens * num_tokens
* 64.
(default: 'false')
--[no]save_embeddings: Whether to save the final trunk single and pair embeddings in the output. Note that the embeddings are large float16 arrays:
num_tokens * 384 + num_tokens * num_tokens * 128.
(default: 'false')
--seqres_database_path: PDB sequence database path, used for template search.
(default: '${DB_DIR}/pdb_seqres_2022_09_28.fasta')
--small_bfd_database_path: Small BFD database path, used for protein MSA search.
(default: '${DB_DIR}/bfd-first_non_consensus_sequences.fasta')
--small_bfd_z_value: The Z-value representing the database size in number of sequences for E-value calculation. Must be set for sharded databases.
(a non-negative integer)
--uniprot_cluster_annot_database_path: UniProt database path, used for protein paired MSA search.
(default: '${DB_DIR}/uniprot_all_2021_04.fa')
--uniprot_cluster_annot_z_value: The Z-value representing the database size in number of sequences for E-value calculation. Must be set for sharded
databases.
(a non-negative integer)
--uniref90_database_path: UniRef90 database path, used for MSA search. The MSA obtained by searching it is used to construct the profile for
template search.
(default: '${DB_DIR}/uniref90_2022_05.fa')
--uniref90_z_value: The Z-value representing the database size in number of sequences for E-value calculation. Must be set for sharded databases.
(a non-negative integer)
:::note info
この中で比較的有用なものを紹介します。
- ccdCodesまたはUser-provided CCDを与えている場合、
--conformer_max_iterations=1とすることで入力したリガンド理想座標を初期構造としてAlphaFold3に与えることができます。未入力またはNoneだとRDKitのアルゴリズムに任せるようです。 -
--max_template_dateをデフォルトの'2021-09-30'から'2099-12-31'など大きい日付に変更します。テンプレート構造は構造データベースとしてインストールしたpublic_databases/mmcif_files以下にある構造から探索しますが、--max_template_dateを変更しないと2021年9月30日以降に決定された構造を利用することができません。また、リガンドのCCDについてもどうもこの--max_template_dateが影響するようで、2021年9月30日以降に登録されたccdCodesのデータの理想座標を使いたい場合は、この引数を利用する必要があります。
テストラン
AlphaFold3の論文のFig.3eに使われていた AziU2, AziU3とリガンドの複合体構造(PDB ID: 7WUX)を予測してみます。
Kurosawa, S. et al. Molecular basis for enzymatic aziridine formation via sulfate elimination. J. Am. Chem. Soc. 144, 16164–16170 (2022)
>B4XYC0_AziU2
MTHVAETSAPTRSEPDTRVLTLPGTASAPEFRLIDIDGLLNNRATTDVRDLGSGRLNAWGNSFPAAELPAPGSLITVAGI
PFTWANAHARGDNIRCEGQVVDIPPGQYDWIYLLAASERRSEDTIWAHYDDGHADPLRVGISDFLDGTPAFGELSAFRTS
RMHYPHHVQEGLPTTMWLTRVGMPRHGVARSLRLPRSVAMHVFALTLRTAAAVRLAEGATT
>B4XYC1_AziU3
MTTTAPPVELWTRDLGSCLHGTLATALIRDGHDPVTVLGAPWEFRRRPGAWSSEEYFFFAEPDSLAGRLALYHPFESTWH
RSDGDGVDDLREALAAGVLPIAAVDNFHLPFRPAFHDVHAAHLLVVYRITETEVYVSDAQPPAFQGAIPLADFLASWGSL
NPPDDADVFFSASPSGRRWLRTRMTGPVPEPDRHWVGRVIRENVARYRQEPPADTQTGLPGLRRYLDELCALTPGTNAAS
EALSELYVISWNIQAQSGLHAEFLRAHSVKWRIPELAEAAAGVDAVAHGWTGVRMTGAHSRVWQRHRPAELRGHATALVR
RLEAALDLLELAADAVS
結合するリガンドはccdコードで"6OI"となっています。このccdコードが利用可能かどうかはPDBeChemで検索することができます。ない場合はSMILES表記で入力することになります。
これらを元にインプットとなるjsonファイルを作成します。
{
"name": "AziU2_AziU3_pred",
"modelSeeds": [1],
"sequences": [
{
"protein": {
"id": ["A", "B"],
"sequence": "MTHVAETSAPTRSEPDTRVLTLPGTASAPEFRLIDIDGLLNNRATTDVRDLGSGRLNAWGNSFPAAELPAPGSLITVAGIPFTWANAHARGDNIRCEGQVVDIPPGQYDWIYLLAASERRSEDTIWAHYDDGHADPLRVGISDFLDGTPAFGELSAFRTSRMHYPHHVQEGLPTTMWLTRVGMPRHGVARSLRLPRSVAMHVFALTLRTAAAVRLAEGATT"
}
},
{
"protein": {
"id": ["C", "D"],
"sequence": "MTTTAPPVELWTRDLGSCLHGTLATALIRDGHDPVTVLGAPWEFRRRPGAWSSEEYFFFAEPDSLAGRLALYHPFESTWHRSDGDGVDDLREALAAGVLPIAAVDNFHLPFRPAFHDVHAAHLLVVYRITETEVYVSDAQPPAFQGAIPLADFLASWGSLNPPDDADVFFSASPSGRRWLRTRMTGPVPEPDRHWVGRVIRENVARYRQEPPADTQTGLPGLRRYLDELCALTPGTNAASEALSELYVISWNIQAQSGLHAEFLRAHSVKWRIPELAEAAAGVDAVAHGWTGVRMTGAHSRVWQRHRPAELRGHATALVRRLEAALDLLELAADAVS"
}
},
{
"ligand": {
"id": ["E", "F"],
"ccdCodes": ["6OI"]
}
}
],
"dialect": "alphafold3",
"version": 1
}
予測する基質をccdCodesで指定する場合、必ずlist型["XXX"]で指定してください。"XXX"だけだとエラーになります。
以下はこれを実行するためのシェルスクリプトです。
#!/bin/bash
# cudaのロード(環境によっては不要)
module load cuda/12.9
### 各自の環境に合わせて変更してください ###
ALPHAFOLD3DIR="/home/moriwaki/apps/alphafold3" # AlphaFold3のコードのディレクトリ
HMMER3_BINDIR="/home/moriwaki/apps/hmmer/3.4/bin" # HMMER3のバイナリディレクトリ
DB_DIR="/mnt/database/public_databases" # 配列・構造データベースのディレクトリ
MODEL_DIR="/home/moriwaki/models" # モデルパラメータのディレクトリ
##########################################
# 以下の3つの環境変数を追加しているとRESOURCE EXHAUSTEDのエラーを回避しやすくなる
export XLA_FLAGS="--xla_gpu_enable_triton_gemm=false"
export XLA_PYTHON_CLIENT_PREALLOCATE=true
export XLA_CLIENT_MEM_FRACTION=0.95
### activate alphafold3's virtual environment
. "${ALPHAFOLD3DIR}/.venv/bin/activate"
python3.12 ${ALPHAFOLD3DIR}/run_alphafold.py \
--jackhmmer_binary_path="${HMMER3_BINDIR}/jackhmmer" \
--nhmmer_binary_path="${HMMER3_BINDIR}/nhmmer" \
--hmmalign_binary_path="${HMMER3_BINDIR}/hmmalign" \
--hmmsearch_binary_path="${HMMER3_BINDIR}/hmmsearch" \
--hmmbuild_binary_path="${HMMER3_BINDIR}/hmmbuild" \
--max_template_date="2099-12-31" \
--db_dir="${DB_DIR}" \
--model_dir=${MODEL_DIR} \
--json_path="AziU2_AziU3_6OI.json" \
--output_dir="."
計算時間はMSA作成部分が10~20分、続く構造推論部分RTX3090で9分、RTX4090で5分ほどで終わりました。
予測結果の構造はpymolやUCSF Chimeraなどのソフトウェアで開いてください。
Nature記事の図とほぼ完全に一致。
この図を書き出すときに使ったpymolの設定値
set depth_cue, 0
set ray_trace_mode, 1
set ray_trace_color, 0x404040
set antialias, 4
set ambient, 0.7
set cartoon_oval_width, 0.3
set cartoon_oval_length, 1.3
set ray_trace_gain, 0
set specular, 0
TSUBAME 4.0でのAlphaFold3の利用方法
TSUBAME 4.0にインストール済みのAlphaFold 3.0.1を利用する方法
2025-05-08: TSUBAME 4.0内にAlphaFold 3.0.1がインストールされました。module load alphafold3/3.0.1で必要な環境変数やPython環境が自動的にロードされます。その後、後述のサンプルスクリプトを例にして、AlphaFold3を利用してください。
2024-12-23: TSUBAME 4.0内にAlphaFold3の動作に必要なDBが配列・構造データベース(約650GB)がTSUBAME 4.0の全ユーザーがアクセス可能な領域に内蔵されました。module load alphafold3_database/202411を実行することで環境変数ALPHAFOLD_DATA_DIRにデータベースへのパスがロードされます。
ただし、AlphaFold3のソフトウェアライセンスの仕様上、動作に必要なモデルパラメータは、各ユーザーがDeepMindのGoogle Forms上で申請して取得し、TSUBAME 4.0にアップロードしておく必要があります。
動作テストのために、先述のインプットJSONファイルAziU2_AziU3_6OI.jsonを用意します。
{
"name": "AziU2_AziU3_pred",
"modelSeeds": [1],
"sequences": [
{
"protein": {
"id": ["A", "B"],
"sequence": "MTHVAETSAPTRSEPDTRVLTLPGTASAPEFRLIDIDGLLNNRATTDVRDLGSGRLNAWGNSFPAAELPAPGSLITVAGIPFTWANAHARGDNIRCEGQVVDIPPGQYDWIYLLAASERRSEDTIWAHYDDGHADPLRVGISDFLDGTPAFGELSAFRTSRMHYPHHVQEGLPTTMWLTRVGMPRHGVARSLRLPRSVAMHVFALTLRTAAAVRLAEGATT"
}
},
{
"protein": {
"id": ["C", "D"],
"sequence": "MTTTAPPVELWTRDLGSCLHGTLATALIRDGHDPVTVLGAPWEFRRRPGAWSSEEYFFFAEPDSLAGRLALYHPFESTWHRSDGDGVDDLREALAAGVLPIAAVDNFHLPFRPAFHDVHAAHLLVVYRITETEVYVSDAQPPAFQGAIPLADFLASWGSLNPPDDADVFFSASPSGRRWLRTRMTGPVPEPDRHWVGRVIRENVARYRQEPPADTQTGLPGLRRYLDELCALTPGTNAASEALSELYVISWNIQAQSGLHAEFLRAHSVKWRIPELAEAAAGVDAVAHGWTGVRMTGAHSRVWQRHRPAELRGHATALVRRLEAALDLLELAADAVS"
}
},
{
"ligand": {
"id": ["E", "F"],
"ccdCodes": ["6OI"]
}
}
],
"dialect": "alphafold3",
"version": 1
}
次に、以下のスクリプトをrun_alphafold3.shという名前で保存します。
#!/bin/sh
#$ -cwd
#$ -l gpu_h=1
#$ -l h_rt=03:00:00
echo `hostname`
module purge
module load alphafold3/3.0.1
# qsub時に-v INPUT=fooとすることでインプットのJSON"foo.json"について予測する
# 指定がない場合はエラーとなる
if test "$INPUT" = ""; then
echo "INPUT is not set" 1>&2 ; exit
fi
# set your directory containing alphafold3 model parameters
# 以下のMODEL_DIRには、Google DeepMindに申請してダウンロードした
# 重みパラメータファイルaf3.binまたはaf3.bin.zst(どちらか一方のみでOK)が
# 含まれているディレクトリを指定してください
MODEL_DIR="/gs/bs/xxx-xxxxxx/models"
# 以下変更は不要
export XLA_FLAGS="--xla_gpu_enable_triton_gemm=false"
export XLA_PYTHON_CLIENT_PREALLOCATE=true
export XLA_CLIENT_MEM_FRACTION=0.95
HMMER3_BINDIR="${APPS_DIRECTORY}/miniforge/envs/alphafold3/bin"
python3.11 ${ALPHAFOLD3DIR}/run_alphafold.py \
--run_data_pipeline=True \
--jackhmmer_binary_path="${HMMER3_BINDIR}/jackhmmer" \
--nhmmer_binary_path="${HMMER3_BINDIR}/nhmmer" \
--hmmalign_binary_path="${HMMER3_BINDIR}/hmmalign" \
--hmmsearch_binary_path="${HMMER3_BINDIR}/hmmsearch" \
--hmmbuild_binary_path="${HMMER3_BINDIR}/hmmbuild" \
--db_dir="${ALPHAFOLD_DATA_DIR}" \
--json_path=${INPUT}.json \
--model_dir="${MODEL_DIR}" \
--output_dir="."
このスクリプトを用意し、qsub -v INPUT=AziU2_AziU3_6OI run_alphafold3.shを実行することで、AlphaFold3による構造予測が開始されます。必要に応じてTSUBAMEグループ-g [TSUBAMEグループ]を追加指定してください
qsub -v INPUT=AziU2_AziU3_6OI -g [TSUBAMEグループ] run_alphafold3.sh
およそ30〜40分後、aziu2_aziu3_predというディレクトリが生成され、予測結果が現れているはずです。
--run_data_pipelineはMSAサーチとテンプレートサーチを行うかどうかを規定します。デフォルトではTrueですが、すでにインプットのjsonファイルにMSAやテンプレートが含まれている場合、Falseに指定することで、その検索を省略できます。
TSUBAME 4.0のGPUのNVIDIA H100 SXM5(VRAM 94GB)では4000残基程度まで予測可能らしいので、1GPUで十分なことが多く、# -l gpu_1=1を指定しています。計算時間も、短くて20分程度、長くて2〜3時間前後で終わることがほとんどですので、# -l h_rt=3:00:00で180分制限にしています。
また、TSUBAME 4.0ではqsub時に-v VARIABLE=fooを追加することで環境変数の値を指定させることができます。例えばfoo.json, bar.jsonについて構造予測したいとき、このrun_alphafold3.shの中身を変更せずに、qsub -v INPUT=foo run_alphafold3.sh, qsub -v INPUT=bar run_alphafold3.shとすることでそれぞれの構造予測を実行する事が可能です。
自身でTSUBAME4.0にAlphaFold3をインストールする方法
ビルド作業は多くのコアを利用するため、TSUBAME4.0の利用の手引きの5.2.2. インタラクティブジョブ(または5.3. インタラクティブジョブ専用キュー)のやり方にしたがって、ログインノードではない計算ノードを使ってビルドしてください。
3.0.1以外のバージョンのAlphaFold3を利用したい方は、以下の手順に従って自身のディレクトリ内にインストールする必要があります。
/path/to/your/apps_directoryは各自のディレクトリに置き換えてください。
APPS_DIRECTORY="/path/to/your/apps_directory"
# インストールディレクトリの作成
mkdir -p ${APPS_DIRECTORY}
cd ${APPS_DIRECTORY}
# Python 3.11をMiniforgeでインストール
wget -q -P . https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
bash ./Miniforge3-Linux-x86_64.sh -b -p "${APPS_DIRECTORY}/miniforge"
rm Miniforge3-Linux-x86_64.sh
CONDAROOT="${APPS_DIRECTORY}/miniforge"
source "${CONDAROOT}/etc/profile.d/mamba.sh"
source "${CONDAROOT}/etc/profile.d/conda.sh"
mamba create --name alphafold3 python=3.11 -y
mamba activate alphafold3
# Zlibが必要
mamba install zlib -n alphafold3 -y
# CUDA 12.6をnvidiaからインストール
mamba install cuda -c nvidia -n alphafold3 -y
# HMMER 3.4をbiocondaからインストール
mamba install bioconda::hmmer -n alphafold3 -y
# hmmalignが使えることを確認
${APPS_DIRECTORY}/miniforge/envs/alphafold3/bin/hmmalign -h
# AlphaFold3
cd ${APPS_DIRECTORY}
git clone https://github.com/google-deepmind/alphafold3.git
cd alphafold3
# バージョンを3.0.xに固定
git checkout v3.0.x
# インストール
python3.11 -m pip install absl-py==2.1.0 chex==0.1.87 dm-haiku==0.0.13 \
dm-tree==0.1.8 filelock==3.16.1 "jax[cuda12]==0.4.34" \
jax-cuda12-pjrt==0.4.34 jax-triton==0.2.0 jaxlib==0.4.34 \
jaxtyping==0.2.34 jmp==0.0.4 ml-dtypes==0.5.0 numpy==2.1.3 \
nvidia-cublas-cu12==12.6.3.3 nvidia-cuda-cupti-cu12==12.6.80 \
nvidia-cuda-nvcc-cu12==12.6.77 nvidia-cuda-runtime-cu12==12.6.77 \
nvidia-cudnn-cu12==9.5.1.17 nvidia-cufft-cu12==11.3.0.4 \
nvidia-cusolver-cu12==11.7.1.2 nvidia-cusparse-cu12==12.5.4.2 \
nvidia-nccl-cu12==2.23.4 nvidia-nvjitlink-cu12==12.6.77 \
opt-einsum==3.4.0 pillow==11.0.0 rdkit==2024.3.5 \
scipy==1.14.1 tabulate==0.9.0 toolz==1.0.0 tqdm==4.67.0 \
triton==3.1.0 typeguard==2.13.3 typing-extensions==4.12.2 \
zstandard==0.23.0
# AlphaFold3のビルド&インストール
python3.11 -m pip install --no-deps .
# build_dataは途中でプロセスがkillされることがあるのでそのときはもう1回実行
${APPS_DIRECTORY}/miniforge/envs/alphafold3/bin/build_data
TSUBAME 4.0のログインノードは1ユーザーあたりの同時起動プロセス数(?)に制限があるので、インタラクティブキューを使ってビルドしてください。
実行スクリプト例はこちら。モデルパラメータは各自でアップロードして配置してください。
#!/bin/sh
#$ -cwd
#$ -l gpu_1=1
#$ -l h_rt=0:40:00
echo `hostname`
### TSUBAME 4.0に内蔵されているAlphaFold3用データベースを呼び出す
### 環境変数ALPHAFOLD_DATA_DIRに/gs/bs/datasets/alphafold/3/$ver/dbがロードされる
module load alphafold3_database/202411
# qsub時に-v INPUT=fooとすることでインプットのJSON"foo.json"について予測できる
if test "$INPUT" = ""; then
echo "INPUT is not set" 1>&2 ; exit
fi
### activate alphafold3's virtual environment
APPS_DIRECTORY="/path/to/your/apps_directory"
ALPHAFOLD3DIR="${APPS_DIRECTORY}/alphafold3"
CONDAROOT="${APPS_DIRECTORY}/miniforge"
source "${CONDAROOT}/etc/profile.d/conda.sh"
source "${CONDAROOT}/etc/profile.d/mamba.sh"
mamba activate alphafold3
HMMER3_BINDIR="${APPS_DIRECTORY}/miniforge/envs/alphafold3/bin"
### 重みパラメータファイルaf3.zstは自身でGoogle DeepMindに申し込んでダウンロードしたものを
### MODEL_DIRに置く必要がある
MODEL_DIR="/path/to/models"
export XLA_FLAGS="--xla_gpu_enable_triton_gemm=false"
export XLA_PYTHON_CLIENT_PREALLOCATE=true
export XLA_CLIENT_MEM_FRACTION=0.95
python3.11 ${ALPHAFOLD3DIR}/run_alphafold.py \
--run_data_pipeline=True \
--jackhmmer_binary_path="${HMMER3_BINDIR}/jackhmmer" \
--nhmmer_binary_path="${HMMER3_BINDIR}/nhmmer" \
--hmmalign_binary_path="${HMMER3_BINDIR}/hmmalign" \
--hmmsearch_binary_path="${HMMER3_BINDIR}/hmmsearch" \
--hmmbuild_binary_path="${HMMER3_BINDIR}/hmmbuild" \
--db_dir="${ALPHAFOLD_DATA_DIR}" \
--json_path=${INPUT}.json \
--model_dir="${MODEL_DIR}" \
--output_dir="."
名古屋大学・不老でのAlphaFold3の利用方法
こちらのType-IIのCXノードにGPUが搭載されています。GPUはVolta世代のV100 32GBです。このためか、AlphaFold3が本来想定している動作環境であるAmpere世代以降のGPUでないため、bf16が使えないこともあり、依存パッケージを変更する必要があります。またV100 32GBでは1520トークン(=残基)くらいまでしか予測できず、それ以上ではRESOURCE_EXHAUSTED: Out of memoryとなり、予測できません。なお、RTX4090 24GB(bf16対応)では2000残基程度まで予測可能です。
APPS_DIRECTORY="/path/to/your/apps_directory"
# インストールディレクトリの作成
mkdir -p ${APPS_DIRECTORY}
cd ${APPS_DIRECTORY}
# Python 3.11をMiniforgeでインストール
wget -q -P . https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
bash ./Miniforge3-Linux-x86_64.sh -b -p "${APPS_DIRECTORY}/miniforge"
rm Miniforge3-Linux-x86_64.sh
CONDAROOT="${APPS_DIRECTORY}/miniforge"
source "${CONDAROOT}/etc/profile.d/mamba.sh"
source "${CONDAROOT}/etc/profile.d/conda.sh"
mamba create --name alphafold3 python=3.11 -y
mamba activate alphafold3
# Zlibが必要
mamba install zlib -n alphafold3 -y
# CUDA 12.6をnvidiaからインストール
mamba install cuda -c nvidia -n alphafold3 -y
# HMMER 3.4をbiocondaからインストール
mamba install bioconda::hmmer -n alphafold3 -y
# hmmalignが使えることを確認
${APPS_DIRECTORY}/miniforge/envs/alphafold3/bin/hmmalign -h
# AlphaFold3
cd ${APPS_DIRECTORY}
git clone https://github.com/google-deepmind/alphafold3.git
cd alphafold3
# バージョンを3.0.1に固定
git checkout v3.0.1
python3.11 -m pip install absl-py==2.1.0 chex==0.1.87 dm-haiku==0.0.13 \
dm-tree==0.1.8 filelock==3.16.1 "jax[cuda12]==0.4.34" \
jax-cuda12-pjrt==0.4.34 jax-triton==0.2.0 jaxlib==0.4.34 \
jaxtyping==0.2.34 jmp==0.0.4 ml-dtypes==0.5.0 numpy==2.1.3 \
nvidia-cublas-cu12==12.6.3.3 nvidia-cuda-cupti-cu12==12.6.80 \
nvidia-cuda-nvcc-cu12==12.6.77 nvidia-cuda-runtime-cu12==12.6.77 \
nvidia-cudnn-cu12==9.5.0.50 nvidia-cufft-cu12==11.3.0.4 \
nvidia-cusolver-cu12==11.7.1.2 nvidia-cusparse-cu12==12.5.4.2 \
nvidia-nccl-cu12==2.23.4 nvidia-nvjitlink-cu12==12.6.77 \
opt-einsum==3.4.0 pillow==11.0.0 rdkit==2024.3.2 \
scipy==1.14.1 tabulate==0.9.0 toolz==1.0.0 tqdm==4.67.0 \
triton==3.1.0 typeguard==2.13.3 typing-extensions==4.12.2 \
zstandard==0.23.0 --no-cache-dir
# AlphaFold3のビルド&インストール
python3.11 -m pip install --no-deps .
# build_dataは途中でプロセスがkillされることがあるのでそのときはもう1回実行
${APPS_DIRECTORY}/miniforge/envs/alphafold3/bin/build_data
実行シェルスクリプト例はこちら
#!/bin/bash
#PJM -L rscgrp=cxgfs-share
#PJM -L elapse=02:00:00
#PJM -j
#PJM -S
## SET YOUR DIRECTORY PATH ##
APPS_DIRECTORY="/path/to/your/apps_directory"
MODEL_DIR="/path/to/your/models"
#############################
test $PJM_O_WORKDIR && cd $PJM_O_WORKDIR
CONDAROOT="${APPS_DIRECTORY}/miniforge"
source "${CONDAROOT}/etc/profile.d/mamba.sh"
source "${CONDAROOT}/etc/profile.d/conda.sh"
mamba activate alphafold3
ALPHAFOLD3DIR="${APPS_DIRECTORY}/alphafold3"
HMMER3_BINDIR="${CONDAROOT}/envs/alphafold3/bin"
DB_DIR="/beegfs/share/alphafold/af3"
export XLA_FLAGS="--xla_gpu_enable_triton_gemm=false"
export XLA_PYTHON_CLIENT_PREALLOCATE=true
export XLA_CLIENT_MEM_FRACTION=0.95
# 名古屋大学Flow-cxのGPUにあるV100などのCUDA Capability 7.x GPUsに対しては以下の設定が必要不可欠。
export XLA_FLAGS="--xla_disable_hlo_passes=custom-kernel-fusion-rewriter"
if test "$INPUT" = ""; then
echo "INPUT is not set" 1>&2 ; exit
fi
python3.11 ${ALPHAFOLD3DIR}/run_alphafold.py \
--jackhmmer_binary_path="${HMMER3_BINDIR}/jackhmmer" \
--nhmmer_binary_path="${HMMER3_BINDIR}/nhmmer" \
--hmmalign_binary_path="${HMMER3_BINDIR}/hmmalign" \
--hmmsearch_binary_path="${HMMER3_BINDIR}/hmmsearch" \
--hmmbuild_binary_path="${HMMER3_BINDIR}/hmmbuild" \
--db_dir="${DB_DIR}" \
--flash_attention_implementation="xla" \
--json_path=${INPUT}.json \
--model_dir=${MODEL_DIR} \
--output_dir="."
このrun_alphafold3.shを用いて、foo.jsonに対して構造予測を行いたいときは
INPUT=foo ; pjsub -x INPUT=${INPUT} -N ${INPUT} run_alphafold3.sh
で予測が実行できます。
- GPU V100の場合、現状のAlphaFold3では
export XLA_FLAGS="--xla_disable_hlo_passes=custom-kernel-fusion-rewriter"と--flash_attention_implementation="xla"の設定追記が必須となっています。
MiyabiでのAlphaFold3の利用方法
東京大学と筑波大学が共同開発したスパコンMiyabiでAlphaFold3を利用する方法です。
MiyabiのGPUノードについているCPUアーキテクチャはx86_64ではなくAArch64なので(NVIDIA Grace CPU)、特にtriton 3.1.0あたりの手動ビルドが必要になると思います。GPUはVRAM 96GBのNVIDIA Hopper H100 GPUなので4000トークンくらいまでの予測は可能かと思います。
# インストール先を決めておく
APPS_DIRECTORY="/work/gwXX/wXXXXX/apps"
# すべてのmoduleを最初に削除
module purge
# gcc-12 tool setのみ入れる
module load gcc-toolset/12
# インストールディレクトリの作成
mkdir -p ${APPS_DIRECTORY}
cd ${APPS_DIRECTORY}
# Python 3.11をMiniforgeでインストール
wget -q -P . https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-aarch64.sh
bash ./Miniforge3-Linux-aarch64.sh -b -p "${APPS_DIRECTORY}/miniforge"
rm Miniforge3-Linux-aarch64.sh
CONDAROOT="${APPS_DIRECTORY}/miniforge"
source "${CONDAROOT}/etc/profile.d/mamba.sh"
source "${CONDAROOT}/etc/profile.d/conda.sh"
mamba create --name alphafold3 python=3.11 -y
mamba activate alphafold3
# Zlibが必要
mamba install zlib -n alphafold3 -y
# CUDAをnvidiaからインストール. 現時点で12.8.0を入れたことになった
# cuda==12.6.3だとtriton 3.1.0がビルドできない
mamba install cuda -c nvidia -n alphafold3 -y
# HMMER 3.4をbiocondaからインストール
mamba install bioconda::hmmer -n alphafold3 -y
# hmmalignが使えることを確認
${APPS_DIRECTORY}/miniforge/envs/alphafold3/bin/hmmalign -h
# triton==3.1.xを手動でインストール
cd ${APPS_DIRECTORY}
git clone https://github.com/triton-lang/triton.git
cd triton
git switch release/3.1.x
python3.11 -m pip install python/
# AlphaFold3
cd ${APPS_DIRECTORY}
git clone https://github.com/google-deepmind/alphafold3.git
cd alphafold3
# 場合によってはgit checkout mainの方がいい?
# triton==3.1.0は抜いてある
python3.11 -m pip install absl-py==2.1.0 chex==0.1.87 dm-haiku==0.0.13 \
dm-tree==0.1.8 filelock==3.16.1 "jax[cuda12]==0.4.34" \
jax-cuda12-pjrt==0.4.34 jax-triton==0.2.0 jaxlib==0.4.34 \
jaxtyping==0.2.34 jmp==0.0.4 ml-dtypes==0.5.0 numpy==2.1.3 \
nvidia-cublas-cu12==12.6.3.3 nvidia-cuda-cupti-cu12==12.6.80 \
nvidia-cuda-nvcc-cu12==12.6.77 nvidia-cuda-runtime-cu12==12.6.77 \
nvidia-cudnn-cu12==9.5.1.17 nvidia-cufft-cu12==11.3.0.4 \
nvidia-cusolver-cu12==11.7.1.2 nvidia-cusparse-cu12==12.5.4.2 \
nvidia-nccl-cu12==2.23.4 nvidia-nvjitlink-cu12==12.6.77 \
opt-einsum==3.4.0 pillow==11.0.0 rdkit==2024.3.5 \
scipy==1.14.1 tabulate==0.9.0 toolz==1.0.0 tqdm==4.67.0 \
typeguard==2.13.3 typing-extensions==4.12.2 \
zstandard==0.23.0
# AlphaFold3のビルド&インストール
python3.11 -m pip install --no-deps .
# editableでも入る。どちらでも。
# python3.11 -m pip install -e .
# build_data
${APPS_DIRECTORY}/miniforge/envs/alphafold3/bin/build_data
実行シェルスクリプト例はこちら
#!/bin/bash
#PBS -q short-g
#PBS -W group_list=gwXX
#PBS -l select=1
test $PBS_O_WORKDIR && cd $PBS_O_WORKDIR
module purge
module load gcc-toolset/12
###### SET YOUR DIRECTORY PATH ######
APPS_DIRECTORY="/work/gwXX/wXXXXX/apps"
MODEL_DIR="${APPS_DIRECTORY}/models"
ALPHAFOLD_DB_DIR="${APPS_DIRECTORY}/public_databases"
#####################################
CONDAROOT="${APPS_DIRECTORY}/miniforge"
source "${CONDAROOT}/etc/profile.d/conda.sh"
source "${CONDAROOT}/etc/profile.d/mamba.sh"
mamba activate alphafold3
ALPHAFOLD3DIR="${APPS_DIRECTORY}/alphafold3"
HMMER3_BINDIR="${CONDAROOT}/envs/alphafold3/bin"
export XLA_FLAGS="--xla_gpu_enable_triton_gemm=false"
export XLA_PYTHON_CLIENT_PREALLOCATE=true
export XLA_CLIENT_MEM_FRACTION=0.97
INPUT="foo.json"
OUTDIR="."
python3.11 ${ALPHAFOLD3DIR}/run_alphafold.py \
--run_data_pipeline=True \
--jackhmmer_binary_path="${HMMER3_BINDIR}/jackhmmer" \
--nhmmer_binary_path="${HMMER3_BINDIR}/nhmmer" \
--hmmalign_binary_path="${HMMER3_BINDIR}/hmmalign" \
--hmmsearch_binary_path="${HMMER3_BINDIR}/hmmsearch" \
--hmmbuild_binary_path="${HMMER3_BINDIR}/hmmbuild" \
--db_dir="${ALPHAFOLD_DB_DIR}" \
--json_path=${INPUT} \
--model_dir="${MODEL_DIR}" \
--output_dir="${OUTDIR}"
予測可能限界
GPUの予測可能限界を超えて予測させようとすると以下のようなRESOURCE_EXHAUSTED: Out of memoryエラーが発生します。残基数を減らして予測してください。
Traceback (most recent call last):
File "/data/group1/z00000a/apps/alphafold3/run_alphafold.py", line 759, in <module>
app.run(main)
File "/data/group1/z00000a/apps/miniforge/envs/alphafold3/lib/python3.11/site-packages/absl/app.py", line 308, in run
_run_main(main, args)
File "/data/group1/z00000a/apps/miniforge/envs/alphafold3/lib/python3.11/site-packages/absl/app.py", line 254, in _run_main
sys.exit(main(argv))
^^^^^^^^^^
File "/data/group1/z00000a/apps/alphafold3/run_alphafold.py", line 742, in main
process_fold_input(
File "/data/group1/z00000a/apps/alphafold3/run_alphafold.py", line 599, in process_fold_input
all_inference_results = predict_structure(
^^^^^^^^^^^^^^^^^^
File "/data/group1/z00000a/apps/alphafold3/run_alphafold.py", line 392, in predict_structure
result = model_runner.run_inference(example, rng_key)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/group1/z00000a/apps/alphafold3/run_alphafold.py", line 309, in run_inference
result = self._model(rng_key, featurised_example)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
jaxlib.xla_extension.XlaRuntimeError: RESOURCE_EXHAUSTED: Out of memory while trying to allocate 17196646400 bytes.
インプットjsonファイルの作成法TIPS
ディレクトリ内にあるすべてのjsonファイルをまとめて予測させる
run_alphafold.pyに与える引数で、入力のインプットJSONファイルを指定する--json_pathというものがありますが、これは--input_dir=<ディレクトリ名>という引数に置き換えることが可能です。これを使うと、指定したディレクトリ内に存在するすべてのjsonファイルをまとめて予測させることができます。
化合物を変えた予測を高速に実行させる
AlphaFold3の計算の大部分は、入力のタンパク質(またはRNA)配列についてのMultiple Sequence Alignment (MSA)の取得部分に時間を費やしています。こちらがほぼ9割で、構造を予測する部分は残りの1割程度です。そのため、予測したいタンパク質の配列が変わらない場合は、MSAを再取得する必要が本来なく、計算時間を大幅に短縮させることができます。
具体的には、以下のような手順で実行することが可能です。
まず、予測したいタンパク質配列が入ったjsonファイル(例:foo.json)を作成します。そしてMSAを取得するために、一度その配列予測を実行します。このとき、--oupput_dirで指定していた出力ディレクトリの中にはfoo_data.jsonというファイルが生成されています。これは、foo.jsonの上から、AlphaFold3が取得してきたMSAやテンプレート情報が追記されているファイルとなっています。つまり、このファイルを再利用すれば、タンパク質についてのMSA, テンプレート情報を再取得する必要がなく、構造予測の部分だけを再実行することが可能です。
以下はfoo_data.jsonの例です。この例はタンパク質ホモ六量体の予測なので、"protein"のidが6つ、"ligand"のidも6つとなっていますが、ここは予測対象に応じて適切に変えてください。特に、"unpairedMsa", "pairedMsa", "templates"の部分がMSA+テンプレート取得の結果が埋め込まれた部分であり、これらの情報を再利用することで次回以降の計算をスキップすることができます。そして、目的である"ligand"の情報を変更することで、新たな化合物についての予測を行うことが可能です。
{
"dialect": "alphafold3",
"version": 1,
"name": "1bjp_6_pred",
"sequences": [
{
"protein": {
"id": [
"A",
"B",
"C",
"D",
"E",
"F"
],
"sequence": "PIAQIHILEGRSDEQKETLIREVSEAISRSLDAPLTSVRVIITEMAKGHFGIGGELASKVRR",
"modifications": [],
"unpairedMsa": ">101\nPIAQIHILEGRSDEQKETLIREVSEAISRSLDAPLTSVRVIITEMAKGHFGIGGELASKVRR\n>UniRef100_A0A7J3FD47\t90\t0.500\t8.638E-19\t0\t59\t62\t1\t60\t63\nPVVTIELWEGRTPEQKRELVRAVSSAISRVLGCPEEAVHVILHEVPKANWGIGGRLASEL--\n>UniRef100_A0A7C4BER2\t87\t0.406\t1.096E-17\t0\t58\t62\t1\t59\t65\nPVVTIEMWEGRTPEQKKALVEAVTSAVAGAIGCPPEAVEVIIHEVPKVNWGIGGQIASE---\n>UniRef100_A0A5B8RYW4\t86\t0.451\t1.506E-17\t0\t61\t62\t1\t62\t63\nPFVQIHMLEGRTPEQKKAVIEKVTQALVQAVGVPASAVRVLIQEVPKEHWGIGGVSARELGR\n>UniRef100_UPI00140DD609\t85\t0.440\t2.842E-17\t0\t58\t62\t1\t59\t62\nPIIQVQMLKGRSPELKKQLISEITDTISRTLGSPPEAVRVILTEVPEENWGVGGVPINE---\n>UniRef100_A0A1B7KRL2\t85\t0.467\t3.905E-17\t0\t61\t62\t1\t62\t67\nPFIQVYLLEGRSPEKKEALIYELTETVRKVLGAPRENVRVMIQEIPLEHWGIAGESVKKRRK\n",
"pairedMsa": "",
"templates": []
}
},
{
"ligand": {
"id": ["G","H","I","J","K","L"],
"ccdCodes": ["OXP"]
}
}
],
"modelSeeds": [
1
],
"bondedAtomPairs": null,
"userCCD": null
}
このファイルをコピーして、新たなjsonファイル(例:bar.json)を作成します。そして、化合物("ligand")情報を入力する"ccdCodes":または"smiles":の値を変更します。
{
"ligand": {
"id": ["G","H","I","J","K","L"],
"smiles": "CC(=O)OC1C[NH+]2CCC1CC2"
}
}
最後に、run_alphafold.pyを実行する際に、--json_pathでbar.jsonを指定し、--run_data_pipelineをTrueからFalseに変更して実行します。これにより、MSAの再取得を行わずに、構造予測の部分だけを再実行することが可能です。
予測結果の解釈
予測構造の解釈については、羊土社から出ているAlphaFold時代の構造バイオインフォマティクス実践ガイドを読んでください……。ってこれだとただのダイレクトマーケティングなので、以下にいくつか無料で読める資料を紹介します。
得られた予測構造はアウトプットディレクトリ内に**_model.cifという拡張子.cifのファイル形式で出力されます。これをPyMOLやUCSF Chimera Xを用いて映し出してください。
まずは、予測構造の局所的な信頼性を表すpLDDT値を可視化する必要があります。これは以前私が書いた記事AlphaFold予測構造についてのpLDDTカラーリングコマンドを使うと便利です。基本的には青いほど信頼性が高く、赤いほど信頼性が低いです。赤いところは信用しないでOKです。
color 0x0053D6, b < 100
color 0x65CBF3, b < 90
color 0xFFDB13, b < 70
color 0xFF7D45, b < 50
# 必要であれば原子ごとの色分け(#を外して使う)
# util.cnc
次に、全体構造の相対的な位置関係の信頼性を表すPredicted Aligned Error (PAE)について表示したいところですが、こちらはAlphaFold3のアウトプット情報ではそのまま画像として出てきません。これを表示させるためには私が作成したalphafold3_toolsに含まれるpaeplotコマンドを使うと便利です。使い方はリンクを読んでください。PAEの値が0に近いところは信頼性が高く、32に近いところは信頼性が低いです。
上海老師氏がこれらの解釈と無料まとめ記事を書いてくれています。
- タンパク質立体構造予測プログラムAlphaFold2の非専門家向け活用法 第1回「予測の良し悪しの判断」
- AlphaFold2の非専門家向け活用法 第1.5回
- AlphaFold2の非専門家向け活用法 第2回「予測構造を元にいろいろ考察してみる(実践編)」
- AlphaFold2の非専門家向け活用法 第3回「予測構造を活用したタンパク質発現や構造解析」
- AlphaFold2の非専門家向け活用法 第4回前半「AlphaFoldが現状カバーできていない構造情報」
- AlphaFold2の非専門家向け活用法 第4回後半「AlphaFoldが現状カバーできていない構造情報」
- AlphaFold2の非専門家向け活用法 第5回(最終回)「最近の進展と今後の展望」


