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

Walter的学习笔记 2013-03-20

程序文件: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:\>

相关推荐