机器学习之DeepSequence软件使用学习3-预测突变效应

import theano
import numpy as np
import sys
import pandas as pd
import scipy
from scipy.stats import spearmanr%matplotlib inline
import matplotlib.pyplot as plt

我们将介绍加载模型和预测突变影响的基本函数。

下载预训练参数。

请首先使用 download_pretrained.sh 脚本下载预训练参数。

加载模型。

sys.path.insert(0, "../DeepSequence")import model
import helper
import train

突变影响预测。

突变影响预测辅助函数始终针对比对中的焦点序列。我们可以单独请求预测突变效应。
为了获得可靠的突变效应预测结果,我们建议从模型中取 Monte Carlo 500-2000 个样本(使用 N_pred_iterations 参数)。
我们可以预测单个、双重、三重突变等的影响。突变以元组列表的形式组织,其中元组为(Uniprot位置,野生型氨基酸,突变氨基酸)。

PABP

首先让我们加载一个模型。我们不需要在这里计算序列权重,因为我们不是在训练模型,而且在 CPU 上进行这项计算可能会很慢。
在 "Explore model parameters.ipynb" 笔记本中,helper.py 代码被修改以预先指定 DataHelper 类使用的数据集。然而,我们可以传入一个比对名称和一些额外参数,这样就不必修改 helper.py 文件。
data_params = {"alignment_file":"datasets/PABP_YEAST_hmmerbit_plmc_n5_m30_f50_t0.2_r115-210_id100_b48.a2m"}pabp_data_helper = helper.DataHelper(alignment_file=data_params["alignment_file"],working_dir=".",calc_weights=False)model_params = {"batch_size"        :   100,"encode_dim_zero"   :   1500,"encode_dim_one"    :   1500,"decode_dim_zero"   :   100,"decode_dim_one"    :   500,"n_patterns"        :   4,"n_latent"          :   30,"logit_p"           :   0.001,"sparsity"          :   "logit","encode_nonlin"     :   "relu","decode_nonlin"     :   "relu","final_decode_nonlin":  "sigmoid","output_bias"       :   True,"final_pwm_scale"   :   True,"conv_pat"          :   True,"d_c_size"          :   40}pabp_vae_model   = model.VariationalAutoencoder(pabp_data_helper,batch_size              =   model_params["batch_size"],encoder_architecture    =   [model_params["encode_dim_zero"],model_params["encode_dim_one"]],decoder_architecture    =   [model_params["decode_dim_zero"],model_params["decode_dim_one"]],n_latent                =   model_params["n_latent"],n_patterns              =   model_params["n_patterns"],convolve_patterns       =   model_params["conv_pat"],conv_decoder_size       =   model_params["d_c_size"],logit_p                 =   model_params["logit_p"],sparsity                =   model_params["sparsity"],encode_nonlinearity_type       =   model_params["encode_nonlin"],decode_nonlinearity_type       =   model_params["decode_nonlin"],final_decode_nonlinearity      =   model_params["final_decode_nonlin"],output_bias             =   model_params["output_bias"],final_pwm_scale         =   model_params["final_pwm_scale"],working_dir             =   ".")print ("Model built")
Encoding sequences
Neff = 151528.0
Data Shape = (151528, 82, 20)
Model built

加载预训练模型在 ‘params’ 文件夹中的参数。

