用perl实现生物突变的随机模拟程序代码

时间:2021-05-22

程序文件:test.pl
复制代码 代码如下:
#!/bin/perl
# filename:test.pl
use strict;
use warnings;

#随便找一个比较好识别的序列
my $DNA="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n";
my $i;
my $mutant;
srand(time|$$);
$mutant=mutate($DNA);
print "Mutate \n". $DNA;
print "Here is the original DNA:\n";
print "$DNA\n";
print "Here is the mutant DNA:\n\n";
print "$mutant\n";
print "Here are 10 more successive mutations:\n";
for ($i=0;$i<10;++$i)
{
$mutant=mutate($mutant);
print "$mutant\n";
}

#子程序:根据序列的长度定义一个随机位置的子程序
sub randomposition
{
my($string)=@_;
return int(rand(length($string)));
}
#子程序:从一个数组中随机选取一个元素
sub randelement
{
my(@array)=@_;
return $array[rand @array];
}

#子程序:引用上面的子程序,从ATGC四个碱基中随机选取一个
sub randomnucleotide
{
my (@nucleotides)=qw/A T G C/;
return randelement(@nucleotides);
}

#子程序:生成突变的子程序
sub mutate
{
my($dna)=@_;
my(@nucleotides)=qw(A T G C);
my($position)=randomposition($dna);
my($newbase)=randomnucleotide(@nucleotides);
substr($dna,$position,1,$newbase);#substr($string,$initial_position,$length,replacement substring)
return $dna;
}

结果如下:
F:\>perl\test.pl
Mutate
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Here is the original DNA:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Here is the mutant DNA:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAA

Here are 10 more successive mutations:
ACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAA

ACAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAA

ACAAAAAAAAACAAAAAAAAAAAAATAAAAAAAAAAAAAAATAAAAAAAAAAAAAAA

ACAAAAAAAAACAAAAAAAAAAAAATAAAAAAAAAAAAAAATAAAAAAAAAAAAAAA

ACAAAAAAAAACAAAAAAAAAAAAATAAAAAAAAAAAAAAATAAAAAAAAAAAAAAA

ACAAAAAAAAACAAAAAAAAAAAAATAAAAAAAAAAAAAAATGAAAAAAAAAAAAAA

ACTAAAAAAAACAAAAAAAAAAAAATAAAAAAAAAAAAAAATGAAAAAAAAAAAAAA

ACTAAAAAAAACAAAAAAAAAAAAATAAGAAAAAAAAAAAATGAAAAAAAAAAAAAA

ACTAAAAAAAACAAAAAAAAAAAAATAAGAAAAAAAAAAAATGTAAAAAAAAAAAAA

ACTAAAAAAAACAAAAAAAAAAAAATAAGAAAAAAAAAAAATGTAAAAAAAAAAAAA

F:\>

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章