基本上,GenBank文件由基因條目組成(由'基因'及其對應的'CDS'條目(每個基因只有一個)發佈,就像我在下面展示的兩個基因條目。想獲得locus_tag VS產品在製表符分隔的兩列的文件。「基因」和「CDS」的空間總是前面和後面。解析GenBank文件:獲取基因座標籤與產物
A previous question suggested a script.
的問題是,它似乎是因爲「產品'有時'/'字符在它的名字裏面,它與這個腳本有衝突,據我所知,它使用'/'作爲字段分隔符來存儲信息到一個數組中?
我想解決這個問題,無論是修改這個腳本或建立其他的。
perl -nE'
BEGIN{ ($/, $") = ("CDS", "\t") }
say "@r[0,1]" if @r= m!/(?:locus_tag|product)="(.+?)"!g and @r>1
' 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 68..637
/locus_tag="HPNK_00040"
CDS 68..637
/locus_tag="HPNK_00040"
/codon_start=1
/transl_table=11
/product="NinG recombination protein/bacteriophage lambda
NinG family protein"
/protein_id="CRESA:HPNK_00040"
/translation="MIKPKVKKRKCKCCGGEFKSADSFRKWCSAECGVKLAKIAQEKA
RQKAIEKRNREERAKIKATRERLKSRSEWLKDAQAIFNEYIRLRDKDEPCISCRRFHQ
GQYHAGHYRTVKAMPELRFNEDNVHKQCSACNNHLSGNITEYRINLVRKIGAERVEAL
ESYHPPVKWSVEDCKEIIKTYRAKIKELK"
你明白錯誤。 '/'唯一的問題就是它與匹配運算符'm //'的默認分隔符衝突,但是已經通過用'!'替換分隔符來處理,就像'm !!'中那樣。它與數組或字段分隔符無關。 – TLP
這種格式(GenBank)似乎是某種標準格式,所以我敢打賭有一個模塊可以爲你解析它,這很可能比你在這裏嘗試的這種快速修復更簡單也更安全。 – TLP
例如,下面是一個:['Bio :: GenBankParser'](http://search.cpan.org/perldoc?Bio%3A%3AGenBankParser)。 – TLP