当前位置: 首页 > news >正文

AF3 make_template_features函数解读

make_template_features 函数的主要作用是基于输入序列 (input_sequence) 和模板匹配结果 (hits,Sequence[TemplateHit]格式),通过模板特征化器 (template_featurizer,通常是 CustomHitFeaturizer),生成用于 AlphaFold3 预测的模板特征。

源代码:

def make_template_features(
        input_sequence: str,
        hits: Sequence[Any],
        template_featurizer: Any,
) -> FeatureDict:
    hits_cat = sum(hits.values(), [])
    if template_featurizer is None or (
            len(hits_cat) == 0 and not isinstance(template_featurizer, CustomHitFeaturizer)
    ):
        template_features = empty_template_feats(len(input_sequence))
    else:
        templates_result = template_featurizer.get_templates(
            query_sequence=input_sequence,
            hits=hits_cat,
        )
        template_features = templates_result.features

    return template_features

函数参数

def make_template_features(
        input_sequence: str,
        hits: Sequence[Any],
        template_featurizer: Any,
) -> FeatureDict:
  • input_sequence:输入的蛋白质序列(氨基酸字符串)。
  • hits:模板比对结果,是来自 HMM 或 HHsearch 的比对命中。
  • template_featurizer:模板特征生成器,通常是 CustomHitFeaturizer,负责从比对结果中生成结构模板特征。

核心逻辑解析

1. 合并 hits
hits_cat = sum(hits.values(), [])
  • hits 是一个字典,键是键为比对文件名,值是Sequence[TemplateHit]。
  • 通过 sum 将所有方法的比对结果合并为单个列表 hits_cat

假设 hits 为:

hits = {
    "example.hhr": [hit1, hit2],
    "hmm_output.sto": [hit3, hit4]
}

执行 sum(hits.values(), []) 后,hits_cat 结果为:

hits_cat = [hit1, hit2, hit3, hit4]

注:AlphaFold3中 hit 为TemplateHit数据类型。

2. 无模板特征化器时,生成空模板特征:
if template_featurizer is None or (
        len(hits_cat) == 0 and not isinstance(template_featurizer, CustomHitFeaturizer)
):
    template_features = empty_template_feats(len(input_sequence))
  • 情况 1template_featurizer 为 None,说明不使用模板特征。
  • 情况 2hits_cat 为空且特征化器不是自定义的 CustomHitFeaturizer
  • 此时调用 empty_template_feats 生成空模板特征,保持维度一致但无有效信息。
3. 使用模板特征化器生成特征:
else:
    templates_result = template_featurizer.get_templates(
        query_sequence=input_sequence,
        hits=hits_cat,
    )
    template_features = templates_result.features
  • 如果存在比对结果和模板特征化器,则调用 get_templates 方法。
  • template_featurizer 会根据输入序列和比对结果,从 mmCIF 或 PDB 文件中提取模板特征。
  • 提取的模板特征保存在 templates_result.features 中,包含比对分数、序列比对情况、结构信息等。
4. 返回模板特征:
return template_features

最终返回的 template_features 是一个特征字典FeatureDict,包含以下关键特征:

  • template_aatype:模板氨基酸类型,形状为 [num_templates, num_residues, 22]
  • template_all_atom_positions:模板原子坐标,形状为 [num_templates, num_residues, 37, 3]
  • template_all_atom_mask:原子存在掩码,标识哪些位置有原子,形状为 [num_templates, num_residues, 37]
  • template_sum_probs:比对置信度,形状为 [num_templates,]

执行流程总结

  1. 合并比对结果 hits
  2. 如果没有模板特征化器或比对失败,生成空模板特征。
  3. 如果存在有效比对,调用 template_featurizer.get_templates 生成特征。
  4. 返回包含模板结构的特征字典。

应用场景

  1. FASTA 输入:比对 HMM/HHsearch 结果生成模板特征。
  2. PDB/mmCIF 输入:通过链 ID 限制,生成匹配的结构特征。
  3. 缺失模板时:生成空特征,保持模型输入维度一致。

相关文章:

  • 蓝桥杯备赛-基础训练(三)哈希表 day15
  • 特征提取:如何从不同模态中获取有效信息?
  • 中兴B863AV3.2-T/B863AV3.1-T2/B863AV3.1-T2K_电信高安_S905L3A-B_安卓9.0_线刷固件包
  • Python进行简单医学影像分析的示例
  • LLM Agent:PaSa
  • ipad连接电脑断断续续,不断弹窗的解决办法
  • 计算机专业知识【Excel 引用大揭秘:相对、绝对与混合引用】
  • 抓包工具(三)Wireshark代理抓包Java程序的HTTPS请求
  • 编程考古-忘掉它,Delphi 8 for the Microsoft .NET Framework
  • 城市地质调查信息化建设,数字化时代的城市规划利器
  • C#DevExpress使用GridLookUpEdit实现订单明细选择商品
  • 大数据之常用Linux操作
  • 内外网文件传输 安全、可控、便捷的跨网数据传输方案
  • 商业航天级微控制器单元(MCU)技术特征分析
  • 微服务框架及其中出现的各种问题和对应的解决方案/组件
  • element ui的time时间和table表格
  • Windows逆向工程入门之结构体类特性分析
  • 放大镜案例
  • 2025软件测试面试题200问(含答案+文档)
  • CSDN如何设置付费专栏
  • 韩德洙成为韩国执政党总统大选候选人
  • 代理销售保险存在误导行为,农业银行重庆市分行相关负责人被罚款0.1万元
  • 正荣地产:董事会主席、行政总裁辞任,拟投入更多精力推动境内债重组等工作
  • 夜读丨古代有没有近视眼?
  • 对话哭泣照被恶意盗用成“高潮针”配图女生:难过又屈辱
  • 家庭相册㉙在沪打拼25年,我理解了父母清晨去卖蜜饯的辛苦