1

シーケンスの先頭に 17 bp のプライマーを含む fasta 形式のシーケンスがあります。また、プライマーにはミスマッチがある場合があります。したがって、fasta ヘッダーを除いて、シーケンスの最初の 17 文字を削除したいと考えています。

シーケンスは次のようになります。

> name_name_number_etc
SEQUENCEFOLLOWSHERE
> name_number_etc
SEQUENCEFOLLOWSHERE
> name_name_number_etc
SEQUENCEFOLLOWSHERE

Pythonでこれを行うにはどうすればよいですか?

ありがとう!ジョン

4

4 に答える 4

1
with open('fasta_file') as f:
    for line in f:
        if not line.startswith('>'):
            print line[17:]
于 2009-11-03T14:31:11.840 に答える
1

私の理解が正しければ、潜在的な複数行配列の最初の 17 文字からのみプライマーを削除する必要があります。あなたが求めるものはもう少し難しいです。はい、簡単な解決策はありますが、状況によっては失敗する可能性があります。

私の提案は、 Biopythonを使用して FASTA ファイルの解析を実行することです。チュートリアルからそのまま

from Bio import SeqIO
handle = open("ls_orchid.fasta")
for seq_record in SeqIO.parse(handle, "fasta") :
    print seq_record.id
    print repr(seq_record.seq)
    print len(seq_record)
handle.close()

次に、最初の 17 文字を削除してシーケンスを書き直します。私の現在のマシンには biopython がインストールされていませんが、チュートリアルを見ると、合計で 15 行以上のコードは必要ありません。

筋金入りで手動でやりたい場合は、次のようにする必要があります(最初のポスターから変更)

f = open('sequence.fsa')

first_line = False
for line in f.xreadlines():
    if line[0] == ">":
        first_line=True
        print line,
    else:
        if first_line:
             print line[17:],
        else:
             print line,
        first_line = False
于 2009-11-03T14:39:35.030 に答える
0

ファイルが次のようになっている場合

>MCHU - Calmodulin - Human, rabbit, bovine, rat, and chicken
ADQLTEEQIAEFKEAFSLFDKDGDGTITTKELGTVMRSLGQNPTEAELQDMINEVDADGNGTID
FPEFLTMMARKMKDTDSEEEIREAFRVFDKDGNGYISAAELRHVMTNLGEKLTDEEVDEMIREA
DIDGDGQVNYEEFVQMMTAK*

すべてのシーケンス行の最初の 17 文字を削除するには、次のようにします。

f = open('sequence.txt')

for line in f.xreadlines():
    if line.find('>') < 0:
        print line.strip()[17:]
于 2009-11-03T13:42:20.030 に答える