1. ホーム
  2. スクリプト・コラム
  3. パール
  4. アプリケーションのヒント

perl による生物学的突然変異のランダムシミュレーションコード

2022-01-29 20:47:07

プログラムファイル:test.pl

コピーコード コードは以下の通りです。

#! /bin/perl
# filename: test.pl
use strict; 
use warnings; 
#A random sequence that is better recognized 
my $DNA="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\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"; 

#Subroutine: subroutine that defines a random position based on the length of the sequence 
sub randomposition 

   my($string)=@_; 
   return int(rand(length($string))); 
}
# Subroutine: pick a random element from an array 
sub randelement 

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

#Subroutine: referencing the above subroutine, randomly select one of the four bases from ATGC 
sub randomnucleotide 

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

#Subroutine: subroutine for generating mutations 
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:\>perltest.pl 
    ミューテート 
    あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ 
    こちらがオリジナルのDNAです。 
    アアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアア 
    こちらが変異したDNAです。 
    ああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ 
    さらに連続する10の変異を紹介します。 
    あかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんあかんああ 
    アカーーーーーン 
    アカアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアップ 
    アカアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアップ 
    アカアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアップ 
    アカアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアップ 
    アクタアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアップ 
    アクタアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアップ 
    アクタアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアップ 
    アクタアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアップ
    F:ⅯⅯⅯ