PSP - 基于开源框架 OpenFold Multimer 蛋白质复合物的结构预测与BugFix

这篇具有很好参考价值的文章主要介绍了PSP - 基于开源框架 OpenFold Multimer 蛋白质复合物的结构预测与BugFix。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/132410296

PSP - 基于开源框架 OpenFold Multimer 蛋白质复合物的结构预测与BugFix,AI for Biotech,蛋白质复合物结构预测,AlphaFold2,Multimer,OpenFold

AlphaFold2-Multimer 是一个基于 AlphaFold2 的神经网络模型,可以预测多链蛋白复合物的结构。该模型在训练和推理时都可以处理多链输入,并且考虑了链之间的对称性和遗传信息。

  • 对于 AlphaFold2 的损失函数、特征编码、裁剪策略和模型架构进行了多项修改,以适应多链蛋白复合物的特点。该模型还提供了一个基于预测 TM-score 的置信度评估方法。
  • 在两个数据集上进行了评估,一个是 Benchmark 2,包含 17 个低同源性的异二聚体;另一个是 Recent-PDB-Multimers,包含 4,433 个最近的蛋白复合物。该模型使用 DockQ 分数来衡量预测结构与真实结构之间的接触质量。
  • 在Benchmark 2上显著优于其他基于 AlphaFold2 或 ClusPro 的方法,在 Recent-PDB-Multimers 上也表现出较大的提升,尤其是在异构二聚体上。该模型还能够准确地预测自身的置信度,并且给出一些高质量的结构示例。

其中 OpenFold 是 AlphaFold2-Multimer 的开源实现,即:

  • Paper: OpenFold: Retraining AlphaFold2 yields new insights into its learning mechanisms and capacity for generalization
  • GitHub: https://github.com/aqlaboratory/openfold

将 OpenFold 的分支切换至 multimer 分支,即可使用 Multimer 功能,目前是 Debug 版本,基本推理功能已经支持,MSA 部分支持使用 AF2 的推理结果,模型支持 DeepMind 提供的 Multimer v3 模型,其余使用 OpenFold 的相关源码。评估当前 OpenFold Multimer框架的有效性。

其他参考文章:

  • 开源可训练的蛋白质结构预测框架 OpenFold 的环境配置
  • 基于 OpenFold 训练的 Finetuning 模型与推理逻辑评估

1. 模型效果

测试序列是 H1106_A122_B114.fasta,来源于 CASP15,即:

>A
MSRIITAPHIGIEKLSAISLEELSCGLPDRYALPPDGHPVEPHLERLYPTAQSKRSLWDFASPGYTFHGLHRAQDYRRELDTLQSLLTTSQSSELQAAAALLKCQQDDDRLLQIILNLLHKV
>B
MNITLTKRQQEFLLLNGWLQLQCGHAERACILLDALLTLNPEHLAGRRCRLVALLNNNQGERAEKEAQWLISHDPLQAGNWLCLSRAQQLNGDLDKARHAYQHYLELKDHNESP

OpenFold Multimer 的 MSA 文件夹格式,与 Monomer 类似,位于 alignments 文件夹中,不同的链放入同名文件夹中,即文件夹 A 和 B,具体文件如下:

bfd_uniref_hits.a3m
mgnify_hits.sto
pdb_hits.sto
uniprot_hits.sto
uniref90_hits.sto

其中 bfd_uniref_hits.a3mmgnify_hits.stouniref90_hits.sto 是 MSA 的搜索结果,uniprot_hits.sto 用于 MSA Pairing,pdb_hits.sto 是模版搜索的结果。

测试命令,如下:

  • 因为使用已有的 AlphaFold2 Multimer 搜索的 MSA,因此 MSA 相关配置并未启用;
  • 模型使用 AF2 的 params_model_1_multimer_v3.npz,配置使用 model_1_multimer_v3

即:

python3 run_pretrained_openfold.py \
mydata/test-multimer \
af2-data-v230/pdb_mmcif/mmcif_files \
--uniref90_database_path af2-data-v230/uniref90/uniref90.fasta \
--mgnify_database_path af2-data-v230/mgnify/mgy_clusters_2022_05.fa \
--pdb70_database_path af2-data-v230/pdb70/pdb70 \
--uniclust30_database_path deepmsa2/uniclust30/uniclust30_2018_08 \
--uniref30_database_path af2-data-v230/uniref30/UniRef30_2021_03 \
--uniprot_database_path af2-data-v230/uniprot/uniprot.fasta \
--pdb_seqres_database_path af2-data-v230/pdb_seqres/pdb_seqres.txt \
--output_dir mydata/outputs-multimer/H1106_A122_B114/ \
--bfd_database_path af2-data-v230/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt \
--model_device "cuda:0" \
--jackhmmer_binary_path /opt/openfold/hhsuite-speed/jackhmmer \
--hmmsearch_binary_path /opt/openfold/hhsuite-speed/hmmsearch \
--hhblits_binary_path /opt/conda/envs/openfold/bin/hhblits \
--hhsearch_binary_path /opt/conda/envs/openfold/bin/hhsearch \
--kalign_binary_path /opt/conda/envs/openfold/bin/kalign \
--config_preset "model_1_multimer_v3" \
--jax_param_path af2-data-v230/params/params_model_1_multimer_v3.npz \
--max_template_date 2022-04-01

