perl応用:生物突然変異のランダムシミュレーションプログラム


use strict;
use warnings;


            #             
my $DNA="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
"; my $i; my $mutant; srand(time|$$); $mutant=mutate($DNA); print "Mutate
". $DNA; print "Here is the original DNA:
"; print "$DNA
"; print "Here is the mutant DNA:

"; print "$mutant
"; print "Here are 10 more successive mutations:
"; for ($i=0;$i<10;++$i) { $mutant=mutate($mutant); print "$mutant
"; } # : 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:\>