- Apellido y Nombre: CRUZ , Hiro Julian
- Legajo: 51517
- DNI:41699553
- Email: [email protected]
El programa permite detectar secuencias de ADN de Mutantes y identificar si hay precensia de alguno. Se tienen encuenta los siguientes aspectos:
- La secunecia de ADN contiene 6 secuencias de 6 Bases Nitrogenadas cada una con los siguientes caracteres: A, T, C y G.
- El usuario ingresa las secuencias por fila.
- Se detecta un mutante cuando hay mas de dos secuencias de Bases nitrogenadas iguales consecutivas ("AAAA","TTTT","GGGG","CCCC"), pueden encuntrarse de modo oblicuo, vertical u horizontal.
Nota: Se le coloco coleres al programa(Con sintaxis "ANSI escape sequences") para una mejor visualización. Esta edición no es compatible con todas las consolas, para este caso se hizo uso de Visual Studio Code, el cual no presento ningun inconveniente.
-
Se crea una clase MUTANTES y se la llama para dar inicio a la aplicación: Creamos la clase:
class MUTANTES:
Invocamos a la clase al final de codigo:
Mutantes = MUTANTES()
-
Creamos una función de inicio de la aplicación, el cual contiene el cuerpo del codigo: Incio:
def __init__(self) -> None:
Tambien se crea la función:
def isMutant(self,DNA) -> bool:
La cual es la parte esencial del codigo, ya que nos determinar si es mutante.
-
Para la solicitud de la secuencia de ADN(Debe ingresar un string con las letras:A,T,C,G y de tamaño:6), al usuario se le indicas las propiedades de este:
Ingrese [1] DNA de la persona [Letras:A,T,C,G] | [Tamaño:6]:
-
Mediante la siguiente función se verifica que el string ingresado por el usuario cumpla los requisitos:
def VerificacionCondicionesString(self) -> list:
Hacemos uso de otras funciones para particionar el funcionamiento de la funcion:
Verifica el largo de la cadena:
def VerificacionDeLargoCadena(self,texto:str,tamanio:int) -> str:
Convierte el string en una lista de char:
def SepararLetras(self,texto:str) -> list:
Verifica que las letras ingresadas sean las correspondientes:
def VerificacionDeLetras(self,texto:str) -> bool:
Nota: El programa esta realizado para que no diferencie entre mayúsculas y minúsculas. También cuenta con errores que indican que condición no se esta cumpliendo.
-
Construcción de una matriz:
def CrearMatriz(self, DNA) -> list:
Para una mejor visualización para el usuario se creo la función:
def MostrarValoresMatriz(self,MATRIZ) -> None:
Esto permite visualizar la matriz de la siguiente forma:
[ A , T , A , T , A , T]
[ G , A , G , A , G , A]
[ C , C , C , C , C , C]
[ T , A , T , A , C , G]
[ A , G , T , C , A , T]
[ A , C , C , A , T , G]
-
Para realizar un recorrido por la matriz y buscar secuencias de 4 bases nitrogenadas consecutivas iguales se utilizan las siguientes 4 funciones: Recorrido Horizontal:
def RecorrerHorizontal(self,MATRIZ) -> list:
Recorrido Vertical:
def RecorrerVertical(self,MATRIZ) -> list:
Recorrido Oblicuo(de izquierda a derecha desde el extemo inferior):
def RecorrerOblicuamenteIDI(self,MATRIZ) -> list:
Recorrido Oblicuo(de derecha a izquierda desde el extemo inferior):
def RecorrerOblicuamenteDII(self,MATRIZ) -> list:
-
Se realiza el conteo de conincidencias, para verificar si se cumplen las condiciones, haciendo uso de la función:
def ContadorPalabrasContenidasListas(self,Registro, Palabras) -> int:
-
Finalmente la función "isMutant" determinara si la persona es mutante y el programa mostrara el resultado. Tambien se indicara si se desea ejecutar nuevamente el programa o finalizar con la busqueda.
Se puede clonar el repositorio:
gh repo clone xHJCXDx/Programacion_Parcial_2
Otra manera es acceder al siguiente enlace y descargarlo.
Ingrese [1] DNA de la persona [Letras:A,T,C,G] | [Tamaño:6] : atatat
Ingrese [2] DNA de la persona [Letras:A,T,C,G] | [Tamaño:6] : gagaga
Ingrese [3] DNA de la persona [Letras:A,T,C,G] | [Tamaño:6] : cccccc
Ingrese [4] DNA de la persona [Letras:A,T,C,G] | [Tamaño:6] : tatacg
Ingrese [5] DNA de la persona [Letras:A,T,C,G] | [Tamaño:6] : agtcat
Ingrese [6] DNA de la persona [Letras:A,T,C,G] | [Tamaño:6] : accatg
DNA INGRESADOS: DNA[0]: ATATAT
DNA[1]: GAGAGA
DNA[2]: CCCCCC
DNA[3]: TATACG
DNA[4]: AGTCAT
DNA[5]: ACCATG
[ A , T , A , T , A , T]
[ G , A , G , A , G , A]
[ C , C , C , C , C , C]
[ T , A , T , A , C , G]
[ A , G , T , C , A , T]
[ A , C , C , A , T , G]
Es mutante? SI
¿Quiere verificar otra secuencia?
n
PROGRAMA FINALIZADO
Ingrese [1] DNA de la persona [Letras:A,T,C,G] | [Tamaño:6] : atgatc
Ingrese [2] DNA de la persona [Letras:A,T,C,G] | [Tamaño:6] : atcgat
Ingrese [3] DNA de la persona [Letras:A,T,C,G] | [Tamaño:6] : cgatca
Ingrese [4] DNA de la persona [Letras:A,T,C,G] | [Tamaño:6] : atcgac
Ingrese [5] DNA de la persona [Letras:A,T,C,G] | [Tamaño:6] : actacg
Ingrese [6] DNA de la persona [Letras:A,T,C,G] | [Tamaño:6] : actagc
DNA INGRESADOS:
DNA[0]: ATGATC
DNA[1]: ATCGAT
DNA[2]: CGATCA
DNA[3]: ATCGAC
DNA[4]: ACTACG
DNA[5]: ACTAGC
[ A , T , G , A , T , C]
[ A , T , C , G , A , T]
[ C , G , A , T , C , A]
[ A , T , C , G , A , C]
[ A , C , T , A , C , G]
[ A , C , T , A , G , C]
Es mutante? NO
¿Quiere verificar otra secuencia?
n
PROGRAMA FINALIZADO