论文Towards machine-guided design of proteins中描述的模型具有一个自定义层,该层转置了嵌入嵌入式一键编码的238 x 15
矩阵(矩阵代表238个长度的蛋白质序列中每个点的氨基酸残基)并使用可训练的238 x 5
权重矩阵获取点积,得到15x5
“复合氨基酸序列”。
该文章指出15 x 5
矩阵中的每一列代表特定的氨基酸组。
我已经在keras中实现了这一点,并且想知道如何解释15x5
矩阵并将列中的值映射到原始序列中的氨基酸。
例如:我希望能够提供一些代码来检查15 x 5
复合氨基酸矩阵,然后向用户显示分组氨基酸的位置和字母。
class CompositeResidue(Layer):
'''
This is the "Composite Residue" layer.
The input sets the number of residues to group.
'''
def __init__(self, Ncomp, **kwargs):
self.Ncomp = Ncomp
super(CompositeResidue, self).__init__(**kwargs)
def build(self, input_shape):
# Create a trainable weight variable for this layer.
#input shape = 15 x 238
#self.Ncomp = 5
self.kernel = self.add_weight(name='kernel',
shape=(input_shape[1], self.Ncomp),
initializer='uniform',
trainable=True)
super(CompositeResidue, self).build(input_shape) # Be sure to call this at the end
def call(self, x):
return K.dot(K.permute_dimensions(x, (0,2,1)), self.kernel)
def compute_output_shape(self, input_shape):
return (input_shape[0], input_shape[2], self.Ncomp)
#output shape = 15x5
def get_config(self):
base_config = super(CompositeResidue, self).get_config()
base_config['Ncomp'] = self.Ncomp
return base_config