El curso presenta técnicas algorítmicas básicas que se aplican en problemas de Bioinformática, con una visión de las fortalezas y limitaciones de dichas técnicas. También describe elementos de datos comunes y formatos utilizados para representar datos biológicos. Durante el curso los estudiantes adquirirán los conocimientos necesarios para abordar problemas de programación de naturaleza biológica de pequeña y mediana complejidad, realizando elecciones sensatas de paquetes estándar o implementaciones algorítmicas pragmáticas para problemas específicos.
Al final del curso, los estudiantes:
1. Conocerán los conceptos básicos de programación, algorítmica y gestión de la información en la resolución de problemas de carácter biológico a través de programas informáticos.
2. Serán capaces de utilizar los principales esquemas algorítmicos y algunas de sus variantes que aparecen frecuentemente en problemas comunes de Bioinformática
3. Reconocerán los casos de aplicación de los principales métodos utilizados en Bioinformática para acceder a datos almacenados en ordenadores, con especial atención a los mecanismos eficientes de tratamiento de secuencias.
4. Sabrán integrar el acceso a grandes bases de datos biológicas con el acceso a otras estructuras de información locales y combinarlos adecuadamente con los conceptos algorítmicos necesarios.
5. Sabrán cómo interactuar con herramientas externas y utilizar bibliotecas comunes que amplían la funcionalidad y mejoran el rendimiento de los programas Python.
El lenguaje de programación utilizado en este curso es Python, el cual se complementará con el uso ocasional de herramientas del Sistema Operativo o aplicaciones externas.
Profesorado
Responsable
Gabriel Valiente Feruglio (
)
Miquel Angel Senar Rosell (
)
Otros
Alexis Molina Martinez de los Reyes (
)
Quim Aguado Puig (
)
Horas semanales
Teoría
2
Problemas
2
Laboratorio
0
Aprendizaje dirigido
0
Aprendizaje autónomo
6
Resultados de aprendizaje
Resultados de aprendizaje
Conocimientos
K3 - Identificar los fundamentos matemáticos, las teorías informáticas, los esquemas algorítmicos y los principios de organización de la información aplicables al modelado de sistemas biológicos y a la resolución eficiente de problemas bioinformáticos mediante el diseño de herramientas computacionales.
K4 - Integrar los conceptos ofrecidos por los lenguajes de programación de mayor uso en el ámbito de las Ciencias de la Vida para modelar y optimizar estructuras de datos y construir algoritmos eficientes, relacionándolos entre sí y con sus casos de aplicación.
K5 - Identificar la naturaleza de las variables biológicas que es preciso analizar, así como los modelos matemáticos, los algoritmos y las pruebas estadísticas adecuadas para desarrollar y evaluar análisis estadísticos y herramientas computacionales.
Habilidades
S2 - Analizar computacionalmente secuencias de ADN, ARN y proteínas, incluyendo análisis comparativos de genomas, usando la computación, las matemáticas y la estadística como herramientas básicas de la bioinformática.
S7 - Implementar métodos de programación y análisis de datos orientados a partir de la elaboración de hipótesis de trabajo, dentro del área de estudio.
S8 - Enfrentarse a la toma de decisiones, y defenderlas con argumentos, en la resolución de problemas de las áreas de biología, así como, dentro de los ámbitos adecuados, las ciencias de la salud, las ciencias de la computación y las ciencias experimentales.
Competencias
C6 - Detectar deficiencias en el propio conocimiento y superarlas mediante la reflexión crítica y la elección de la mejor actuación para ampliar este conocimiento.
Objetivos
Comprender cómo construir un programa y utilizar herramientas adicionales para resolver problemas que utilizan datos bioinformáticos.
Competencias relacionadas:
K3,
K4,
S7,
C6,
Comprender el formato y la semántica de las estructuras de datos básicas utilizadas para representar datos biológicos: secuencias, genomas,...
Competencias relacionadas:
K3,
K5,
S2,
C6,
Comprender las operaciones más comunes que se aplican a los archivos de datos bioinformáticos y desarrollar programas para realizarlas.
Competencias relacionadas:
K3,
K4,
K5,
S2,
S7,
C6,
Comprender los principios básicos de los algoritmos que se utilizan para resolver problemas de alineación de secuencias y coincidencia de patrones.
Competencias relacionadas:
K3,
K4,
K5,
S2,
S7,
C6,
Analizar soluciones con respecto al tiempo y el costo de la memoria y utilizar componentes de programación para mejorar el rendimiento.
Competencias relacionadas:
K3,
S7,
S8,
C6,
Contenidos
Introduccióniy resumen de Python
Conceptos básicos de Python, control de flujo, funciones, listas, diccionarios y datos estructurados
Secuencias genómicas y mecanismos de análisis
Secuencias, cadenas y datos genómicos. Formatos de ficheros de secuencias. Bases de datos biológicas. Manipulación de secuencias y datos genómicos: biopython y otras herramientas comunes.
Motifs y kmers
Motifs y kmers. Coincidencia básica de cadenas. Secuencias de consenso. Búsqueda de motifs. Herramientas de descubrimiento de motifs.
Búsqueda de patrones y expresiones regulares
Encontrar patrones. Encontrar patrones con expresiones regulares. Crear y combinar objetos regex.
Manipulación de cadenas de caracteres y alineación de secuencias
Manipulación de cadenas: indexación, unión, corte. Algoritmos de alineación y programación dinámica. Software de alineación y estadísticas de alineación. Datos genómicos y formatos de archivos.
Alineamiento de secuencias múltiples y filogenética.
Formatos de fichero para el alineamiento de múltiples secuencias y métodos de alineamiento de múltiples secuencias. Arboles filogenéticos: representación y funcionamiento básico.
Temas diversos
Interfaz de Python con el sistema operativo y uso de módulos. Mejora de la velocidad de los scripts de Python.
Actividades
ActividadActo evaluativo
Introducción y resumen de Python
Resolución de problemas con Python Objetivos:12 Contenidos:
Secuencias genómicas, motifs y kmers. Mecanismos de analisis
Representación de secuencias y datos genómicos. Formatos de fichero para almacenar datos biológicos. Bases de datos externas. Programas que utilizan Biopython y otras herramientas habituales para manipular biodatos . Objetivos:123 Contenidos:
Encontrar patrones de texto sin expresiones regulares. Encontrar patrones con expresiones regulares. Uso de objectos de expresión regular en Python. Objetivos:234 Contenidos:
Manipulación de cadenas de caracteres y alineamiento de secuencias
Acciones comunes de manipulación de cadenas: indexar, unir, dividir, buscar, insertar. Algoritmos de alineación básicos e implementaciones de programación dinámica. Manipulación de datos genómicos generados con herramientas de alineación. Objetivos:2345 Contenidos:
Alineamiento de secuencias múltiples y filogenética
Métodos comunes utilizados para resolver el problema de alineamiento de secuencias múltiples. Uso de archivos de alineamiento de secuencias múltiples MSA. Representación y funcionamiento básico de árboles filogenéticos. Objetivos:2345 Contenidos:
Interfaz de Python con el sistema operativo y otros módulos externos. Mejora de la velocidad de los programas Python: Cython, numpy,... Objetivos:15 Contenidos:
Durante las sesiones teóricas, el profesor expondrá conceptos de programación, combinándolos con ejemplos y resolución de problemas.
Durante las sesiones de resolución de problemas, los estudiantes trabajarán por sí mismos resolviendo problemas en un sistema informático, bajo la supervisión y asistencia del profesor cuando sea necesario.
Método de evaluación
Habrá dos exámenes: un examen parcial y un examen final.
Además, se realizarán algunas pruebas de problemas evaluables durante las sesiones de problemas, anunciadas con antelación.
Puntuación final = 0,20*NP + 0,80*máx(EF, 0,35*EP+0,65*EF)
dónde:
NP: Puntuación de problemas. Pruebas breves de problemas realizadas durante las sesiones de problemas.
EP: Puntuación del examen parcial
EF: Puntuación del examen final
Los alumnos que suspednen la asignatura podrán hacer el examen de reevaluación ER. En este caso, la nota de ER sustituirá la nota del examen final EF en la fórmula de cálculo de la nota final de arriba.