Я хотел бы получить последовательности в соответствии с файлом кровати B.bed, которые содержат информацию о координатах последовательностей, сопоставив координаты с файлом fasta, который является A.fasta, и получить соответствующие последовательности в соответствии с файлом B.bed. Файл Fasta представляет собой обычный файл с идентификатором последовательности, за которым следуют его нуклеотиды ATCG. Но я получаю ключевую ошибку ниже. Может кто-нибудь мне помочь?
from Bio import SeqIO
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
from collections import defaultdict
# read names and postions from bed file
positions = defaultdict(list)
with open('B.bed') as f:
for line in f:
name, start, stop = line.split()
positions[name].append((int(start), int(stop)))
# parse faste file and turn into dictionary
records = SeqIO.to_dict(SeqIO.parse(open('A.fasta'), 'fasta'))
# search for short sequences
short_seq_records = []
for name in positions:
for (start, stop) in positions[name]:
long_seq_record = records[name]
long_seq = long_seq_record.seq
alphabet = long_seq.alphabet
short_seq = str(long_seq)[start-1:stop]
short_seq_record =SeqRecord(Seq(name))+ '\t'+str(start)+'\t'+str(stop)+'\t' + SeqRecord(Seq(short_seq, alphabet))
short_seq_records.append(short_seq_record)
# write to file
with open('C.fasta', 'w') as f:
SeqIO.write(short_seq_records,f, 'fasta')
А.фаста
>chr16:13361561-13361573
TAGTGGGTCAGAC
>chr6_apd_hap1:2165669-2165681
AGATGAGTCATCA
>chr10:112612173-112612185
AAGTGTGTCAGCT
B.bed
chr6_apd_hap1 2165668 2165681
chr10 112612172 112612185
Ожидаемый результат для C.fasta
>chr6_apd_hap1:2165669-2165681
AGATGAGTCATCA
>chr10:112612173-112612185
AAGTGTGTCAGCT
Но я получил ошибку ниже:
long_seq_record = records[name]
KeyError: 'chr6_apd_hap1'
records
? - person jonrsharpe   schedule 08.07.2015