运行日志如下,整体推理速度较快:

INFO:openfold/utils/script_utils.py:Successfully loaded JAX parameters at af2-data-v230/params/params_model_1_multimer_v3.npz...
INFO:run_pretrained_openfold.py:Using precomputed alignments for A at mydata/outputs-multimer/H1106_A122_B114/alignments...
INFO:run_pretrained_openfold.py:Using precomputed alignments for B at mydata/outputs-multimer/H1106_A122_B114/alignments...
INFO:openfold/utils/script_utils.py:Running inference for A-B...
INFO:openfold/utils/script_utils.py:Inference time: 44.876936707645655
INFO:run_pretrained_openfold.py:Output written to mydata/outputs-multimer/H1106_A122_B114/predictions/A-B_model_1_multimer_v3_unrelaxed.pdb...
INFO:run_pretrained_openfold.py:Running relaxation on mydata/outputs-multimer/H1106_A122_B114/predictions/A-B_model_1_multimer_v3_unrelaxed.pdb...
INFO:openfold/utils/script_utils.py:Relaxation time: 26.89977646060288
INFO:openfold/utils/script_utils.py:Relaxed output written to mydata/outputs-multimer/H1106_A122_B114/predictions/A-B_model_1_multimer_v3_relaxed.pdb...

与 AlphaFold2 Multimer 的预测结果 unrelaxed_model_1_multimer_v3_pred_0.pdb,作为对比,效果在 H1106_A122_B114 中,略有提升,即:

[Info] {'TMScore': 0.8824, 'RMSD(local)': 1.92, 'Align.Len.': 173, 'DockQ': 0.613}
[Info] {'TMScore': 0.8803, 'RMSD(local)': 2.12, 'Align.Len.': 174, 'DockQ': 0.600}

其中,黄色是 Reference,蓝色是 AlphaFold2 Multimer 的预测结果,粉色是 OpenFold Multimer 的预测结果,如下:

PSP - 基于开源框架 OpenFold Multimer 蛋白质复合物的结构预测与BugFix,AI for Biotech,蛋白质复合物结构预测,AlphaFold2,Multimer,OpenFold

2. Bugfix

Bug: 在MSA 序列 (sequence) 中,存在无法解析的 "." 关键字,导致 KeyError,即:

