Обычный файл fasta с длиной чтения 120 nt: 'single_mapped.fa'
Файл CSV содержит 10000 20-метров и счетчик для каждого 20-метрового: '20frequent_20mers.txt', например так:
AAAAAGTATAGGAGATAGAA 35
AAAAATAGGAGGACTATTCA 26
AAAAATAGGAGGACTATTTA 24
AAAAATAGGAGGCCTATTCA 62
Я хочу просмотреть файл single_mapped.fa, рассчитать накопленные значения всех 20-метров в 20frequent_20mers.txt для каждого чтения, то есть для чтения:
AAAAAGTATAGGAGATAGAA AAAAATAGGAGGACTATTCA, Iхочу иметь 61 (35 + 26)
мой код:
file2 = open('20frequent_20mers.txt','r')
kmer_list = csv.reader(file2, delimiter='\t')
for seq_record in SeqIO.parse("single_mapped.fa", "fasta"):
print(seq_record.id)
score_fre = 0
sequence_string = str(seq_record.seq)
for i in range(0,101):
seq = sequence_string[i:i+20]
for row in kmer_list:
if row[0] == seq:
score_fre = score_fre + int(row[1])
print(score_fre)
Каждый цикл работает хорошо, когда я запускаю их отдельно, но не работал, как указано выше, кто-нибудь может сказать мне, гдеошибки от?или если есть более умный и эффективный способ сделать это?Заранее спасибо!