stringtranslate.com

Biopitón

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] [4] [5] Contiene clases para representar secuencias biológicas y anotaciones de secuencias , 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 extienden las capacidades de Biopython a la alineación de secuencias , la estructura de proteínas , la genética de poblaciones , la filogenética , los motivos de secuencia y el aprendizaje automático . Biopython es uno de varios proyectos Bio* diseñados para reducir la duplicación de código en biología computacional . [6]

Historia

El desarrollo de Biopython comenzó en 1999 y se lanzó por primera vez en julio de 2000. [7] 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. [8] En 2007, se estableció un proyecto Python similar, llamado PyCogent . [9]

El alcance inicial de Biopython incluía el acceso, la indexación y el procesamiento de archivos de secuencias biológicas. Si bien este sigue siendo un objetivo principal, en los años siguientes se agregaron módulos que ampliaron su funcionalidad para cubrir áreas adicionales de la biología (consulte Características principales y ejemplos).

A partir de la versión 1.77, Biopython ya no es compatible con Python 2. [10]

Diseño

Siempre que es 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, los objetos Seqy SeqRecordse pueden manipular mediante slicing , 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. [7]

Biopython es capaz de leer y escribir los formatos de archivos más comunes para cada una de sus áreas funcionales, y su licencia es permisiva y compatible con la mayoría de las otras licencias de software, lo que permite que Biopython se utilice en una variedad de proyectos de software. [5]

Características principales y ejemplos

Secuencias

Un concepto central en Biopython es la secuencia biológica, y esta se representa mediante la Seqclase. [11] Un objeto Biopython Seqes similar a una cadena de Python en muchos aspectos: admite la notación de segmentos de Python, se puede concatenar con otras secuencias y es inmutable. Además, incluye métodos específicos de la secuencia y especifica el alfabeto biológico particular utilizado.

>>> # Este script crea una secuencia de ADN y realiza algunas manipulaciones típicas >>> from  Bio.Seq  import  Seq >>> 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 . traducir () Seq('RLLV', IUPACProtein())

Anotación de secuencia

La SeqRecordclase describe secuencias, junto con información como nombre, descripción y características en forma de SeqFeatureobjetos. Cada SeqFeatureobjeto especifica el tipo de característica y su ubicación. Los tipos de características pueden ser 'gen', 'CDS' (secuencia codificante), '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 visualiza parte de su contenido. >>> 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())

Entrada y salida

Biopython puede leer y escribir en varios formatos de secuencias 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 convertir registros de un formato de archivo a otros.

Los archivos de secuencias muy grandes pueden exceder los recursos de memoria de una computadora, por lo que Biopython ofrece 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 memoria. Alternativamente, los archivos se pueden leer desde el disco según sea necesario, con un rendimiento más lento pero con menores requisitos de memoria.

>>> # Este script carga un archivo que contiene múltiples secuencias y guarda cada una 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í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 que ofrece el motor de búsqueda Entrez está disponible a través de las funciones de este módulo, incluidas la búsqueda y la descarga de registros.

>>> # Este script descarga genomas de la base de datos de nucleótidos del NCBI y los guarda en un archivo FASTA. >>> from  Bio  import  Entrez >>> from  Bio  import  SeqIO >>> output_file  =  open ( "all_records.fasta" ,  "w" ) >>> Entrez.email = "[email protected]" >>> 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 " ) )                   

Filogenia

Figura 1: Un árbol filogenético enraizado creado por Bio.Phylo que muestra la relación entre los homólogos de Apaf-1 de diferentes organismos [12]
Figura 2: El mismo árbol que el anterior, dibujado sin raíz utilizando Graphviz a través de Bio.Phylo

El módulo Bio.Phylo proporciona herramientas para trabajar con árboles filogenéticos y visualizarlos . Se admiten una variedad de formatos de archivo para lectura y escritura, incluidos Newick , NEXUS y phyloXML . Se admiten manipulaciones y recorridos de árboles comunes a través de los objetos Treey Clade. Los ejemplos incluyen la conversión y cotejo de archivos de árboles, la extracción de subconjuntos de un árbol, el cambio de la raíz de un árbol y el análisis de características de las ramas, como la longitud o la puntuación. [13]

Los árboles con raíz 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

Figura 3: Un diagrama de los genes en el plásmido pKPS77, [14] visualizado utilizando el módulo GenomeDiagram en Biopython

El módulo GenomeDiagram proporciona métodos para visualizar secuencias dentro de Biopython. [15] Las secuencias se pueden dibujar en forma lineal o circular (ver Figura 3), y se admiten muchos formatos de salida, incluidos PDF y PNG . Los diagramas se crean creando pistas y luego agregando características de secuencia a esas pistas. Al recorrer las características de una secuencia y usar sus atributos para decidir si se agregan a las pistas del diagrama y cómo, se puede ejercer un gran 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 desde archivos PDB y mmCIF , y se agregó a Biopython en 2003. [16] El Structureobjeto es central para este módulo, y organiza la estructura macromolecular de manera jerárquica: Structurelos objetos contienen Modelobjetos que contienen Chainobjetos que contienen Residueobjetos que contienen Atomobjetos. Los residuos y átomos desordenados obtienen sus propias clases, DisorderedResiduey DisorderedAtom, que describen sus posiciones inciertas.

