这是主函数
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. LIKE 运算符

    运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是"+".在vb2005中运算符大致可以分为5种类型:算术运算符.连接运算 ...

  2. Codeforces Round #667 (Div. 3) B、C、D、E 题解

    抱歉B.C题咕了这么久 B. Minimum Product #枚举 #贪心 题目链接 题意 给定四个整数\(a, b, x, y\),其中\(a\geq x, b\geq y\),你可以执行不超过\ ...

  3. Mybatis入门及第一个Mybatis程序

    Mybatis笔记整理 所需要的基础知识 JDBC Mysql Java基础 Maven Junit 框架:是有配置文件的.最好的方式:看官网文档 1.简介 1.1.什么是MyBatis 简介 什么是 ...

  4. 我与PHP,ULM和Vue.js不得不说的故事(我与PHP白月光的那些事儿之第三年的见异思迁番外篇)

    关于PHP的认知 -----恍惚间眸眼像极了一位故人 第一年遇见,那时的它还稚嫩懵懂.像白纸一样的脸,极容易读懂.于是放荡不羁,不放真心.稍微用心,它便能高兴好久.初识它时它叫C语言,浅尝却不觉其难过 ...

  5. 欢天喜地七仙女——UML设计

    这个作业的要求在哪里 作业要求 团队名称 欢天喜地七仙女 团队成员 王玮晗.林鑫宇.黄龙骏.陈少龙.何一山.崔亚明.陆桂莺 这个作业的目标 团队一起绘制UML图 作业正文 如下 其它参考文献 见文末 ...

  6. markdown详细

    在写博客时,想设置字体 颜色参照[(https://blog.csdn.net/wo919191/article/details/84249531)] 图片参照 背景色: gray

  7. IdentityServer4系列 | 资源密码凭证模式

    一.前言 从上一篇关于客户端凭证模式中,我们通过创建一个认证授权访问服务,定义一个API和要访问它的客户端,客户端通过IdentityServer上请求访问令牌,并使用它来控制访问API.其中,我们也 ...

  8. 【佛山市选2013】JZOJ2020年8月7日提高组T2 树环转换

    [佛山市选2013]JZOJ2020年8月7日提高组T2 树环转换 题目 描述 给定一棵N个节点的树,去掉这棵树的一条边需要消耗值1,为这个图的两个点加上一条边也需要消耗值1.树的节点编号从1开始.在 ...

  9. 雪花算法 Java 版

    雪花算法根据时间戳生成有序的 64 bit 的 Long 类型的唯一 ID 各 bit 含义: 1 bit: 符号位,0 是正数 1 是负数, ID 为正数,所以恒取 0 41 bit: 时间差,我们 ...

  10. uwsgi+nginx的三种配置方式

    第一种 vi /etc/uwsgi.ini uwsgi --reload uwsgi.pid vi /etc/nginx/conf.d/iot.conf service nginx restart 第 ...