kam*_*aci 3 perl project dna-sequence protein-database
我正在研究一个项目(我必须在Perl中实现它,但我不擅长它),它读取DNA并找到它的RNA.将RNA分成三联体以获得其等同的蛋白质名称.我将解释一下这些步骤:
1)将以下DNA转录为RNA,然后使用遗传密码将其转化为氨基酸序列
例:
TCATAATACGTTTTGTATTCGCCAGCGCTTCGGTGT
Run Code Online (Sandbox Code Playgroud)
2)为了转录DNA,首先用每个DNA替换它的对应物(即G表示C,C表示G,T表示A,A表示T):
TCATAATACGTTTTGTATTCGCCAGCGCTTCGGTGT
AGTATTATGCAAAACATAAGCGGTCGCGAAGCCACA
Run Code Online (Sandbox Code Playgroud)
接下来,记住胸腺嘧啶(T)碱基变成尿嘧啶(U).因此我们的序列变为:
AGUAUUAUGCAAAACAUAAGCGGUCGCGAAGCCACA
Run Code Online (Sandbox Code Playgroud)
使用遗传密码就是这样
AGU AUU AUG CAA AAC AUA AGC GGU CGC GAA GCC ACA
Run Code Online (Sandbox Code Playgroud)
然后在遗传密码表中查找每个三联体(密码子).所以AGU变成丝氨酸,我们可以写成Ser,或者只是S. AUU变成Isoleucine(Ile),我们写成I.我继续这样做,我们得到:
SIMQNISGREAT
Run Code Online (Sandbox Code Playgroud)
我会给蛋白质表:

那么如何在Perl中编写该代码呢?我将编辑我的问题并编写我所做的代码.
尝试下面的脚本,它接受STDIN上的输入(或作为参数给出的文件)并逐行读取.我还假设,所附图像中的"停止"是一些停止状态.希望我能从那张图片中读到这一切.
#!/usr/bin/perl
use strict;
use warnings;
my %proteins = qw/
UUU F UUC F UUA L UUG L UCU S UCC S UCA S UCG S UAU Y UAC Y UGU C UGC C UGG W
CUU L CUC L CUA L CUG L CCU P CCC P CCA P CCG P CAU H CAC H CAA Q CAG Q CGU R CGC R CGA R CGG R
AUU I AUC I AUA I AUG M ACU T ACC T ACA T ACG T AAU N AAC N AAA K AAG K AGU S AGC S AGA R AGG R
GUU V GUC V GUA V GUG V GCU A GCC A GCA A GCG A GAU D GAC D GAA E GAG E GGU G GGC G GGA G GGG G
/;
LINE: while (<>) {
chomp;
y/GCTA/CGAU/; # translate (point 1&2 mixed)
foreach my $protein (/(...)/g) {
if (defined $proteins{$protein}) {
print $proteins{$protein};
}
else {
print "Whoops, stop state?\n";
next LINE;
}
}
print "\n"
}
Run Code Online (Sandbox Code Playgroud)