Con Bio.PDB, se puede navegar por los componentes individuales de un archivo de estructura macromolecular, como examinar cada átomo de una proteína. Se pueden realizar análisis comunes, como medir distancias o ángulos, comparar residuos y calcular la profundidad de los residuos.

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. [17] Esto permite realizar análisis del 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. [18]

Envoltorios para herramientas de línea de comandos

Muchos de los módulos de Biopython contienen contenedores de línea de comandos para herramientas de uso común, lo que permite utilizar estas herramientas 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.

Véase también

Referencias

  1. ^ ab Chapman, Brad; Chang, Jeff (agosto de 2000). "Biopython: herramientas Python para biología computacional". Boletín ACM SIGBIO . 20 (2): 15–19. doi : 10.1145/360262.360268 . S2CID  9417766.
  2. ^ "Versión biopython-181: Commit Release 1.81 (#4233)" . Consultado el 22 de abril de 2023 .
  3. ^ Error: No se puede mostrar correctamente la referencia de Wikidata. Detalles técnicos:
    • Motivo del fallo de {{ Cite web }} : La llamada a la plantilla de salida no tendría el parámetro obligatorio url.
    • Motivo del fallo de {{ Cite Q }} : La llamada a la plantilla de salida omitiría el parámetro obligatorio 1.
    Consulte la documentación para obtener más detalles.
  4. ^ Cock, 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 Python disponibles libremente para biología molecular computacional y bioinformática". Bioinformática . 25 (11): 1422–3. doi :10.1093/bioinformatics/btp163. PMC 2682512 . PMID  19304878. 
  5. ^ ab 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 Biopython.
  6. ^ Mangalam, Harry (septiembre de 2002). "Los kits de herramientas Bio*: una breve descripción general". Briefings in Bioinformatics . 3 (3): 296–302. doi : 10.1093/bib/3.3.296 . PMID  12230038.
  7. ^ ab Chapman, Brad (11 de marzo de 2004), El proyecto Biopython: filosofía, funcionalidad y hechos (PDF) , consultado el 11 de septiembre de 2014
  8. ^ Lista de colaboradores de Biopython, archivada desde el original el 11 de septiembre de 2014 , consultada el 11 de septiembre de 2014
  9. ^ 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 partir de la secuencia". Genome Biology . 8 (8): R171. doi : 10.1186/gb-2007-8-8-r171 . PMC 2375001 . PMID  17708774. 
  10. ^ Daley, Chris, Biopython 1.77 publicado , consultado el 6 de octubre de 2021
  11. ^ Chang, Jeff; Chapman, Brad; Friedberg, Iddo; Hamelryck, Thomas; de Hoon, Michiel; Cock, Peter; Antao, Tiago; Talevich, Eric; Wilczynski, Bartek (29 de mayo de 2014), Tutorial y libro de recetas de Biopython , consultado el 28 de agosto de 2014
  12. ^ Zmasek, Christian M; Zhang, Qing; Ye, Yuzhen; Godzik, Adam (24 de octubre de 2007). "Sorprendente complejidad de la red de apoptosis ancestral". Genome Biology . 8 (10): R226. doi : 10.1186/gb-2007-8-10-r226 . PMC 2246300 . PMID  17958905. 
  13. ^ Talevich, Eric; Invergo, Brandon M; Cock, 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 Bioinformatics . 13 (209): 209. doi : 10.1186/1471-2105-13-209 . PMC 3468381 . PMID  22909249. 
  14. ^ "Plásmido pKPS77 de la cepa KPS77 de Klebsiella pneumoniae, secuencia completa". NCBI . Consultado el 10 de septiembre de 2014 .
  15. ^ 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.
  16. ^ Hamelryck, Thomas; Manderick, Bernard (10 de mayo de 2003). "Analizador de archivos PDB y clase de estructura implementados en Python". Bioinformática . 19 (17): 2308–2310. doi : 10.1093/bioinformatics/btg299 . PMID  14630660.
  17. ^ Rousset, François (enero de 2008). "GENEPOP'007: una reimplementación completa 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.
  18. ^ Excoffier, Laurent; Foll, Matthieu (1 de marzo de 2011). "fastsimcoal: un simulador coalescente de tiempo continuo de diversidad genómica bajo escenarios evolutivos arbitrariamente complejos". Bioinformática . 27 (9): 1332–1334. doi : 10.1093/bioinformatics/btr124 . PMID  21398675.

Enlaces externos