Articulo de referencia

Biopython

"},"released":{"wt":"{{Start date and age|df=yes|2002|12|17}}"},"latest release version":{"wt":"v1.87"},"latest release date":{"wt":"{{Start date and age|2026|03|30}}"},"program...

Biopython es una colección de código abierto de módulos Python no comerciales para biología computacional y bioinformática . Facilita el acceso a código robusto y bien probado para los investigadores. Python es un lenguaje de programación orientado a objetos y una opción idónea para la automatización de tareas comunes. La disponibilidad de bibliotecas reutilizables ahorra tiempo de desarrollo y permite a los investigadores centrarse en la resolución de problemas científicos. Biopython se actualiza y mantiene constantemente gracias a un amplio equipo de voluntarios de todo el mundo. [ 1 ]

Biopython contiene analizadores para diversos formatos bioinformáticos de secuencias, alineamientos y estructuras. Los formatos de secuencia incluyen FASTA , FASTQ , GenBank y EMBL . Los formatos de alineamiento incluyen Clustal , BLAST , PHYLIP y NEXUS . Los formatos estructurales incluyen PDB, que contiene las coordenadas atómicas 3D de las macromoléculas . Tiene disposiciones para acceder a información de bases de datos biológicas como NCBI , Expasy , PBD y BioSQL. Esto se puede usar en scripts o incorporar en su software. [ 3 ] Biopython contiene una clase de secuencia estándar , herramientas de alineamiento de secuencias y análisis de motivos. También tiene algoritmos de agrupamiento , un módulo para biología estructural y un módulo para análisis filogenético . [ 4 ]

Historia

El desarrollo de Biopython comenzó en 1999 y se lanzó por primera vez en julio de 2000. [ 5 ] La primera versión "semicompleta" y "semiestable" se realizó en marzo de 2001 y diciembre de 2002, respectivamente. 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 . Entre los primeros desarrolladores del proyecto se encontraban Jeff Chang, Andrew Dalke y Brad Chapman, aunque más de 100 personas han contribuido hasta la fecha. [ 6 ] En 2007, se estableció un proyecto similar de Python , llamado PyCogent . [ 7 ]

El alcance inicial de Biopython incluía el acceso, la indexación y el procesamiento de archivos de secuencias biológicas . Los datos recuperados de bases de datos biológicas comunes se analizan y se convierten en una estructura de datos de Python. Si bien este sigue siendo su enfoque principal, en los años siguientes se añadieron módulos que ampliaron su funcionalidad para abarcar otras áreas de la biología. El principal desafío en el diseño de analizadores para formatos de archivos bioinformáticos radica en la frecuencia con la que cambian dichos formatos. Esto se debe a una gestión inadecuada de la estructura de los datos y a cambios en el contenido de las bases de datos. Este problema se supera mediante la aplicación de un diseño de analizador estándar orientado a eventos (véase Características clave y ejemplos ). [ 1 ]

A partir de la versión 1.77, Biopython ya no admite Python 2. [ 8 ] La versión estable actual de Biopython, la versión 1.85, se publicó el 15 de enero de 2025. Solo admite Python 3 y las versiones recientes de Biopython requieren NumPy (y no Numeric). [ 9 ]

Diseño

Siempre que sea posible, Biopython sigue las convenciones utilizadas por el lenguaje de programación Python para facilitar su uso a usuarios familiarizados con Python. Por ejemplo, Seqlos SeqRecordobjetos se pueden manipular mediante segmentación , de forma similar a las cadenas y listas de Python. También está diseñado para ser funcionalmente similar a otros proyectos Bio*, como BioPerl . [ 5 ] Está organizado en subpaquetes modulares, por ejemplo, Bio.Seq, Bio.Align, Bio.PDB, Bio.Entrezcada uno de ellos útil en un dominio bioinformático diferente. Utiliza principios como la encapsulación y el polimorfismo , especialmente en las clases Seq, SeqRecord, y Bio.PDB.Structure. También puede interoperar con otras herramientas de Python ( Pandas , Matplotlib y SciPy ). [ 3 ]

Biopython puede leer y escribir la mayoría de los formatos de archivo 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. [ 10 ]

Requisitos

Biopython actualmente es compatible y se prueba con las siguientes implementaciones de Python: [ 11 ]

  • Python 3 o PyPy3
  • NumPy

Características principales y ejemplos

Entrada y salida

Biopython puede leer y escribir en varios formatos comunes. Al leer archivos, la información descriptiva que contienen 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 un ordenador, por lo que Biopython ofrece diversas opciones para acceder a los registros en archivos de gran tamaño. Se pueden cargar completamente en memoria mediante estructuras de datos de Python, como listas o diccionarios , lo que proporciona un acceso rápido a costa de un mayor consumo de 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.

