efficient evolution 抗体进化模型笔记

使用到的六个esm模型:

python bin/recommend.py
        '--model-names',
        default=[ 'esm1b', 'esm1v1', 'esm1v2', 'esm1v3', 'esm1v4', 'esm1v5', ]

  1. 计算概率分布

    • logits = model.predict_sequence_prob(seq): 通过模型对输入序列 seq 进行预测,得到每个位置上各种氨基酸的对数概率值。
    • probs = scipy.special.softmax(logits, axis=1): 对这些对数概率值进行 softmax 操作,将其转换为概率分布。在这里,probs 是一个概率矩阵,表示每个位置上各种氨基酸的概率。
  2. 确定突变

    • 对于每个位置 i(从第二个位置开始,因为第一个位置通常是起始位置):
      • 获取该位置的原始氨基酸 wt_j = model.alphabet_.tok_to_idx[seq[pos]] 和其对应的概率 wt_prob = probs[i, wt_j]
      • 遍历该位置可能的所有氨基酸 j
        • 排除在 exclude 集合中的氨基酸和特殊标记(如 <)的氨基酸。
        • 如果当前氨基酸不是原始氨基酸 wt_j
          • 计算当前氨基酸的概率 mt_prob = probs[i, j]
          • 如果当前氨基酸的概率大于阈值 alpha * wt_prob,则将该突变记录为 (位置, 原始氨基酸, 突变后的氨基酸)
  3. 返回突变列表

    • 将满足条件的突变记录在 mutations 列表中,并最终返回该列表。

代码中的 reconstruct_multi_models 函数的作用是针对给定的野生型序列 wt_seq,通过不同的模型(例如:'esm1b', 'esm1v1', 'esm1v2' 等)进行重构,并比较每个模型生成的突变。具体流程如下:

  1. 对于每个模型名称 model_name

    • 获取相应的模型 model = get_model_name(model_name)
    • 如果 alpha 为 None,则使用 reconstruct 函数对野生型序列进行重构,得到 wt_new,并计算与原始序列的差异 mutations_model = diff(wt_seq, wt_new)
    • 如果 alpha 不为 None,则使用 soft_reconstruct 函数进行软重构,得到 mutations_model
    • 对于每个突变 mutation 在 mutations_model 中:
      • 如果 mutation 不在 mutations_models 中,则将其添加,并初始化计数为 0。
      • 增加该突变的计数,并将该模型的名称添加到 mutations_model_names 中。
  2. 如果 return_names 为 True,则返回包含突变计数和模型名称的元组 (mutations_models, mutations_model_names);否则,仅返回突变计数 mutations_models

此外,还包含了使用 eval_sapiens函数  评价人源相似度 

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LRJ-jonas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值