【发布时间】:2009-03-02 09:19:34
【问题描述】:
鉴于这些输入:
my $init_seq = "AAAAAAAAAA" #length 10 bp
my $sub_rate = 0.003;
my $nof_tags = 1000;
my @dna = qw( A C G T );
我要生成:
千长10个标签
标签中每个位置的替换率为0.003
输出如下:
AAAAAAAAAA
AATAACAAAA
.....
AAGGAAAAGA # 1000th tags
在 Perl 中是否有一种简洁的方法?
我坚持以这个脚本的逻辑为核心:
#!/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++;
}
【问题讨论】:
-
不,米奇,这不是家庭作业。真的。
-
您应该检查是否有重复项。
-
其他人已经编写了程序来生成发生突变的序列。您可能想看看这些现有程序是否满足您的需求,或者您是否需要重新实现轮子。
标签: perl algorithm bioinformatics dna-sequence