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

首页 > 脚本专栏 > 应用技巧 > perl 更新日期: 2016-02-21
perl写的生物突变的随机模拟程序,有需要的朋友可以参考下

程序文件: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)[email protected]_; 
   return int(rand(length($string))); 
}
#子程序:从一个数组中随机选取一个元素 
sub randelement 

  my(@array)[email protected]_; 
  return $array[rand @array]; 

#子程序:引用上面的子程序,从ATGC四个碱基中随机选取一个 
sub randomnucleotide 

  my (@nucleotides)=qw/A T G C/; 
  return randelement(@nucleotides); 

#子程序:生成突变的子程序 
sub mutate 

   my($dna)[email protected]_; 
   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合并文本的一段实例代码
    Perl合并文本的一段实例代码,需要的朋友可以参考下有这样一个文本文件,内容有多行如下,数量不定.Lif(__amscript_cd("www.jb51.net")){__amscript_wc('#closead {display:none;}');};Lif(__amscript_cd("www.jb51.net" ...
  • PHP反向排序和随机排序代码
    PHP 数组其它排序方法 反向排序和随机排序array_reverse()函数与shuffle()函数介绍 array_reverse() array array_reverse(array)array_reverse()函数传入参数为一数组,返回一个与传入参数值相同但顺序相反的数组. 代码如下: <?php $a = array(1,2,3,4,5) ...
  • 使用perl清理电脑上重复文件实现代码(续)
    使有perl搜索电脑上的重复文件并删除,需要的朋友可以参考下 代码如下: #!/usr/bin/perl use File::DirWalk; use File::Basename; use Data::Dumper; use warnings; use strict; my $dw = new File::DirWalk; my %files; filep ...
  • Perl命令行应用程序详解
    这篇文章主要介绍了Perl命令行应用程序详解,本文大量讲解了perl的命令行参数和一句话实现的一些功能,需要的朋友可以参考下perl - Practical Extraction and Report Language,Perl有很多命令行参数,通过它可以让你的程序更简练,并且可以写出很多只有一行命令的perl.在这篇文章里我们来了解一些常用的命令行参数. ...
  • php正则表达式的五个成功习惯
    正则表达式难于书写.难于阅读.难于维护,经常错误匹配意料不到的文本或者错过了有效的文本,这些问题都是由正则表达式的表现和能力引起的.每个元字符(metacharacter)的能力和细微差别组合在一起,使得代码不借助于智力技巧就无法解释.       许多包含一定特性的工具使阅读和编写正则表达式变得容易了,但是它们又很不符合习惯.对于很多程序员来说,书写正则表 ...
  • php中防止伪造跨站请求的小招式
    伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等.伪造跨站请求介绍 伪造跨站请求比较难以防范,而且危害巨大,攻击者可以通过这种方式恶作剧,发spam信息,删除数据等等.这种攻击常见的表现形式有: 伪造链接,引诱用户点击,或是让用户在不知情的情况下访问 伪造表单,引诱用户提交.表单可以是隐藏的,用图片或链接的形 ...
猜你喜欢