【问题标题】:How to generate a random DNA sequence in matlab如何在matlab中生成随机DNA序列
【发布时间】:2018-04-20 17:50:32
【问题描述】:

我是 Matlab 的新手,我正在尝试创建随机 DNA 序列生成器,到目前为止,我只找到了一种以相等概率生成 A、C、G、T 的方法,如何为每个字母分配不同的概率?所有概率加起来必须为 1。

total_bp=10;
%open file
SeqLength=100;
bases = repmat('ACGT', 1, SeqLength/4);
for i=1:total_bp
%random DNA sequence
SeqLength=100;
Seq = bases(randperm(SeqLength));
display(num2str(Seq))
end
fclose('all');

【问题讨论】:

标签: matlab random sequence


【解决方案1】:

定义一个碱基元胞数组

bases = {'A', 'C', 'G', 'T'};

还有一个概率数组;

probs = [0.1,0.5,0.3,0.1];

然后就可以画一个统一的随机数,装箱了:

bin = discretize(rand,[0,cumsum(probs)]);

然后翻译成一个字母:

seq = bases(bin);

总共:

n = 10;
bases = {'A', 'C', 'G', 'T'};
probs = [0.1,0.5,0.3,0.1];
seq = bases(discretize(rand(1,n),[0,cumsum(probs)]));
disp(strjoin(seq)) %Join to single string.

【讨论】:

  • 您好,感谢您的帮助,但我想知道 Octave 中的离散化是什么。我将这个问题作为 Matlab 问题发布,因为它比 octave 更受欢迎,但我没有意识到并非 Matlab 中的所有函数都在 Octave 中实现。无论如何,感谢您的帮助。
  • histc 有点类似,但输入可能需要稍作改动
  • @n1e2,如果您觉得我的回答有帮助,请考虑接受。这将使未回答问题的数量保持在较低水平,并且会支持我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
  • 2012-02-13
相关资源
最近更新 更多