`dna2protein.pl`中的这些行有什么作用?

时间:2011-12-03 15:58:11

标签: perl

我是perl的新手,我找到了convert a DNA sequence to protein sequence using Perl的脚本。我不明白该脚本中的某些行是什么,特别是以下内容:

my(%g)=('TCA'=>'S','TCC'=>'S','TCG'=>'S','TCT'=>'S','TTC'=>'F','TTT'=>'F','TTA'=>'L','TTG'=>'L','TAC'=>'Y','TAT'=>'Y','TAA'=>'_','TAG'=>'_','TGC'=>'C','TGT'=>'C','TGA'=>'_','TGG'=>'W','CTA'=>'L','CTC'=>'L','CTG'=>'L','CTT'=>'L','CCA'=>'P','CCC'=>'P','CCG'=>'P','CCT'=>'P','CAC'=>'H','CAT'=>'H','CAA'=>'Q','CAG'=>'Q','CGA'=>'R','CGC'=>'R','CGG'=>'R','CGT'=>'R','ATA'=>'I','ATC'=>'I','ATT'=>'I','ATG'=>'M','ACA'=>'T','ACC'=>'T','ACG'=>'T','ACT'=>'T','AAC'=>'N','AAT'=>'N','AAA'=>'K','AAG'=>'K','AGC'=>'S','AGT'=>'S','AGA'=>'R','AGG'=>'R','GTA'=>'V','GTC'=>'V','GTG'=>'V','GTT'=>'V','GCA'=>'A','GCC'=>'A','GCG'=>'A','GCT'=>'A','GAC'=>'D','GAT'=>'D','GAA'=>'E','GAG'=>'E','GGA'=>'G','GGC'=>'G','GGG'=>'G','GGT'=>'G');
if(exists $g{$codon})
{
return $g{$codon};
}
else
{
print STDERR "Bad codon \"$codon\"!!\n";
exit;
}

有人可以解释一下吗?

5 个答案:

答案 0 :(得分:10)

我的perl生锈了但无论如何。

第一行创建一个哈希(它是哈希表的perls版本)。该变量称为g(坏名称BTW)。 %之前的g sigil用于表示它是一个哈希值。 Perl使用符号来表示类型。哈希是使用双桶箭头语法初始化。 'TTT'=>'F'在哈希表中创建条目TTT,其值为Fmy用于为变量提供局部范围。

接下来的几行是相当自我解释的。它将检查散列是否包含带有键$codon的条目。 $ sigil用于表示它是标量值。如果是exists,则获得该值。否则,它会将指定的消息打印到标准错误。

答案 1 :(得分:3)

由于你是Perl的新手,在尝试自己解密它的语法之前,你应该先阅读一些关于Perl的内容。 (Perl重视一个好的霍夫曼编码,并且也有点加密。;-)从'perldoc perlintro'命令开始,然后从那里开始。例如,如果您正在使用Ubunutu,则可以通过

安装此文档
 $ sudo apt-get install perl-doc

但也可在此文件中找到:Perl Reference documentation

除了perlintro之外,其他一些建议的阅读是perlsyn(语法描述),perldata(数据结构),perlop(运算符,包括引号),perlreftut(引用的引入)和perlvar(预定义变量及其含义),大致按此顺序。

我从这些中学到了perl,我仍然经常提到它们。

另外,如果你的DNA脚本有POD文档,那么你可以通过输入

来整齐地查看
$ perldoc <script-filename>

(当然,POD文档在源代码中以更粗略的形式列出;阅读perlpod以获取有关文档格式的更多详细信息)

答案 2 :(得分:3)

如果您是Perl的新手,有兴趣了解更快,可以从此网络集learn.perl开始。一个很好的补充是perldoc的在线Perl文档。祝你好运,玩得开心。

答案 3 :(得分:2)

在这种情况下,看起来%g哈希既可以作为识别密码子是否在有效条件集(散列密钥)内的一种方式,也可以作为一种映射到它是什么类型密码子(散列值)的方法。

哈希用作将唯一键与值链接的方法,但它们也可用作唯一键列表。在某些情况下,您可能会看到键添加到哈希并设置为undef。这是一个很好的信号,表示哈希用于跟踪某种类型的唯一值。

答案 4 :(得分:1)

将密码子传递给函数,上层,然后检查密码子的散列以查看是否存在该值的密码子。如果密码子存在,则返回该密码子的注册值,否则输出错误并且程序结束。

my (%g)正在创建hash,这是一种允许您通过为该值提供密钥来快速查找值的结构。因此,例如'TCA'=&gt;'S'将值'S'映射到'TCA'。如果你向g hash询问“TCA”的值,你会得到'S'($g{'TCA'} //will equal 'S'