perl による生物学的突然変異のランダムシミュレーションコード
プログラムファイル: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:ⅯⅯⅯ
関連
-
Net coreのホットプラグ機構とアンインストールに関する問題点ヘルプガイド
-
ファイルが存在するかどうかを判断するasp関数
-
ASPは、コンテンツ内のすべての画像パスSRCを正規表現で抽出するためのコードです。
-
オンライン圧縮・解凍のためのASPコード
-
Webform 組み込みオブジェクト セッションオブジェクト、アプリケーショングローバルオブジェクト、ViewState 詳細
-
現在のフルパス(url)を取得するためのasp関数コード
-
ASPでフォルダーの存在を検出し、存在しない場合は自動的に作成する方法
-
aspのドメインアクセス制限コード
-
perl スクリプティング スタディガイド - 読書メモ
-
perl変数$/の使用方法について説明します。コンテキストが行モードのとき、$/は行を区別するものを定義します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Visual studio 2019 初心者向けサードパーティライブラリ追加チュートリアル(入門編)
-
aspで仮想ディレクトリのルートパスを取得するコード
-
aspはプロジェクトの終了時刻を計算するためにWeekday関数を使用します。
-
iis7でaspの行番号が不正確な問題の解決法
-
ASPでは、.NETのStringオブジェクトと同様に、文字部分に対してPadLeftとPadRightの関数が実装されています。
-
Perlの特殊な組み込み変数の詳細
-
Perlによるディレクトリの探索とLinuxコマンドによるログの解析 コード例共有
-
perl use vars pragma 使用のヒント
-
2つのファイルを比較し、データをフィルタリングするスクリプトコード(perlで実装されている
-
PerlのSort関数の使い方まとめと使用例