一种简单的吉布斯采样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 吉布斯采样的实现问题 本文主要说明如何通过吉布斯采样来采样截断多维高斯分布的参数(已知一 ...
随机推荐
- JUC并发工具包之CyclicBarrier
1.简介 CyclicBarrier是一个同步器,允许多个线程等待彼此直到达一个执行点(barrier). CyclicBarrier都是在多个线程必须等到彼此都到达同一个执行点后才执行一段逻辑时才被 ...
- Oracle数据库由dataguard备库引起的log file sync等待
导读: 最近数据库经常出现会话阻塞的报警,过一会又会自动消失,昨天晚上恰好发生了一次,于是赶紧进行了查看,不看不知道,一看吓一跳,发现是由dataguard引起的log file sync等待.我们知 ...
- iOS 百度地图使用详解
最近仿照美团做了款应用,刚好用到百度地图,高德地图之前用的比较多,只是这个项目的后台服务器是另外一个公司做的,他们用的就是百度地图,现在网上用百度地图的还不算太多,博文也是断断续续的,主要是中间跳跃有 ...
- canvas 元素覆盖&穿透问题
给网站添加canvas动态背景.完后发现有a标签无法点击,想到是canvas覆盖了(但有些是可以的).网上查找,有解决穿透的问题,但canvas的鼠标事件会无效.后发现是定位问题. canvas样式 ...
- Codeforces Round #674 (Div. 3) C、D 题解
C.Increase and Copy #枚举 题目链接 题意 最初你有仅包含一个数字\(1\)的数组\(a\),一次操作中可对该数组进行两类操作: 从数组中选择一个元素,将该元素\(+1\): 从数 ...
- C语言讲义——库函数排序qsort
qsort函数在在stdlib.h中. 函数原型 void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void ...
- LeetCode 024 Swap Nodes in Pairs
题目描述:Swap Nodes in Pairs Given a linked list, swap every two adjacent nodes and return its head. For ...
- Spring Boot 项目瘦身指南,瘦到不可思议!129M->1.3M
之前在 从使用传统Web框架到切换到Spring Boot后的总结 中提到关于 Spring Boot 编译打包,Spring Boot 应用程序不用额外部署到外部容器中,可以直接通过 Maven 命 ...
- Django-View中绕过RSCF验证
在Django中对于基于函数的视图我们可以 @csrf_exempt 注解来标识一个视图可以被跨域访问.那么对于基于类的视图,我们应该怎么办呢? 简单来说可以有两种访问来解决 方法一:在类的 disp ...
- Python正则运算符优先级re.findall('(.)*',"abc")、re.findall('(.*)',"abc")、re.findall('(.?)*',"abc")的执行结果的影响分析
我们分别执行三个语句: >>> re.findall('(.)*',"abc") ['c', ''] >>> re.findall('(.*)' ...