次のスクリプトを使用して大きなfastaファイルから特定のfastaシーケンスを抽出したいが、出力は空です。大きなfastaファイルから特定のfastaシーケンスを抽出する
transcripts.txt
ファイルには、assembly.fasta
からselected_transcripts.fasta
にエクスポートしたいリスト転写物ID(IDとシーケンスの両方)が含まれています。例えば :
- transcripts.txt:
Transcript_00004|5601 Transcript_00005|5352
- assembly.fasta:
>Transcripts_00004|5601
:>Transcript_00004|5601 GATCTGGCGCTGAGCTGGGTGCTGATCGACCCGGCGTCCGGCCGCTCCGTGAACGCCTCGAGTCGGCGCCCGGTGTGCGTTGACCGGAGATCGCGATCTGGGGAGACCGTCGTGCGGTT >Transcript_00004|5360 CGATCTGGCGCTGAGCTGGGTGCTGATCGACCCGGCGTCCGGCCGCTCCGTGAACGCCTCGAGTCGGCGCCCGGTGTGCGTTGACCGGAGATCGCGATCTGGGGAGACCGTCGTGCGGTT
IDは>
記号によって先行されます。
assembly.fasta
における転写産物IDがtranscripts.txt
でその書き込みのと同じである場合、私は、assembly.fasta
ファイルを読み込む必要があり、私はselected_transcripts.fasta
で、この転写産物IDとその順序を記述する必要があります。上記の例では、最初のトランスクリプトのみを書く必要があります。
提案がありますか?おかげさまで
from Bio import SeqIO
my_list = [line.split(',') for line in open("/home/universita/transcripts.txt")]
fin = open('/home/universita/assembly.fasta', 'r')
fout = open('/home/universita/selected_transcripts.fasta', 'w')
for record in SeqIO.parse(fin,'fasta'):
for item in my_list:
if item == record.id:
fout.write(">" + record.id + "\n")
fout.write(record.seq + "\n")
fin.close()
fout.close()
https://www.biostars.org/p/68718/ – Pierre
あなたの質問を編集し、 'transcripts.txt'と' assembly.fasta'の一部を含めることができますか?データを扱うには? – MattDMo
各コロンの後にトランスクリプト行を分割しますが、スペース区切りです。それは目的ですか? –