翻译序列练习perl

Posted a01说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻译序列练习perl相关的知识,希望对你有一定的参考价值。

翻译序列

#use strict;

if (scalar @ARGV==0){
    die "perl $0 <cds file> <pep>\n";
}

open IN, "<@ARGV[0]";
$/=">";<IN>;#设定>为分隔符,消耗掉空行。
while (<IN>){
    chomp;
    next if(/^\s+$/);#如果空行跳过
    my($id,$dna)=(split /\n/,$_,2)[0,1];
    $dna=~s/\n//g;#替换掉其它换行符
    my $protein="";
    for (my $i=0;$i<(length($dna)-2);$i+=3){
        $protein.=&codon2aa(substr($dna,$i,3));
    }
    print "$id\n";
    print "$protein\n";
}
close IN;
$/="\n";
sub codon2aa{
    my($codon)=@_;
    $codon=uc $codon; #转化成大写
    my(%genetic_code) = (

            'TCA' => 'S',    # Serine
            'TCC' => 'S',    # Serine
            'TCG' => 'S',    # Serine
            'TCT' => 'S',    # Serine
            'TTC' => 'F',    # Phenylalanine
            'TTT' => 'F',    # Phenylalanine
            'TTA' => 'L',    # Leucine
            'TTG' => 'L',    # Leucine
            'TAC' => 'Y',    # Tyrosine
            'TAT' => 'Y',    # Tyrosine
            'TAA' => '',    # Stop
            'TAG' => '',    # Stop
            'TGC' => 'C',    # Cysteine
            'TGT' => 'C',    # Cysteine
            'TGA' => '',    # Stop
            'TGG' => 'W',    # Tryptophan
            'CTA' => 'L',    # Leucine
            'CTC' => 'L',    # Leucine
            'CTG' => 'L',    # Leucine
            'CTT' => 'L',    # Leucine
            'CCA' => 'P',    # Proline
            'CCC' => 'P',    # Proline
            'CCG' => 'P',    # Proline
            'CCT' => 'P',    # Proline
            'CAC' => 'H',    # Histidine
            'CAT' => 'H',    # Histidine
            'CAA' => 'Q',    # Glutamine
            'CAG' => 'Q',    # Glutamine
            'CGA' => 'R',    # Arginine
            'CGC' => 'R',    # Arginine
            'CGG' => 'R',    # Arginine
            'CGT' => 'R',    # Arginine
            'ATA' => 'I',    # Isoleucine
            'ATC' => 'I',    # Isoleucine
            'ATT' => 'I',    # Isoleucine
            'ATG' => 'M',    # Methionine
            'ACA' => 'T',    # Threonine
            'ACC' => 'T',    # Threonine
            'ACG' => 'T',    # Threonine
            'ACT' => 'T',    # Threonine
            'AAC' => 'N',    # Asparagine
            'AAT' => 'N',    # Asparagine
            'AAA' => 'K',    # Lysine
            'AAG' => 'K',    # Lysine
            'AGC' => 'S',    # Serine
            'AGT' => 'S',    # Serine
            'AGA' => 'R',    # Arginine
            'AGG' => 'R',    # Arginine
            'GTA' => 'V',    # Valine
            'GTC' => 'V',    # Valine
            'GTG' => 'V',    # Valine
            'GTT' => 'V',    # Valine
            'GCA' => 'A',    # Alanine
            'GCC' => 'A',    # Alanine
            'GCG' => 'A',    # Alanine
            'GCT' => 'A',    # Alanine
            'GAC' => 'D',    # Aspartic Acid
            'GAT' => 'D',    # Aspartic Acid
            'GAA' => 'E',    # Glutamic Acid
            'GAG' => 'E',    # Glutamic Acid
            'GGA' => 'G',    # Glycine
            'GGC' => 'G',    # Glycine
            'GGG' => 'G',    # Glycine
            'GGT' => 'G',    # Glycine
            );

    if (exists $genetic_code{$codon}){
        return "$genetic_code{$codon}";
    }else{
        return "X";
    }

}


以上是关于翻译序列练习perl的主要内容,如果未能解决你的问题,请参考以下文章

每一生信perl练习

如何有条件地将 C 代码片段编译到我的 Perl 模块?

数据库系统原理 片段翻译

如何将 shell 脚本翻译成 Perl?

如何将此 JavaScript 代码片段翻译成 Parenscript?

Perl练习GO2gene对应关系一对多转成一对一