Ejercicio: 1Eva_IT2018_T1 Busca especie con ADN
Propuesta de solución en Python:
primero se obtiene una secuencia del listado
i = 0 secuencia = Listado[i]
Para obtener la inversa se empieza copiando desde el último caracter de la secuencia con índice j=m-1, siendo m la cantidad de caracteres de la secuencia.
# calcula la inversa m = len(secuencia) inversa = '' j = m-1 while not(j<0): inversa = inversa + secuencia[j] j = j-1
el resultado esperado es:
las secuencias que pertenecen son: 1 Secuencia: ATTTGCTTGCTATTTAAACCGGTTATGCATAGCGC indices de inversa: [0, 2, 7, 25, 29] >>>
El análisis se realiza en dos partes: desde j=0 hasta mitad = m//2. Luego desde la mitad hasta m.
Al comparar la referencia con una sección de la inversa, se pueden almacenar los índices de la coincidencia en otra lista.
Algoritmo en Python
# CCPG1001 Fundamentos de Programación FIEC-ESPOL # 1Eva_IT2018_T1 Busca especie con ADN # propuesta de solución: edelros@espol.edu.ec # INGRESO Listado = ['ATTTGCTTGCTATTTAAACCGGTTATGCATAGCGC', 'ATTAGCCGCTATCGA'] Referencia = 'CG' # PROCEDIMIENTO n = len(Listado) tref = len(Referencia) pertenece = [] i = 0 while not(i>=1): secuencia = Listado[i] indices = [] # calcula la inversa m = len(secuencia) inversa = '' j = m-1 while not(j<0): inversa = inversa + secuencia[j] j = j-1 # Analiza las partes, mitad mitad = m//2 veces1 = 0 veces2 = 0 j = 0 # primera mitad while not(j>=mitad): seccion = inversa[j:j+tref] if (seccion == Referencia): veces1 = veces1 + 1 indices.append(j) j = j + 1 j = mitad # segunda mitad while not(j>=m): seccion = inversa[j:j+tref] if (seccion == Referencia): veces2 = veces2 + 1 indices.append(j) j = j + 1 # Revisa si pertenece a especie total = veces1 + veces2 if (veces2==2 and total>=4): pertenece.append([secuencia, indices]) # siguiente secuencia de listado i = i + 1 # SALIDA # print(pertenece) tp = len(pertenece) print('las secuencias que pertenecen son: ', tp) i = 0 while not(i>=tp): print('Secuencia: ',pertenece[i][0]) print('indices de inversa:',pertenece[i][1]) i = i + 1
Tarea: Convertir a funciones las secciones de:
– Inversa de la secuencia creainversa(secuencia)
– Conteo de referencias en mitades de secuencia cuentareferencia(mitadsecuencia)
– Crear vector de índices donde se encuentra la referencia entregaindices(inversa)