10 de febrero de 2015

Curso de Python para biólogos - Lección 1. Ejecutando Python en Windows

Traicionando al blog, pero espero que beneficiando a sus lectores, vamos a publicar un curso de Python por entregas (cada 1 ó 2 semanas).

El curso está diseñado para introducir el mundo de la programación a biólogos, bioquímicos, médicos... en fin a cualquier investigador o experimentalista que sabe manejar con soltura un ordenador y le interesa aprender a programar.

Durante el curso se aprenderá a solucionar de forma más sencilla problemas comunes que son complicados de resolver con otras herramientas como hojas de cálculo o editores de texto. Por ejemplo, cambiar de formato un fichero con miles de secuencias, extraer unos pocos datos de interes de un fichero de cientos de megas u extraer y ordenar datos a nuestro antojo de una tabla con miles de resultados.

El curso original está preparado en inglés, por ello el código y ejemplos son en inglés, no obstante creo que cualquier lector de este blog puede entenderlos. Además el código serán imágenes para forzar al lector a escribir los ejemplos y no limitarse a copiar y pegar.

¿Qué es Python?

En Wikipedia encontraremos una buena definición:
Python es un lenguaje de alto nivel y de propósito general cuya filosofía de diseño se centra en la facilidad de lectura y escritura de código, permitiendo a los programadores expresar sus conceptos en pocas líneas de código. Esta filosofía contrasta con la complejidad de lenguages como C++ o Java.

¿Para qué sirve Python? 

Saber programar en biología es sumamente útil, de ahí la importancia de la bioinformática y la biología computacional. A continuación mostraremos algunos buenos ejemplos de su utilidad.

Ejemplo 1. Supongamos tenemos un fichero FASTA con cientos de secuencias de mRNA y queremos traducirlas a secuencias de proteínas. Conociendo el código genético del organimo en cuestión podemos hacer un sencillo script de Python que nos genere automáticamente otro fichero FASTA con las secuencias de proteínas.
Ejemplo 2. En este caso queremos realizar un experimento de expresión diferencial de genes en dos condiciones diferentes, por ej. en un paciente sano y en otro enfermo. Para ello usamos microarrays (o chips de DNA) y obtenemos un fichero con las intensidades de las sondas que hibridan con los genes. El valor de las miles de intensidades no nos permite sacar ninguna conclusión valiosa a mano, pero si agrupamos los genes por familias o función, podremos ver qué mecanismos celulares están afectados, por ejemplo una vía apoptótica en un caso de cáncer. Para realizar dichos análisis podemos ayudarnos de Python.

Ejemplo 3. Ahora que están de moda las nuevas tecnologías de secuenciación, éstas nos proporcionan millones de secuencias cortas (menos de 300bp) que debemos ensamblar o alinear con un genoma de referencia. Aunque existen muchas herramientas y muy eficientes para estos fines (escritas principalmente en C++, un lenguaje mucho más rápido que Python), podemos escribir scripts en Python que nos ayuden a procesar estas secuencias antes de ser alineadas o a analizar los resultados del alineamiento.


¿Perl o Python? 

En mi opinión ambos lenguajes de programación son igualmente válidos. Python tiene la ventaja de ser rápido y sencillo de escribir, y también de leer y modificar posteriormente el código. Aunque personalmente me encuentro más cómodo con Perl, mucha gente actualmente usa Python. La elección de uno u otro va a depender principalmente de la existencia previa de utilidades que nos interesen para nuestra investigación en uno u otro lenguaje. Por ejemplo, si trabajamos en biología estructural elegiremos Python porque existen muy buenos módulos para leer y manejar ficheros PDB. Y si trabajamos en filogenética posiblemente preferiremos Perl porque las utilidades existentes para este lenguaje son más completas. En la siguiente imagen podemos ver como un código sencillo de Python es más sencillo que uno de Perl, pero no nos engañemos, un código de Python mal indentado puede ser un infierno.

¿Cómo instalar Python? 