Traceback (most recent call last):
  File "run_pretrained_openfold.py", line 477, in <module>
    main(args)
  File "run_pretrained_openfold.py", line 291, in main
    feature_dict = generate_feature_dict(
  File "run_pretrained_openfold.py", line 134, in generate_feature_dict
    feature_dict = data_processor.process_fasta(
  File "openfold/data/data_pipeline.py", line 1167, in process_fasta
    chain_features = self._process_single_chain(
  File "openfold/data/data_pipeline.py", line 1116, in _process_single_chain
    chain_features = self._monomer_data_pipeline.process_fasta(
  File "openfold/data/data_pipeline.py", line 860, in process_fasta
    msa_features = self._process_msa_feats(alignment_dir, input_sequence, alignment_index)
  File "openfold/data/data_pipeline.py", line 818, in _process_msa_feats
    msa_features = make_msa_features(
  File "openfold/data/data_pipeline.py", line 232, in make_msa_features
    [residue_constants.HHBLITS_AA_TO_ID[res] for res in sequence]
  File "openfold/data/data_pipeline.py", line 232, in <listcomp>
    [residue_constants.HHBLITS_AA_TO_ID[res] for res in sequence]
KeyError: '.'

源码位于 openfold/data/data_pipeline.py 中,即:

def _process_msa_feats(
    self,
    alignment_dir: str,
    input_sequence: Optional[str] = None,
    alignment_index: Optional[str] = None
) -> Mapping[str, Any]:
    msas = self._get_msas(
        alignment_dir, input_sequence, alignment_index
    )
    msa_features = make_msa_features(
        msas=msas
    )
    return msa_features

定义日志 logger,即:

import logging
logging.basicConfig()
logger = logging.getLogger(__file__)
logger.setLevel(level=logging.INFO)

定位 sequence,来源于 pdb_hits.sto 模版搜索结果,即:

INFO:openfold/data/data_pipeline.py:[CL] Error sequence: .MALLPDGQSI.EPHISR...LY...P....ERL.....ADRALLDFATPHR..GFHDLLRP.VD..FHQAMQ...G.LRSV.LAE.....GQSPELRAAA..ILLEQM.HADEQLMQMTLHLLHKV

原因:在 Multimer 中,Template 的搜索结果是 pdb_hits.sto,误解析成 MSA 文件,排除即可,同时,增加 pdb_hits.sto 的解析函数。

相关代码,各有 2 处,都需要修改,之前验证的是hmm_output,现修改成pdb_hits,即:文章来源地址https://www.toymoban.com/news/detail-667152.html

# ...
elif ext == ".sto" and "pdb_hits" not in filename:
    msa = parsers.parse_stockholm(read_msa(start, size))
# ...
elif name == "pdb_hits.sto":
    hits = parsers.parse_hmmsearch_sto(
        read_template(start, size),
        input_sequence,
    )
    all_hits[name] = hits
# ...

到了这里,关于PSP - 基于开源框架 OpenFold Multimer 蛋白质复合物的结构预测与BugFix的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【NM 2019】综述:基于机器学习引导的定向进化蛋白质工程

    Machine-learning-guided directed evolution for protein engineering | Nature Methods Machine-learning-guided directed evolution for protein engineering 机器学习引导的定向进化蛋白质工程  图1 | 带和不带机器学习的定向进化。 a)定向进化利用迭代循环的多样性生成和筛选来找到改进的变体。未改进的变体的信

    2024年02月11日
    浏览(37)
  • 比最优技术快 8 倍:浙大侯廷军等人提出 ResGen,基于蛋白质口袋的 3D 分子生成模型

    作者:彬彬 编辑:李宝珠,三羊 浙江大学与之江实验室研究团队提出了一种基于蛋白质口袋 (protein pocket) 的 3D 分子生成模型——ResGen,与以往最优技术相比,速度提升 8 倍,成功地生成了具有更低结合能和更高多样性的类药物分子。 过去,创新药物的发现往往依赖于古早配

    2024年01月22日
    浏览(40)
  • ESM2蛋白预训练模型 蛋白质、氨基酸向量表示

    参考: https://github.com/facebookresearch/esm https://huggingface.co/facebook/esm2_t33_650M_UR50D https://esmatlas.com/resources?action=fold 直接输入Fasta 氨基酸序列格式就行;第一次下载esm2_t33_650M_UR50D模型有点慢,有2个多G大

    2024年02月15日
    浏览(124)
  • 学术速运|通过剂量和时间分辨的蛋白质组学来解密药物作用和蛋白质修饰

    ​题目:Decrypting drug actions and protein modifications bydose- and time-resolved proteomics 文献来源:10.1126/science.ade3925 (2023) (Science) 代码:无 简介:虽然大多数癌症药物通过改变翻译后修饰(PTMs)来调节细胞通路的活性,但令人惊讶的是,关于药物调节的PTMs的程度和时间和剂量反应特征,我

    2023年04月17日
    浏览(43)
  • 蛋白质深度学习

    本文主要面向两类目标读者: 一类是想使用机器学习的生物学家,一类是想进入生物学领域的机器学习研究者。如果你不熟悉生物学或机器学习,仍然欢迎你阅读本文,但有时你可能会觉得有点读不太懂!如果你已经熟悉这两者,那么你可能根本不需要本文 —— 你可以直接跳

    2024年02月03日
    浏览(40)
  • ESM蛋白质语言模型系列

    第一篇《Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences 》ESM-1b 第二篇《MSA Transformer》在ESM-1b的基础上作出改进,将模型的输入从单一蛋白质序列改为MSA矩阵,并在Transformer中加入行、列两种轴向注意力机制,对位点分别计算第个序列和第个

    2024年02月07日
    浏览(56)
  • 使用AlphaFold2进行蛋白质结构预测

    前言 AlphaFold 2,是DeepMind公司的一个人工智能程序。2020年11月30日,该人工智能程序在蛋白质结构预测大赛CASP 14中,对大部分蛋白质结构的预测与真实结构只差一个原子的宽度,达到了人类利用冷冻电子显微镜等复杂仪器观察预测的水平,这是蛋白质结构预测史无前例的巨大

    2024年02月01日
    浏览(42)
  • 蛋白质功能预测中PSSM矩阵的生成

    蛋白质功能预测   近年来高通量实验方法快速发展,随之产生大量新型蛋白质,发现的蛋白质数量与其功能注释之间的差距越来越大,蛋白质功能预测成为分子生物学研究领域的核心问题。传统的蛋白质功能预测方法耗时且昂贵,依靠单一数据源的特征信息表达不全面,因

    2024年02月02日
    浏览(31)
  • 26《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享

    ​《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》 本人能力有限,如果错误欢迎批评指正。 第六章:The principles of protein folding kinetics (蛋白质折叠动力学的原理) -速率测量有助于深入了解蛋白质折叠的途径 可折叠的路线是什么?在折叠过程中什么时候形成不

    2023年04月18日
    浏览(39)
  • 27《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享

    ​《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》 本人能力有限,如果错误欢迎批评指正。 第六章:The principles of protein folding kinetics (蛋白质折叠动力学的原理) 整个二级结构通常作为一个单元进行折叠 蛋白质倾向于以基序或二级结构的单位折叠,而不是以

    2023年04月24日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包