Programación Aplicada III

Usted está aquí

Créditos
6
Tipos
Obligatoria
Requisitos
Esta asignatura no tiene requisitos, pero tiene capacidades previas
Departamento
CS;UAB
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

  • Alexis Molina Martinez de los Reyes ( )
  • Gabriel Valiente Feruglio ( )
  • Miquel Angel Senar Rosell ( )

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

  1. Comprender cómo construir un programa y utilizar herramientas adicionales para resolver problemas que utilizan datos bioinformáticos.
    Competencias relacionadas: K3, K4, S7, C6,
  2. 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,
  3. 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,
  4. 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,
  5. 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

  1. Introduccióniy resumen de Python
    Conceptos básicos de Python, control de flujo, funciones, listas, diccionarios y datos estructurados
  2. 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.
  3. Motifs y kmers
    Motifs y kmers. Coincidencia básica de cadenas. Secuencias de consenso. Búsqueda de motifs. Herramientas de descubrimiento de motifs.
  4. Búsqueda de patrones y expresiones regulares
    Encontrar patrones. Encontrar patrones con expresiones regulares. Crear y combinar objetos regex.
  5. 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.
  6. 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.
  7. Temas diversos
    Interfaz de Python con el sistema operativo y uso de módulos. Mejora de la velocidad de los scripts de Python.

Actividades

Actividad Acto evaluativo


Introducción y resumen de Python

Resolución de problemas con Python
Objetivos: 1 2
Contenidos:
Teoría
4h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h

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: 1 2 3
Contenidos:
Teoría
4h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h

Búsqueda de patrones y expresiones regulares

Encontrar patrones de texto sin expresiones regulares. Encontrar patrones con expresiones regulares. Uso de objectos de expresión regular en Python.
Objetivos: 2 3 4
Contenidos:
Teoría
4h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h

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: 2 3 4 5
Contenidos:
Teoría
8h
Problemas
8h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
24h

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: 2 3 4 5
Contenidos:
Teoría
6h
Problemas
6h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
18h

Temas diversos

Interfaz de Python con el sistema operativo y otros módulos externos. Mejora de la velocidad de los programas Python: Cython, numpy,...
Objetivos: 1 5
Contenidos:
Teoría
4h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h

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

Bibliografía

Básica:

Complementaria:

  • Python Programming for Biology - Stevens, Tim J., Cambridge University Press , 2015. ISBN: 9780511843556

Capacidades previas

Programación Aplicada I
Programación Aplicada II
Introducción a la Bioinformática