file_prefix = "PABP_YEAST"
pabp_vae_model.load_parameters(file_prefix=file_prefix)
print ("Parameters loaded")
Parameters loaded
print (pabp_data_helper.delta_elbo(pabp_vae_model,[(126,"G","A")], N_pred_iterations=500))
-2.03463650668
print (pabp_data_helper.delta_elbo(pabp_vae_model,[(126,"G","A"), (137,"I","P")], N_pred_iterations=500))
-10.8308351474
print (pabp_data_helper.delta_elbo(pabp_vae_model,[(126,"G","A"), (137,"I","P"), (155,"S","A")], N_pred_iterations=500))
-16.058655309
我们可以预测所有单个突变的影响。优选使用此函数及以下函数,因为它们能够利用对突变数据进行小批量处理所带来的加速优势。
pabp_full_matr_mutant_name_list, pabp_full_matr_delta_elbos \= pabp_data_helper.single_mutant_matrix(pabp_vae_model, N_pred_iterations=500)
print (pabp_full_matr_mutant_name_list[0], pabp_full_matr_delta_elbos[0])
('K123A', 0.5887526915685584)
我们还可以以批处理模式从文件中预测突变的影响。
pabp_custom_matr_mutant_name_list, pabp_custom_matr_delta_elbos \= pabp_data_helper.custom_mutant_matrix("mutations/PABP_YEAST_Fields2013-singles.csv", \pabp_vae_model, N_pred_iterations=500)print (pabp_custom_matr_mutant_name_list[12], pabp_custom_matr_delta_elbos[12])
('N127D', -6.426795215037501)
我们也可以编写一个快速的函数来从一个突变文件计算 Spearman 系数(rho)。
def generate_spearmanr(mutant_name_list, delta_elbo_list, mutation_filename, phenotype_name):measurement_df = pd.read_csv(mutation_filename, sep=',')mutant_list = measurement_df.mutant.tolist()expr_values_ref_list = measurement_df[phenotype_name].tolist()mutant_name_to_pred = {mutant_name_list[i]:delta_elbo_list[i] for i in range(len(delta_elbo_list))}# If there are measurements wt_list = []preds_for_spearmanr = []measurements_for_spearmanr = []for i,mutant_name in enumerate(mutant_list):expr_val = expr_values_ref_list[i]# Make sure we have made a prediction for that mutantif mutant_name in mutant_name_to_pred:multi_mut_name_list = mutant_name.split(':')# If there is no measurement for that mutant, pass over itif np.isnan(expr_val):pass# If it was a codon change, add it to the wt vals to averageelif mutant_name[0] == mutant_name[-1] and len(multi_mut_name_list) == 1:wt_list.append(expr_values_ref_list[i])# If it is labeled as the wt sequence, add it to the average listelif mutant_name == 'wt' or mutant_name == 'WT':wt_list.append(expr_values_ref_list[i])else:measurements_for_spearmanr.append(expr_val)preds_for_spearmanr.append(mutant_name_to_pred[mutant_name])if wt_list != []:measurements_for_spearmanr.append(np.mean(average_wt_list))preds_for_spearmanr.append(0.0)num_data = len(measurements_for_spearmanr)spearman_r, spearman_pval = spearmanr(measurements_for_spearmanr, preds_for_spearmanr)print ("N: "+str(num_data)+", Spearmanr: "+str(spearman_r)+", p-val: "+str(spearman_pval))
generate_spearmanr(pabp_custom_matr_mutant_name_list, pabp_custom_matr_delta_elbos, \"mutations/PABP_YEAST_Fields2013-singles.csv", "log")
N: 1188, Spearmanr: 0.6509305755221257, p-val: 4.0800344026520655e-144

PDZ

data_params = {"alignment_file":"datasets/DLG4_RAT_hmmerbit_plmc_n5_m30_f50_t0.2_r300-400_id100_b50.a2m"}pdz_data_helper = helper.DataHelper(alignment_file=data_params["alignment_file"],working_dir=".",calc_weights=False)pdz_vae_model   = model.VariationalAutoencoder(pdz_data_helper,batch_size              =   model_params["batch_size"],encoder_architecture    =   [model_params["encode_dim_zero"],model_params["encode_dim_one"]],decoder_architecture    =   [model_params["decode_dim_zero"],model_params["decode_dim_one"]],n_latent                =   model_params["n_latent"],n_patterns              =   model_params["n_patterns"],convolve_patterns       =   model_params["conv_pat"],conv_decoder_size       =   model_params["d_c_size"],logit_p                 =   model_params["logit_p"],sparsity                =   model_params["sparsity"],encode_nonlinearity_type       =   model_params["encode_nonlin"],decode_nonlinearity_type       =   model_params["decode_nonlin"],final_decode_nonlinearity      =   model_params["final_decode_nonlin"],output_bias             =   model_params["output_bias"],final_pwm_scale         =   model_params["final_pwm_scale"],working_dir             =   ".")print ("Model built")file_prefix = "DLG4_RAT"
pdz_vae_model.load_parameters(file_prefix=file_prefix)print ("Parameters loaded\n\n")pdz_custom_matr_mutant_name_list, pdz_custom_matr_delta_elbos \= pdz_data_helper.custom_mutant_matrix("mutations/DLG4_RAT_Ranganathan2012.csv", \pdz_vae_model, N_pred_iterations=500)generate_spearmanr(pdz_custom_matr_mutant_name_list, pdz_custom_matr_delta_elbos, \"mutations/DLG4_RAT_Ranganathan2012.csv", "CRIPT")
Encoding sequences
Neff = 102246.0
Data Shape = (102246, 84, 20)
Model built
Parameters loadedN: 1577, Spearmanr: 0.6199244929585085, p-val: 4.31636475994128e-168