>>> # El código lee un archivo GenBank registro por registro para manejar eficientemente archivos de secuencias grandes sin agotar la memoria. Convierte cada registro de secuencia al formato FASTA y lo escribe en un nuevo archivo de salida.>>> from Bio import SeqIO>>> # Lectura de secuencias desde un archivo GenBank y escritura en un archivo FASTA >>> input_file = "sequence_1.gb" >>> output_file = "converted_sequences.fasta">>> # Usando un iterador para leer un archivo grande sin cargarlo todo en la memoria >>> con open ( output_file , "w" ) como out_handle : ... para record en SeqIO . parse ( input_file , "genbank" ): ... # Cada registro es un SeqRecord poblado con metadatos ... print ( f "Procesando registro: { record . id } - { record . description } " ) ... SeqIO . write ( record , out_handle , "fasta" ) # Convertir y escribir a FASTA

Secuencias

Un concepto fundamental en Biopython es la secuencia biológica, representada por la Seqclase. [ 12 ] 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. Este objeto incluye métodos generales similares a los de las cadenas y métodos específicos para secuencias biológicas. Es recomendable almacenar la información sobre el tipo biológico ( ADN , ARN , proteína ) por separado de la secuencia, en lugar de utilizar un argumento de alfabeto explícito.

>>> # Este script crea una secuencia de ADN y realiza algunas manipulaciones típicas.>>> from Bio.Seq import Seq >>> dna_sequence = Seq ( "AGGCTTCTCGTA" ) >>> print ( dna_sequence ) Seq('AGGCTTCTCGTA')>>> print ( dna_sequence [ 2 : 7 ]) Seq('GCTTC')>>> print ( dna_sequence . reverse_complement ()) Seq('TACGAGAAGCCT')>>> rna_sequence = dna_sequence.transcribe ( ) >>> print ( rna_sequence ) Seq('AGGCUUCUCGUA' )>>> print ( rna_sequence . back_transcribe ()) Seq('AGGCTTCTCGTA')>>> print ( rna_sequence . translate ()) Seq('RLLV')

Anotación de secuencias

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), 'región repetitiva', 'elemento móvil' u otros, y la posición de las características en la secuencia puede ser exacta o aproximada.

>>> # El script lee un archivo de GenBank para extraer e imprimir el nombre y la descripción de la secuencia. Luego accede y muestra información detallada sobre una característica anotada específica (por ejemplo, un gen) dentro de la secuencia.>>> from Bio import SeqIO >>> seq_record = SeqIO . read ( "sequence.gb" , "genbank" )>>> # Acceso a metadatos >>> print ( seq_record . name ) >>> print ( seq_record . description ) 'NC_005816' 'Yersinia pestis biovar Microtus str. 91001 plásmido pPCP1, secuencia completa'>>> # Acceder a la lista de características y a la característica de ejemplo en el índice 14 si está disponible >>> if len ( seq_record . features ) > 14 : ... print ( seq_record . features [ 14 ]) ... else : ... print ( "La característica en el índice 14 no está disponible" )tipo: CDS ubicación: [6115:6421](+) calificadores:  Clave: codon_start, Valor: ['1']  Clave: inferencia, Valor: ['COORDENADAS: similar a la secuencia AA:RefSeq:WP_002221218.1']  Clave: locus_tag, Valor: ['YP_RS22235']  Clave: nota, Valor: ['Derivado por análisis computacional automatizado utilizando el método de predicción de genes: Homología de proteínas.']  Clave: old_locus_tag, Valor: ['pPCP07', 'YP_pPCP07']  Clave: producto, Valor: ['proteína hipotética']  Clave: protein_id, Valor: ['WP_002221218.1']  Clave: transl_table, Valor: ['11']  Clave: traducción, Valor: ['MSKTKSGRHRLSKTDKRLLAALVVAGYEERTARDLIQKHVYTLTQADLRHLVSEISNGVGQSQAYDAIYQAR

Acceso a bases de datos en línea

Mediante el módulo Bio.Entrez, los usuarios de Biopython pueden descargar datos biológicos de las bases de datos del NCBI. Todas las funciones del buscador Entrez están disponibles a través de las funciones de este módulo, incluyendo la búsqueda y descarga de registros.

