0

基本的に、GenBank ファイルは、以下に示す 2 つのように、遺伝子エントリ (「遺伝子」とそれに続く対応する「CDS」エントリ (遺伝子ごとに 1 つだけ) で発表されます。タブ区切りで locus_tag と製品を取得したいと思います。 2 列のファイル 'gene' と 'CDS' の前後には必ずスペースが入ります。

前の質問でスクリプトが提案されました。

問題は、「product」の名前に「/」文字が含まれていることがあるため、このスクリプトと競合しているように見えることです。これは、私が理解できる限り、「/」をフィールドセパレーターとして使用して情報を配列?

このスクリプトを変更するか、別のスクリプトを作成して、これを解決したいと思います。

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"
4

2 に答える 2

1

重複した質問http://www.biostars.org/p/94164/を読んだ後 (このように二重に投稿しないでください)、Biopython の最小限の回答を以下に示します。

import sys
from Bio import SeqIO
filename = sys.argv[1] # Takes first command line argument input filename
for record in SeqIO.parse(filename, "genbank"):
    for feature in record.features:
        if feature.type == "CDS":
            locus_tag = feature.qualifiers.get("locus_tag", ["???"])[0]
            product = feature.qualifiers.get("product", ["???"])[0]
            print("%s\t%s" % (locus_tag, product))

マイナーな変更により、代わりにこれをファイルに書き出すことができます。

于 2014-02-28T16:16:31.730 に答える