1

clustal やその他の一般的な複数配列アラインメント ツールによって出力される形式のように、異なる配列からの行が散在している複数配列アラインメント ファイルがあります。次のようになります。

TGFb3_human_used_for_docking        ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPY
tr|B3KVH9|B3KVH9_HUMAN              ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPY
tr|G3UBH9|G3UBH9_LOXAF              ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPY
tr|G3WTJ4|G3WTJ4_SARHA              ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPY


TGFb3_human_used_for_docking        LRSADTTHST-
tr|B3KVH9|B3KVH9_HUMAN              LRSADTTHST-
tr|G3UBH9|G3UBH9_LOXAF              LRSTDTTHST-
tr|G3WTJ4|G3WTJ4_SARHA              LRSADTTHST-

各行はシーケンス ID で始まり、次に一連の文字 (この場合はタンパク質のアミノ酸配列を記述) で始まります。各シーケンスは複数の行に分割されているため、最初のシーケンス ( ID をTGFb3_human_used_for_docking持つ) には 2 つの行があることがわかります。これを、次のように、各シーケンスが 1 行で構成される形式に変換したいと考えています。

TGFb3_human_used_for_docking        ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPYLRSADTTHST-
tr|B3KVH9|B3KVH9_HUMAN              ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPYLRSADTTHST-
tr|G3UBH9|G3UBH9_LOXAF              ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPYLRSTDTTHST-
tr|G3WTJ4|G3WTJ4_SARHA              ALDTNYCFRNLEENCCVRPLYIDFRQDLGWKWVHEPKGYYANFCSGPCPYLRSADTTHST-      

(この特定の例では、シーケンスはほとんど同じですが、一般的にはそうではありません!)

複数行の複数配列アラインメント形式から単一行に変換するにはどうすればよいですか?

4

1 に答える 1

0

これを実現するには、何らかのスクリプトを作成する必要があるようです。Python で書いた簡単な例を次に示します。あなたの例のように空白をきれいに並べることはできません(それが気になる場合は、フォーマットをいじる必要があります)が、残りの作業は完了します

#Create a dictionary to accumulate full sequences
full_sequences = {}

#Loop through original file (replace test.txt with your file name)
#and add each line to the appropriate dictionary entry
with open("test.txt") as infile:
    for line in infile:
        line = [element.strip() for element in line.split()]
        if len(line) < 2:
            continue
        full_sequences[line[0]] = full_sequences.get(line[0], "") + line[1]

#Now loop through the dictionary and write each entry as a single line
outstr = ""
with open("test.txt", "w") as outfile:
    for seq in full_sequences:
        outstr += seq + "\t\t" + full_sequences[seq] + "\n"

    outfile.write(outstr)
于 2015-05-10T04:02:29.217 に答える