B-lactamase

对于包含更多待预测突变的较大蛋白质,运行时间可能会更长。针对这种情况,我们建议使用支持 GPU 的计算。
data_params = {"dataset":"BLAT_ECOLX"}blat_data_helper = helper.DataHelper(dataset=data_params["dataset"],working_dir=".",calc_weights=False)blat_vae_model   = model.VariationalAutoencoder(blat_data_helper,batch_size              =   model_params["batch_size"],encoder_architecture    =   [model_params["encode_dim_zero"],model_params["encode_dim_one"]],decoder_architecture    =   [model_params["decode_dim_zero"],model_params["decode_dim_one"]],n_latent                =   model_params["n_latent"],n_patterns              =   model_params["n_patterns"],convolve_patterns       =   model_params["conv_pat"],conv_decoder_size       =   model_params["d_c_size"],logit_p                 =   model_params["logit_p"],sparsity                =   model_params["sparsity"],encode_nonlinearity_type       =   model_params["encode_nonlin"],decode_nonlinearity_type       =   model_params["decode_nonlin"],final_decode_nonlinearity      =   model_params["final_decode_nonlin"],output_bias             =   model_params["output_bias"],final_pwm_scale         =   model_params["final_pwm_scale"],working_dir             =   ".")print ("Model built")file_prefix = "BLAT_ECOLX"
blat_vae_model.load_parameters(file_prefix=file_prefix)print ("Parameters loaded\n\n")blat_custom_matr_mutant_name_list, blat_custom_matr_delta_elbos \= blat_data_helper.custom_mutant_matrix("mutations/BLAT_ECOLX_Ranganathan2015.csv", \blat_vae_model, N_pred_iterations=500)generate_spearmanr(blat_custom_matr_mutant_name_list, blat_custom_matr_delta_elbos, \"mutations/BLAT_ECOLX_Ranganathan2015.csv", "2500")
Encoding sequences
Neff = 8355.0
Data Shape = (8355, 253, 20)
Model built
Parameters loadedN: 4807, Spearmanr: 0.743886370415797, p-val: 0.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机软件分类、编程知识体系、编程工作岗位

计算机软件分类、编程知识体系、编程工作岗位 一、计算机软件分类二、计算机语言编程知识体系三、人工智能/机器学习工程师知识体系四、工作岗位 计算机软件分类、计算机编程知识体系、人工智能/机器学习工程师需要掌握的知识体系、计算机语言编程相关工作岗位。存此备查。 一、…

RLT8762D---添加service

0 Preface/Foreword 1 系统初始化LE profile过程 正常开机流程中,gap初始化完成之后,才能进行LE profile初始化。 1.1 添加服务 1.1.1 注册支持服务个数(GATT Server) 函数: server_init 目的:set the number of services th…

MySql缓冲池命中率

缓冲池 大小查看 show variables like innodb_buffer_pool_size; 太小的innodb_buffer_pool_size是不利于性能的提升 命中率查看 一 、 通过以下命令查看相关数据: show global status like Innodb_buffer_pool_read%;结果如下: 命中率公式&#xff1…

已解决com.netflix.client.ClientException Eureka客户端异常的正确解决方法,亲测有效!!!

已解决com.netflix.client.ClientException Eureka客户端异常的正确解决方法,亲测有效!!! 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 总结 在微服务架构中,Eureka作为服务发现组件,…

SpringBoot集成mail

发送邮件:SMPT、MIME,是一种基于"推"的协议,通过SMPT协议将邮件发送至邮件服务器,MIME协议是对SMPT协议的一种补充,如发送图片附件等 接收邮件:POP、IMAP,是一种基于"拉"的…

Zabbix监控容器MongoDB,报错:Unknown metric mongodb.server.status

在Zabbix中配置监控MongoDB容器时,如果遇到Unknown metric mongodb.server.status这样的错误,通常意味着Zabbix Agent尝试从MongoDB获取某个预定义的性能指标(例如mongodb.server.status),但是未能成功识别或解析该指标…

GPT4+Python近红外光谱数据分析及机器学习与深度学习建模教程