Para empezar este curso instalaremos la versión estable más reciente de Python desde su página oficial:
 
Durante la instalación será muy importante activar la opción "Añadir python.exe al PATH":

Comprobaremos la existencia del nuevo grupo de programas en nuestro escritorio:

¿Cómo ejecutar Python?

Entre las utilidades instaladas por Python encontraremos: "Python GUI" y "Python Command line", al ejecutarlas su aspecto es el siguiente:

Para empezar a programar y realizar los siguientes ejemplos recomiendo "Python GUI", pero "Python Command line" es igualmente válida. Podemos probar a escribir unas simples operaciones aritméticas y pulsar "Enter" como se muestra en la imagen:


Usando Python como una calculadora

En el anterior ejemplo vimos como Python se puede usar como calculadora. A continuación realizaremos unas cuantas operaciones aritméticas y asignaremos valores numéricos a las palabras 'width' y 'heigth' para posteriormente calcular su producto. Notar también el uso del cáracter almohadilla ´#´, todo el texto que escribamos a continuación de éste carácter no será leído ni ejecutado en el programa de Python, sirve para insertar comentarios en el código.

Palabras y frases en Python (cadenas)

En Python llamamos 'cadenas' (strings) cuando en vez de números trabajamos con palabras, frases o textos. Este tipo de datos se escribe siempres entre comillas simples ('texto') o dobles ("texto"). Podemos incluir un tipo de comillas dentro del otro, pero si queremos incluir unas comillas del mismo tipo que las que delimitan el texto, deberemos usar el carácter barra invertida '\' y a continuación la comilla (ej. "\""), la barra invertida se denomina carácter de escape y tendrá más usos como se muestra a continuación.

Si en un texto incluimos la barra invertida seguida de 'n' ('\n') insertaremos un salto de línea. Pero para que el salto de línea sea efectivo, necesitaremos utilizar nuestro primer comando de Python: 'print'. Un comando ejecuta una acción sobre unos argumentos que se incluyen entre paréntesis, en este caso 'print' ejecuta la acción de imprimir el texto que se incluye entre paréntesis. Escribir texto entre comillas en el ejemplo anterior nos ha servido para practicar, pero a partir de ahora para imprimirlo lo escribiremos dentro de los paréntesis del comando 'print' y conservando las comillas dobles o sencillas.

Variables en Python

Una variable es un valor/datos almacenados en la memoria del ordenador (ej. números o cadenas), la localización del valor se asocia a un nombre o identificador. El nombre de la variable sirve para referirnos a los datos que guarda, y estos datos pueden ser modificados o reemplazados por otros nuevos.

Los nombres de variables sólo pueden contener letras en su comienzo y letras, número y '_' (barra baja) en el resto del nombre (ver ejemplos en la siguiente imagen).


Juguemos un poco con variables, veamos como guardar textos en ellas y concatenarlos. También como guardar números y sumarlos, restarlos... además como imprimir los resultados con el comando 'print'.


Para finalizar la primera lección, guardaremos la palabra "Python" en la variable 'word'. Veamos cómo acceder a cada una de sus letras según su posición (empezando siempre desde la posición 0 para la primera letra 'P') y veamos qué pasa al intentar acceder a una posición que no existe o intentar modificar una letra de la variable.


Próxima lección

Esto es todo por hoy, en la próxima lección más y mejor...

6 comentarios:

  1. Excelente, volveré por la segunda parte

    ResponderEliminar
  2. Me alegro, ve practicando haciendo los ejemplos de las imágenes que en pocos días vendrá la lección 2 ;)

    ResponderEliminar
  3. Buen inicio!, no olvides de seguir con las clases :D

    ResponderEliminar
  4. Muchas gracias Álvaro por este curso de introducción a Python. Seguiré el resto de lecciones. Saludos

    ResponderEliminar
  5. El Curso python inteligencia artificial es uno de los mejores del mundo, con el aprenderás mucho, sus programadores son calificados, jamás sentirás que tienes dudas porque siempre las aclararán.

    ResponderEliminar