三台移动网站建设,网络建设方案模板,网站动态图片如何做,wordpress国家主题简介
DeepSequence 是一个生成性的、无监督的生物序列潜变量模型。给定一个多重序列比对作为输入#xff0c;它可以用来预测可获得的突变#xff0c;提取监督式学习的定量特征#xff0c;并生成满足明显约束的新序列文库。它将序列中的高阶依赖性建模为残差子集之间约束的非…简介
DeepSequence 是一个生成性的、无监督的生物序列潜变量模型。给定一个多重序列比对作为输入它可以用来预测可获得的突变提取监督式学习的定量特征并生成满足明显约束的新序列文库。它将序列中的高阶依赖性建模为残差子集之间约束的非线性组合。要了解更多信息请查看论文https://www.biorxiv.org/content/early/2017/12/18/235655.1和下面的例子。 为了便于分析我们建议使用 EVcouplings packagehttps://github.com/debbiemarkslab/EVcouplings程序包生成对齐尽管可以使用任何序列比对。
例子
对于合理的培训时间我们建议在 GPU 上培训 DeepSequence:
THEANO_FLAGSfloatXfloat32,devicecuda 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(datasetdata_params[dataset],working_dir.,calc_weightsFalse)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_ECOLXvae_model.load_parameters(file_prefixfile_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),axis0)
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.26072732e00 -1.66292705e-02 1.40488074e001.67025877e-02 -8.53566889e-03 2.18774280e-02 2.32125783e002.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.35123502e00 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.28357830e00 -5.77861108e-02 -9.92522460e-01-3.17816964e-02 -1.74817094e-02 -4.95498244e-02 -1.99601526e00-2.00790022e-02 2.04198661e-02 -1.36289102e-02 -6.93278173e-03-2.53706808e-02 -1.90622283e00 -2.70597848e-02 -1.67551476e-02-2.16649542e00 1.02254690e-02 8.96915176e-03 -1.85787921e-022.56248426e-02 -2.42973459e00 -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,cmapplt.get_cmap(Blues))
ax plt.gca()
ax.set_yticks(np.arange(len(data_helper.alphabet)))
ax.set_yticklabels(list(data_helper.alphabet))
plt.show()结果