本文介绍了生成合成的DNA序列与托换率的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
由于这些输入:
我的$ init_seq =AAAAAAAAAA#length 10基点
我的$ sub_rate = 0.003;
我的$ nof_tags = 1000;
我@dna = QW(A C G T);
我要生成:
-
千长度为10个标签
-
替代率在标签每个位置为0.003
像高产输出:
AAAAAAAAAA
AATAACAAAA
.....
AAGGAAAAGA#第1000个标签
有没有一种简洁的方式来做到这一点在Perl?
我坚持这个脚本为核心的逻辑:
#!的/ usr / bin中/ perl的
我的$ init_seq =AAAAAAAAAA#length 10基点
我的$ sub_rate = 0.003;
我的$ nof_tags = 1000;
我@dna = QW(A C G T);
$ i = 0;
而($ I<长度($ init_seq)){
$卷= INT(RAND 4)+ 1; #$卷现在是1和4之间的整数
如果($辊== 1){$基地= A;}
ELSIF($卷== 2){$基地= T;}
ELSIF($辊== 3){$基地= C;}
ELSIF($辊== 4){$基地= G;};
打印$基地;
}
继续 {
$ I ++;
}
解决方案
作为一个小的优化,替代:
$卷= INT(RAND 4)+ 1; #$卷现在是1和4之间的整数
如果($辊== 1){$基地= A;}
ELSIF($卷== 2){$基地= T;}
ELSIF($辊== 3){$基地= C;}
ELSIF($辊== 4){$基地= G;};
与
$基地= $ DNA [INT(RAND 4)];
Given these inputs:
my $init_seq = "AAAAAAAAAA" #length 10 bp
my $sub_rate = 0.003;
my $nof_tags = 1000;
my @dna = qw( A C G T );
I want to generate:
One thousand length-10 tags
Substitution rate for each position in a tag is 0.003
Yielding output like:
AAAAAAAAAA
AATAACAAAA
.....
AAGGAAAAGA # 1000th tags
Is there a compact way to do it in Perl?
I am stuck with the logic of this script as core:
#!/usr/bin/perl
my $init_seq = "AAAAAAAAAA" #length 10 bp
my $sub_rate = 0.003;
my $nof_tags = 1000;
my @dna = qw( A C G T );
$i = 0;
while ($i < length($init_seq)) {
$roll = int(rand 4) + 1; # $roll is now an integer between 1 and 4
if ($roll == 1) {$base = A;}
elsif ($roll == 2) {$base = T;}
elsif ($roll == 3) {$base = C;}
elsif ($roll == 4) {$base = G;};
print $base;
}
continue {
$i++;
}
解决方案
As a small optimisation, replace:
$roll = int(rand 4) + 1; # $roll is now an integer between 1 and 4
if ($roll == 1) {$base = A;}
elsif ($roll == 2) {$base = T;}
elsif ($roll == 3) {$base = C;}
elsif ($roll == 4) {$base = G;};
with
$base = $dna[int(rand 4)];
这篇关于生成合成的DNA序列与托换率的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!