>>> # Este código obtiene registros de secuencias de nucleótidos de la base de datos del NCBI para los identificadores de acceso especificados, lee los datos en formato GenBank e imprime las dos primeras líneas. La salida también se puede escribir en un archivo.>>> de Bio import Entrez>>> Entrez . email = "example@example.com" >>> record_ids = [ "NM_000546.6" , "NM_001354689.3" ]>>> para record_id en record_ids : ... con Entrez.efetch ( db = "nucleotide" , id = record_id , rettype = " gb" , retmode = " text" ) como handle : ... line_count = 0 ... para line en handle : ... print ( line.rstrip ( ) ) ... line_count += 1 ... si line_count == 2 : # Imprimir solo las dos primeras líneas del registro ... breakLOCUS NM_000546 2512 pb ARNm lineal PRI 12-JUN-2025 DEFINICIÓN Proteína tumoral p53 de Homo sapiens (TP53), variante de transcripción 1, ARNm. LOCUS NM_001354689 3251 pb ARNm lineal PRI 12-JUN-2025 DEFINICIÓN Protooncogén Raf-1 de Homo sapiens, serina/treonina quinasa (RAF1)

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 [ 13 ].
Figura 2: El mismo árbol que el anterior, dibujado sin raíz usando Graphviz a través de Bio.Phylo.

El módulo Bio.Phylo proporciona herramientas para trabajar con árboles filogenéticos y visualizarlos . Admite diversos formatos de archivo para lectura y escritura, incluidos Newick , NEXUS y phyloXML . Se admiten manipulaciones y recorridos comunes de árboles mediante los objetos Treey Clade. Algunos ejemplos incluyen la conversión y la recopilación 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. [ 14 ]

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: Diagrama de los genes del plásmido pKPS77, [ 15 ] visualizado mediante el módulo GenomeDiagram en Biopython.

El módulo GenomeDiagram proporciona métodos para visualizar secuencias dentro de Biopython. [ 16 ] Las secuencias se pueden dibujar de forma lineal o circular (véase la Figura 3), y se admiten muchos formatos de salida, incluidos PDF y PNG . Los diagramas se crean dibujando 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. [ 17 ] 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 objetos que contienen Residueobjetos que contienen Atomobjetos. Los residuos y átomos desordenados obtienen sus propias clases, DisorderedResiduey DisorderedAtom, que describen sus posiciones inciertas.

Mediante 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.

>>> # Este script analiza un archivo PDB para imprimir los identificadores de cadena del primer modelo y extraer las coordenadas de los átomos en el residuo número 100 de cada cadena. Demuestra cómo navegar por la jerarquía de la estructura de la proteína y acceder a datos de residuos específicos.>>> from Bio.PDB import PDBParser>>> # Analizar el archivo PDB >>> parser = PDBParser ( QUIET = True ) >>> structure = parser . get_structure ( "2yox" , "2yox.pdb" )>>> # Iterar sobre los modelos >>> for model in structure : >>> print ( f "ID del modelo: { model . id } " ) >>> # Iterar sobre las cadenas en el modelo >>> for chain in model : ... print ( f "ID de la cadena: { chain . id } " ) >>> # Comprobar si el residuo 100 existe en esta cadena >>> if 100 in chain : ... resin = chain [ 100 ] ... print ( f "Coordenadas de los átomos en el residuo 100:" ) ... # Imprimir las coordenadas de cada átomo en el residuo 100 ... for atom in resin : ... print ( atom . coord ) ... else : ... print ( "El residuo 100 no se encuentra en esta cadena." ) ... breakID del modelo: 0 ID de la cadena: A  Coordenadas de los átomos en el residuo 100: [ 9.837 18.218 81.24 ] [ 9.644 18.809 79.938] [ 8.772 20.066 80.01 ] [ 7.572 19.996 80.27 ] [ 9.07 17.788 78.962] [ 8.989 18.261 77.529 ] [10.352 18.647 76.938] [11.281 17.832 76.922] [10.486 19.917 76.503] ID de la cadena: B  Coordenadas de los átomos en el residuo 100: [23.712 [ 23.197 12.95 35.746] [23.961 11.693 35.339] [25.138 11.757 34.935] [23.183 13.97 34.623] [22.49 13.49 33.361] [21.022 13.13 33.571 ] [20.22 13.96 34.039] [20.66 11.867 33.253]

genética de poblaciones

El módulo Bio.PopGen agrega soporte a Biopython para Genepop, un paquete de software para análisis estadístico de genética de poblaciones . [ 18 ] Esto permite análisis del equilibrio de Hardy-Weinberg , 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. [ 19 ]

Envoltorios para herramientas de línea de comandos

Anteriormente, Biopython incluía interfaces de línea de comandos para herramientas como BLAST, Clustal, EMBOSS y SAMtools. Esta opción permitía a los usuarios ejecutar comandos de herramientas externas desde el código mediante clases especializadas de Biopython.

