Emvirus: 基于 embedding 的神经网络来预测 human-virus PPIs【Biosafety and Health,2023】

这篇具有很好参考价值的文章主要介绍了Emvirus: 基于 embedding 的神经网络来预测 human-virus PPIs【Biosafety and Health,2023】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Emvirus: 基于 embedding 的神经网络来预测 human-virus PPIs【Biosafety and Health,2023】,论文学习,论文学习

研究背景:

  1. Human-virus PPIs 预测对于理解病毒感染机制、病毒防控等十分重要;
  2. 大部分基于 machine-learning 预测 human-virus PPIs 的方法利用手动方法处理序列特征,包括统计学特征、系统发育图谱、理化性质等;
  3. 本文作者提出了一个名为 Emvirus 的方法,它利用 Doc2Vec 获取蛋白序列特征,并将序列特征输入到由 CNN 和 Bi-LSTM 构成的网络中预测 human-virus PPIs;

数据集构成:

  1. 正样本 human-virus PPIs 来自 Yang et.al 收集的多个来源(包括 PHISTO,VirHostNet,VirusMentha,HPIDB,PDB以及一些实验数据)的 PPIs,去掉重复的和无统计学显著性的 PPIs 之后,最终得到 27493 对正样本 PPIs。
  2. 负样本 human-virus PPIs 来自 Yang et.al 中使用的基于 dissimilarity‐based negative sampling method 构建的负样本 PPIs。
  3. 正样本:负样本 = 1:10
  4. 训练集:测试集 = 20:1
  5. 对于数据集中样本类别不平衡的处理办法:作者利用 SMOTE 方法对正样本进行过采样,构建 balanced training datasets。
    Emvirus: 基于 embedding 的神经网络来预测 human-virus PPIs【Biosafety and Health,2023】,论文学习,论文学习

研究思路和方法:

Emvirus: 基于 embedding 的神经网络来预测 human-virus PPIs【Biosafety and Health,2023】,论文学习,论文学习
论文代码:https://github.com/hongjiala/PPIs

1. 利用 Doc2vec 获取蛋白质序列的特征向量:

Doc2vec 是NLP中Word2vec方法的拓展,相比于 Word2vecDoc2vec 可以从不同长度的蛋白序列中学到固定长度的序列特征表示。
(至于图中蛋白向量形状为 1x3000,暂时没想清楚怎么来的)

#【本段代码来自 作者提供的 doc2vec/doc2vec.py,我只是添加了一些注释信息。】

# -*- coding: utf-8 -*-
"""
Created on Tue May 26 18:19:53 2022

@author: xiepengfei
"""

import numpy as np
from Bio import SeqIO
from nltk import trigrams, bigrams,ngrams  ## 用来给氨基酸序列进行分词
from keras.preprocessing.text import Tokenizer
from gensim.models import Word2Vec
import re
from gensim.models.doc2vec import Doc2Vec, TaggedDocument  ## 用于 embedding
from gensim.test.utils import get_tmpfile

np.set_printoptions(threshold=np.inf)

## 将 每条氨基酸序列 划分成小片段,之间以空格分开,并将每一个病毒中的所有的序列保存在 texts 列表中
names = ["DENV","Hepatitis","Herpes","HIV","Influenza","Papilloma","SARS2","ZIKV"]  ## 有这些病毒的序列,每个病毒序列都单独处理,训练embdding模型
for name in names:
    texts = []
    for index, record in enumerate(SeqIO.parse('fasta/%s.fasta'%name, 'fasta')):
        tri_tokens = ngrams(record.seq,6)  ## 将蛋白质序列连续分割成长度为6的片段
        temp_str = ""
        for item in ((tri_tokens)): ## item 就是每一条氨基酸序列的片段,格式 ("A","B","C","D","E","F"), ("B","C","D","E","F","G"), ("C","D","E","F","G","H")
            # print(item),

            items = ""  ## items 就是将每个片段中的氨基酸残基字符拼接成一个字符串,即 "ABCDEF", "BCDEFG", "CDEFGH"
            for strs in item:
                items = items+strs
            temp_str = temp_str + " " + items  ## 将氨基酸片段字符串拼起来,之间以空格分开,即 "ABCDEF BCDEFG CDEFGH"
            #temp_str = temp_str + " " +item[0]
        texts.append(temp_str)  ## 将 temp_str 保存到 texts 中,格式:["ABCDEF BCDEFG CDEFGH", "ABCDEF BCDEFG"]


    ## 将 texts 中保存的氨基酸序列中的一些特殊字符(stop中列举的特殊字符)去掉,结果保存在 seq 中 (seq中的内容和texts中的内容的区别就是前者没有那些特殊字符)
    seq=[]
    stop = '[’!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~]+'
    for doc in texts:
        doc = re.sub(stop, '', doc)
        seq.append(doc.split())

    documents = [TaggedDocument(doc, [i]) for i, doc in enumerate(seq)]  ## 将 seq 列表中的每条序列转化为 TaggedDocument对象,words就是每条序列doc,tags就是序列的索引[i]
    model = Doc2Vec(documents , vector_size=1000, window=500, min_count=1, workers=12) ## 构建 Doc2vec 模型
    model.train(documents ,total_examples=model.corpus_count, epochs=50) ## 训练模型
    #model.save("autodl-tmp/my_doc2vec_model.model") # you can continue training with the loaded model!
    #model.dv.save_word2vec_format('%s.vector'%name)

    # test_seq = ['MRQGCKFRGSSQKIRWSRSPPSSLLHTLRPRLLSAEITLQTNLPLQSPCCRLCFLRGTQAKTLK']
    # # test_text = ngrams(test_seq,6)
    # # temp_str_test = ""
    # # for item in ((test_text)):
    # #         # print(item),
    # #     print(item)
    # #     items = ""
    # #     for strs in item:
    # #         items = items+strs
    # #     temp_str = temp_str_test + " " + items
    # inferred_vector_dm = model.infer_vector(test_seq)
    # print(inferred_vector_dm)
    np.save("vec/new_%s_vector.npy"%name,model.dv.vectors) ## 保存特征向量