原文链接:GPT4Python近红外光谱数据分析及机器学习与深度学习建模教程 第一:GPT4 1、ChatGPT(GPT-1、GPT-2、GPT-3、GPT-3.5、GPT-4模型的演变) 2、ChatGPT对话初体验 3、GPT-4与GPT-3.5的区别,以及与国内大语言模…

简易版axios实现-基于promise+XMLHttpRequest

/*** 目标:封装_简易axios函数_获取省份列表* 1. 定义myAxios函数,接收配置对象,返回Promise对象* 2. 发起XHR请求,默认请求方法为GET* 3. 调用成功/失败的处理程序* 4. 使用myAxios函数,获取省份列表展示*/functi…

[数据集][目标检测]芒果叶病害数据集VOC+YOLO格式4000张5类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4000 标注数量(xml文件个数):4000 标注数量(txt文件个数):4000 标注…

微信小程序开发系列(十六)·事件传参·data-*自定义数据

事件传参:在触发事件时,将一些数据作为参数传递给事件处理函数的过程,就是事件传参。 在微信小程序中,我们经常会在组件上添加一些自定义数据,然后在事件处理函数中获取这些自定义数据,从而完成业务逻辑的开发。 在组件上通过data-"的方式定义需要传递的数据,其…

Android14之解决编译报错:bazel: no such file or directory(一百八十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

赢在起跑线:商品企划系统为鞋服品牌带来的竞争优势解析

在鞋服行业的激烈竞争中,每个品牌都渴望在市场中脱颖而出,而成功的起点往往在于商品企划的策略制定。商品企划系统作为一种先进的商业策略工具,能够帮助鞋服品牌赢在起跑线,获得竞争优势。本文将深入探讨商品企划系统如何为鞋服品…

计算机丢失msvcp140_1.dll怎样修复,分享五种有效的解决方法

当计算机系统中msvcp140_1.dll文件发生丢失时,可能会引发一系列运行问题,具体表现形式多种多样。首先,由于msvcp140_1.dll是Microsoft Visual C Redistributable Package的重要组成部分,它的缺失将直接影响到依赖这一库的各类应用…

Vue.js+SpringBoot开发计算机机房作业管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登录注册模块2.2 课程管理模块2.3 课时管理模块2.4 学生作业模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 课程表3.2.2 课时表3.2.3 学生作业表 四、系统展示五、核心代码5.1 查询课程数据5.2 新增课时5.3 提交作…

01. Nginx入门-Nginx简介

Web基础知识 Web协议通信原理 Web协议通信过程 浏览器本身是一个客户端,当输入URL后,首先浏览器会请求DNS服务器,通过DNS获取相应的域名对应的IP。通过IP地址找到对应的服务器后,监理TCP连接。等浏览器发送完HTTP Request&…

UD效果广告

1.定义 全称Unidesk,是由阿里旗下大数据运营平台“阿里妈妈”推出的数字营销引流平台。UD投放将其他媒体的流量通过相关的广告创意导入到天猫店铺。 2.UD投放优化技巧 (1)不起量排查: 可以从账户问题、计划数量不足、计划设置…

OpenAI 3年前的AI音乐生成项目:Jukebox,效果比SunoAI v3还好

原来OpenAI 3年前就开始搞AI音乐生成了 效果甚至比最近发布的sunoAI v3还要好,难道OpenAI 想把这个隐藏大招练成无人能敌的状态才放出来再一次轰动全球? OpenAI在2019年8月份就推出了他们的一音乐生成模型:Jukebox Jukebox能够根据提供的歌…

基础小白快速入门计算机原理----->计算机的分类

计算机的分类可以从不同的角度进行划分,以下是几种常见的分类方式: 1. **按照性能和规模分类** - **超级计算机**:拥有极强的计算能力,通常用于处理大规模、复杂的计算任务,如气候模拟、核武器设计等。它们的运算速度…

js bind函数

一、bind函数的作用 bind() 函数是 JavaScript 中的一个方法,它用于创建一个新的函数,并将指定的对象作为新函数的执行上下文(也就是 this 关键字所引用的对象)。bind() 方法不会立即执行函数,而是返回一个新函数&…

消息队列-kafka-服务端处理架构(架构,Topic文件结构,服务端数据的一致性)

服务端处理架构 资料来源于网络 网络线程池: 接受请求,num.network.threads,默认为 3,专门处理客户的发送的请求。 IO 线程池: num.io.threads,默认为 8,专门处理业务请求。也就是它不负责发…