Este curso presenta las principales técnicas algorítmicas y las estructuras de datos utilizadas en la genómica y la pangenómica modernas. Se centra en la búsqueda exacta y aproximada de patrones en cadenas, el alineamiento de secuencias y el alineamiento sobre representaciones genómicas basadas en grafos. Se pone especial énfasis en comprender los principios algorítmicos subyacentes, los compromisos de complejidad y las consideraciones prácticas necesarias para procesar datos a escala genómica de forma eficiente y correcta.
Profesorado
Responsable
Santiago Marco Sola (
)
Horas semanales
Teoría
2
Problemas
1
Laboratorio
1
Aprendizaje dirigido
0
Aprendizaje autónomo
8.5
Competencias
Competencias Técnicas de cada especialidad
Dirección y gestión
CDG1 - Capacidad para la integración de tecnologías, aplicaciones, servicios y sistemas propios de la Ingeniería Informática, con carácter generalista, y en contextos más amplios y multidisciplinares.
Específicas
CTE7 - Capacidad para comprender y poder aplicar conocimientos avanzados de computación de altas prestaciones y métodos numéricos o computacionales a problemas de ingeniería.
CTE9 - Capacidad para aplicar métodos matemáticos, estadísticos y de inteligencia artificial para modelar, diseñar y desarrollar aplicaciones, servicios, sistemas inteligentes y sistemas basados en el conocimiento.
Competencias Técnicas Genéricas
Genéricas
CG4 - Capacidad para el modelado matemático, cálculo y simulación en centros tecnológicos y de ingeniería de empresa, particularmente en tareas de investigación, desarrollo e innovación en todos los ámbitos relacionados con la Ingeniería en Informática.
Competencias Transversales
Uso solvente de los recursos de información
CTR4 - Gestionar la adquisición, la estructuración, el análisis y la visualización de datos e información del ámbito de la ingeniería informática y valorar de forma crítica los resultados de esta gestión.
Básicas
CB6 - Que los estudiantes sepan aplicar los conocimientos adquiridos y su capacidad de resolución de problemas en entornos nuevos o poco conocidos dentro de contextos más amplios (o multidisciplinares) relacionados con su área de estudio.
Objetivos
Comprender algoritmos y estructuras de datos de coincidencia de patrones y su implementación en un lenguaje de programación moderno, y aplicarlos para resolver problemas prácticos en bioinformática.
Competencias relacionadas:
CB6,
CTR4,
CDG1,
CTE7,
CTE9,
CG4,
Contenidos
Tecnologías de secuenciación y análisis del genoma
Se presenta una visión general de las tecnologías modernas de secuenciación de ADN y de las características computacionales de los datos genómicos. Se presentan las principales tareas del análisis genómico, incluyendo el mapeo de secuencias, el variant calling y el ensamblaje de secuencias. Estos problemas motivan la abstracción de las secuencias biológicas como cadenas y ponen de relieve los retos algorítmicos y computacionales que plantean los conjuntos de datos a escala genómica.
Algoritmos de búsqueda exacta de patrones
Se estudia el problema de la búsqueda exacta como tarea algorítmica fundamental. Se presentan algoritmos clásicos para ilustrar distintos paradigmas de diseño, incluyendo el preprocesamiento basado en prefijos, las estrategias heurísticas de salto, las técnicas de hashing y el paralelismo a nivel de bit. Se hace énfasis en la corrección, la complejidad temporal y las consideraciones prácticas de rendimiento.
Estructuras de datos para la indexación de texto
Este bloque se centra en estructuras de datos que permiten una búsqueda eficiente de patrones sobre textos de gran escala, con especial atención a aplicaciones genómicas. Se cubren estrategias de indexación basadas en hashing y en k-mers, estructuras de árboles lexicográficos, árboles de sufijos y arrays de sufijos, así como índices comprimidos de texto completo basados en la transformada de Burrows-Wheeler.
Algorithmos de búsqueda aproximada de patrones
Este bloque presenta la búsqueda aproximada de patrones de texto, donde se permiten diferencias. El bloque introduce modelos de distancia y error, seguidos de técnicas de filtrado y seeding para reducir el espacio de búsqueda. Se presentan métodos asistidos por índice, estimación de similitud mediante sketches, algoritmos de verificación y estrategias de chaining como componentes clave de los algoritmos y herramientas modernas de búsqueda aproximada.
Alineamiento de secuencias
Este bloque aborda el alineamiento de secuencias como tarea fundamental en bioinformática y análisis genómico. Se introducen técnicas de programación dinámica para calcular la distancia de edición y otros modelos de alineamiento, incluyendo gap-affine. Se estudian modalidades clásicas de alineamiento y optimizaciones algorítmicas avanzadas, con atención a la eficiencia espacial, al sparse dynamic programming y a métodos output-sensitive, como el Wavefront Alignment Algorithm.
Grafos de secuencia y pangenómica
La asignatura concluye con una introducción a representaciones basadas en grafos para modelar variación genómica. Se discuten grafos de secuencia, modelos de pangenoma y su relación con las referencias lineales. Se introduce el problema de alineamiento de secuencias sobre grafos, destacando los retos y las oportunidades algorítmicas que surgen al extender técnicas de alineamiento a estas representaciones.
Actividades
ActividadActo evaluativo
Tecnologías de secuenciación y análisis del genoma
La asignatura combina clases, sesiones de resolución de problemas y trabajo autónomo para desarrollar tanto la comprensión teórica como las competencias prácticas. Durante las clases, el profesorado introduce conceptos algorítmicos, estructuras de datos y técnicas clave para la genómica y la pangenómica, apoyándose en ejemplos ilustrativos y en la discusión de compromisos de complejidad y rendimiento.
Las sesiones de problemas se dedican a la resolución guiada de ejercicios, en los que el estudiante trabaja sobre problemas algorítmicos relacionados con los contenidos del curso. Estas sesiones enfatizan el razonamiento, la corrección y el análisis, y el alumnado recibe supervisión y retroalimentación continuas.
El estudio independiente y el trabajo de proyecto desempeñan un papel central en la asignatura. Se espera que el estudiante lea y analice literatura científica, prepare una presentación oral de un artículo seleccionado y desarrolle un proyecto aplicado de programación que consolide las técnicas estudiadas a lo largo del curso.
Método de evaluación
La evaluación de la asignatura es continua.
El componente principal, que representa el 80% de la nota final, consiste en una presentación oral y defensa de un artículo de investigación sobre temas tratados en la asignatura. Se espera que el estudiante lea, analice y presente de forma crítica, de manera autónoma, una contribución de nivel investigador que demuestre comprensión de las ideas algorítmicas subyacentes, las decisiones metodológicas y su relevancia para el análisis de secuencias a escala genómica.
El segundo componente, que representa el 20% restante, consiste en un proyecto de programación, en el que el estudiante diseña e implementa de forma autónoma una solución aplicada y experimental que ponga en práctica las técnicas algorítmicas trabajadas a lo largo del curso.
No se requieren conocimientos previos de bioinformática. Disponer de nociones básicas de biología molecular, genética o genómica puede ser útil, pero todo el contexto biológico necesario se introducirá durante el curso.
Se espera que el estudiantado tenga conocimientos básicos de informática, incluidos algoritmos y estructuras de datos elementales. Además, el estudiante debe sentirse cómodo programando en al menos un lenguaje de programación de uso general (p.ej., Python, C, C++, Java o Rust). No es necesario tener experiencia previa en computación de altas prestaciones, arquitectura de computadores o ingeniería de rendimiento, aunque una comprensión básica de estos aspectos puede resultar beneficiosa en la parte de implementación y optimización de la asignatura.
Se requiere un alto interés y motivación por los algoritmos y las estructuras de datos.