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

所属分类: 脚本专栏 / perl 阅读数: 1869
收藏 0 赞 0 分享

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

更多精彩内容其他人还在看

perl 指定长度并生成一个随机的DNA序列的脚本代码

perl 指定长度并生成一个随机的DNA序列的代码,有需要的朋友可以参考下
收藏 0 赞 0 分享

perl生成特定碱基比例的随机序列的代码

怎么用perl程序,随机生成一条序列,使ACGT四种碱基的含量分别为0.3,0.3,0.2,0.2!
收藏 0 赞 0 分享

学习perl的unless控制结构

在perl的if控制结构中,只有当条件表达式为真时才执行某块代码。如果想让程序块在条件为假时才执行,此时可以把if改成unless
收藏 0 赞 0 分享

有关perl正则表达式的一些杂项

有关perl正则表达式的一些杂项,有需要的朋友可以参考下
收藏 0 赞 0 分享

perl中heredoc使用说明

在成块打印文本的时候特别有用,需要的朋友可以参考下
收藏 0 赞 0 分享

Perl使用chdir的实例代码

Perl使用chdir的例子,供朋友们参考学习
收藏 0 赞 0 分享

perl特殊符号及默认的内部变量

perl特殊符号及默认的内部变量,有需要的朋友不妨参考下
收藏 0 赞 0 分享

perl中my与our的区别介绍

our 和 my 一样,都是对变量的声明,不过 our 声明的是包全局变量,而 my 声明的是词法变量
收藏 0 赞 0 分享

在vim中添加perl注释时无法对齐问题的解决方法

在使用vim编辑perl脚本时,每当输入#号时,#号都会跑到行首问题,需要的朋友可以参考下
收藏 0 赞 0 分享

perl 文件操作总结

perl 文件操作总结,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多