2. 将 human-virus PPI pairs 转化为 feature vector pairs

将 human 的蛋白向量、virus 的蛋白向量、标签放到一起。
如下代码所示:(详情见:https://github.com/hongjiala/PPIs/blob/master/pair/form_pair_data.py)
Emvirus: 基于 embedding 的神经网络来预测 human-virus PPIs【Biosafety and Health,2023】,论文学习,论文学习

3. 用 SMOTE 方法对正样本进行过采样:

这部分代码是用MATLAB写的,看不太懂。详情见:https://github.com/hongjiala/PPIs/tree/master/smote
关于SMOTE的原理(参考:arXiv:1106.1813):

This paper shows that a combination of our method of over-sampling the minority (abnormal) class and under-sampling the majority (normal) class can achieve better classifier performance (in ROC space) than only under-sampling the majority class.

This approach is inspired by a technique that proved successful in handwritten character recognition (Ha & Bunke, 1997). They created extra training data by performing certain operations on real data. In their case, operations like rotation and skew were natural ways to perturb the training data.

We generate synthetic examples in a less application-specific manner, by operating in “feature space” rather than “data space”.

The minority class is over-sampled by taking each minority class sample and introducing synthetic examples along the line segments joining any/all of the k minority class nearest neighbors. Depending upon the amount of over-sampling required, neighbors from the k nearest neighbors are randomly chosen.

Emvirus: 基于 embedding 的神经网络来预测 human-virus PPIs【Biosafety and Health,2023】,论文学习,论文学习
简单来说的话就是:在原始样本的 “feature space” 中某个样本点 i i i的最近邻的 k k k个样本点中随机的一个点 n n nn nn,计算 n n nn nn i i i在 “feature space” 中的特征差值 d i f dif dif,然后生成0-1之间随机数 g a p gap gap,则新生成的样本点 n e w i n d e x newindex newindex的特征值 = i i i的特征值 + g a p gap gap * d i f dif dif

4. 构建模型:

由 CNN、Attention 和 Bi-LSTM 构建模型,详情见(https://github.com/hongjiala/PPIs/blob/master/train/model_protein.py)
Emvirus: 基于 embedding 的神经网络来预测 human-virus PPIs【Biosafety and Health,2023】,论文学习,论文学习

5. 训练并测试模型:

详情见:https://github.com/hongjiala/PPIs/tree/master/train

实验结果及讨论:

作者对每一种病毒都用相同的神经网络框架分别训练了一个模型,每个病毒对应的模型的预测结果:
1. 各模型对各自的 human-virus PPIs 预测结果:
Emvirus: 基于 embedding 的神经网络来预测 human-virus PPIs【Biosafety and Health,2023】,论文学习,论文学习
2. 不同特征及不同模型对各病毒的 human-virus PPIs 预测结果:
Emvirus: 基于 embedding 的神经网络来预测 human-virus PPIs【Biosafety and Health,2023】,论文学习,论文学习
3. 各模型跨病毒的 human-virus PPIs 预测结果:
Emvirus: 基于 embedding 的神经网络来预测 human-virus PPIs【Biosafety and Health,2023】,论文学习,论文学习
讨论:文章来源地址https://www.toymoban.com/news/detail-617902.html

  1. 基于 Doc2Vec + CNN + Bi-LSTM 的方法构建的模型,并以不同病毒的 human-virus PPIs 数据分别对模型进行训练,除了某些病毒以外,大部分的病毒的模型的预测效果挺好的。
  2. 与手动抽取序列特征的方法(如 PSSM,LD,CT,AC等)相比,用 Doc2Vec 可以更好地获取序列特征。
  3. 用不同病毒的 PPIs 数据训练的模型在进行跨病毒的 human-virus PPIs 预测的时候,模型基本没有分辨能力,即模型的泛化能力较差,可能是由于不同病毒的 human-virus PPIs 的数据分布或者特征组成差别较大导致的。
  4. 整体上而言,Doc2Vec + LSTM 可以对某些特定的病毒实现比较好的 human-virus PPIs 预测。

到了这里,关于Emvirus: 基于 embedding 的神经网络来预测 human-virus PPIs【Biosafety and Health,2023】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于BP神经网络的风险等级预测,BP神经网络的详细原理,

    背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 代码链接:基于BP神经网络的风险等级评价,基于BP神经网络的风险等级预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download

    2024年02月06日
    浏览(33)
  • 基于长短期神经网络的风速预测,基于LSTM的风速预测

    目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的风速预测 完整代码: https://download.csdn.net/download/abc991835105/88171311 效果图 结果分析 展望 参考论文 风速预测是一种比较难的预测,随机性比较大,长短期神经网络是一种改进党的RNN神经网络,克服了梯度

    2024年02月14日
    浏览(32)
  • 基于Elman神经网络的电力负荷预测

            根据神经网络运行过程中的信息流向,可将神经网络可分为前馈式和反馈式两种基本类型。前馈式网络通过引入隐藏层以及非线性转移函数可以实现复杂的非线性映射功能。但前馈式网络的输出仅由当前输人和权矩阵决定,而与网络先前的输出结果无关。反馈型神经

    2024年02月13日
    浏览(36)
  • 基于PyTorch神经网络进行温度预测——基于jupyter实现

    导入环境 读取文件 其中 数据表中 year,moth,day,week分别表示的具体的时间 temp_2:前天的最高温度值 temp_1:昨天的最高温度值 average:在历史中,每年这一天的平均最高温度值 actual:这就是我们的标签值了,当天的真实最高温度 friend:据说凑热闹 查阅数据维度 时间维度数据进

    2024年04月14日
    浏览(24)
  • 基于神经网络的电力系统的负荷预测

    一、背景介绍: 电力系统负荷预测是生产部门的重要工作之一,通过准确的负荷预测,可以经济合理地 安排机组的启停、减少旋转备用容量、合理安排检修计划、降低发电成本和提高 经济效益。负荷预测按预测的时间可以分为长期、中期和短期负荷预测。其中,短期负荷预

    2024年01月24日
    浏览(29)
  • 169基于matlab的小波神经网络预测

    基于matlab的小波神经网络预测,通过权值参数更新得到误差较小模型,进行多输出单输出预测。输出预测可视化结果。程序已调通,可直接运行。 169matlab小波神经网络预测 多输入单输出 (xiaohongshu.com)

    2024年02月22日
    浏览(32)
  • 基于深度信念神经网络+长短期神经网络的降雨量预测,基于dbn-lstm的降雨量预测,dbn原理,lstm原理

    背影 DBN神经网络的原理 DBN神经网络的定义 受限玻尔兹曼机(RBM) LSTM原理 DBN-LSTM的降雨量预测 基本结构 主要参数 数据 MATALB代码 结果图 展望 DBN是一种深度学习神经网络,拥有提取特征,非监督学习的能力,通过dbn进行无监督学习提取特征,然后长短期神经网络LSTM进行训练

    2024年02月13日
    浏览(26)
  • 基于蛙跳优化的神经网络数据预测matlab仿真

    目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序        通过蛙跳优化算法,优化神经网络的权值参数,然后使用优化后的神经网络模型对数据进行预测,输出预测曲线。 MATLAB2022a版本运行         基于蛙跳优化的神经网络数据预测

    2024年01月25日
    浏览(26)
  • 基于遗传算法优化BP神经网络的滑坡稳定性预测,BP神经网络的详细原理

    目录 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数, BP神经网络的传递函数 遗传算法原理 遗传算法主要参数 遗传算法流程图 完整代码包含数据下载链接: 遗传算法优化BP神经网络的MATALB代码,遗传算法优化BP神经网络

    2024年02月05日
    浏览(40)
  • 基于长短期神经网络LSTM的测量误差预测

    目录 背影 摘要 代码和数据下载:基于长短期神经网络LSTM的测量误差预测(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88714812 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的测量误差预测 结果分析 展望 参考论文 测量误差有一定的时间或

    2024年01月23日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包