Error en la función Bio.SeqUtils.molecular_weight() para imprimir secuencias dentro de un intervalo de peso molecular.
Estoy tratando de crear una función en Python que dado una secuencia (no) ambigua y un intervalo de peso molecular, devuelve una lista de todas las secuencias no ambiguas representadas por la secuencia.
He intentado esto con el siguiente código:
def extend_ambiguous_dna(file_name, mw_min, mw_max):
with open(file_name) as seq_file:
for record in SeqIO.parse(seq_file, "fasta"):
d = Seq.IUPACData.ambiguous_dna_values
mol_weight = Bio.SeqUtils.molecular_weight(record.seq)
for mol_weight in range(mw_min, mw_max):
print(list(map("".join, product(*map(d.get, record)))))
extend_ambiguous_dna('short.fasta')
Cuando ejecuto esto, obtengo este error para la función molecular_weight: ‘D’ no es una letra válida y no ambigua para el ADN.
Este es mi archivo fasta llamado ‘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
Soy nuevo en Python, pero espero que alguien pueda ayudarme.
davy.ai
Parece que el problema es que la función molecular_weight del módulo Bio.SeqUtils no admite letras ambiguas de ADN como “D” (que representa tanto A, G o T).
Para solucionar esto, podrías modificar tu código para reemplazar cualquier letra ambigua por sus equivalentes no ambiguos antes de calcular el peso molecular. Por ejemplo:
En este código modificado, cualquier letra ambigua de ADN se reemplaza por “N” utilizando una expresión regular antes de calcular el peso molecular. Luego, se generan las secuencias no ambiguas a partir de la secuencia ambigua original.
Nota que también agregué una verificación para imprimir la lista de secuencias no ambiguas solo si el peso molecular calculado se encuentra dentro del intervalo dado.