三日坊主:
Deprecated: Function strftime() is deprecated in /home/u109394186/domains/rad51.net/public_html/jeans/jeans/libs/blog.php on line 333
2010年 07月の記事
PCR産物のDNA sequenceを作成するスクリプト [General]
2010年7月26日
分子生物学用のツール。テンプレートと2つのプライマーの塩基配列から、PCR産物の塩基配列を計算して表示する。
始め、VBScript + InputBoxの組み合わせで作っていたが、テンプレート配列をInputBoxで入力させる際に不具合があったので、PHPに移行。PHPを使っている点で汎用的でないので、こちらのブログにメモしておくことにする。
(2010/10/11改定)
始め、VBScript + InputBoxの組み合わせで作っていたが、テンプレート配列をInputBoxで入力させる際に不具合があったので、PHPに移行。PHPを使っている点で汎用的でないので、こちらのブログにメモしておくことにする。
<?php
$template="
GGCTTTTCATAAAATTCCTTTTAAAATCATAACATAAAAGAATGATTCACATTAACGGAT
CCGTTAACTACGAAAATAGGCAACTTATTCTTAAGGGGCAAGATTAATTTATGTTTTCCC
GTCACCAACGACAAAATTTGCGAGGCTCTTTCCGAAAATAGGGTTGATCTTTGTTGTCAC
TGGATGTACTGTACATCCATACAGTAACTCACAGGGGCTGGATTGATTATGTACACTTCA
GGCTATGCACATCGTTCTTCGTCGTTCTCATCCGCAGCAAGTAAAATTGCGCGTGTCTCT
ACGGAAAACACTACAGCCGGGCTTATCAGTGAAGTTGTCTATCGCGAAGATCAGCCCATG
ATGACGCAACTTCTACTGTTGCCATTGTTACAGCAACTCGGTCAGCAATCGCGCTGGCAA
CTCTGGTTAACACCGCAACAAAAACTGAGTCGGGAATGGGTTCAGGCATCTGGGCTACCC
TTAACGAAAGTAATGCAGATTAGCCAGCTCTCCCCTTGCCACACTGTGGAGTCAATGGTT
CGCGCTTTACGCACGGGCAATTACAGTGTGGTGATCGGTTGGTTGGCAGATGATTTGACT
GAAGAAGAGCATGCTGAACTTGTTGATGCGGCAAATGAAGGTAACGCTATGGGGTTTATT
ATGCGTCCGGTAAGCGCATCCTCTCACGCCACGAGACAACTTTCCGGGCTAAAAATTCAC
TCTAATTTGTATCATTAAGT
";
$primer1="
cgCGGATCCGTTAACTACGAAAATAGGC
";
$primer2="
ccCATggTCAATCCAGCCCCTGTGAG
";
$template=preg_replace('/[^GATC]+/','',strtr($template,'gatc','GATC'));
$primer1=preg_replace('/[^GATC]+/','',strtr($primer1,'gatc','GATC'));
$primer2=preg_replace('/[^GATC]+/','',strtr($primer2,'gatc','GATC'));
$strand=extension($template,$primer1);
if ($strand) {
$strand=complementary($strand);
$strand=extension($strand,$primer2);
if (strlen($strand)==0) exit("Primer2 does not work!\n");
$strand=complementary($strand);
} else {
$strand=extension(complementary($template),$primer1);
if (strlen($strand)==0) exit("Primer1 does not work!\n");
$strand=complementary($strand);
$strand=extension($strand,$primer2);
if (strlen($strand)==0) exit("Primer2 does not work!\n");
$strand=complementary($strand);
}
echo $strand;
function complementary($sequence){
$comp='';
for ($i=strlen($sequence)-1;0<=$i;$i--) $comp.=strtr(substr($sequence,$i,1),'GATC','CTAG');
return $comp;
}
function extension($template,$primer) {
for ($i=0;$i<strlen($primer)-10;$i++) {
$p=substr($primer,$i);
$p=preg_quote($p,'/');
if (preg_match('/'.$p.'([GATC]*)$/',$template,$m)) return $primer.$m[1];
}
return '';
}(2010/10/11改定)