2015-10-08 119 views
-3

我正在嘗試編寫一個bash腳本,該腳本能夠從文件中讀取DNA序列(文件中的每一行都是一個序列),其中序列由空行分隔。我然後找到的氨基酸,這些DNA序列每密碼子編碼(每組三個文字。)例如,如果我與序列的文件:將DNA序列轉換爲氨基酸

GCATGCTGCGATAACTTTGGCTGAACTTTGGCTGAAGCATGCTGCGAAACTTTGGCTGAACTTTGGCTG

然後從GCA開始(第一3個文字,)我想了DNA成氨基酸根據下表上解碼:

Codon(s)     Amino-acid 
TTT,TTC     Phe 
TTA,TTG,CTT,CTC,CTA,CTG Leu 
ATT,ATC,ATA    Ile 
ATG      Met 
GTT,GTC,GTA,GTG   Val 
TCT,TCC,TCA,TCG   Ser 
CCT,CCC,CCA,CCG   Pro 
ACT,ACC,ACA,ACG   Thr 
GCT,GCC,GCA,GCG   Ala 
TAT,TAC     Tyr 
TAA,TAG     Stop 
CAT,CAC     His 
CAA,CAG     Gln 
AAT,AAC     Asn 
AAA,AAG     Lys 
GAT,GAC     Asp 
GAA,GAG     Glu 
TGT,TGC     Cys 
TGA      Stop 
TGG      Trp 
CGT,CGC,CGA,CGG   Arg 
AGT,AGC     Ser 
AGA,AGG     Arg 
GGT,GGC,GGA,GGG   Gly 

就是我需要:

AlaCysCysAspAsnPheGlyStopThrLeuAlaGluAlaCysCysGluThrLeuAlaGluLeuTrpLeu 

然後我需要打印每個氨基酸的名稱和使用次數。例如:

Ala: 4 
Cys: 4 

等等。我有100個含有DNA序列的文件,但我並不擅長bash。我嘗試了awk和tr,但我不知道如何將表編碼到bash腳本中。

+2

如果shell腳本有錯誤,會發生什麼?它會導致3臂的魚嗎? – hek2mgl

+0

您能向我們展示您迄今爲止編寫的代碼嗎? – w5m

回答

0

嗯,這是一個有趣的練習:

#!/usr/bin/perl 
use strict; 
use warnings; 

my %acid_of; 
{ 
    my $raw = <<'***'; 
TTT,TTC     Phe 
TTA,TTG,CTT,CTC,CTA,CTG Leu 
ATT,ATC,ATA    Ile 
ATG      Met 
GTT,GTC,GTA,GTG   Val 
TCT,TCC,TCA,TCG   Ser 
CCT,CCC,CCA,CCG   Pro 
ACT,ACC,ACA,ACG   Thr 
GCT,GCC,GCA,GCG   Ala 
TAT,TAC     Tyr 
TAA,TAG     Stop 
CAT,CAC     His 
CAA,CAG     Gln 
AAT,AAC     Asn 
AAA,AAG     Lys 
GAT,GAC     Asp 
GAA,GAG     Glu 
TGT,TGC     Cys 
TGA      Stop 
TGG      Trp 
CGT,CGC,CGA,CGG   Arg 
AGT,AGC     Ser 
AGA,AGG     Arg 
GGT,GGC,GGA,GGG   Gly 
*** 

    for my $line (split /\n/, $raw) { 
     my ($codons, $acid) = split ' ', $line; 
     for my $codon (split /,/, $codons) { 
      $acid_of{$codon} = $acid; 
     } 
    } 
} 

while (my $line = readline) { 
    next if $line !~ /\S/; 

    my %count; 
    $line =~ s{\G([ACGT]{3})}{ 
     my $acid = $acid_of{$1}; 
     $count{$acid}++; 
     $acid 
    }eg; 

    for my $acid (sort keys %count) { 
     $line .= "$acid: $count{$acid}\n"; 
    } 
} continue { 
    print $line; 
} 
+0

感謝您的幫助。我不知道Perl,我希望在bash中有腳本。在bash腳本中編碼轉換表是我的問題。 –

+0

@FaizLotfy爲什麼使用bash呢? – melpomene

+0

因爲它是我知道的唯一腳本語言。我已經在學Python了,但現在我可以使用它了。 –