山东大学2019级软件工程应用与实践——基于人工智能的多肽药物分析问题(四)

2021SC@SDUSC

基于人工智能的多肽药物分析问题

主题:肽与HLA分子结合预测研究(4)
材料和方法

HLA-肽结合和免疫原性数据

HLA I类等位基因和肽之间的结合数据来自IEDB
http://www.iedb.org/

对HLA-肽对进行筛选:

  • 属于HLA-A、B和C亚型的HLA I类等位基因
  • 肽的长度在8到15之间
  • 排除实验结果不一致的肽对

总共获得了327178个非冗余HLA-肽对,覆盖169个HLA等位基因,其中257089个为结合物

然后通过以下步骤平衡每个等位基因的阳性数据和阴性数据:

  1. 基于327178对训练基本模型
  2. 创建假HLA肽对。

每个HLA等位基因 N p s e N_{pse} Npse 的创建伪对数计算如下:
N p s e = 100 ∗ ∣ N p o s − N n e g ∣ N_{pse} = 100∗|N_{pos} − N_{neg} | Npse=100NposNneg
其中 N p o s N_{pos} Npos N n e g N_{neg} Nneg分别代表每个HLA等位基因的阳性和阴性对数。通过随机选择Ensembl数据库中的一种蛋白质并在该蛋白质中随机提取8-11个无突变的肽,以及使用基本模型预测伪对的结合可能性,并为每个等位基因选择高置信度阴性对(得分<0.1)或阳性对(得分>0.9)。

经过这些步骤后,大多数等位基因的数据是平衡的,具有异常比例的等位基因被删除了。最后,使用437077个HLA对(包含81个HLA等位基因)训练结合模型,其中280525个收集到的对和156552个伪对。

pHLA的免疫原性数据也从IEDB得到。

对数据进行筛选:

  • 肽的长度在8到15之间
  • 对于实验结果不一致的配对,我们选择阳性配对

最后,获得32785对HLA-肽,其中5702对与HLA-A02:01相关。在32785个HLA-肽对中,7212个具有免疫原性,3013个免疫原性HLA肽对与HLA-A02:01相关。

代码分析

接上次的代码,分析attention.py模块的代码

代码结构
在这里插入图片描述attention.py

from keras import backend as K, initializers, regularizers, constraints
from keras.engine.topology import Layer

def dot_product(x, kernel):
    if K.backend() == 'tensorflow':
        return K.squeeze(K.dot(x, K.expand_dims(kernel)), axis=-1)
    else:
        return K.dot(x, kernel)

Keras 是一个兼容 Theano 和 Tensorflow 的神经网络高级包,Keras基于backend来做运算。

Keras 可以基于两个backend,一个是 Theano,一个是 Tensorflow。如果选择Theano作为Keras的Backend, 那么Keras就用 Theano 在底层搭建所需要的神经网络;同样,如果选择 Tensorflow ,Keras 就使用 Tensorflow 在底层搭建神经网络。

接下来为Attention类,参数为Layer,这个类中定义了五个方法。

__init__方法

    def __init__(self,
                 W_regularizer=None, b_regularizer=None,
                 W_constraint=None, b_constraint=None,
                 bias=True,
                 return_attention=False,
                 **kwargs):

        self.supports_masking = True
        self.return_attention = return_attention
        self.init = initializers.get('glorot_uniform')

        self.W_regularizer = regularizers.get(W_regularizer)
        self.b_regularizer = regularizers.get(b_regularizer)

        self.W_constraint = constraints.get(W_constraint)
        self.b_constraint = constraints.get(b_constraint)

        self.bias = bias
        super(Attention, self).__init__(**kwargs)

Keras模型参数:

  • W_regularizer: 权重上的正则化

  • b_regularizer: 偏置项的正则化

  • W_constraint: 权重上约束项

  • b_constraint: 偏置上的约束项

  • bias: 是否添加偏置项

初始化方法定义了对Keras层设置初始化权重的方法。

initializers.get('glorot_uniform')

glorot_normal(seed=None)

glorot正态分布初始化方法,也称作Xavier正态分布初始化,参数由0均值,标准差为sqrt(2 / (fan_in + fan_out))的正态分布产生,其中fan_in和fan_out是权重张量的扇入扇出(即输入和输出单元数目)。

seed:随机数种子

bulid(self, input_shape)

    def build(self, input_shape):
        assert len(input_shape) == 3

        self.W = self.add_weight((input_shape[-1],),
                                 initializer=self.init,
                                 name='{}_W'.format(self.name),
                                 regularizer=self.W_regularizer,
                                 constraint=self.W_constraint)
        if self.bias:
            self.b = self.add_weight((input_shape[1],),
                                     initializer='zero',
                                     name='{}_b'.format(self.name),
                                     regularizer=self.b_regularizer,
                                     constraint=self.b_constraint)
        else:
            self.b = None

        self.built = True

参考资料:
[1] https://www.jianshu.com/p/ca41dbd91de6

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值