Download Biopython básico
Document related concepts
no text concepts found
Transcript
Biopython básico Manual práctico Biopython básico Manual Práctico José Nelson Pérez Castillo Cristian Alejandro Rojas Quintero Nelson Enrique Vera Parra © Universidad Distrital Francisco José de Caldas © Centro de Investigaciones y Desarrollo Científico (CIDC) © Instituto de Genética de la Universidad Nacional (IGUN) © Nelson Enrique Vera © Cristian Alejandro Rojas © José Nelson Pérez Primera edición: Bogotá D.C., agosto de 2014. ISBN: 978-958-8832-70-8 Dirección Sección de Publicaciones Rubén Eliécer Carvajalino C. Coordinación editorial Edwin Pardo Salazar Corrección de estilo Paula Liliana Santos Diagramación Cristina Castañeda Pedraza Editorial UD Universidad Distrital Francisco José de Caldas Carrera 19 No. 33-39 Teléfono 3239300 ext. 6203 Correo electrónico: publicaciones@udistrital.edu.co Vera Parra, Nelson Enrique Biopython básico : manual práctico / Nelson Enrique Vera Parra, Cristian Alejandro Rojas Quintero, José Nelson Pérez Castillo. -- Bogotá : Universidad Distrital Francisco José de Caldas, 2014. 156 páginas ; 24 cm. ISBN 978-958-8832-70-8 1. Bioinformática 2. Programación genética (Informática) 3. Biología computacional 4. Algoritmos genéticos I. Rojas Quintero, Cristian Alejandro, autor II. Pérez Castillo, José Nelson, autor III. Tít. 005.2 cd 21 ed. A1450057 CEP-Banco de la República-Biblioteca Luis Ángel Arango Todos los derechos reservados. Esta obra no puede ser reproducida sin el permiso previo escrito del Fondo de Publicaciones de la Universidad Distrital. Hecho en Colombia Dedicatoria A las mujeres de mi vida, Isabel Rojas, Gabriela Casas y Martha Quintero. Por su dedicación, amor y fe. C. Rojas A una mujer inteligente, trabajadora y soñadora: mi esposa, Luz Nelly Rengifo. Por llenar mi vida de amor, tranquilidad y felicidad N. Vera Agradecimientos Este libro no hubiera sido posible sin la ayuda del Centro de Cómputo de Alto Desempeño de la Universidad Distrital (CECAD), del Instituto de Genética de la Universidad Nacional (IGUN) y del Grupo GNU/Linux de la Universidad Distrital (GLUD). Contenido Introducción a Python 15 ¿Qué es Python?15 Características15 Instalación de Python 16 Instalación en Windows 16 Instalación en GNU/ Linux 19 Primer programa con Python 21 Tipos de datos básicos22 Estructuras de datos 30 Operadores35 Estructuras de control de flujo 36 Funciones44 Módulos y paquetes 45 Excepciones49 Capítulo I. Introducción a Biopython 51 ¿Qué es Biopython? 51 ¿Para quién es Biopython? 52 Requerimientos52 Instalación de Numpy 53 Instalación de Biopython 54 Capítulo II. Trabajar con secuencias básicas57 Trabajando con diferentes tipos de alfabeto 58 Operaciones con el objeto Seq 60 Traducción61 Complemento y complemento reverso 63 Secuencias mutables 63 Secuencias a Strings 64 Capítulo III. Trabajar con secuencias con más información67 ¿Cuándo utilizar SeqRecord? 68 Características y atributos de SeqRecord 68 Crear un objeto SeqRecord 68 Crear un objeto SeqRecord con características 70 Creación de una característica 70 Impresión en diferentes formatos 72 Cortar y operar objetos SeqRecord 73 Capítulo IV. Crear secuencias desde archivos y texto 75 ¿Cuándo utilizar Bio.Seqio? 76 Leer desde archivos con solo una secuencia 76 Leer desde archivos con múltiples secuencias77 Leer desde archivos comprimidos 78 Capítulo V. Escribir secuencias a archivos81 Capítulo VI. Trabajar con alineamiento de secuencias85 Biopython y ClustalW 86 Instalación de ClustalW 86 Generación del filograma 89 Biopython y MUSCLE89 Lectura desde Archivos de Múltiples Alineamientos 91 Conversión entre Formatos de Alineamiento 92 Capítulo VII. Ejecutar BLAST y leer sus resultados93 Ejecutar BLAST en Internet 94 Ejecutar BLAST en Local 97 Ejecución98 Leer desde la Salida de BLAST 99 Capítulo VIII. Conexión con bases de datos biológicas103 Entrez103 Entrez y Biopython 104 Buscar registros relacionados 109 Capítulo IX. Creación de árboles filogenéticos123 Biopython y Filogenia 123 Generar árboles en ASCII 124 Generar árboles en imágenes 125 Editar Filograma 126 Algunas funciones útiles de los árboles 128 Capítulo X. Códigos de ejemplo131 Código de ejemplo 1. Hallar el contenido de GC 131 Código de ejemplo 2. Convertir entre diferentes formatos 133 Código ejemplo 3. “Voy a tener suerte” versión Entrez con proteínas 134 Código ejemplo 4. Leer desde la salida de BLAST y guardar en una base de datos MySQL 136 Código ejemplo 5. Crear un árbol filogenético a partir de varios archivos de secuencias Fasta 141 FAQ144 Referencias146 13 Introducción a Python En este capítulo se hace una introducción a conceptos básicos de progra� mación en Python; si el lector tiene experiencia en su uso podrá omitir esta sección. ¿Qué es Python? Es un lenguaje de programación interpretado, de fácil aprendizaje, creado a principios de los años 90 por Guido van Rossum. El desarrollo de este len� guaje fue influenciado por Perl, Java y Ruby. Python es un lenguaje de propósito general, fácilmente extensible a domi� nios específicos; provee estructuras de datos eficientes de alto nivel y posee un tipado fuerte y dinámico. Características • Propósito general: Python es usado en proyectos de diversas áreas, tanto de ciencias básicas como aplicadas: matemáticas, física, bioin� formática, administración de sistemas, finanzas, entre otras. Tam� bién mediante el uso de librerías externas tales como Numpy, PyODE, Biopython, Psutil, Simpy, etc. 15 José Nelson Pérez Castillo / Cristian Alejandro Rojas Quintero / Nelson Enrique Vera Parra • Multiparadigma: Python permite el uso de varios paradigmas de pro� gramación: funcional, orientada a objetos, estructurada, reflexiva o im� perativa. • Tipado dinámico: en Python no es necesario declarar el tipo de dato que va a contener una variable; se determina automáticamente según el valor que se le asigne. • Fuertemente tipado: Python no permite tratar una variable como un tipo de dato distinto; es decir, si existen dos cadenas de texto que con� tienen “5” y “6”, respectivamente, no es posible sumarlas para que den “11” sin antes hacer una conversión a un tipo de dato numérico. • Multiplataforma: Python está disponible en la mayoría de las platafor� mas que existen actualmente: Linux, Windows, Mac, Solaris, AIX, etc. • Libre: está licenciado por la Python Software Foundation License, consi� derada como software libre; esto permite que sea usado para cualquier fin, incluso su código de fuente está disponible para la modificación de quien lo necesite. • Identado: Python utiliza la identación para delimitar la estructura del programa, permitiendo establecer bloques de código sin necesidad de utilizar corchetes. Instalación de Python Instalación en Windows La instalación de Python 3 en Windows es muy sencilla. Es necesario des� cargar el instalador desde la página http://www.python.org/getit/; en este caso se descargará la versión 3.3.2, como se muestra en la figura 1. Una vez el instalador haya sido descargado y ejecutado, aparecerá una ventana en la que se pregunta si Python será instalado para uno o para todos los usuarios del sistema (ver figura 2). Seleccione la opción de acuerdo a su preferencia y dé clic en next. 16 Introducción a Python Figura 1. Descarga del instalador de Python desde la página oficial Figura 2. Selección de usuarios habilitados para el uso Python A continuación aparecerá una ventana en la cual se debe elegir el directo� rio en el que será instalado Python. Seleccione la ubicación deseada y nueva� mente haga clic en next. Figura 3. Selección de directorio de instalación de Python 17 José Nelson Pérez Castillo / Cristian Alejandro Rojas Quintero / Nelson Enrique Vera Parra Luego se mostrará una pantalla, en la que el usuario podrá escoger qué componentes desea instalar con Python, por ejemplo: documentación, libre� rías gráficas (TCL/Tk), scripts de utilidad, etc. (ver figura 4). Seleccione los componentes a instalar y dé clic en next. Una vez seleccionados los componentes adicionales comenzará la insta� lación de Python (ver figura 5). Es probable que en esta etapa Windows pida los permisos de administrador para empezar con la instalación. Figura 4. Selección de componentes adicionales de Python Figura 5. Progreso de la instalación de Python ¡Python ha sido instalado exitosamente en el sistema! El intérprete podrá abrirse desde el menú inicio seleccionando IDLE (Python GUI). 18 Introducción a Python Figura 6. IDLE (Python GUI) en el menú de inicio Instalación en GNU/ Linux Aunque Python viene, por defecto, en la mayoría de las distribuciones actuales de GNU/Linux, es necesario indicar que la versión que trae gene� ralmente es la 2.X. A continuación, se describirán dos formas de cómo instalar Python 3 en una máquina GNU/Linux: la primera en la compilación del código de fuente y la segunda, más sencilla, desde los repositorios. Desde código fuente Para hacer la instalación desde código fuente, es necesario descargar con el comando wget el archivo con las fuentes de Python 2. carojasq@bio:~$ wget http://www.python.org/ftp/python/3.3.2/Python 3.3.2.tar.bz2 La salida en pantalla de este comando debe ser similar a la figura 7. Figura 7. Descarga desde el código de fuente Una vez el código de fuente esté descargado se procederá a descomprimir y a acceder a la carpeta mediante los siguientes comandos: 19 José Nelson Pérez Castillo / Cristian Alejandro Rojas Quintero / Nelson Enrique Vera Parra carojasq@bio:~$ tar -xjf Python-3.3.2.tar.bz2 carojasq@bio:~$ cd Python-3.3.2/ Ubicado en la carpeta Python use el siguiente comando para configurar el entorno de compilación: carojasq@bio:~/Python-3.3.2$ ./configure Después se compilará Python con el siguiente comando: carojasq@bio:~/Python-3.3.2$ make Por último, es necesario acceder como administrador del sistema para poder instalar Python 3 en todos los usuarios. Habilitados los permisos de administrador solo hará falta ejecutar el comando de instalación, tal como se muestra enseguida: carojasq@bio:~/Python-3.3.2$ su Contraseña: root@bio:/home/carojasq/Python-3.3.2# make install Y Python, al fin, ha sido instalado en el sistema. Desde los repositorios Como se vio en la sección anterior, la instalación desde código fuente pue� de ser un poco tediosa; por eso es recomendable realizar la instalación desde los repositorios que tienen disponibles las distribuciones GNU/Linux. Esto se puede hacer con el gestor de paquetes de la distribución usada. A continua� ción se mostrará cómo hacerlo desde la distribución Debian: root@ppcc:~/# apt-get install python3 ¡Y Python 3 ha sido instalado! Es necesario informarle al lector que a partir de este fragmento solo se hará alusión al manejo de Python sobre una plataforma GNU/Linux. 20 Introducción a Python Primer programa con Python Python es un lenguaje interpretado que permite editar códigos de forma interactiva con el intérprete o ejecutarlos desde un archivo previamente crea� do, por lo general, con extensión .py (no es obligatorio que la extensión en la que se guarde el programa sea una extensión .py, esto se hace por conven� ción). Ahora se describirá cómo mostrar un “Hola mundo” en pantalla con las formas antes descritas; con el intérprete de Python y con un archivo .py. La función que se usará para este fin es la función print. Desde intérprete Para mostrar un “Hola mundo” en pantalla es necesario abrir el intérprete de Python y ejecutar desde la terminal el comando python3, como se muestra en la figura 8. Figura 8. Invocación del intérprete de Python 3 Una vez el intérprete de Python esté abierto, será posible ejecutar la orden para mostrar en pantalla “Hola mundo” mediante la función print: >>>print (“Hola mundo”) Desde archivo .py Para mostrar un “Hola mundo” a través de un archivo de extensión .py será necesario crearlo mediante un editor de texto con el contenido a ejecutar, en este caso «print («Hola mundo»)» y guardarlo con la extensión .py «holamundo.py». Se recomienda el editor de texto Geany disponible en www.geany. org/. En la figura 9 se muestra cómo quedará el contenido del archivo y su visualización en Geany. 21 José Nelson Pérez Castillo / Cristian Alejandro Rojas Quintero / Nelson Enrique Vera Parra Figura 9. Edición de holamundo.py en Geany Una vez el archivo holamundo.py esté listo y guardado se podrá ejecutar el código con la siguiente orden, digitada en la consola de Bash: python3 holamundo.py En la figura 10 se muestra el resultado de la ejecución del script. Figura 10. Ejecución de holamundo.py De aquí en adelante se usará el intérprete para mostrar la mayoría de ejemplos; además se enseñará cómo pasar parámetros a programas que se ejecuten desde un archivo. Tipos de datos básicos Aunque Python identifica y asigna automáticamente el tipo de dato a la hora de crear una variable, es necesario conocer a fondo dichos datos con el fin de sacar provecho a todas sus funciones. En esta sección se explicarán los tipos de datos básicos de Python (numéri� cos, booleanos y de texto); se indicarán algunas operaciones para convertirlos y para realizar operaciones entre ellos. Desde este momento se usará la función type() que permite identificar qué tipo de dato u objeto es una variable. Numéricos Python soporta varios tipos de datos numéricos dependiendo de la canti� dad que se desea expresar o la operación que se necesite realizar. Por ejem� plo, para manejar cantidades discretas bastará con un tipo de dato entero, en 22 Introducción a Python caso de tratar con números decimales se necesitará un tipo de dato de coma flotante. Hay que apuntar que, a diferencia de otros lenguajes de programa� ción, Python también provee los números complejos como un tipo de dato integrado. A continuación se exponen los tipos de datos numéricos existentes y algu� nas operaciones para la conversión entre ellos. Enteros (int) Los números enteros son aquellos que no tienen números decimales, pue� den ser positivos o negativos. Una de las ventajas que tiene Python 3, con res� pecto a Python 2, es que en un tipo de dato int es posible almacenar cualquier número; el único límite será el espacio disponible en la memoria RAM. A continuación se creará una variable y en ella se almacenará un número ente� ro, posteriormente se verificará con la función type() de qué tipo es la variable. Podrá observar que no hay necesidad de declarar el tipo de dato, sino que Python lo identificará y lo asignará automáticamente. >>> x=15 >>> type(15) <class ‘int’> En algunos casos se pueden tener valores de tipos de datos; estos podrán ser convertidos a enteros, por ejemplo: una cadena de texto, un número flo� tante o un booleano. Ahora se ilustrará la forma como se convierten otros tipos de datos a números enteros utilizando la función int(). >>> x=”15” >>> type(x) <class ‘str’> >>> y=int(x) >>> type(y) <class ‘int’> En el código anterior se creó una variable x con la cadena de texto “15”, luego con la función int() se realizó la conversión de cadena de texto a un entero y se almacenó en la variable y. 23 José Nelson Pérez Castillo / Cristian Alejandro Rojas Quintero / Nelson Enrique Vera Parra >>> x=15.5 >>> type(x) <class ‘float’> >>> y=int(x) >>> print (y) 15 En el código anterior se almacenó el valor 15.5 en la variable x (que co� rresponde a un número flotante), luego en la variable y se almacenó la parte entera de x, que se obtuvo mediante la función int(). >>> x=True >>> y=int(x) >>> print (y) 1 >>> x=False >>> int(x) 0 En el código anterior la variable x se inicializó con el valor True (verda� dero) que corresponde a un tipo de dato booleano. Al realizar la conversión mediante la función int() y almacenar en la variable y, se puede notar que el valor almacenado en y corresponde al entero 1; en caso de que el valor booleano a convertir sea False (falso) el dato entero de salida será 0. Reales (float) Los números reales son aquellos que tienen decimales; en Python son re� presentados por el tipo de dato float. Al almacenar cualquier número decimal en una variable, Python automáticamente la declarará con el tipo de dato float. A continuación se almacenará en la variable x un número real y se verifi� cará el tipo de dato al que corresponde. >>> x=15.0 >>> type(x) <class ‘float’> 24 Introducción a Python Al igual que con los enteros, se mostrarán algunos ejemplos de conversión de diferentes tipos de variable a un tipo de dato float a través de la función float(). Conversión de cadena de texto a número flotante: >>> x=”15.0” >>> print (float(x)) 15.0 Conversión de valor booleano a número flotante: >>> x=False >>> print (float(x)) 0.0 Conversión de número entero a número flotante: >>> x=15 >>> print (float(x)) 15.0 Complejos (complex) Los números complejos son aquellos que constan de una parte real y una parte imaginaria. Python es uno de los pocos lenguajes de programación que provee soporte nativo para estos números, los cuales son representados por el tipo de dato complex. Ahora se almacenará en la variable x un número complejo y se verificará el tipo de dato al cual corresponde: >>> x=1+1j >>> type(x) <class ‘complex’> Tal como se hizo con los números enteros y los reales se mostrará cómo convertir diferentes tipos de datos a un dato complex. Conversión de número entero a número complejo: 25 José Nelson Pérez Castillo / Cristian Alejandro Rojas Quintero / Nelson Enrique Vera Parra >>> x=15 >>> print (complex(x)) (15+0j) Conversión de número flotante a número complejo: >>> x=15.0 >>> print (complex(x)) (15+0j) Conversión de cadena de texto a número complejo: >>> x=”15+9j” >>> print (complex(x)) (15+9j) Conversión de valor booleano a número complejo: >>> x=True >>> print (complex(x)) (1+0j) Booleanos (bool) Los tipos de datos booleanos son aquellos que solo pueden tener dos va� lores: verdadero o falso (True o False). Estos tipos de valores representan nor� malmente el cumplimiento, o no, de una condición. Las operaciones entre ellos no son aritméticas sino lógicas, mediante funciones como: and, or, not. Estos valores también son el resultado de funciones comparativas realizadas con operadores relacionales tales como: ==, !=,<, >. En Python estos valores boolenaos son representados por el tipo de dato bool. A continuación se almacenará en la variable x un valor booleano y se veri� ficará el tipo de dato al cual corresponde. >>> x=True >>> type(x) <class ‘bool’> 26