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
Miquel Angel Senar Rosell (
)
Otros
Abraham De la Rosa Ibarra (
)
Alexis Molina Martinez de los Reyes (
)
Elisa Heymann Pignolo (
)
Gabriel Valiente Feruglio (
)
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ón
Conceptos básicos de Python, control de flujo, funciones, listas, diccionarios y datos estructurados
Estructuras de datos avanzadas i manipulación de cadenas.
Secuencias, cadenas y datos genómicos. Manipulación básica de secuencias genómicas, kmers y motifs
Iteradores, "Comprehensions" y Generadores
Iteradres i "Comprehensions" sobre colecciones. Principis y funcionamiento de Generadores.
Búsqueda de patrones y expresiones regulares
Encontrar patrones. Encontrar patrones con expresiones regulares. Crear y combinar objetos regex.
Ficheros y gestión de excepciones
Operaciones básicas con ficheros. Gesti¿n de excepciones. Datos genómicos y formatos de archivos habituales en Bioinformática.
Decoradores y principios de programación funcional
Definición y uso de decoradores. Uso de funciones especiales: map, filter, reduce, lambdas, zip, unzip, logging
Alineación de secuencias: definiciones y métodos básicos
Algoritmos de alineación y programación dinámica. Programas de alineamiento y estadísticas de alineamiento.
Extensiones de Python
Módulos de Python para interacción con el SO y manipulación de carpetas, interfícies de programa (argumentos en linea de comandos), Biopython.
Análisis de datos avanzado
Numpy, Pandas, Matplotlib
Actividades
ActividadActo evaluativo
Introducción
Resolución de problemas con Python Objetivos:12 Contenidos:
Estructuras de datos avanzadas y manipulación de cadenas
Representación de secuencias y datos genómicos. Operaciones habituales en cadenas: indexación, unión, división, búsqueda e inserción 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:
Uso de iteradores, "comprehensions" y generadores Objetivos:1235
Teoría
2h
Problemas
2h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h
Análisis de datos avanzado
Trabajo com modulos habituales para el análisi de grandes conjuntos de datos Objetivos:135
Teoría
6h
Problemas
6h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
18h
Extensiones de Python
Trabajo con módulos habituales que extienden la funcionalidad de Python para interactuar con el mundo exterior y con datos bioinformáticos. Objetivos:1235
Teoría
6h
Problemas
6h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
18h
Metodología docente
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.