深度学习模型与湿实验的结合,有望用于代谢通量分析

背景

在做蛋白质结构改造的道路上,需要强大的计算机编程的辅助,在深度学习领域,找到了一个强大的工具,因此研究一下如何与湿实验进行结合。

工具

DeeplearningApproach Anconda python以及各种依赖包 计算机 湿实验数据

实现思路

1.首先,配置好DeeplearningApproach,怎么配置看另一篇文章《深度学习预测酶活性参数提升酶约束模型构建从头环境搭建》。
2.利用已经有数据的突变位点进行预测,比如我要预测一个蛋白序列的L59,W60,Y153,R416位点突变为丙氨酸(A),因此我需要先配置好我的tsv文件,这里的突变我写了一个脚本,代码如下:

import copy
import csv

class ZhaoWeiDian(object):

    def __init__(self):
        self.no_site1 = 'R'  # 输入该位点原始AA(大写单字母)
        self.no_site2 = 'A'  # 输入该位点原始AA(大写单字母)
        # self.aa_list = ['A']   #只改变为单个位点单个突变时使用
        self.aa_list = ['R', 'G', 'V', 'L', 'I', 'P', 'F', 'Y', 'W', 'S', 'T', 'C', 'M', 'N', 'Q', 'D', 'E', 'K', 'A', 'H']
        self.unit_site = 416
        self.double_site = 231
        pro = '输入您的蛋白序列'
        self.pro_list = []
        for p in pro:  # 将蛋白字符串变成列表
            self.pro_list.append(p)

    def sort1(self):
        a = self.pro_list
        b = self.unit_site
        c = self.aa_list
        f = self.no_site1
        for n,i in enumerate(a):
            if n + 1 == b:   # 判断是否是我要的位点
                d = a[n]   # 将原序列的该位点赋予d
                a = copy.deepcopy(a)   # 这里需要一个深拷贝,否则会改变WT序列,当然如果是同一位点预测为其他19种氨基酸不用也可
                for rep_site in c:
                    if c == f:
                        pass
                    else:
                        a[n] = rep_site   # 原序列的该位点替换为我需要的位点
                        i = a[n]   # 提取出改变后的氨基酸
                        g = ''.join(a)  # 将列表变为字符串,供输出使用
                        man_result = '已经将第%d位氨基酸%s改为%s,输出序列如下:%s' % ((n + 1), d, i, g)
                        # man_result = '(1R)-1-hydroxy-1-(3-hydroxyphenyl)propan-2-one	' + 'CC(=O)C(C1=CC(=CC=C1)O)O	' + g  # 加号与逗号的区别
                        print(man_result)
                break
            else:
                pass

    def sort2(self):
        a = self.pro_list
        b = self.unit_site
        c = self.aa_list
        d = self.double_site
        f = self.no_site1
        h = self.no_site2
        mm, pp = f + str(b), h + str(d)
        bb = {mm:'WT',pp:'WT'}
        aa = [bb]
        for n,i in enumerate(a):
            if n + 1 == b:
                m = a[n]
                a = copy.deepcopy(a)
                for rep_site in c:
                    if rep_site == f:
                        pass
                    else:
                        a[n] = rep_site
                        q = a[n]
                        for k,l in enumerate(a):
                            if k + 1 == d:
                                p = a[k]
                                s = copy.deepcopy(a)
                                for rep_site in c:
                                    if rep_site == h:
                                        pass
                                    else:
                                        s[k] = rep_site
                                        r = s[k]
                                        g = ''.join(s)
                                        aa = copy.deepcopy(aa)
                                        bb[mm], bb[pp] = q, r # 赋值行为,如果不放在深拷贝下面,就用第一次的值替换掉了WT
                                        aa.append(bb)
                                        man_result = '已经将第%d&%d位氨基酸%s&%s改为%s&%s,输出序列如下:%s' % ((n + 1), (k+1), m , p , q , r , g)
                                        # man_result = '(1R)-1-hydroxy-1-(3-hydroxyphenyl)propan-2-one	' + 'CC(=O)C(C1=CC(=CC=C1)O)O	' + g  # 加号与逗号的区别
                                        print(man_result)
                                break
                            else:
                                pass
                break
            else:
                pass
        name = [mm, pp]
        self.write(aa,name)
        return aa

    def write(self,aa,name):
        with open(f'./output/{name[0]}+{name[1]}.csv','w',newline='',encoding='utf-8') as file_obj:
            writer = csv.DictWriter(file_obj, fieldnames=name)
            writer.writeheader()
            for cc in aa:
                writer.writerow(cc)


a = ZhaoWeiDian()
# unit_res = a.sort1()
double_res = a.sort2()
print(double_res)

3.通过提取WT,L59,W60,Y153,R416的Kcat值绘制柱形图(当然不画图用眼看也可以,就几个数据),和已有的实验数据进行比对:


实验数据

深度学习预测数据
4.从结果看,拟合的并不是很好,但是在大方向上没有问题,Kcat小于WT的实际也小,大于WT的实际也大。(当然数据量很少,并不能说明问题,预测出来的结果只能去尝试) 5.通过将A231位点突变为其他19种氨基酸(还是用上面的代码配置的tsv文件),预测结果显示A231G的Kcat值比WT大,也许可以尝试一下,或者突变其他位点找到Kcat值大于R416A的突变去尝试一下。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/896d71336843ee2de69f3cc7bc5b735c.png)

预测A231位点突变为其他19种氨基酸

深度挖掘

1)如何利用DeeplearningApproach特性?
做一个tsv文件库,这个库里包含所有该蛋白活性位点附近的氨基酸的单位点突变和双位点突变,与WT的Kcat值做对比,筛选有益突变进行实验。
2)可不可以使DeeplearningApproach更贴合某一个确切的实验,使其Kcat值更精确,然后利用Kcat做代谢通量分析,也许可以从两方面入手:

  • 调整参数,以此来优化过拟合/欠拟合现象,再做一些超参数优化,使其和已有的实验结果更贴切。
  • 利用实验的大量数据(至少百万条)重新训练模型,得到专一性强的模型(几乎不可能实现,只是一种猜想)

注意

本实验数据为拟造,旨在介绍方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值