El proyecto Biopython es una colección de código abierto de herramientas Python no comerciales para biología computacional y bioinformática , creada por una asociación internacional de desarrolladores. [1] [3] [4] Contiene clases para representar secuencias biológicas y anotaciones de secuencia , y es capaz de leer y escribir en una variedad de formatos de archivo. También permite un medio programático para acceder a bases de datos en línea de información biológica , como las del NCBI . Los módulos separados amplían las capacidades de Biopython para la alineación de secuencias ,estructura de proteínas , genética de poblaciones , filogenética , motivos de secuencia y aprendizaje automático . Biopython es uno de varios proyectos Bio * diseñados para reducir la duplicación de código en biología computacional . [5]
Autor (es) original (es) | Capitán B, Chang J [1] |
---|---|
Versión inicial | 2000 [1] |
Lanzamiento estable | 1,79 [2] / 3 de junio de 2021 |
Repositorio | https://github.com/biopython/biopython |
Escrito en | Python y C |
Plataforma | Multiplataforma |
Tipo | Bioinformática |
Licencia | Licencia de Biopython |
Sitio web | biopython |
Historia
El desarrollo de Biopython comenzó en 1999 y se lanzó por primera vez en julio de 2000. [6] Se desarrolló durante un período de tiempo similar y con objetivos análogos a otros proyectos que agregaron capacidades bioinformáticas a sus respectivos lenguajes de programación, incluidos BioPerl , BioRuby y BioJava . Los primeros desarrolladores del proyecto incluyeron a Jeff Chang, Andrew Dalke y Brad Chapman, aunque más de 100 personas han hecho contribuciones hasta la fecha. [7] En 2007, se estableció un proyecto Python similar , llamado PyCogent . [8]
El alcance inicial de Biopython implicaba acceder, indexar y procesar archivos de secuencias biológicas. Si bien este sigue siendo un enfoque importante, durante los años siguientes, los módulos agregados han ampliado su funcionalidad para cubrir áreas adicionales de biología (consulte Características y ejemplos clave ).
A partir de la versión 1.62, Biopython admite la ejecución en Python 3 y Python 2. [9]
Diseño
Siempre que sea posible, Biopython sigue las convenciones utilizadas por el lenguaje de programación Python para que sea más fácil para los usuarios familiarizados con Python. Por ejemplo, Seq
y los SeqRecord
objetos se pueden manipular mediante el corte , de una manera similar a las cadenas y listas de Python. También está diseñado para ser funcionalmente similar a otros proyectos Bio *, como BioPerl. [6]
Biopython puede leer y escribir los formatos de archivo más comunes para cada una de sus áreas funcionales, y su licencia es permisiva y compatible con la mayoría de las demás licencias de software, lo que permite que Biopython se utilice en una variedad de proyectos de software. [4]
Características y ejemplos clave
Secuencias
Un concepto central en Biopython es la secuencia biológica, y esto está representado por la Seq
clase. [10] Un Seq
objeto Biopython es similar a una cadena de Python en muchos aspectos: admite la notación de segmento de Python, se puede concatenar con otras secuencias y es inmutable. Además, incluye métodos específicos de secuencia y especifica el alfabeto biológico particular utilizado.
>>> # Este script crea una secuencia de ADN y realiza algunas manipulaciones típicas >>> desde Bio.Seq importación Sec >>> de Bio.Alphabet importación IUPAC >>> dna_sequence = Sec ( 'AGGCTTCTCGTA' , la 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 secuencia
La SeqRecord
clase describe secuencias, junto con información como nombre, descripción y características en forma de SeqFeature
objetos. Cada SeqFeature
objeto especifica el tipo de característica y su ubicación. Los tipos de características pueden ser 'gen', 'CDS' (secuencia de codificación), 'repeat_region', 'mobile_element' u otros, y la posición de las características en la secuencia puede ser exacta o aproximada.
>>> # Este script carga una secuencia anotada desde un archivo y ve algunos de sus contenidos. >>> de Bio import SeqIO >>> seq_record = SeqIO . read ( 'pTC2.gb' , 'genbank' ) >>> seq_record . nombre 'NC_019375' >>> seq_record . descripción 'Plásmido pTC2 de Providencia stuartii, secuencia completa'. >>> seq_record . características [ 14 ] SeqFeature (FeatureLocation (ExactPosition (4516), ExactPosition (5336), cadena = 1), tipo = 'elemento_móvil') >>> seq_record . seq Seq ('GGATTGAATATAACCGACGTGACTGTTACATTTAGGTGGCTAAACCCGTCAAGC ... GCC', IUPACAmbiguousDNA ())
Entrada y salida
Biopython puede leer y escribir en varios formatos de secuencia comunes, incluidos FASTA , FASTQ , GenBank, Clustal, PHYLIP y NEXUS . Al leer archivos, la información descriptiva del archivo se utiliza para completar los miembros de las clases de Biopython, como SeqRecord
. Esto permite que los registros de un formato de archivo se conviertan en otros.
Los archivos de secuencia muy grandes pueden exceder los recursos de memoria de una computadora, por lo que Biopython proporciona varias opciones para acceder a los registros en archivos grandes. Se pueden cargar completamente en la memoria en estructuras de datos de Python, como listas o diccionarios , lo que proporciona un acceso rápido a costa del uso de la memoria. Alternativamente, los archivos se pueden leer desde el disco según sea necesario, con un rendimiento más lento pero menores requisitos de memoria.
>>> # Este script carga un archivo que contiene múltiples secuencias y guarda cada una en un formato diferente. >>> de Bio import SeqIO >>> genomas = SeqIO . parse ( 'salmonella.gb' , 'genbank' ) >>> para genoma en genomas : ... SeqIO . escribir ( genoma , genoma . id + '.fasta' , 'fasta' )
Acceder a bases de datos en línea
A través del módulo Bio.Entrez, los usuarios de Biopython pueden descargar datos biológicos de las bases de datos del NCBI. Cada una de las funciones proporcionadas por el motor de búsqueda Entrez está disponible a través de funciones en este módulo, incluida la búsqueda y descarga de registros.
>>> # Este script descarga genomas de la base de datos de nucleótidos NCBI y los guarda en un archivo FASTA. >>> de Bio importación Entrez >>> de Bio importación SeqIO >>> output_file = abierto ( 'all_records.fasta' , "w" ) >>> Entrez . email = '[email protected]' >>> records_to_download = [ 'FO834906.1' , 'FO203501.1' ] >>> para record_id en records_to_download : ... handle = Entrez . efetch ( db = 'nucleótido' , id = record_id , rettype = 'gb' ) ... seqRecord = SeqIO . leer ( identificador , formato = 'gb' ) ... identificador . close () ... archivo_salida . escribir ( formato seqRecord . ( 'fasta' ))
Filogenia
El módulo Bio.Phylo proporciona herramientas para trabajar y visualizar árboles filogenéticos . Se admiten una variedad de formatos de archivo para lectura y escritura, incluidos Newick , NEXUS y phyloXML . Las manipulaciones y recorridos de árboles comunes se admiten a través de los objetos Tree
y Clade
. Los ejemplos incluyen convertir y clasificar archivos de árbol, extraer subconjuntos de un árbol, cambiar la raíz de un árbol y analizar las características de las ramas, como la longitud o la puntuación. [12]
Los árboles enraizados se pueden dibujar en ASCII o usando matplotlib (ver Figura 1), y la biblioteca Graphviz se puede usar para crear diseños sin raíz (ver Figura 2).
Diagramas del genoma
El módulo GenomeDiagram proporciona métodos para visualizar secuencias dentro de Biopython. [14] Las secuencias se pueden dibujar en forma lineal o circular (consulte la Figura 3) y se admiten muchos formatos de salida, incluidos PDF y PNG . Los diagramas se crean haciendo pistas y luego agregando funciones de secuencia a esas pistas. Al recorrer las características de una secuencia y usar sus atributos para decidir si y cómo se agregan a las pistas del diagrama, se puede ejercer mucho control sobre la apariencia del diagrama final. Se pueden dibujar enlaces cruzados entre diferentes pistas, lo que permite comparar múltiples secuencias en un solo diagrama.
Estructura macromolecular
El módulo Bio.PDB puede cargar estructuras moleculares de archivos PDB y mmCIF , y se agregó a Biopython en 2003. [15] El Structure
objeto es fundamental para este módulo y organiza la estructura macromolecular de manera jerárquica: los Structure
objetos contienen Model
objetos que contienen Chain
objetos que contienen Residue
objetos que contienen Atom
objetos. Los residuos y átomos desordenados obtienen sus propias clases, DisorderedResidue
y DisorderedAtom
eso describe sus posiciones inciertas.
Usando Bio.PDB, uno puede navegar a través de componentes individuales de un archivo de estructura macromolecular, como examinar cada átomo en una proteína. Se pueden realizar análisis comunes, como medir distancias o ángulos, comparar residuos y calcular la profundidad de los mismos.
Genética de poblaciones
El módulo Bio.PopGen agrega soporte a Biopython para Genepop, un paquete de software para el análisis estadístico de la genética de poblaciones. [16] Esto permite analizar el equilibrio de Hardy-Weinberg , 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 genéticas de poblaciones utilizando la teoría coalescente con el programa fastsimcoal2. [17]
Envoltorios para herramientas de línea de comandos
Muchos de los módulos de Biopython contienen envoltorios de línea de comandos para herramientas de uso común, lo que permite que estas herramientas se utilicen desde Biopython. Estos contenedores incluyen BLAST , Clustal , PhyML, EMBOSS y SAMtools . Los usuarios pueden crear una subclase de una clase contenedora genérica para agregar compatibilidad con cualquier otra herramienta de línea de comandos.
Ver también
- Fundación Abierta de Bioinformática
- BioPerl
- BioRuby
- BioJS
- BioJava
Referencias
- ^ a b c Chapman, Brad; Chang, Jeff (agosto de 2000). "Biopython: herramientas de Python para biología computacional". Boletín ACM SIGBIO . 20 (2): 15-19. doi : 10.1145 / 360262.360268 . S2CID 9417766 .
- ^ "Biopython 1.79 lanzado" . Fundación Abierta de Bioinformática. 3 de junio de 2021.
- ^ Gallo, Peter JA; Antao, Tiago; Chang, Jeffery T; Chapman, Brad A; Cox, Cymon J; Dalke, Andrew; Friedberg, Iddo; Hamelryck, Thomas; Kauff, Frank; Wilczynski, Bartek; de Hoon, Michiel JL (20 de marzo de 2009). "Biopython: herramientas de Python disponibles gratuitamente para biología molecular computacional y bioinformática" . Bioinformática . 25 (11): 1422–3. doi : 10.1093 / bioinformatics / btp163 . PMC 2682512 . PMID 19304878 .
- ^ a b Consulte el sitio web de Biopython para ver otros artículos que describen Biopython y una lista de más de cien publicaciones que utilizan / citan a Biopython .
- ^ Mangalam, Harry (septiembre de 2002). "Los kits de herramientas de Bio *: una breve descripción" . Sesiones informativas en bioinformática . 3 (3): 296-302. doi : 10.1093 / bib / 3.3.296 . PMID 12230038 .
- ^ a b Chapman, Brad (11 de marzo de 2004), The Biopython Project: Philosophy, Functional and Facts (PDF) , consultado el 11 de septiembre de 2014
- ^ Lista de colaboradores de Biopython , archivada desde el original el 11 de septiembre de 2014 , consultado el 11 de septiembre de 2014
- ^ Knight, R; Maxwell, P; Birmingham, A; Carnes, J; Caporaso, JG; Easton, BC; Eaton, M; Hamady, M; Lindsay, H; Liu, Z; Lozupone, C; McDonald, D; Robeson, M; Sammut, R; Smit, S; Wakefield, MJ; Widmann, J; Wikman, S; Wilson, S; Ying, H; Huttley, GA (2007). "Py Cogent : un conjunto de herramientas para dar sentido a la secuencia" . Biología del genoma . 8 (8): R171. doi : 10.1186 / gb-2007-8-8-r171 . PMC 2375001 . PMID 17708774 .
- ^ Chapman, Brad, Biopython Installation , consultado el 11 de septiembre de 2014
- ^ Chang, Jeff; Chapman, Brad; Friedberg, Iddo; Hamelryck, Thomas; de Hoon, Michiel; Gallo, Peter; Antao, Tiago; Talevich, Eric; Wilczynski, Bartek (29 de mayo de 2014), Biopython Tutorial and Cookbook , consultado el 28 de agosto de 2014
- ^ Zmasek, Christian M; Zhang, Qing; Vosotros, Yuzhen; Godzik, Adam (24 de octubre de 2007). "Sorprendente complejidad de la red de apoptosis ancestral" . Biología del genoma . 8 (10): R226. doi : 10.1186 / gb-2007-8-10-r226 . PMC 2246300 . PMID 17958905 . Archivado desde el original el 10 de octubre de 2014 . Consultado el 9 de septiembre de 2014 .
- ^ Talevich, Eric; Invergo, Brandon M; Gallo, Peter JA; Chapman, Brad A (21 de agosto de 2012). "Bio.Phylo: un conjunto de herramientas unificado para procesar, analizar y visualizar árboles filogenéticos en Biopython" . BMC Bioinformática . 13 (209): 209. doi : 10.1186 / 1471-2105-13-209 . PMC 3468381 . PMID 22909249 .
- ^ "Klebsiella pneumoniae cepa KPS77 plásmido pKPS77, secuencia completa" . NCBI . Consultado el 10 de septiembre de 2014 .
- ^ Pritchard, Leighton; White, Jennifer A; Birch, Paul RJ; Toth, Ian K (marzo de 2006). "GenomeDiagram: un paquete de Python para la visualización de datos genómicos a gran escala" . Bioinformática . 22 (5): 616–617. doi : 10.1093 / bioinformatics / btk021 . PMID 16377612 .
- ^ Hamelryck, Thomas; Manderick, Bernard (10 de mayo de 2003). "Analizador de archivos PDB y clase de estructura implementada en Python" . Bioinformática . 19 (17): 2308–2310. doi : 10.1093 / bioinformatics / btg299 . PMID 14630660 .
- ^ Rousset, François (enero de 2008). "GENEPOP'007: una completa reimplementación del software GENEPOP para Windows y Linux". Recursos de ecología molecular . 8 (1): 103–106. doi : 10.1111 / j.1471-8286.2007.01931.x . PMID 21585727 . S2CID 25776992 .
- ^ Excoffier, Laurent; Foll, Matthieu (1 de marzo de 2011). "fastsimcoal: un simulador coalescente de tiempo continuo de la diversidad genómica en escenarios evolutivos arbitrariamente complejos" . Bioinformática . 27 (9): 1332-1334. doi : 10.1093 / bioinformatics / btr124 . PMID 21398675 .
enlaces externos
- Página web oficial
- Tutorial y libro de cocina de Biopython ( PDF )
- Código fuente de Biopython en GitHub