2014-02-19 5 views
1

В принципе, файл GenBank состоит из записей генов (объявляется «геном», за которым следует соответствующая запись «CDS» (только одна на ген), как показано на рисунке ниже. Я хотел бы получить locus_tag vs продукт в файле с двумя разделителями с разделителями табуляции: «ген» и «CDS» всегда предшествуют пробелам, и если эта задача может быть легко выполнена с использованием уже имеющегося инструмента, пожалуйста, дайте мне знать.Parsing GenBank file

Входной файл:

gene   complement(8972..9094) 
       /locus_tag="HAPS_0004" 
       /db_xref="GeneID:7278619" 
CDS    complement(8972..9094) 
       /locus_tag="HAPS_0004" 
       /codon_start=1 
       /transl_table=11 
       /product="hypothetical protein" 
       /protein_id="YP_002474657.1" 
       /db_xref="GI:219870282" 
       /db_xref="GeneID:7278619" 
       /translation="MYYKALAHFLPTLSTMQNILSKSPLSLDFRLLFLAFIDKR" 
gene   9632..11416 
       /gene="frdA" 
       /locus_tag="HAPS_0005" 
       /db_xref="GeneID:7278620" 
CDS    9632..11416 
       /gene="frdA" 
       /locus_tag="HAPS_0005" 
       /note="part of four member fumarate reductase enzyme 
       complex FrdABCD which catalyzes the reduction of fumarate 
       to succinate during anaerobic respiration; FrdAB are the 
       catalytic subcomplex consisting of a flavoprotein subunit 
       and an iron-sulfur subunit, respectively; FrdCD are the 
       membrane components which interact with quinone and are 
       involved in electron transfer; the catalytic subunits are 
       similar to succinate dehydrogenase SdhAB" 
       /codon_start=1 
       /transl_table=11 
       /product="fumarate reductase flavoprotein subunit" 
       /protein_id="YP_002474658.1" 
       /db_xref="GI:219870283" 
       /db_xref="GeneID:7278620" 
       /translation="MQTVNVDVAIVGAGGGGLRAAIAAAEANPNLKIALISKVYPMRS 
       HTVAAEGGAAAVAKEEDSYDKHFHDTVAGGDWLCEQDVVEYFVEHSPVEMTQLERWGC 
       PWSRKADGDVNVRRFGGMKIERTWFAADKTGFHLLHTLFQTSIKYPQIIRFDEHFVVD 
       ILVDDGQVRGCVAMNMMEGTFVQINANAVVIATGGGCRAYRFNTNGGIVTGDGLSMAY 
       RHGVPLRDMEFVQYHPTGLPNTGILMTEGCRGEGGILVNKDGYRYLQDYGLGPETPVG 
       KPENKYMELGPRDKVSQAFWQEWRKGNTLKTAKGVDVVHLDLRHLGEKYLHERLPFIC 
       ELAQAYEGVDPAKAPIPVRPVVHYTMGGIEVDQHAETCIKGLFAVGECASSGLHGANR 
       LGSNSLAELVVFGKVAGEMAAKRAVEATARNQAVIDAQAKDVLERVYALARQEGEESW 
       SQIRNEMGDSMEEGCGIYRTQESMEKTVAKIAELKERYKRIKVKDSSSVFNTDLLYKI 
       ELGYILDVAQSISSSAVERKESRGAHQRLDYVERDDVNYLKHTLAFYNADGTPTIKYS 
       DVKITKSQPAKRVYGAEAEAQEAAAKKE" 

Желаемый выход (locus_tag против продукта в табуляции два columnfile):

HAPS_0004 hypothetical protein 
HAPS_0005 fumarate reductase flavoprotein subunit 

В самом деле, имея этот выход был бы идеальным, одна линия для каждого гена (показан только один ген):

locus_tag="HAPS_0004" db_xref="GeneID:7278619" complement(8972..9094) codon_start=1 transl_table=11 product="hypothetical protein" protein_id="YP_002474657.1" db_xref="GI:219870282" db_xref="GeneID:7278619" translation="MYYKALAHFLPTLSTMQNILSKSPLSLDFRLLFLAFIDKR" 
+1

Попытка https: // metacpan.org/pod/Bio::GenBankParser – frezik

ответ

3
perl -nE' 
    BEGIN{ ($/, $") = ("CDS", "\t") } 
    say "@r[0,1]" if @r= m!/(?:locus_tag|product)="(.+?)"!g and @r>1 
' file 

выход

HAPS_0004  hypothetical protein 
HAPS_0005  fumarate reductase flavoprotein subunit