0

次のようなヘッダーを持つ複数のシーケンスを含む fasta ファイルがあります。

>1016BSA34080.1
MTHSVRIITVTVNFLQHRFFIDYMSEIGLLDGEIEQMVSALQEQVHIVARARTLPEMKNLERDTHVIVKT
LKKQLTAFHSEVKKIADSTQRSRYEGKHQTYEAKVKDLEKELRTQIDPPPKSVSEKHMEDLMGEGGPDGS
GFKTTDQVLRAGIRIQNDA

>1038BSA81955.1
MQQQQARRRMEEPTAAAATASSTTSFAAQPLLSRSVAPQAASSPQASARLAESAGFRSAAVFGSAQAAVG
GRGRGGFGAPPGRGGFGAPPAAGFGAAPAFGAPPTLQAFSAAPAPGGFGAPPAPQGFGAPRAAGFGAPPA
PQAFSAVAPASSTAIPLDVTTYLGDTFGSAPTRGPP

ヘッダーの先頭にある 4 桁の数字は、シーケンスの一意の ID です。

4 桁の ID (1 行に 1 つの ID を持つテキスト ファイル) でシーケンスを抽出する Python スクリプトを作成するのを手伝ってくれませんか?

このスクリプトを変更してみました (私はこのウェブサイトで見つけました:別のファイルのエントリに基づいて FASTA ファイルからシーケンスを抽出します) 目的に合わせて (無駄に):

f2 = open('accessionids.txt','r')
f1 = open('fasta.txt','r')
f3 = open('fasta_parsed.txt','w')

AI_DICT = {}
for line in f2:
    AI_DICT[line[:-1]] = 1

skip = 0
for line in f1:
    if line[0] == '>':
        _splitline = line.split('|')
        accessorIDWithArrow = _splitline[0]
        accessorID = accessorIDWithArrow[1:-1]
        # print accessorID
        if accessorID in AI_DICT:
            f3.write(line)
            skip = 0
        else:
            skip = 1
    else:
        if not skip:
            f3.write(line)

f1.close()
f2.close()
f3.close()

私はPythonが初めてです。どんな助けでも大歓迎です! ありがとう -Divya

4

2 に答える 2

1

accessionids.txt4 桁のコードだけが含まれていますか?

その場合は、accessorID を次のように変更します。

accessorID = accessorIDWithArrow[1:5]

これをより Pythonic にするいくつかの方法は次のとおりです。

AI_DICT の辞書の代わりにセットを使用し、strip()スライスではなく使用して改行を削除し、ジェネレータ式を使用してセットを構築します

AI_SET = set((line.strip() for line in f2))

には 0 と 1 ではなくTrueandを使用します。Falseskip

メインループを次のようにやり直します。

in_accession_ids = False
for line in f1:
    if line[0] == '>':
        _splitline = line.split('|')
        accessorIDWithArrow = _splitline[0]
        accessorID = accessorIDWithArrow[1:5]
        # print accessorID
        in_accession_ids = accessorID in AI_SET
    if in_accession_ids:
        f3.write(line)

ロジックはこの方法でもう少し明白だと思います。また、skip = 0元の、またはin_accession_ids=True私のものから始めると、最初のシーケンスヘッダーを見つける前にすべてを印刷することになります。それはあなたが望むかもしれませんが、そうではないかもしれません-私は私の書き直しではないと仮定しました。

最終的には Biopython コレクションを調べたくなるかもしれません。この特定のタスクにはやり過ぎですが、全体的には非常に優れています。とりわけ、FASTA ファイルおよび関連フォーマットを読み取るための多くのツール。

http://biopython.org/wiki/Biopython

于 2013-08-07T22:18:34.117 に答える