Мне нужно написать функцию, которая принимает имя файла (файл fasta) в качестве аргумента, считывает последовательности и для каждой однозначной последовательности печатает идентификатор последовательности и ее молекулярный вес. Файлы fasta содержат как неоднозначные, так и однозначные последовательности.
Пока у меня есть эти два фрагмента кода, которые работают по отдельности. Я не знаю, как пропустить неоднозначные последовательности в файле fasta и вычислить молекулярную массу только для однозначных последовательностей. Очевидно, если я попробую, это приведет к ошибке, потому что я ввел только значения ACGT, а не двусмысленные. Может ли кто-нибудь помочь мне понять, как пропустить эти последовательности? Спасибо!
Кроме того, я не понимаю, как объединить их в одну функцию, я пробовал сделать 2 цикла for для одной функции, но это всегда дает ошибки. Я думаю, мне придется изменить аргумент функции calc_mol_weight, чтобы он соответствовал указанным выше seq_records, но я не понимаю, как именно сделать их совместимыми.
seq_records = SeqIO.parse('short.fasta', 'fasta', alphabet=generic_dna)
seq_record_list = list(seq_records)
for seq_rec in seq_record_list:
print(f'{seq_rec.id}')
def calc_mol_weight(sequence):
mol_weight = 0.0
nucleotide_weights = {'A':331.2218, 'T':322.2085, 'C':307.1971, 'G':347.2212}
for nucl in sequence:
mol_weight += nucleotide_weights[nucl]
return mol_weight
Для справки - short.fasta:
>seq_7009 random sequence
DGRGGGWAVCVAACGTTGAT
>seq_418 random sequence
GAGCTGVTATST
>seq_9143_unamb random sequence
ACCGTTAAGCCTTAG
>seq_2888 random sequence
RVCCWDGARATAGBCGC
>seq_1101 random sequence
CSAATGYGATNBTA
>seq_107 random sequence
WGDGHGCDCTYANGTTWCA
>seq_6946 random sequence
TCVMBRAGRSGTCCAWA
>seq_6162 random sequence
YWBGCKTGCCAAGCGCDG
>seq_504 random sequence
ADDTAACCCTCTTKA
>seq_3535 random sequence
KKGTACACCAG
>seq_4077 random sequence
SRWSCRTTRVAGDCC
> seq_1626_unamb random sequence
GGATATTACCTA
K
, то как мы должны рассчитать вес? - person Willem Van Onsem   schedule 22.12.2017