这是主函数
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中应用的更多相关文章

  1. asp.net mvc 中 一种简单的 URL 重写

    asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...

  2. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  3. 随机采样和随机模拟:吉布斯采样Gibbs Sampling

    http://blog.csdn.net/pipisorry/article/details/51373090 吉布斯采样算法详解 为什么要用吉布斯采样 通俗解释一下什么是sampling. samp ...

  4. 随机采样和随机模拟:吉布斯采样Gibbs Sampling实现文档分类

    http://blog.csdn.net/pipisorry/article/details/51525308 吉布斯采样的实现问题 本文主要说明如何通过吉布斯采样进行文档分类(聚类),当然更复杂的实 ...

  5. 音视频编解码: YUV采样格式中的YUV444,YUV422,YUV420理解

    YUV各种采样格式的说明 通常我们用RGB表示一种彩色.计算机系统里的LCD显示的数据就是RGB来表示每个像素的颜色.而在我们生活里,有黑白电视机与彩色电视机两种,拍摄节目源时不可以用两种不同的摄像机 ...

  6. 一种简单,轻量,灵活的C#对象转Json对象的方案(续)

    本文参考资料 一种简单,轻量,灵活的C#对象转Json对象的方案 [源码]Literacy 快速反射读写对象属性,字段 一段废话 之前我已经介绍了这个方案的名称为JsonBuilder,这套方案最大的 ...

  7. Xamarin.Android之Splash的几种简单实现

    对现在的APP软件来说,基本上都会有一个Splash页面,类似大家常说的欢迎页面.启动界面之类的. 正常来说这个页面都会有一些相关的信息,比如一些理念,Logo,版本信息等 下面就来看看在Xamari ...

  8. 使用strace工具故障排查的5种简单方法

    使用strace工具故障排查的5种简单方法 本文源自5 simple ways to troubleshoot using strace strace 是一个非常简单的工具,用来跟踪可执行程序的系统调 ...

  9. 随机采样和随机模拟:吉布斯采样Gibbs Sampling实现高斯分布参数推断

    http://blog.csdn.net/pipisorry/article/details/51539739 吉布斯采样的实现问题 本文主要说明如何通过吉布斯采样来采样截断多维高斯分布的参数(已知一 ...

随机推荐

  1. Requests 库的使用

    Python 的标准库 urllib 提供了大部分 HTTP 功能,但使用起来较繁琐.通常,我们会使用另外一个优秀的第三方库:Requests,它的标语是:Requests: HTTP for Hum ...

  2. [COCI2016-2017#1] Mag 结论证明

    结论:最多包含一个 \(2\),并且不在链的两端点. 证明:我们问题分成两个 \(\texttt{pass}\). \(\texttt{pass 1}\):\(\forall u,s.t.x_{u}\ ...

  3. 2020年团体程序设计天梯赛-总决赛 L2-4 网红点打卡攻略

    题目:一个旅游景点,如果被带火了的话,就被称为"网红点".大家来网红点游玩,俗称"打卡".在各个网红点打卡的快(省)乐(钱)方法称为"攻略" ...

  4. @Transactional自调用问题

  5. EdgeConnect: Structure Guided Image Inpainting using Edge Prediction

    论文 pytorch 引言 语义分割获取边缘信息指导修复其二 存在的问题:之前方法能够生成具有有意义结构的缺失区域,但生成的区域往往模糊或边缘部分存在伪影. 提出问题:提出了一个两阶段的模型,将inp ...

  6. InnoDB 中的缓冲池(Buffer Pool)

    本文主要说明 InnoDB Buffer Pool 的内部执行原理,其生效的前提是使用到了索引,如果没有用到索引会进行全表扫描. 结构 在 InnoDB 存储引擎层维护着一个缓冲池,通过其可以避免对磁 ...

  7. codeforces 1424J,为了过这题,我把祖传的C++都用上了!

    大家好,我们选择的是Bubble Cup比赛Div2场次的J题,不用问我Bubble Cup是什么比赛,我也不清楚.总之是一场算法比赛就是了.可能是这个比赛知名度比较低吧,参与的人数也不是很多,我们选 ...

  8. android studio问题备注

    androidTestCompile 'com.android.support:support-annotations:25.3.1'configurations.all { resolutionSt ...

  9. PyQt(Python+Qt)学习随笔:字体writingSystem、ProportionalFonts、MonospacedFonts的含义以及QFontComboBox字体组合框详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 在介绍QFontComboBox之前,我们先简单介绍一下字体 ...

  10. PyQt(Python+Qt)学习随笔:Qt Designer中主窗口对象的animated属性

    animated属性用于设置在操作可浮动部件和工具栏时是否设置动画. 当一个可浮动部件或工具栏被拖到主窗口上时,主窗口将调整其内容,以显示浮动部件或工具栏应该放置的位置.设置此属性后主窗口将使用平滑动 ...