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

  • 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

  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ón
    Conceptos básicos de Python, control de flujo, funciones, listas, diccionarios y datos estructurados
  2. 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
  3. Iteradores, "Comprehensions" y Generadores
    Iteradres i "Comprehensions" sobre colecciones. Principis y funcionamiento de Generadores.
  4. Búsqueda de patrones y expresiones regulares
    Encontrar patrones. Encontrar patrones con expresiones regulares. Crear y combinar objetos regex.
  5. 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.
  6. Decoradores y principios de programación funcional
    Definición y uso de decoradores. Uso de funciones especiales: map, filter, reduce, lambdas, zip, unzip, logging
  7. 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.
  8. 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.
  9. Análisis de datos avanzado
    Numpy, Pandas, Matplotlib

Actividades

Actividad Acto evaluativo


Introducción

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

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

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

Ficheros y gestión de excepciones

Trabajo com ficheros usando diferentes formatos que contienen información habitual en bioinformàtica
Objetivos: 1 2 3
Contenidos:
Teoría
2h
Problemas
2h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h

Decoradores y principios de programación funcional

Trabajo con conceptos relacionados con programación funcional
Objetivos: 1 2 3
Contenidos:
Teoría
2h
Problemas
2h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
6h

Alineamiento de secuencias: definiciones y métodos básicos

Trabajo con algoritmos básicos para resolver el problema de alineamiento de secuencias
Objetivos: 1 2 4 5
Contenidos:
Teoría
4h
Problemas
4h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
12h

Iteradores, "Comprehensions" y Generadores

Uso de iteradores, "comprehensions" y generadores
Objetivos: 1 2 3 5
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: 1 3 5
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: 1 2 3 5
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.

Bibliografía

Básica:

Complementaria:

Capacidades previas

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