一种简单的吉布斯采样modify中应用
这是主函数
clc;
clear all;
close all;
%% 生成初始序列
sequenceOfLength = 20;
sequenceOfPop = 4;
sequence = produceSequence(sequenceOfLength,sequenceOfPop);
%% 序列中植入modify
l_merOfLength = 8;
l_mer = produceSequence(l_merOfLength,1);
sequence = plantModify(sequence,l_mer,l_merOfLength,sequenceOfLength);
%% 查找最优
for kk = 1:100
tem = randperm(sequenceOfPop,1);
tem_sequence = sequence(tem,:);
ofMove_sequence = sequence([1:tem-1,tem+1:end],:);
s = randperm(sequenceOfLength - l_merOfLength + 1,sequenceOfPop - 1);
for ii = 1:sequenceOfPop - 1
l_mere(ii,:) = ofMove_sequence (ii,[s(ii):s(ii) + l_merOfLength-1]);
end
[p_matrix,best_mer,score] = profileMatrix(l_mere); p_most = 0;
for i = 1 : sequenceOfLength - l_merOfLength + 1
temp_sequenceOfL_mer = tem_sequence(i:i + l_merOfLength - 1);
p_m = [];
for j = 1:l_merOfLength
temp_s = temp_sequenceOfL_mer (j) ;
switch temp_s
case 'A'
p_m = [p_m,p_matrix(1,j)];
case 'C'
p_m = [p_m,p_matrix(2,j)];
case 'T'
p_m = [p_m,p_matrix(3,j)];
case 'G'
p_m = [p_m,p_matrix(4,j)];
end
end
p_m = cumprod(p_m);
if p_m(l_merOfLength) > p_most
p_most = p_m(l_merOfLength);
p_bestOfL_mer = temp_sequenceOfL_mer;
end
end
com_l_mer = [l_mere;p_bestOfL_mer]
end
function [sequence] = produceSequence(s_length,t)
% s_length 输入序列的长度;
% t 输入序列的条数;
% sequence 返回序列数组;
% 本序列用数字来代表序列字母,其中用1,2,3,4代表A,T,C,G;
for i = 1:t
for j = 1:s_length
temp = randperm(4);
%sequence(i,j) = temp(1);
temp = temp(1);
switch temp
case 1
sequence(i,j) = 'A';
case 2
sequence(i,j) = 'T';
case 3
sequence(i,j) = 'C';
case 4
sequence(i,j) = 'G';
end
end
end
end
function [sequence] = plantModify(sequence,l_mer,l_mereOfLength,sequenceOfLength)
temp_max = sequenceOfLength - l_mereOfLength;
t = length(sequence(:,1));
temp = randperm(temp_max,t);
p_mutation = .7;
for i = 1:t
l_mer = l_mereMutation(l_mer,p_mutation,l_mereOfLength);
sequence(i,temp(i):temp(i) + l_mereOfLength - 1) = l_mer;
end
end
function [l_mer_new] = l_mereMutation(l_mer,p_mutation,l_meLength)
temp = rand;
if temp < p_mutation
temp_t = round(rand * 2);
i = 1;
while i <= temp_t
position = randperm(l_meLength,1);
temp_l_mer = produceSequence(1,1);
l_mer(position) = temp_l_mer;
i = i + 1;
end
end
l_mer_new = l_mer;
end
function [p_matrix,best_mer,score] = profileMatrix(l_mere)
t = length(l_mere(:,1));
l = length(l_mere(1,:));
p_matrix = zeros(4,l);
for i = 1:l
for j = 1:t
if l_mere(j,i) == 'A'
p_matrix(1,i) = p_matrix(1,i) + 1;
elseif l_mere(j,i) == 'C'
p_matrix(2,i) = p_matrix(2,i) + 1;
elseif l_mere(j,i) == 'T'
p_matrix(3,i) = p_matrix(3,i) + 1;
else
p_matrix(4,i) = p_matrix(4,i) + 1;
end
end
end
p_matrix(find(p_matrix == 0)) = .00001;
p_matrix = p_matrix/t;
%% 返回最大值
[max_,position] = max (p_matrix);
score = cumprod(max_);
score = score(1,end);
for i = 1:length(position)
if position(i) == 1
best_mer(i) = 'A';
elseif position(i) == 2;
best_mer(i) = 'C';
elseif position(i) == 3;
best_mer(i) = 'T';
else
best_mer(i) = 'G';
end
end
end
一种简单的吉布斯采样modify中应用的更多相关文章
- asp.net mvc 中 一种简单的 URL 重写
asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...
- iOS开发UI篇—iOS开发中三种简单的动画设置
iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...
- 随机采样和随机模拟:吉布斯采样Gibbs Sampling
http://blog.csdn.net/pipisorry/article/details/51373090 吉布斯采样算法详解 为什么要用吉布斯采样 通俗解释一下什么是sampling. samp ...
- 随机采样和随机模拟:吉布斯采样Gibbs Sampling实现文档分类
http://blog.csdn.net/pipisorry/article/details/51525308 吉布斯采样的实现问题 本文主要说明如何通过吉布斯采样进行文档分类(聚类),当然更复杂的实 ...
- 音视频编解码: YUV采样格式中的YUV444,YUV422,YUV420理解
YUV各种采样格式的说明 通常我们用RGB表示一种彩色.计算机系统里的LCD显示的数据就是RGB来表示每个像素的颜色.而在我们生活里,有黑白电视机与彩色电视机两种,拍摄节目源时不可以用两种不同的摄像机 ...
- 一种简单,轻量,灵活的C#对象转Json对象的方案(续)
本文参考资料 一种简单,轻量,灵活的C#对象转Json对象的方案 [源码]Literacy 快速反射读写对象属性,字段 一段废话 之前我已经介绍了这个方案的名称为JsonBuilder,这套方案最大的 ...
- Xamarin.Android之Splash的几种简单实现
对现在的APP软件来说,基本上都会有一个Splash页面,类似大家常说的欢迎页面.启动界面之类的. 正常来说这个页面都会有一些相关的信息,比如一些理念,Logo,版本信息等 下面就来看看在Xamari ...
- 使用strace工具故障排查的5种简单方法
使用strace工具故障排查的5种简单方法 本文源自5 simple ways to troubleshoot using strace strace 是一个非常简单的工具,用来跟踪可执行程序的系统调 ...
- 随机采样和随机模拟:吉布斯采样Gibbs Sampling实现高斯分布参数推断
http://blog.csdn.net/pipisorry/article/details/51539739 吉布斯采样的实现问题 本文主要说明如何通过吉布斯采样来采样截断多维高斯分布的参数(已知一 ...
随机推荐
- php filesize不能统计临时文件
文件上传时要统计上传的文件的大小,使用filesize('文件名')的时候,其中 的文件名就得是文件在本地的临时文件但是会出现一个错误显示成 filesize(): stat failed for D ...
- Apiview+serallizers
1.APIVIEW使用 https://www.cnblogs.com/xiaonq/p/10124104.html ModelVIewSet是对APIView封装 ModelSerializer是对 ...
- Maven 依赖树的解析规则
对于 Java 开发工程师来说,Maven 是依赖管理和代码构建的标准.遵循「约定大于配置」理念.Maven 是 Java 开发工程师日常使用的工具,本篇文章简要介绍一下 Maven 的依赖树解析. ...
- Django 在test.py 中测试文件的配置
import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTING ...
- 【Usaco 2009 Silver】JZOJ2020年9月19日提高B组T1 音乐节拍
[Usaco 2009 Silver]JZOJ2020年9月19日提高B组T1 音乐节拍 题目 Description FJ准备教他的奶牛弹奏一首歌曲,歌曲由N(1<=N<=50,000) ...
- django(django学习) 两张表创建 插入数据
pycharm中直接创建django项目 输入创建项目名(如first_django) 在此输入应用名(如g_tu) 此为项目总目录 将first_django中settings.py中第58行修 ...
- 第4.7节 Python特色的序列解包、链式赋值、链式比较
一.序列解包 序列解包(或可迭代对象解包):解包就是从序列中取出其中的元素的过程,将一个序列(或任何可迭代对象)解包,并将得到的值存储到一系列变量中. 一般情况下要解包的序列包含的元素个数必须与你在等 ...
- 第4.3节 Python中与迭代相关的函数
下面要介绍的enumerate.range.zip.reversed.sorted属于Python内置的函数或者类别,返回的对象都可通过迭代方法访问. 一. enumerate函数 1. ...
- PyQt(Python+Qt)学习随笔:QMdiArea多文档界面区域的viewMode、documentMode、tabsClosable、tabPosition等属性介绍
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 viewMode属性用于控制子窗口是使用子窗口模式(QMdiArea. ...
- Python中高级知识(非专题部分)学习随笔
Python学习随笔:使用xlwings读取和操作Execl文件 Python学习随笔:使用xlwings新建Execl文件和sheet的方法 博客地址:https://blog.csdn.net/L ...