GYM BIO PYTHON
Este es un conjunto de ejercicios orientados al trabajo con información biológica; en particular, ejercicios básicos orientados a la bioinformática para ser resueltos en Python.
Estos ejercicios le permitirán conocer mejor los objetos y sus servicios, para poder aprovechar dichos servicios dentro de su código, de tal modo que aproveche mejor los servicios disponibles.
Estos ejercicios son útiles para cualquier persona que quiera empezar a conocer mejor a Python, ambientados para bioinformártica.
Use el ambiente más conveniente para resolver los ejercicios. Parte de las habilidades de programación, es determinar el ambiente adecuado de trabajo.
NOTA: estos ejercicios no representan la realidad del trabajo de un bioinformático, y se trata meramente de adquirir habilidades en el lenguaje Python.
Estos ejercicios le permitirán conocer mejor los objetos y sus servicios, para poder aprovechar dichos servicios dentro de su código, de tal modo que aproveche mejor los servicios disponibles.
Estos ejercicios son útiles para cualquier persona que quiera empezar a conocer mejor a Python, ambientados para bioinformártica.
Use el ambiente más conveniente para resolver los ejercicios. Parte de las habilidades de programación, es determinar el ambiente adecuado de trabajo.
NOTA: estos ejercicios no representan la realidad del trabajo de un bioinformático, y se trata meramente de adquirir habilidades en el lenguaje Python.
Reconocimiento de Ambientes
- Si no la tiene, cree una cuenta gratis en el entorno online http://Repl.it
- Conéctese a su cuenta replit. Use el botón [+ Create] para crear un nuevo repl, e indique que trabajará en Python. Si nunca ha trabajado en Python, es una buena forma de para comenzar a hacer sus primeros avances en el lenguaje.
Un replit es en realidad una carpeta en la que puedes almacenar todos tus archivos de proyecto.
En replit encontrará muchas posibilidades para comenzar su proceso de aprendizaje. Si es la primera vez que ingresa con su cuenta, siga la tutoría de arranque que le explica el entorno de trabajo. Verá lo interesante que es esta plataforma, incluso en su versión gratis. Es de los mejores ambientes de trabajo ONLINE, y si lo único que quiere hacer es aprender las bases de trabajo en un lenguaje, es un ambiente ideal. - Cree una cuenta gratis en el entorno online PythonAnywhere. Dicho entorno le permitirá crear programas Python en una forma bastante sencilla. Note que sólo le ofrece Python. Brinda también la posibilidad de abrir consolas del sistema para trabajar directamente desde allí. Busque en google pythonanywhere, o vaya a https://www.pythonanywhere.com/
- Estando en la línea de comandos del sistema operativo, escriba python3 y pulse enter. -Si no le sacó error, usted ahora está al interior de una consola de Python. ¿Qué versión le aparece? Si su versión es inferior a 3.10, puede instalar la versión 3.10+ para estar al día con con todas las características del lenguaje.
- Busque y descargue el editor Visual Studio Code. Este ambiente de programación es muy poderoso, y en él podrá trabajar en prácticamente cualquier lenguaje. Experimente con el entorno, ya que posiblemente tenga a la mano un arma letal de gran poder.
- Si ya no tiene una, cree una cuenta en Google. Google Colaboratory es una muy buena herramienta para trabajo online con Python. Aunque su foco es Jupyter, podrá trabajar perfectamente código Python en el editor alternativo de código, con acceso a una inmensa cantidad de librerías. También podrá conectarse a Google Drive donde podrá tener todos sus datos, código, etc. Todo su código correrá en el servidor usando las cpu y gpu de los servidores de Google.
Estando conectado en su cuenta de Google, busque Google Colaboratory, y vaya al enlace que lo llevará a su repositorio de documentos de programación. - Es bueno reconocer con qué versión de Python estará trabajando sus programas o scripts durante el aprendizaje con este libro. Eso se debe a que se asume que si versión es 3.8+, y de no serlo, algunos ejercicios podrían no funcionar.
- Por tal motivo, vaya a la ventana de comandos de Python, sea en replit o en su computador, y escriba lo siguiente:
>>> import sys ; sys.version
Deberá aparecer algo similar a:
'3.11.4 (v3.11.4:d2340ef257, Jun 6 2023, 19:15:51) [Clang 13.0.0 (clang-1300.0.29.30)]'
El primer número que aparece es la versión. Identifique cuál es la suya. Y téngala en cuenta para futuras referencias. Prefiera versiones superiores a 3.8.0. - He aquí su primer truco en Python. Listar las palabras reservadas. Las palabras reservadas son aquellas exclusivas del lenguaje. Siga los siguientes pasos y al final de cada comando pulse la tecla Enter.
>>> from keyword import kwlist; kwlist
Luego de pulsar la tecla Enter, obtendrá la siguiente lista:}
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
El total de palabras reservadas puede ser consultado escribiendo:
>>> len(kwlist)
35
La versión del lenguaje python que se presenta, muestra 35 palabras reservadas. Es probable que no use todas las palabras. - He aquí otra consulta. Obtener la lista de los operadores y delimitadores de la versión que actualmente está usted usando en python
- >>> from inspect import *
>>> token.__dict__['EXACT_TOKEN_TYPES'].keys()
['!=', '%', '%=', '&', '&=', '(', ')', '*', '**', '**=', '*=', '+', '+=', ',', '-', '-=', '->', '.', '...', '/', '//', '//=', '/=', ':', ':=', ';', '<', '<<', '<<=', '<=', '=', '==', '>', '>=', '>>', '>>=', '@', '@=', '[', ']', '^', '^=', '{', '|', '|=', '}', '~']
El total de operadores y delimitadores puede ser consultado escribiendo
>>>len(_)
47
En realidad, se trata de una lista incompleta, ya que no presenta sino operadores y delimitadores representados por caracteres especiales.
Los operadores lógicos and, or y not no aparecen representados. - las funciones de ayuda que cargan automáticamente, son funciones del objeto __builtins__.
Escriba el siguiente comando, que lista los nombres de los servicios conocidos como helpers, que facilitan la escritura de algunas funciones:
>>> [f for f in dir(__builtins__) if f.islower()]
['__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
Todas las funciones que se ven, no necesitan objeto para ser invocadas, ya que Python lo hace por nosotros porque los busca en el objeto __builtins__.
¿Cómo funcionan?
Por ejemplo,l si usted necsita calcular el tamaño de una string, usted debe usar el servicio __len__( ) del objeto str, así:
>>>"aaaaggtgtgtgagtgggcccgggttaaa".__len__()
29
pero como hay un helper len() dentr de __builtins__, esa función se encarga de hacer el llamado a .__len__():
>>>len("aaaaggtgtgtgagtgggcccgggttaaa")
29
Ambas son equivalentes.
Tipos Nativos Simples |
LLEVE A CABO LOS SIGUIENTES EJERCICIOS USANDO ÚNICA Y EXCLUSIVAMENTE UNA CONSOLA PYTHON.
|
- Cree una variable entera, una real, una string, y una booleana con los valores que desee.
-Consulte el tipo de las variables usando type() y compruebe que lo hizo bien.
-Consulte la estructura interna de las variables con el comando dir().
-Intente establecer diferencias sobre las clases. - Cree una variable que contenga una lista con 3 valores de tipo: real, entero, string y booleano y presente la variable para verificar cómo quedó la lista.
-Extraiga de la lista el primer elemento
-Pregunte por el tipo del tercer elemento
-Modifique el cuarto elemento por otro del mismo tipo y presente la variable para verificar cómo quedó la lista.
TIP: para crear una lista use corchetes, y los elementos sepárelos con coma. [,,,]. Para acceder un elemento use [] o __getitem__. para indagar tipos, use type() - Cree una variable que contenga una tupla con 4 valores de tipo: real, entero, string y booleano y presente la variable para verificar cómo quedó la tupla.
-Extraiga de la tupla el primer elemento de la tupla.
-Pregunte por el tipo del tercer elemento de la tupla.
-Modifique el cuarto elemento por otro del mismo tipo. ¿Qué pasa?
TIP: para crear una tupla use paréntesis, y los elementos sepárelos con coma. (,,,). Para extraer elementos use el operador [], o el método __getitem__. - Cree una variable que contenga un conjunto, con 4 valores de tipo: real, entero, string y booleano y presente la variable para verificar cómo quedó el conjunto.
Cree otra variable que contenga otro conjunto, con 2 valores, donde uno de ellos ya existe en el conjunto anterior.
-Determine el conjunto intersección.
-Determine el conjunto unión.
-Determine la longitud del conjunto intersección.
-Determine la longitud del conjunto unión.
TIP: para creare un conjunto, primero cree un set con el constructor set(), por ejemplo, x = set(). Para adicionar un elemento a un set, use add(). Para las consultas use los métodos intersection, difference y union. Para alguna lonfgitud, use el helper len(). - Cree una variable que contenga un diccionario. El diccionario contendrá información de 4 números cualquiera de la siguiente manera: la clave son números enteros, y el valor asociado a cada clave es el nombre del número usando como clave(string). Por ejemplo, si usted elije usar la clave 30, el valor será la string “treinta”.
Presente la variable para comprobar el contenido.
Proceda con las siguientes acciones sobre el diccionario:
-Extraiga alguno de los valores usando alguna de las claves.
-Intente extraer un valor de una clave que no existe. ¿Qué pasa?
-Modifique uno de los elementos del diccionario y compruebe cómo quedó el diccionario.¿Cómo lo hizo?
TIP: para crear un diccionario, use llaves. Cada elemento es clave:valor. Ejemplo, {"clave":"valor", 1:"otra cosa",...} las claves pueden ser de cualquier tipo, y los valores también. Sin embargo, se recomienda que sean homogéneos. Para modificar un valor de un diccionario, use diccionario[key] = valor - Cree un diccionario con dos valores, cuyas claves son “ENT” y “REAL”. Use un valor entero para “ENT” y un valor float para “REAL”. A continuación, lleva a cabo las siguientes acciones:
Adicione al diccionario una nueva entrada con clave “S-INT” y cuyo valor sea una string que contenga un número entero.
Adicione al diccionario una nueva entrada con clave “S-FLOAT” y cuyo valor sea una cadena que contenga un número de punto flotante.
Convierta a entero la cadena con el número entero.
Convierta a flotante la cadena con el número entero.
Convierta a entero la cadena con el número flotante.
Convierta a flotante la cadena con el número real.
Adicione al diccionario una nueva entrada “BOOL” con valor booleano cualquiera.
Convierta la variable booleana a entero.
Cree una expresión que invierta el valor actual del valor booleano.
TIP: Para almacenar un valor, use diccionadio[clave]= valor. Para acceder un elemento, use diccionario[clave]. Por ejemplo, diccionario["ENT"] da como resultado el valor almacenado en "ENT". Para convertir un tipo a otro, use el constructor del tipo. Por ejemplo, para conveertir un entero a string, use str(). Ejemplo: str(8) es "8". Para invertir un valor booleano, use NOT. Por ejemplo, NOT True s False. - Cree una tupla de tres elementos. El primer elemento es un diccionario. El segundo elemento es otro diccionario. Cada uno de los diccionarios tiene dos claves con valor. El tercer elemento de la tupla contiene dos listas. La primera lista contiene tres elementos de números reales. La segunda lista en la tupla contiene un valor booleano, una string, y un número.
Luego de creada la estructura, consulte con una sola expresión la string, y con otra única expresión consulte el segundo valor del diccionario en la segunda posición.
TIP: Para crear una tupla, use paréntesis y colas para los elemento. (,,,). Para crear un diccionario, use llaves, y los elementos clave valor. {clave:valor, clave:valor,...}. Pra crear listas use corchetes y elementos separados por comas. [,,,]. - Construya un diccionario con tres elementos con claves 100, 200 y 300.
La primera clave, la 100, contiene un diccionario con las claves 110, 120, y 130, cada valor de elemento con strings vacías.
La entrada 200 tiene un diccionario con claves ‘A’ y ‘B’, cada entrada con dos listas, cada lista con dos elementos tupla de tres valores enteros cualquiera. Y la entrada 300, tiene el valor None. - Cree una tupla que contiene, en su orden, una lista de dos elementos, y una tupla de tres elementos. Compruebe si la suma de los dos primeros elementos de la lista, es mayor a la suma de los dos últimos elementos de la tupla. Use sólo una expresión.
Tip. Para acceder elementos de una tupla o una lista, use [] con la posición. Para sumar use + o use __add__, y para comparar si algo es mayor, use > o __gt__. - Construya expresiones Python para genera dos números aleatorios gaussianos, y determine la distancia numérica entre ellos. Para generar un número aleatorio gaussiano, use la fórmula de Box-Muller, r = sin(2 π v)(-2 ln u) ^ 1/2, donde v y u son números aleatorios entre 0 y 1. (Sedgewick et al., 2015, p.53)
Tips.
Para elevar a una potencia, en python use **. Ejemplo, 2**3 = 8.
Para generar números aleatorios en Python entre 0 y 1, use la librería random: import random
Para generar un número aleatorio entre 0 y 1, use random.random()
Para usar las funciones math.sin() y math.log(), use
import math. - Construya expresiones Python para convertir un punto de coordenadas (x,y) a coordenadas polares (r, q). Primero asigne valores a dos variables x,y. Importe la librería math, y calcule math.atan2(y, x), que computa el valor arcotangente de y/x, y que está en el rango -p a p. Finalmente encuentre r, a partir del teorema de Pitágoras.
(Sedgewick et al., 2015, p.53) - Construya la siguiente expresión usando solo métodos de objeto dunders y ejecútela para conocer el resultado. Luego compárelo con el resultado que le daría si usara la expresión directamente. Si no le dio igual, analice el porqué.
2 – 6 / 3 + 3 * 2 – 4 / 2 - Construya la cadena “¡Si!” a partir de los códigos de los caracteres individuales.
Tip: para averiguar los códigos, use la función ord() de los caracteres individuales. Para armar cada caracter a partir del código, use la función chr(). Para pegar los caracteres, use el operador +. - Extraiga de la cadena "1234567890" el primer caracter y el último.
Tip. Use los corchetes y la posición. - Extraiga el caracter '6' de la cadena "1234567890".
- Extraiga el tipo de dato del caracter '5' de la cadena “1234567890”.
- A partir de la cadena '5', obtenga la cadena “5555555555”.
Tip. Use el operador * de cadenas. - Dado el objeto range(-18909,23756,133), determine cuál es el valor en la posición 20
Tip. Un rango soporta también el operador de posición []. - Dado el objeto range(-19907,38751,129), determine si el valor 3829 se encuentra disponible.
Tip. La mejor forma es convertir a lista el rango usando el constructor list(). por ejemplo, list(range(1,10) da [1,2,3,4,5,6,7,8,9] - Use un slice para extraer de la cadena "ABCDE" la secuencia "ABC".
Tip. un slice es un pedazo. En python puede escribir cadena[comienzo:fin:pasos] - Use un slice para extraer de la cadena "ABCDE" la cadena "EDCBA".
Tip. Puede invertir una cadena con [::-1]. - Use un slice para extraer de la cadena "ABCDE" la cadena "EA".Use un slice para extraer de la cadena "ABCDE" la cadena "EB".
Tip. Puede recorrer al revés una cadena con [comienzo:fin:-pasos]. Los pasos son negativos. Si los pasos son -2, salta de a dos desde el final hacia el principio. - Asigne dos valores de cadena cualquiera a dos variables. Use dunders para determinar la longitud de las variables.
- Asigne strings a dos variables, y compare si las cadenas son iguales, usando el dunders.
- Asigne strings a dos variables, y sume la longitud de las cadenas usando solo dunders.
- Asigne strings a dos variables y pregunte si la longitud de una de las cadenas es menor a la longitud de la otra, todo usando solo dunders.
- Asigne strings a dos variables, y pregunte si las cadenas son diferentes usando dunders.
- Asigne un valor string a una variable, y extraiga algún carácter usando una función dunder.
- Asigne un valor string a una variable, y extraiga algún carácter usando corchetes.
- Cree una string cualquiera, y pregunte, usando alguno de los métodos, si la cadena está compuesta sólo por caracteres en minúscula, o sólo por caracteres en mayúscula.
- Cree una string cualquiera, y pregunte, usando alguno de los métodos, si la cadena está compuesta sólo por caracteres en minúscula, o sólo por caracteres en mayúscula.
Tip: para el or, puede usar el operador lógico or, o el método __or__. - Cree una string cualquiera, y pregunte, usando alguno de los métodos, si la cadena está compuesta sólo por letras.
- Cree una string cualquiera, y pregunte, usando alguno de los métodos, si la cadena está compuesta sólo por dígitos.
- Cree una string cualquiera que contiene letras en mayúscula y en minúscula. Luego usando alguno de los métodos de la cadena, pase todos los caracteres a mayúscula.
- Cree una string cualquiera que contiene letras en mayúscula y en minúscula. Luego usando alguno de los métodos de la cadena, pase todos los caracteres a minúscula.
- Cree una string cualquiera que contiene letras en mayúscula y en minúscula. Luego usando alguno de los métodos de la cadena, pregunte si todos los dígitos están en minúscula. Luego ajuste el contenido de la cadena para que el resultado sea True.
- Cree una string cualquiera que contiene letras en mayúscula y en minúscula. Luego usando alguno de los métodos de la cadena, pase sólo el primer caracter a mayuscula, y el resto que quede en minúscula.
- Cree una string cualquiera con las letras como las desee. Luego pregunte si todas las letras son mayúsculas, o si todas las letras son minúsculas. Para aplicar el operador OR, use un dunder.
- Cree dos string cualquiera con las letras como las desee. Luego pregunte si todas las letras son mayúsculas en ambas, o si todas las letras son minúsculas en ambas. Para aplicar el operador OR, use un dunder.
- Cree dos string cualquiera con las letras como las desee. Luego pregunte si una de las cadenas es toda minúscula, y la otra toda mayúscula. Ajuste los contenidos de las cadenas para obtener el valor True sin importar el orden del uso de las dos cadenas.
- Cree una cadena con un texto. Luego cree otra cadena con otro texto. Use los métodos de las cadenas para determinar si el texto de una cadena está dentro del texto la otra. Ajuste el contenido de las cadenas para que el resultado sea True.
- Cree una cadena con un texto. Use los métodos de las cadenas para determinar la posición específica de un carácter.
- Cree una cadena con un texto. Use los métodos de las cadenas para determinar la posición específica de la segunda ocurrencia de un caracter.
Tip. Use el método find, o el método index. - Cree una cadena con un texto. Use los métodos de las cadenas para determinar la posición específica de la primera ocurrencia de un carácter desde la derecha.
- Cree una cadena con un texto. Use los métodos de las cadenas para determinar la posición específica de la segunda ocurrencia de un carácter desde la derecha.
- Cree una cadena con un texto. Use los métodos de las cadenas para determinar si la cadena contiene letras, o números, o una combinación de ellas. Si contiene algo distinto a letras o números, emite False.
- Se cuenta con una cadena genética. Cada 3 caracteres representan un aminoácido, y a eso se le denomina codón. Construya una expresión Python que le permita determinar cuántos codones hay presentes.
- Se cuenta con una cadena genética. Cada 3 caracteres representan un aminoácido, y a eso se le denomina codón. Construya una expresión Python que le permita extraer la secuencia de 3 caracteres de un codón especifico. Por ejemplo, en la cadena “AAGGUACCCUAGGUA”, el codón 4 es “UAG”.
Tip: si multiplica por 3 el número de codón y resta 3, le da la posición donde comienza el codón. - La terminación de un gen en una secuencia de nucleótidos se da con una secuencia de tres aminoácidos conocida como codón de parada. Los posibles codones de parada son “UAA”, “UAG” y “UGA”. Construya una expresión que le permita determinar si la secuencia genética termina en un codón de parada.
Tip. para comparar cadenas puede usar == o __eq__ - La terminación de un gen en una secuencia de nucleótidos se da con una secuencia de tres aminoácidos conocida como codón de parada. Los posibles codones de parada son “UAA”, “UAG” y “UGA”. Construya una expresión que le permita determinar si alguno de los codones de parada está presente en la cadena.
Expresiones string, y aproximación a estructuras compuestas en Python. |
LLEVE A CABO LOS SIGUIENTES EJERCICIOS USANDO ÚNICA Y EXCLUSIVAMENTE UNA CONSOLA PYTHON.
|
Datos e información requerida para estos ejercicios puede hallarla en DATA: BIO GYM
NOTA: Tenga en cuenta que toda secuencia en python comienza en la posición cero, incluyendo las secuencias de caracteres.
- En el proyecto The 100000 Genomes se está trabajando para obtener 100000 genomas humanos completos. Cada genoma humano tiene aproximadamente 3 mil millones de pares de bases, pero se puede almacenar sólo una hebra porque la otra hebra es complementaria.
Expresado el genoma en un archivo de texto, donde cada nucleótido es un caracter 'A','C','G','T', toma un tamaño aproximado de 3 mil millones de bytes. ¿Cuántos discos de estado sólido (SSD) de 5 TiB se requieren para almacenar toda la data? Use python para los cálculos. - En bioinformática, las secuencias genéticas se representan con caracteres mayúsculas. Sin embargo, muchas regiones podrían representarse en letras minúsculas por algún motivo, como identificar regiones de transposones, o identificar nucleótidos con menor calidad en las lecturas de las secuencias.
- Durante un proceso de lectura y ensamble de secuencias genéticas, usted obtiene la siguiente lista Python con fragmentos:
['CCCTTACATATC','CTAGGAAAAGTTTTTAAA','GAGTACTTTT','ATGATCATTTTCTAATG','CGCCTAGGGGTAGAGGA','TGAGGCTGCGCAAACACT','TAAATTAAGAAGACGACTGGAAGC','AGAGGGAAAACCCATAAgGA','AATTAACAGGAGAAtATATTGTATTTC','ATAAATATGAGAATAAAAATTACT','ATCTTGCCCTATGGAAACATAAAGACAAAAAGCAAG','ATAGCTCTTTATATGATATAGAG','','GAGCTAAAAAAAGCTAGGGA','AATTAaGGCGTCTTGTAAAAAT','GAGTTTCCTGAATTTTCAGACCAAATTCTTC','TTCATATTTGATCAAAAAATATTA','CAGCTTAGACaaaccAAAAAGCTGTCTATC','CTGCGCACGTTCTTCAGTTAAA','TACTCGTTGAGTTCAGCGAGTAT','TTTTTCTTTGT','TTGCTTCATTGGCATTCATCTTTTTAAT','','','CAAATAAGAACCGAGCAAA','ATTTTACGCCGAGTATCGTCCTTTCTTTCCTGCTCT','TTTTTCTTTGAttttCTCTagctTAGCTT','GTTTGCGAGCCTTTAACTGTTTCA','GCTTTTCTAACTGGGCTTCGATTTTCTTTTCAA','','GAGTTTCAGCAGCTTTTGTCATGATTC','AGGTTTCGGGATATAGAA','AACCACTCAAGCATAAGGCCC','']
Use una expresión Python para determinar el número de fragmentos usando un servicio dunder del tipo str. - La lista de fragmentos obtenida anteriormente, contiene secuencias nulas que no contienen información. Use algún método del tipo list de Python para quitar esos fragmentos nulos. Cuente cuántos fragmentos válidos tiene ahora su lista usando un servicio dunder del tipo list.
- Luego de la limpieza, se obtiene información de que a la lista se deben adicionar los fragmentos "AGCGAGTAGCGAGTATTTTATTTT" al principio, y "AGAACCGAGCAAAATT" al final. Use servicios del tipo list de Python para logrtar ese objetivo.
- Use el servicio join() del tipo str de python para unificar los fragmentos de la lista para obtener la secuencia
AGCGAGTAGCGAGTATTTTATTTTCCCTTACATATCCTAGGAAAAGTTTTTAAAGAGTACTTTTATGATCATTTTCTAATGCGCCTAGGGGTAGAGGATGAGGCTGCGCAAACACTTAAATTAAGAAGACGACTGGAAGCAGAGGGAAAACCCATAAgGAAATTAACAGGAGAAtATATTGTATTTCATAAATATGAGAATAAAAATTACTATCTTGCCCTATGGAAACATAAAGACAAAAAGCAAGATAGCTCTTTATATGATATAGAGGAGCTAAAAAAAGCTAGGGAAATTAaGGCGTCTTGTAAAAATGAGTTTCCTGAATTTTCAGACCAAATTCTTCTTCATATTTGATCAAAAAATATTACAGCTTAGACaaaccAAAAAGCTGTCTATCCTGCGCACGTTCTTCAGTTAAATACTCGTTGAGTTCAGCGAGTATTTTTTCTTTGTTTGCTTCATTGGCATTCATCTTTTTAATCAAATAAGAACCGAGCAAAATTTTACGCCGAGTATCGTCCTTTCTTTCCTGCTCTTTTTTCTTTGAttttCTCTagctTAGCTTGTTTGCGAGCCTTTAACTGTTTCAGCTTTTCTAACTGGGCTTCGATTTTCTTTTCAAGAGTTTCAGCAGCTTTTGTCATGATTCAGGTTTCGGGATATAGAAAACCACTCAAGCATAAGGCCCAGAACCGAGCAAAATT - Use funciones Python para determinar la posición de la primera y la última letra minúscula que aparece en la secuencia. El resultado entréguelo como una tupla.
- Por efectos de limpieza en las lecturas de código que se están haciendo en su laboratorio, se ha establecido un patrón de limpieza eliminando las primeras 5 y las últimas 4 bases. Escriba en Python una única expresión que lleve a cabo la tarea sobre la secuencia anterior.
- Por un error en la configuración de su sistema de lectura de secuencias, aquellas regiones con el patrón 'AGTTTC' deben ser retiradas. Use alguna función del tipo str de Python para retirar dichas regiones.
- NsbI es una enzima de restricción que corta secuencias genéticas en regiones TGCGCA, exactamente en el centro (TGC / GCA). Se sabe que la secuencia genética anterior corresponde a un plásmido, y que en ese plásmido existe al menos una de esas regiones de corte. Determine cuántas regiones de corte hay.
- Obtenga secuencias que representan el corte del genoma anterior en los lugares donde actúa la enzima de restricción NsbI. Sume la longitud de las secuencias resultantes para verificar que suman la longitud de la secuencia original, y que no perdió información en el proceso. Verifique que cada secuencia tiene los nucleótidos de comienzo o fin correspondientes.
- Use la secuencia usada en los ejercicios anteriores y reemplace los nucleótidos con letra mayúscula con un '-' para evidenciar la posición de los nucleótidos con letras minúsculas.
- Usted ha obtenido confirmación de calidad sobre la secuencia anterior, y no necesita más las minúsculas. Restablezca a mayúsculas toda la secuencia genética anterior.
- Use la proteina PUB37_ARATH("U-box domain-containing protein 37") de Arabidopsis thaliana, y deterimine el número de aminoácidos usando dunders.
- Para un aminoácido cualquiera dado, determine la primera posición, y la última posición de aparición en la proteína PUB37_ARATH.
- Para un aminoácido cualquiera dado, determine la segunda posición, y la penúltima posición de aparición en de la proteína PUB37_ARATH.
- Para una secuencia de aminoácidos cualquiera de longitud mayor que 1, determine la primera posición de aparición en la proteína PUB37_ARATH. Si no existe, devuelve -1.
- Dada una secuencia de varios aminoácidos, determine si la secuencia existe en la proteína PUB37_ARATH.
- Determine si en la proteína PUB37_ARATH, hay más aminoácidos con carga negativa, que aminoácidos con carga positiva.
- Construya una expresión que indique si PUB37_ARATH tiene la misma longitud que DAR1_ARATH.
- Construya una expresión que indique si PUB37_ARATH tiene más Cisteínas (C) que DAR1_ARATH.
- Construya una expresión que indique si PUB37_ARATH tiene menos Prolinas (P) que DAR1_ARATH.
- Construya una expresión que indique para un aminoácido dado, si PUB37_ARATH tiene menos de ese aminoácido que DAR1_ARATH.
- Para un aminoácido cualquiera dado, determine las veces que se encuentra en la proteína PUB37_ARATH, y su porcentaje con respecto a la longitud de la proteína PUB37_ARATH.
- Para un aminoácido cualquiera dado, determine si el porcentaje de presencia en PUB37_ARATH es mayor al porcentaje de presencia en DAR1_ARATH.
- Determine cuál de las dos proteínas tiene mayor peso molecular aportado por los aminoácidos de carga negativa.
- Dado que cada aminoácido se representa por un codón, y dado que cada codón tiene 3 nucleótidos, determine la cantidad de nucleótidos en las proteínas PUB37_ARATH y DAR1_ARATH.
- Determine la cantidad de cada uno de los nucleótidos de la proteína FLJ32695.
- Determine si en la proteína FLJ32695, hay más nucleótidos C y G, que nucleótidos A y T.
- Determine la carga (C+G)% en la proteína FLJ32695. Se suma la cantidad de nucleótidos C y G, y se divide por el total de nucleótidos presentes.
- Dado que cada aminoácido se representa por un codón, y dado que cada codón tiene 3 nucleótidos, determine la cantidad de aminoácidos presentes en FLJ32695.
- Dada una posición dentro de la cadena de nucleótidos de la proteína FLJ32695, determine el código de aminoácido al que pertenece dicho nucleótido.
- Dada una posición dentro de la cadena de nucleótidos de la proteína FLJ32695, determine el peso molecular del aminoácido al que pertenece el nucleótido.
- La distancia promedio entre dos nucleótidos es de 0.34nm. Determine el tamaño de las 3 moléculas en nanómetros.
- Dada la secuencia ACGT, escriba código Python para obtener la secuencia complementaria TGCA. Use reemplazos sucesivos sin usar ciclos. Tip: para comenzar, use la función replace( ) del objeto str. Cuando tenga una estrategia clara de cómo hacerlo usando funciones Python, úsela para resolver el problema siguiente. Recuerde: de ACGT debe llegar a TGCA.
- Si el problema anterior ya lo resolvió adecuadamente, obtenga la cadena complementaria para la secuencia genética de la proteína FLJ32695.
- Use un slice de paso negativo, para invertir la cadena complementaria de la secuencia genética de la proteína FLJ32695.
- Construya una expresión que determine (True o False) si la longitud en aminoácidos de alguna de las proteínas PUB37_ARATH, DAR1_ARATH, o ACHB2_RAT, es impar.
- Construya una expresión que determine (True o False) si todas las longitudes en aminoácidos de las proteínas PUB37_ARATH, DAR1_ARATH, o ACHB2_RAT, es impar.
- Construya una expresión que determine (True o False) si al menos dos de las longitudes en aminoácidos de las proteínas PUB37_ARATH, DAR1_ARATH, o ACHB2_RAT, es par.
- Construya una expresión python que determine si alguno de los aminoácidos en el fragmento 100 a 104 es polar.
- Determine la carga (C+G)% y (A+T)% conjunta de los fragmentos de aminoácidos de la posición 100 a 104 de las proteínas PUB37_ARATH, DAR1_ARATH y ACHB2_RAT. Asuma que une esos tres fragmentos como una secuencia única a la que le va a hacer el cálculo.
- Cree un diccionario Python donde la clave es una letra que identifica cada uno de los aminoácidos, y el valor que acompaña a la clave es el peso molecular.
- Usando el diccionario del literal anterior, Determine el peso molecular individual y el peso molecular total en Daltons de los fragmentos de aminoácidos de la posición 100 a 104 de las proteínas PUB37_ARATH, DAR1_ARATH y ACHB2_RAT. El resultado debe entregarse como una tupla con los 4 valores, 3 valores individuales, y el último valor es el total.
- Estás trabajando en una hipótesis, en la que planteas que el peso molecular de cada uno de los aminoácidos en las posiciones impares es mayor al peso molecular de los aminoácidos en las posiciones pares. Por el momento sólo lo vas a comprobarlo con los fragmentos 100 a 104 de las proteínas PUB37_ARATH, DAR1_ARATH y ACHB2_RAT. Escriba expresiones para llevar a cabo tu experimento con sólo esas tres proteínas. Tus expresiones deben incluir una extracción a una string con los aminoácidos en posiciones impares en el rango 100 a 104, y luego una extracción a una string con los aminoácidos en posiciones pares en el rango 100 a 104.
- El plásmido pPARG1 (Rehmannia glutinosa phytoplasma plasmid), es un componente importante en la patogenicidad de la bacteria fitopatógena Rehmannia glutinosa phytoplasma, y parece estar involucrado en la modulación de la respuesta inmune de la planta huésped y la regulación de la estabilidad del plásmido en la bacteria. Obtenga la cadena complementaria del código genético del plásmido, e inviértala. Para la inversión, use sobre la cadena un slice de paso negativo [::-1].
- Use el tamaño del genoma del plásmido Rehmannia glutinosa phytoplasma pPARG1 para determinar cuántos plásmidos pPARG1 necesito filar, uno enseguida del otro, para cubrir una longitud de un billete de $COP2000 (pesos colombianos), que mide 128 milímetros. Tenga en cuenta que 1 milímetro tiene 1000 micras y que una micra tiene 1000 nanómetros. La distancia promedio entre nucleótidos es de 0.34 nanómetros.
- Construya una secuencia de aminoácidos con base en recoger aminoácidos saltando cada 10 sobre una proteína. Use un slice. Incluya siempre el primer aminoácido. Cuando tenga los fragmentos, remueva todos los aminoácidos diferentes a los aminoácidos acídicos. Construya un diccionario con tres claves PUB37_ARATH, DAR1_ARATH, o ACHB2_RAT. El valor para cada uno de esas entradas en el diccionario es una tupla con el fragmento específico que se extrajo de cada una de esas proteínas, junto con la carga (C+G)%.
- Sobre el diccionario del problema anterior, construya una expresión para determinar si hay alguna carga (C+G)% que es inferior a una carga específica δ que se incluye en las expresiones. La salida debe ser True o False.
- Sobre el diccionario del problema anterior, construya una expresión para determinar si el promedio de las cargas (C+G)% presentes en el diccionario, está por encima de una carga específica φ. La salida debe ser True o False.
- Determine si en alguno de los segmentos en el diccionario creado para los fragmentos, hay triptófano o treonina, sin usar la función count() o find() de str. Use el operador in, que puede ser aplicado a muchas colecciones de datos, incluyendo strings.
- Termofisher cuenta con la enzima de restricción Anza™ 53 AanI, IVGN0534, que es una enzima capaz de cortar DNA en el sitio de reconocimiento TTA^TAA. Esto es, si se usa la enzima con un DNA, y el DNA tiene la secuencia TTATAA, la secuencia, luego de 15 minutos, queda recortada.
Considere los plásmidos pPARG1 y pAba10324a (puede recoger las secuencias en la sección de datos). Busque la secuencia asociada a la enzima, y determine la posición de los lugares de corte. Las posiciones de corte deberán ser almacenadas en un diccionario, siendo la clave el código del plásmido, y el valor asociado a la clave es la lista de las posiciones del corte. Si no hay posiciones de corte en algún caso, la lista estará vacía. - FastDigest NsbI, FD1224, es una enzima de restricción producida por Termofisher que es capaz de actuar entre 5 y 15 minutos a 37 grados celcius. Usted ya ha hecho pruebas con la enzima Anza 53 AanI, pero desea experimentar con NsbI. Esta enzima tiene la habilidad de fraccionar secuencias TGCGCA, por el centro: TGC^GCA. Considere los plásmidos pPARG1 y pAba10324a. Busque las secuencias asociada a las enzimas NsbI y Aani, y determine para ambas, la posiciones de los lugares de corte en los plásmidos pPARG1 y pAba10324a.
Creeun diccionario donde la clave es el código del plásmido, y el valor es otro diccionario donde la clave es la enzima, y el valor es una lista con las posiciones de corte.