Sin embargo, Bio.Applicationlos módulos y sus adaptadores han quedado obsoletos y se eliminarán en futuras versiones de Biopython. La razón principal es la elevada carga de mantenimiento que supone actualizarlos con las herramientas externas en constante evolución.

El enfoque recomendado consiste en construir y ejecutar directamente comandos de herramientas de línea de comandos utilizando el módulo integrado de Python subprocess. Este método proporciona flexibilidad y elimina la dependencia de los envoltorios de Biopython. subprocesses un módulo nativo de Python útil para ejecutar comandos y programas externos, y capturar su salida. [ 20 ]

Véase también

Referencias

  1. 1 2 3 Chapman, Brad; Chang, Jeff (agosto de 2000). "Biopython: herramientas de Python para biología computacional" . Boletín informativo de ACM SIGBIO . 20 (2): 15– 19. doi : 10.1145/360262.360268 . S2CID 9417766 . 
  2. Error: No se puede mostrar correctamente la referencia de Wikidata. Detalles técnicos:
    • Motivo del fallo de { { Cite web } } : La referencia de Wikidata contiene la licencia de derechos de autor de la propiedad (P275) , que no está asignada a ningún parámetro de esta plantilla.
    • Motivo del fallo de { { Cite Q } } : La referencia de Wikidata contiene la licencia de derechos de autor de la propiedad (P275) , que no está asignada a ningún parámetro de esta plantilla.
    Consulte la documentación para obtener más detalles.
  3. 1 2 Cock, Peter JA; Antao, Tiago; Chang, Jeffrey 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 de libre acceso para biología molecular computacional y bioinformática" . Bioinformatics . 25 (11): 1422– 1423. doi : 10.1093/bioinformatics/btp163 . hdl : 10400.1 / 5523 . ISSN 1367-4811 . PMC 2682512. PMID 19304878 .   
  4. "Introducción — Documentación de Biopython 1.85" . biopython.org . Consultado el 15 de agosto de 2025 .
  5. 1 2 Chapman, Brad (11 de marzo de 2004), El proyecto Biopython: filosofía, funcionalidad y hechos (PDF) , consultado el 11 de septiembre de 2014
  6. Lista de colaboradores de Biopython , consultada el 11 de septiembre de 2014.{{citation}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  7. 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" . Genome Biology . 8 (8): R171. doi : 10.1186/gb-2007-8-8-r171 . PMC 2375001. PMID 17708774 .  
  8. Daley, Chris, Biopython 1.77 lanzado , consultado el 6 de octubre de 2021
  9. "Descargar · Biopython" . biopython.org . Consultado el 15 de agosto de 2025 .
  10. 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 o citan Biopython .
  11. "Biopython" . GitHub .
  12. 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
  13. Zmasek, Christian M; Zhang, Qing; Ye, Yuzhen; Godzik, Adam (24 de octubre de 2007). " Sorprendente complejidad de la red ancestral de apoptosis" . Genome Biology . 8 (10): R226. doi : 10.1186/gb-2007-8-10-r226 . PMC 2246300. PMID 17958905 .  
  14. 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 .  
  15. "Secuencia completa del plásmido pKPS77 de la cepa KPS77 de Klebsiella pneumoniae" . NCBI . Consultado el 10 de septiembre de 2014 .
  16. 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" . Bioinformatics . 22 (5): 616– 617. doi : 10.1093/bioinformatics/btk021 . PMID 16377612 . 
  17. Hamelryck, Thomas; Manderick, Bernard (10 de mayo de 2003). "PDB file parser and structure class implementation in Python" . Bioinformatics . 19 (17): 2308– 2310. doi : 10.1093/bioinformatics/btg299 . PMID 14630660 . 
  18. Rousset, François (enero de 2008). "GENEPOP'007: una reimplementación completa del software GENEPOP para Windows y Linux". Molecular Ecology Resources . 8 (1): 103– 106. Bibcode : 2008MolER...8..103R . doi : 10.1111 / j.1471-8286.2007.01931.x . PMID 21585727. S2CID 25776992 .  
  19. Excoffier, Laurent; Foll, Matthieu (1 de marzo de 2011). "fastsimcoal: un simulador coalescente de tiempo continuo de la diversidad genómica bajo escenarios evolutivos arbitrariamente complejos" . Bioinformatics . 27 (9): 1332–1334 . doi : 10.1093/bioinformatics/btr124 . PMID 21398675 . 
  20. "Paquete Bio.Application — Documentación de Biopython 1.74" . biopython.org . Consultado el 15 de agosto de 2025 .
  • Sitio web oficial
  • Tutorial y recetario de Biopython ( PDF )
  • Código fuente de Biopython en GitHub
Obtenido de " https://en.wikipedia.org/w/index.php?title=Biopython&oldid=1361406744 "