perl应用:生物突变的随机模拟程序



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\a.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:\>


你可能感兴趣的:(c,生物,String,perl,Warnings)