Cómo imprimir 1000 nuevas cadenas con un elemento sustituido basado en una cadena de 1000 símbolos.
Aquí hay un poco de biología molecular.
Así que necesito generar 1000 secuencias mutantes basadas en una secuencia primaria de 1000 nucleótidos. Cada secuencia mutante siguiente debe tener un nucleótido aleatorio cambiado a uno de la misma clase (A a G y viceversa; T a C y viceversa) en comparación con la secuencia precedente. Además, se debe utilizar random.randint y random.seed(1).
Esto es lo que tengo hasta ahora:
import random
<h1>A continuación se muestra la secuencia inicial</h1>
seq = 'CGCCTGTAATCCCAGCACTCTGGGAGGCAGAGGTGGGCCGATCACTTGAGGTCAGGAGTTCGAGACCAGCCTGGGCAACATGGTGAAACACCATCTCTACTAAAAACACAAAAATTAGCCAGGTGTGGTGGCAGGCACCTGCAGTCCCAGCTACTCCGGAGGCTGAGGCAGGAGAATTGCTCGAACCTGGGAGGCAGGGGTTGCAGTGAGCCGACATGGCGCCACTGCACTCCAGTCTGGGCGACAGAGTGAGACCCTATCTCAAAAAAAAAAAAAAAAAAAAAAGACCCAACTCAAGTATCATCTCCAGGAAGCCTTCCCCTACTCCCAGCAATTAAATGCTCCTCAGAGAATTCCCATTTTTGGTTTACTCTTTGGTTTACCTCCAGACAGGAAGCCCCCACTGACACTGTTGTAGTCCCAGGGTGCAACACAAAGCAGAGATCACAAGCTGAGTTTAATAATTGCTTGTGGAATACATGTCCCAAGCCACCTCCTGCAGGAAGCCCTTCCAGATGCCCATTCTAGCCAGTCTGGCTCTTTGCTTCCATACCTTCACAACACTTGTGCCTCCCCCAGGGCCTCTTTCTCATCTTGCTTTCTGGGGCAGCTGTGTGCACATTTGTCTGTGTGCAGCAACTCTCTAAGGCAGGGATTTTTACTCCTATTTTTGATGAGGGGAGCTGTGGCTCAGAGAGGTTGAATAACCTAAGGCCACACAGTGAGTGGCAGAGCCAGGAATGTGACTTGGGTCCATTTGAATCCAAAGTCCCTGTACTTTCCACTGCCCTACCTAGATGTCCCTGTACCTCCTATAAAATCAGCATGGAGCCTGGTGCCTGGTAGTCCCTACAAATATTCACAAATTGGAGCTTAGCTCAGCTCTCAGGCAAGGCCCAGGTCAAAAGGGCAGATACAGCTTTGGGACCTTAGTTGCCACCACATGCCATACCTTCTTCCCAGCAGAAGGACTCCCTCCAAGACAGGGTAGGGGTGGAGG'
n = 0
while n <= 1000: # configurando un ciclo para 1000 mutaciones
i = random.randint(0, 1001) # eligiendo un nucleótido aleatorio para cambiar
if seq[i] == 'A':
print(seq.replace('A', 'G', 1)) # el tercer argumento debería mostrar cuántas veces se debe cambiar un nucleótido, pero no funciona por alguna razón
elif seq[i] == 'G':
print(seq.replace('G', 'A', 1))
elif seq[i] == 'C':
print(seq.replace('C', 'T', 1))
elif seq[i] == 'T':
print(seq.replace('T', 'C', 1))
n = n + 1
Los principales problemas con los que me he encontrado son hacer que el programa genere nuevas mutaciones basadas en la secuencia anterior, no en la secuencia original y solo substituir un nucleótido.
davy.ai
Para generar 1000 secuencias mutantes basadas en una secuencia primaria de 1000 nucleótidos con un nucleótido aleatorio cambiado a uno de la misma clase (A a G y viceversa; T a C y viceversa), se puede usar el siguiente código:
En este código,
random.seed(1)
establece la semilla aleatoria para asegurarse de que se generen la misma secuencia de números aleatorios cada vez que se ejecuta el programa. La listamutants
se inicializa con la secuencia original, y un buclefor
se utiliza para generar 1000 secuencias mutantes.En cada iteración del bucle, la variable
prev_seq
se establece como la secuencia mutante más reciente generada (inicialmente la secuencia originalseq
). Se selecciona un nucleótido aleatorio enprev_seq
usandorandom.randint
, y se selecciona un nuevo nucleótido de la misma clase usandorandom.choice
. Finalmente, se crea la nueva secuencia mutante reemplazando un nucleótido enprev_seq
con el nucleótido recién seleccionado.Cada nueva secuencia mutante se agrega a la lista
mutants
usando.append()
. La lista resultantemutants
contendrá 1000 secuencias, cada una con un nucleótido aleatorio cambiado a uno de la misma clase en comparación con la secuencia precedente.