AlphaFold2代码阅读(九)

2021SC@SDUSC


写下前面:之前是在Google Colab中运行的简化版本的代码,今天看一下AlphaFold2源码中写的运行程序


一、运行 AlphaFold

运行 AlphaFold 的最简单方法是使用提供的 Docker 脚本。这是在 Google Cloud 上使用nvidia-gpu-cloud-image 具有 12 个 vCPU、85 GB 内存、100 GB 启动磁盘、额外 3 TB 磁盘上的数据库和 A100 GPU 的机器进行测试的。

1.克隆这个存储库并cd放入其中

git clone https://github.com/deepmind/alphafold.git

2.构建 Docker 镜像:

docker build -f docker/Dockerfile -t alphafold .

3.安装run_docker.py依赖项

pip3 install -r docker/requirements.txt

4.运行run_docker.py指向包含希望预测结构的蛋白质序列的 FASTA 文件。如果要预测已存在于 PDB 中的蛋白质的结构,并且希望避免将其用作模板,则max_template_date必须将其设置为该结构的发布日期之前。还必须提供包含下载的数据库的目录的路径。例如,对于 T1050 CASP14 目标:

python3 docker/run_docker.py \
  --fasta_paths=T1050.fasta \
  --max_template_date=2020-05-14 \
  --data_dir=$DOWNLOAD_DIR

默认情况下,Alphafold 将尝试使用所有可见的 GPU 设备。要使用子集,请使用–gpu_devices标志指定以逗号分隔的 GPU UUID 或索引列表 。有关 更多详细信息,参阅 GPU 枚举。
5.可以通过添加–model_preset=标志来控制要运行的 AlphaFold 模型 。提供以下型号:

  • 单体:这是在 CASP14 中使用的原始模型,没有集成。

  • Monomer_casp14:这是在 CASP14 中使用的原始模型 num_ensemble=8,与我们的 CASP14 配置相匹配。这主要是为了可重复性,因为对于有限的精度增益(CASP14 域上的平均 GDT 增益为 +0.1),计算成本要高 8 倍。

  • Monomer_ptm:这是使用 pTM 头微调的原始 CASP14 模型,提供成对置信度度量。它的准确度略低于普通单体模型。

  • multimer:这是AlphaFold-Multimer模型。要使用此模型,请提供多序列 FASTA 文件。此外,UniProt 数据库应该已经下载。

6.可以通过添加–db_preset=reduced_dbs或–db_preset=full_dbs到运行命令来控制 MSA 速度/质量权衡 。我们提供以下预设:

  • Reduced_dbs:此预设针对速度和较低的硬件要求进行了优化。它与 BFD 数据库的简化版本一起运行。它需要 8 个 CPU 内核 (vCPU)、8 GB RAM 和 600 GB 磁盘空间。

  • full_dbs:这与CASP14使用的所有遗传数据库一起运行。

使用monomer模型预设和 reduced_dbs数据预设运行上面的命令将如下所示:

python3 docker/run_docker.py \ 
  --fasta_paths=T1050.fasta \ 
  --max_template_date=2020-05-14 \ 
  --model_preset=monomer \ 
  --db_preset=reduced_dbs \ 
  --data_dir= $DOWNLOAD_DIR

二、运行 AlphaFold-Multimer

所有步骤与运行单体系统时相同,但必须

  • 提供具有多个序列的输入 fasta,
  • 设置–model_preset=multimer,
  • 可选择–is_prokaryote_list使用布尔值设置标志,以确定给定 fasta 文件中的所有输入序列是否为原核生物。如果情况并非如此或来源未知,请false为该 fasta设置为。

折叠multimer.fasta原核蛋白质复合物的示例:

python3 docker/run_docker.py \ 
  --fasta_paths=multimer.fasta \ 
  --is_prokaryote_list=true \ 
  --max_template_date=2020-05-14 \ 
  --model_preset=multimer \ 
  --data_dir= $DOWNLOAD_DIR

三、例子

以下是如何在不同场景中使用 AlphaFold 的示例。

1.折叠单体

假设有一个具有序列 的单体。输入 fasta 应该是:

>sequence_name
<SEQUENCE>

然后运行以下命令:

python3 docker/run_docker.py \ 
  --fasta_paths=monomer.fasta \ 
  --max_template_date=2021-11-01 \ 
  --model_preset=monomer \ 
  --data_dir= $DOWNLOAD_DIR

2.折叠 homomer

