По сути, файл GenBank состоит из записей генов (объявленных «геном», за которым следует соответствующая запись «CDS» (только одна для каждого гена), как две, которые я показываю здесь ниже. Я хотел бы получить locus_tag против продукта в разделенном табуляцией файл с двумя столбцами. "gene" и "CDS" всегда предшествуют и сопровождаются пробелами.
В предыдущем вопросе был предложен сценарий.
Проблема в том, что кажется, что, поскольку «продукт» иногда имеет символ «/» внутри своего имени, он конфликтует с этим сценарием, который, насколько я понимаю, использует «/» в качестве разделителя полей для хранения информации в множество?
Я хотел бы решить эту проблему, либо изменив этот скрипт, либо создав другой.
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!!
. Это не имеет ничего общего с массивами или разделителями полей. - person TLP   schedule 27.02.2014Bio::GenBankParser
, например. - person TLP   schedule 27.02.2014genbank-parser.pl
, указаноparse GenBank records into YAML
. Возможно, вы перепутали два результата поиска? Насколько я могу судить, это будет анализировать запись GenBank в хэш-ссылку, например.print $rec->{'ACCESSION'};
- person TLP   schedule 27.02.2014product
имеет новую строку в своем значении? - person Lee Duhem   schedule 27.02.2014