Biopython
El proyecto 'Biopython' es el nombre que recibe una serie de aplicaciones y programas informáticos pensados para cuantificar y hacer cálculos con datos biológicos, programados por una comunidad internacional. Su objetivo principal es el de desarrollar el mayor número posible de bibliotecas informáticas basadas en el lenguaje de programación Python, que tengan aplicaciones bioinformáticas y que estén disponibles para un público lo más amplio posible.[1][2] Esto es posible gracias a una licencia de código abierto específica, llamada licencia Biopython, que es muy poco restrictiva. Biophython permite representar secuencias biológicas y anotaciones de genomas y es capaz de comunicar con las bases de datos biológicos en línea del NCBI para hacer cálculos. Además, gracias a diversos módulos, puede ser utilizada para trabajar sobre proyectos relativos al alineamiento de secuencias, cálculo de estructuras proteicas, genética de poblaciones, filogenética e inteligencia artificial. HistoriaEl desarrollo de Biopython comenzó en 1999 y su primera versión fue publicada en julio de 2000. Fue desarrollado en un periodo de tiempo y con objetivos similares a los de otras aplicaciones bioinformáticas, como BioPerl, BioRuby y BioJava. Entre los primeros desarrolladores se cuentan Jeff Chang, Andrew Dalke and Brad Chapman, aunque más de 100 colaboradores han contribuido al proyecto hasta la fecha. En 2007 comienza un proyecto similar llamado PyCogent. DiseñoSiempre que es posible, en las aplicaciones Biopython se usa el lenguaje de programación Python, de manera que sea más fácil de utilizar para los usuarios de este lenguaje. Biopython es capaz de leer y modificar la mayoría de formatos habituales para cada una de sus áreas de actividad, y su licencia es compatible con la mayoría de licencias de código abierto, de manera que puede ser utilizado para crear una gran variedad de proyectos informáticos.[2] Características y ejemplosSecuenciasUn concepto central de Biopython es la secuencia biológica, que aparece representada por la clase >>> # Este código crea una secuencia de ADN y realiza ciertas manipulaciones típicas.
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import IUPAC
>>> dna_sequence = Seq('AGGCTTCTCGTA', IUPAC.unambiguous_dna)
>>> dna_sequence
Seq('AGGCTTCTCGTA', IUPACUnambiguousDNA())
>>> dna_sequence[2:7]
Seq('GCTTC', IUPACUnambiguousDNA())
>>> dna_sequence.reverse_complement()
Seq('TACGAGAAGCCT', IUPACUnambiguousDNA())
>>> rna_sequence = dna_sequence.transcribe()
>>> rna_sequence
Seq('AGGCUUCUCGUA', IUPACUnambiguousRNA())
>>> rna_sequence.translate()
Seq('RLLV', IUPACProtein())
Anotación de secuencias genéticasLa clase >>> # Este código carga una secuencia anotada a partir de un archivo y muestra algunos de sus contenidos.
>>> from Bio import SeqIO
>>> seq_record = SeqIO.read('pTC2.gb', 'genbank')
>>> seq_record.name
'NC_019375'
>>> seq_record.description
'Providencia stuartii plasmid pTC2, complete sequence.'
>>> seq_record.features[14]
SeqFeature(FeatureLocation(ExactPosition(4516), ExactPosition(5336), strand=1), type='mobile_element')
>>> seq_record.seq
Seq('GGATTGAATATAACCGACGTGACTGTTACATTTAGGTGGCTAAACCCGTCAAGC...GCC', IUPACAmbiguousDNA())
Mecanismos de entrada y de salidaBiopython es capaz de leer y escribir un cierto número de formatos comunes de secuencias genéticas, incluyendo FASTA, FASTQ, GenBank, Clustal, PHYLIP y NEXUS. Cuando lee archivos, la información descriptiva del archivo puede ser utilizada para completar los miembros de las clases Biopython, tales como Los archivos de secuencias de gran tamaño pueden exceder los límites de recursos memoria de un ordenador, así que Biopython ofrece varias opciones para acceder a los registros de grandes archivos. Estos pueden ser cargados directamente en la memoria de las estructuras de datos de Python, como listas o diccionarios, proporcionando un acceso rápido a ellos aunque más caro en memoria. Por otra parte, los archivos pueden ser leídos a partir del disco duro si es necesario, con un rendimiento más lento pero con requerimientos de memoria más reducidos. >>> # Este código carga un archivo que contiene múltiples secuencias y guarda cada una de ellas en un formato diferente.
>>> from Bio import SeqIO
>>> genomes = SeqIO.parse('salmonella.gb', 'genbank')
>>> for genome in genomes:
... SeqIO.write(genome, genome.id + '.fasta', 'fasta')
Acceso a bases de datos en líneaGracias al módulo Bio.Entrez, los usuarios de Biopython pueden descargar datos biológicos a partir de las bases de datos NCBI. Cada una de las funciones proporcionadas por el motor de búsqueda Entrez está disponible a través de las funciones de este módulo, incluyendo la búsqueda y descarga de registros. >>> # Este código descarga genomas de la base de datos de nucleótidos del NBIC y los guarda en un archivo FASTA.
>>> from Bio import Entrez
>>> from Bio import SeqIO
>>> output_file = open('all_records.fasta', "w")
>>> Entrez.email = 'my_email@example.com'
>>> records_to_download = ['FO834906.1', 'FO203501.1']
>>> for record_id in records_to_download:
... handle = Entrez.efetch(db='nucleotide', id=record_id, rettype='gb')
... seqRecord = SeqIO.read(handle, format='gb')
... handle.close()
... output_file.write(seqRecord.format('fasta'))
FilogeniaEl módulo Bio.Phylo proporciona herramientas para visualizar y trabajar con árboles filogenéticos. Es posible leer y grabar varios tipos de formato, incluyendo los formatos Newick, NEXUS y phyloXML. Las manipulaciones habituales y transversales pueden ser realizadas gracias a los objetos Los árboles enraizados pueden ser dibujados en formato ASCII o usando matplotlib (ver Figura 1), y la biblioteca Graphviz puede ser utilizada para dibujar presentaciones sin enraizar (ver Figura 2). Diagramas de genomaEl módulo GenomeDiagram proporciona métodos para visualizar secuencias en Biopython.[7] Las secuencias pueden ser dibujadas en una forma linear o circular (ver Figura 3), y varios formatos de salida son posibles, incluyendo pdfs y pngs. Los diagramas son creados haciendo pistas y luego añadiendo las características de las secuencias en esas pistas. Si se hace un bucle con las características de cada secuencia y se usan sus atributos para decidir cómo y por qué se añaden a las pistas del diagrama, se puede ejercer un control preciso sobre la apariencia final del diagrama. También se pueden dibujar enlaces entre las diferentes pistas, lo cual permite comparar múltiples secuencias en un solo diagrama. Estructura macromolecularEl módulo Bio.PDB permite cargar estructuras moleculares a partir de archivos tipo PDB y mmCIF, y fue añadido a Biopython en 2003.[8] El objeto Usando Bio.PDB, los usuarios pueden navegar entre los componentes individuales de un archivo de estructura macromolecular, pudiendo examinar cada átomo de la proteína. También se pueden realizar los análisis habituales, como medir distancias o ángulos, comparar residuos y calcular la profundidad de los residuos. Genética de poblacionesEl módulo Bio.Popgen añade soporte a Biopython para Genepop, un paquete informático para el análisis estadístico de genética de poblaciones.[9] Esto permite hacer análisis basados en el Equilibrio de Hardy-Weinberger, el desequilibrio de ligamiento y otras características de las frecuencias alélicas de una población. Este módulo también puede realizar simulaciones de genética de poblaciones utilizando la teoría de la coalescencia junto con el programa fastimcoal2.[10] Controladores wrapper para herramientas de líneas de comandosMuchos de los módulos de Biopython contienen controladores wrapper de líneas de comandos para las herramientas más usadas, de manera que estas herramientas puedan ser usadas en el interior de Biopython. Estos controladores incluyen BLAST, Clustal, PhyML, EMBOSS y SAMtools. Los usuarios pueden subclasificar un controlador wrapper genérico para añadir soporte para cualquier otra herramienta de líneas de comandos. Véase tambiénReferencias
Enlaces externos |