机器学习之DeepSequence软件使用学习1

简介

DeepSequence 是一个生成性的、无监督的生物序列潜变量模型。给定一个多重序列比对作为输入,它可以用来预测可获得的突变,提取监督式学习的定量特征,并生成满足明显约束的新序列文库。它将序列中的高阶依赖性建模为残差子集之间约束的非线性组合。要了解更多信息,请查看论文(https://www.biorxiv.org/content/early/2017/12/18/235655.1)和下面的例子。
为了便于分析,我们建议使用 EVcouplings package(https://github.com/debbiemarkslab/EVcouplings)程序包生成对齐,尽管可以使用任何序列比对。

例子

对于合理的培训时间,我们建议在 GPU 上培训 DeepSequence:

THEANO_FLAGS='floatX=float32,device=cuda' python run_svi.py

但是,它可以在 CPU 上运行:

python run_svi.py

示例子文件夹中的 iPython 笔记本中提供了该分析的其他用法示例和特性。

注:.ipynb结尾的文件格式需要用jupyter notebook打开。

例子1-1 下载例子文件中需要的数据(shell中运行)

bash download_alignments.sh
bash download_pretrained.sh

注:这里有个bug,下载后的aligments文件放在了example下的aligments文件夹下,后面发现例子文件中给出的调用代码中使用的地址是datasets文件夹下,这里确实是例子文件中的调用地址写错了,我是将这个aligments文件夹名更改成了datasets,后续才能正常运行。

例子1-2 探索模型的输出

import theano
import numpy as np
import sys
#Theano是一个Python库,专门用于定义、优化、求值数学表达式,效率高,适用于多维数组类型深度学习库。
#在数据分析和机器学习中,大量的使用科学计算,Numpy 提供了大型矩阵计算的方式,而这些是 python 标准库中所缺少的。
#sys模块是与python解释器交互的一个接口。sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分。
%matplotlib inline
import matplotlib.pyplot as plt

注:我在运行%matplotlib inline时报错

>>> %matplotlib inlineFile "<stdin>", line 1%matplotlib inline^
SyntaxError: invalid syntax

这是因为我是直接使用的linux系统中的原生python,而该命令属于jupyter notebook的中魔法命令,修改后的命令如下

import theano
import numpy as np
import sys
import matplotlib
#Matplotlib允许数据科学家通过创建各种图表(如折线图、散点图、直方图等)深入探索数据。通过可视化数据,数据科学家可以更直观地理解数据的分布、趋势和异常值,为进一步的分析提供基础。
matplotlib.use('TkAgg')
#%matplotlib inline
import matplotlib.pyplot as plt

例子1-3 加载DeepSequence软件的本地模块

sys.path.insert(0, "../DeepSequence")import model
import helper
import train
#这里的导入的三个模块式DeepSequence目录下的三个本地模块

在这里插入图片描述

例子1-4 构建模型

data_params = {"dataset":"BLAT_ECOLX"}
#这里表示
#这里定义的data_patams变量将在helper模块定义的def gen_job_string函数中使用,该函数包含两个参数,分别是data_params和model_params
data_helper = helper.DataHelper(dataset=data_params["dataset"],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}vae_model   = model.VariationalAutoencoder(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 = 8355.0
Data Shape = (8355, 253, 20)
Model built

注:由于使用的原生python解释器,这里每一部分我都是分开运行的。

首先,这里的data_params = {"dataset":"BLAT_ECOLX"}指的是定义了一个键值对的变量,该函数稍后会使用在helper模块的def gen_job_string函数中

例子1-5 构建模型(装载训练好的参数)

file_prefix = "BLAT_ECOLX"vae_model.load_parameters(file_prefix=file_prefix)print ("Parameters loaded")

结果

Parameters loaded

例子1-5 打印目标序列的信息
打印

print (data_helper.focus_seq_name)
print (str(data_helper.focus_start_loc)+"-"+str(data_helper.focus_stop_loc))
print (data_helper.focus_seq)

结果

>BLAT_ECOLX/24-286
24-286
hpetlVKVKDAEDQLGARVGYIELDLNSGKILeSFRPEERFPMMSTFKVLLCGAVLSRVDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPAAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGErGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLIkhw

例子1-6 去除小写字母

print ("".join(data_helper.focus_seq_trimmed))

结果

VKVKDAEDQLGARVGYIELDLNSGKILSFRPEERFPMMSTFKVLLCGAVLSRVDAGQEQLGRRIHYSQNDLVEYSPVTEKHLTDGMTVRELCSAAITMSDNTAANLLLTTIGGPKELTAFLHNMGDHVTRLDRWEPELNEAIPNDERDTTMPAAMATTLRKLLTGELLTLASRQQLIDWMEADKVAGPLLRSALPAGWFIADKSGAGEGSRGIIAALGPDGKPSRIVVIYTTGSQATMDERNRQIAEIGASLI

例子1-7 求一下模型序列的潜在变量

focus_seq_one_hot = np.expand_dims(data_helper.one_hot_3D(data_helper.focus_seq_trimmed),axis=0)
mu_blat, log_sigma_blat = vae_model.recognize(focus_seq_one_hot)
print ("mu:")
print (mu_blat[0])
print ("\nlog sigma:")
print (log_sigma_blat[0])

结果

mu:
[-2.93129622e-02  2.80484591e-02  4.74045508e-02  2.08589889e-02-1.58986675e-02 -1.26072732e+00 -1.66292705e-02  1.40488074e+001.67025877e-02 -8.53566889e-03  2.18774280e-02  2.32125783e+002.55409795e-02 -1.15651891e-02 -3.02552657e-02  1.24139726e-02-4.12962164e-02 -8.41912007e-01 -5.99993306e-03  1.61336532e-036.03782405e-01  3.46253082e-02  2.27598501e-02 -2.05355599e-023.94717697e-03  1.35123502e+00  8.65776037e-03 -7.57649777e-033.81364257e-02 -2.08573404e-02]log sigma:
[-4.22987289e-04 -1.84314600e-02 -4.19494449e-02 -3.17123838e-02-1.67881093e-02 -2.28357830e+00 -5.77861108e-02 -9.92522460e-01-3.17816964e-02 -1.74817094e-02 -4.95498244e-02 -1.99601526e+00-2.00790022e-02  2.04198661e-02 -1.36289102e-02 -6.93278173e-03-2.53706808e-02 -1.90622283e+00 -2.70597848e-02 -1.67551476e-02-2.16649542e+00  1.02254690e-02  8.96915176e-03 -1.85787921e-022.56248426e-02 -2.42973459e+00 -3.70118837e-02  1.25962615e-022.43832070e-02 -6.73871211e-03]

例子1-8 从中取样

z_blat = vae_model.encode(focus_seq_one_hot)
print ("z:")
print (z_blat[0])

结果

z:
[ 1.226298   -0.50005774 -0.05264941  0.66986938 -0.71224884 -1.159214930.05177535  1.1583736   0.92446647 -0.14730169  0.78172059  2.356288461.32076451  1.1621947  -0.12593087 -0.49765921  0.55820479 -0.84410041-1.94164654  1.19722414  0.51352968  0.23148123  0.56776408 -0.36881278-0.590448    1.50986844  0.68191917 -1.4255378  -0.08560662  1.08017904]

例子1-9 然后通过采样的潜在变量生成序列周围的样本分布

seq_reconstruct = vae_model.decode(z_blat)
plt.figure(figsize=(35,10))
plt.imshow(seq_reconstruct[0].T,cmap=plt.get_cmap("Blues"))
ax = plt.gca()
ax.set_yticks(np.arange(len(data_helper.alphabet)))
ax.set_yticklabels(list(data_helper.alphabet))
plt.show()

结果
在这里插入图片描述

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

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

相关文章

2024/2/6学习记录

ts 因为已经学习过了 js &#xff0c;下面的都是挑了一些 ts 与 js 不同的地方来记录。 安装 npm install -g typescript 安装好之后&#xff0c;可以看看自己的版本 ts基础语法 模块 函数 变量 语法和表达式 注释 编译 ts 文件需要用 tsc xxx.ts &#xff0c;js 文件…

《计算机网络简易速速上手小册》第8章:软件定义网络(SDN)与网络功能虚拟化(NFV)(2024 最新版)

第8章&#xff1a;软件定义网络&#xff08;SDN&#xff09;与网络功能虚拟化&#xff08;NFV&#xff09; 文章目录 8.1 SDN 架构与原理 - 智能网络的构建积木8.1.1 基础知识8.1.2 重点案例&#xff1a;使用 Python 控制 OpenFlow 交换机准备工作Python 脚本示例 8.1.3 拓展案…

C++ STL精通之旅:向量、集合与映射等容器详解

目录 常用容器 顺序容器 向量vector 构造 尾接 & 尾删 中括号运算符 获取长度 清空 判空 改变长度 提前分配好空间 代码演示 运行结果 关联容器 集合set 构造 遍历 其他 代码演示 运行结果​编辑 映射map 常用方法 构造 遍历 其他 代码演示1​编…

【VSTO开发-WPS】下调试

重点2步&#xff1a; 1、注册表添加 Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\kingsoft\Office\WPP\AddinsWL] "项目名称"""2、visual studio 运行后&#xff0c;要选中附加到调试&#xff0c;并指定启动项目。 如PPT输入WPP搜…

Java锁到底是个什么东西

一、java锁存在的必要性 要认识java锁&#xff0c;就必须对2个前置概念有一个深刻的理解&#xff1a;多线程和共享资源。 对于程序来说&#xff0c;数据就是资源。 在单个线程操作数据时&#xff0c;或快或慢不存在什么问题&#xff0c;一个人你爱干什么干什么。 多个线程操…

【Go语言成长之路】创建Go模块

文章目录 创建Go模块一、包、模块、函数的关系二、创建模块2.1 创建目录2.2 跟踪包2.3 编写模块代码 三、其它模块调用函数3.1 修改hello.go代码3.2 修改go.mod文件3.3 运行程序 四、错误处理4.1 函数添加错误处理4.2 调用者获取函数返回值4.4 执行错误处理代码 五、单元测试5.…

LeetCode、198. 打家劫舍【中等,一维线性DP】

文章目录 前言LeetCode、198. 打家劫舍【中等&#xff0c;一维线性DP】题目及分类思路线性DP&#xff08;一维&#xff09; 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注…

Python循环语句——for循环的基础语法

一、引言 在Python编程的世界中&#xff0c;for循环无疑是一个强大的工具。它为我们提供了一种简洁、高效的方式来重复执行某段代码&#xff0c;从而实现各种复杂的功能。无论你是初学者还是资深开发者&#xff0c;掌握for循环的用法都是必不可少的。在本文中&#xff0c;我们…

element ui表格手写拖动排序

效果图&#xff1a; 思路&#xff1a; 重点在于&#xff1a;拖动行到某一位置&#xff0c;拿到这一位置的标识&#xff0c;数据插入进这个位置 vueuse的拖拽hooks useDraggable 可以用&#xff1b;html5 drag能拖动行元素&#xff1b;mounsedown、mounsemove时间实现拖拽 页…

【Iceberg学习四】Evolution和Maintenance在Iceberg的实现

Evolution Iceberg 支持就底表演化。您可以像 SQL 一样演化表结构——即使是嵌套结构——或者当数据量变化时改变分区布局。Iceberg 不需要像重写表数据或迁移到新表这样耗费资源的操作。 例如&#xff0c;Hive 表的分区布局无法更改&#xff0c;因此从每日分区布局变更到每小…

2023年03月CCF-GESP编程能力等级认证C++编程二级真题解析

一、单选题(每题2分,共30分) 第1题 以下存储器中的数据不会受到附近强磁场干扰的是( )。 A.硬盘 B.U盘 C.内存 D.光盘 答案:D 第2题 下列流程图,属于计算机的哪种程序结构?( )。 A.顺序结构 B.循环结构 C.分支结构 D.数据结构 答案:C 第3题 下列关…

CTF-show WEB入门--web21

上一阶段的信息泄露已经全部完结了&#xff0c;下一阶段的爆破也由此开始啦~~~ 下面让我们看看web21,这题是个经典的爆破问题 老样子我们先打开题目&#xff0c;查看题目提示&#xff1a; 我们可以看到题目提示为&#xff1a; 爆破什么的&#xff0c;都是基操 还有这题题目…

【RPA】2分钟带你搞懂,这么火的RPA到底是什么?

2分钟带你搞懂&#xff0c;这么火的RPA到底是什么&#xff1f; 在当今数字化时代&#xff0c;机器人流程自动化&#xff08;RPA&#xff09;成为了企业数字化转型的重要组成部分。RPA是一种基于规则的软件技术&#xff0c;可以自动执行重复性、高度规范化的业务流程任务。 与传…

jsp教材管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 教材管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

Android应用程序的编译和打包

Android系统的APK应用程序可以有以下几种编译方式 借助系统编译&#xff1a;利用Android.mk 文件将众多小项目组织起来 借助IDE编译&#xff1a;AndroidStudio 命令行编译 &#xff1a; 比如利用gradle脚本编译APK应用。 一、 通过命令行编译和打包APK 编译命令(Window系…

没有联合和枚举 , C语言怎么能在江湖混 ?

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 我会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能…

探索C语言结构体:编程中的利器与艺术

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C语言学习 贝蒂的主页&#xff1a;Betty‘s blog 1. 常量与变量 1. 什么是结构体 在C语言中本身就自带了一些数据类型&#x…

LLMs之miqu-1-70b:miqu-1-70b的简介、安装和使用方法、案例应用之详细攻略

LLMs之miqu-1-70b&#xff1a;miqu-1-70b的简介、安装和使用方法、案例应用之详细攻略 目录 miqu-1-70b的简介 miqu-1-70b的安装和使用方法 1、安装 2、使用方法 miqu-1-70b的案例应用 miqu-1-70b的简介 2024年1月28日&#xff0c;发布了miqu 70b&#xff0c;潜在系列中的…

Linux系统调试课:ftrace跟踪器介绍

文章目录 一、什么是frace跟踪器?二、Ftrace 配置三、Ftrace 文件系统四、Ftrace 初体验五、函数跟踪六、Ftrace function_graph七、函数 Profiler沉淀、分享、成长,让自己和他人都能有所收获!😄 一、什么是frace跟踪器? 操作系统内核对应用开发工程师来说就像一个黑盒,…

elementUI 表格中如何合并动态数据的单元格

elementUI 表格中如何合并动态数据的单元格 ui中提供的案例是固定写法无法满足 实际开发需求 下面进行改造如下 准备数据如下 //在表格中 设置单元格的方法 :span-method"spanMethodFun" <el-table :data"tableData" border :span-method"spa…