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: [email protected]
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