假设有一个来自原核生物的同源异构体,它有 3 个相同序列的拷贝 。输入 fasta 应该是:

>sequence_1
<SEQUENCE>
>sequence_2
<SEQUENCE>
>sequence_3
<SEQUENCE>

然后运行以下命令:

python3 docker/run_docker.py \ 
  --fasta_paths=homomer.fasta \ 
  --is_prokaryote_list=true \ 
  --max_template_date=2021-11-01 \ 
  --model_preset=multimer \ 
  --data_dir= $DOWNLOAD_DIR

3.折叠异聚体

假设有一个未知来源的异聚体 A2B3,即具有 的 2 个副本 和 3 个副本。输入 fasta 应该是:

>sequence_1
<SEQUENCE A>
>sequence_2
<SEQUENCE A>
>sequence_3
<SEQUENCE B>
>sequence_4
<SEQUENCE B>
>sequence_5
<SEQUENCE B>

然后运行以下命令:

python3 docker/run_docker.py \ 
  --fasta_paths=heteromer.fasta \ 
  --is_prokaryote_list=false \ 
  --max_template_date=2021-11-01 \ 
  --model_preset=multimer \ 
  --data_dir= $DOWNLOAD_DIR

4.一个接一个地折叠多个单体

假设有两个单体,monomer1.fasta和monomer2.fasta。

我们可以使用以下命令按顺序折叠两者:

python3 docker/run_docker.py \ 
  --fasta_paths=monomer1.fasta,monomer2.fasta \ 
  --max_template_date=2021-11-01 \ 
  --model_preset=monomer \ 
  --data_dir= $DOWNLOAD_DIR

5.一个接一个地折叠多个多聚体

假设有两个多聚体,multimer1.fasta和multimer2.fasta。两者都来自原核生物。

可以使用以下命令按顺序折叠两者:

python3 docker/run_docker.py \ 
  --fasta_paths=multimer1.fasta,multimer2.fasta \ 
  --is_prokaryote_list=true,true \ 
  --max_template_date=2021-11-01 \ 
  --model_preset=multimer \ 
  --data_dir= $DOWNLOAD_DIR

5.AlphaFold 输出

输出将保存在通过–output_dir标志提供的目录的子目录 中run_docker.py(默认为/tmp/alphafold/)。输出包括计算的 MSA、非松弛结构、松弛结构、排序结构、原始模型输出、预测元数据和部分时间。该–output_dir目录将具有以下结构:

<target_name>/
    features.pkl
    ranked_{0,1,2,3,4}.pdb
    ranking_debug.json
    relaxed_model_{1,2,3,4,5}.pdb
    result_model_{1,2,3,4,5}.pkl
    timings.json
    unrelaxed_model_{1,2,3,4,5}.pdb
    msas/
        bfd_uniclust_hits.a3m
        mgnify_hits.sto
        uniref90_hits.sto

每个输出文件的内容如下:

  • features.pkl–pickle包含模型用于生成结构的输入特征 NumPy 数组的文件。

  • unrelaxed_model_*.pdb – 包含预测结构的 PDB 格式文本文件,与模型输出的完全相同。

  • relaxed_model_*.pdb – 包含预测结构的 PDB 格式文本文件,在对未松弛结构预测执行 Amber 松弛程序后(有关详细信息,请参见 Jumper 等人 2021,增刊方法 1.8.6)。

  • ranked_*.pdb– 根据模型置信度重新排序后,包含松弛预测结构的 PDB 格式文本文件。此处ranked_0.pdb应包含置信度最高ranked_4.pdb的预测和置信度最低的预测。为了对模型置信度进行排名,我们使用预测的 LDDT (pLDDT) 分数(有关详细信息,请参见 Jumper 等人 2021,增刊方法 1.9.6)。

  • ranking_debug.json – 包含用于执行模型排名的 pLDDT 值的 JSON 格式文本文件,以及映射回原始模型名称。

  • timings.json – 一个 JSON 格式的文本文件,其中包含运行 AlphaFold 管道的每个部分所花费的时间。

  • msas/ - 包含描述用于构建输入 MSA 的各种遗传工具命中的文件的目录。

  • result_model_*.pkl–pickle包含模型直接生成的各种 NumPy 数组的嵌套字典的文件。除了结构模块的输出外,还包括辅助输出

pLDDT 置信度量存储在输出 PDB 文件的 B-factor 字段中

你可能感兴趣的:(蛋白质结构预测,python)