Articulo de referencia

libSBML

LibSBML es una biblioteca de software de código abierto que proporciona una interfaz de programación de aplicaciones (API) para el formato SBML (Systems Biology Markup Language ...

LibSBML es una biblioteca de software de código abierto que proporciona una interfaz de programación de aplicaciones (API) para el formato SBML (Systems Biology Markup Language [ 1 ] [ 2 ] [ 3 ] ). La biblioteca libSBML se puede integrar en una aplicación de software o utilizarse en un servlet web (como uno que podría ser servido por Apache Tomcat ) como parte de la implementación de la aplicación o el servlet para la lectura, escritura y manipulación de documentos y flujos de datos SBML. El núcleo de libSBML está escrito en C++ estándar ISO ; la biblioteca proporciona API para muchos lenguajes de programación a través de interfaces generadas con la ayuda de SWIG . 

La biblioteca libSBML es software libre distribuido bajo los términos de la Licencia Pública General Reducida de GNU (LGPL), publicada por la Free Software Foundation ; ya sea la versión 2.1 de la Licencia o cualquier versión posterior. LibSBML se desarrolló gracias a la financiación de numerosas agencias, en particular del Instituto Nacional de Ciencias Médicas Generales (NIGMS, EE. UU.) y de la Agencia de Proyectos de Investigación Avanzada de Defensa (DARPA, EE. UU.) en el marco del programa Bio-SPICE .

Descripción

El lenguaje de marcado de biología de sistemas ( SBML ) es un formato basado en XML para codificar modelos computacionales comunes en biología de sistemas . Si bien SBML se basa en XML , y por lo tanto los desarrolladores de software podrían implementarlo utilizando bibliotecas de análisis XML estándar, libSBML ofrece numerosas ventajas que facilitan la implementación de la compatibilidad con SBML en el software. La premisa del desarrollo de libSBML es que resulta más conveniente y eficiente para los desarrolladores comenzar con una API de alto nivel diseñada específicamente para SBML y sus características distintivas, en lugar de comenzar con una biblioteca de análisis XML convencional.

Características importantes de libSBML

La siguiente es una lista parcial de las características de libSBML:

  • Admite todos los niveles y versiones de SBML con clases y métodos API comunes, lo que reduce las diferencias entre las distintas variantes de SBML desde la perspectiva del software de aplicación.
  • Proporciona herramientas para manipular fórmulas matemáticas tanto en formato de cadena de texto como en formato MathML 2.0, así como la capacidad de convertir expresiones matemáticas entre estos formatos. Internamente, libSBML utiliza árboles de sintaxis abstracta (AST) conocidos para representar fórmulas y proporciona métodos orientados a AST para llamar a aplicaciones.
  • Realiza la validación de XML y SBML al analizar archivos y flujos de datos. Esto ayuda a verificar la corrección de los modelos de una manera que va más allá de la simple validación sintáctica.
  • Ofrece soporte para el análisis dimensional y la verificación de unidades . LibSBML implementa un sistema completo para el análisis dimensional y la verificación de unidades de cantidades en un modelo.
  • Proporciona herramientas para la creación y manipulación de anotaciones y notas SBML . Estas tienen un formato específico determinado por las especificaciones SBML. Los formatos y estándares compatibles con libSBML incluyen MIRIAM (Información Mínima Solicitada en la Anotación de un Modelo) y SBO ( Ontología de Biología de Sistemas ).
  • Permite leer y escribir de forma transparente archivos comprimidos en formato ZIP , GZIP y BZIP .
  • Proporciona interfaces para los lenguajes de programación C , C++ , C# , Java , Python , Perl , MATLAB , Octave y Ruby . Las interfaces de C y C++ se implementan de forma nativa; las de C#, Java, Perl, Python y Ruby se implementan mediante SWIG (Simplified Wrapper Interface Generator); y las de MATLAB y Octave se implementan mediante código personalizado escrito manualmente.
  • Proporciona numerosos métodos prácticos , como por ejemplo para obtener el número de especies de condiciones de contorno, determinar las especies modificadoras de una reacción (suponiendo que la reacción proporciona información cinética), construir la matriz estequiométrica para todas las reacciones de un modelo, y mucho más.

Manipulación de fórmulas matemáticas

Algunas explicaciones adicionales podrían ser necesarias con respecto al soporte de libSBML para trabajar con fórmulas matemáticas. En SBML Nivel  1, las fórmulas matemáticas se representan como cadenas de texto utilizando una sintaxis similar a C. Esta representación se eligió debido a su simplicidad, familiaridad generalizada y uso en aplicaciones como GEPASI [ 4 ] y Jarnac, [ 5 ] cuyos autores contribuyeron al diseño inicial de SBML. En SBML Niveles  2 y  3, fue necesario ampliar el vocabulario matemático del Nivel  1 para incluir funciones adicionales (tanto integradas como definidas por el usuario), constantes matemáticas, operadores lógicos, operadores relacionales y un símbolo especial para representar el tiempo. En lugar de convertir la sintaxis simple similar a C en algo más complicado y esotérico para admitir estas características, y en consecuencia tener que gestionar dos estándares en dos formatos diferentes (XML y fórmulas de cadena de texto), SBML Niveles  2 y  3 aprovechan un estándar existente para expresar fórmulas matemáticas, a saber, la parte de contenido de MathML .

Como se mencionó anteriormente, LibSBML proporciona una abstracción para trabajar con expresiones matemáticas tanto en formato de cadena de texto como en MathML: los árboles de sintaxis abstracta (AST). Los árboles de sintaxis abstracta son bien conocidos en la comunidad de informática; son estructuras de datos recursivas simples que resultan útiles para representar la estructura sintáctica de oraciones en ciertos tipos de lenguajes (matemáticos o de otro tipo). Así como libSBML permite a los programadores manipular SBML a nivel de objetos específicos del dominio, independientemente del nivel o la versión de SBML, también les permite trabajar con fórmulas matemáticas a nivel de AST, independientemente de si el formato original era infijo tipo C o MathML. LibSBML va un paso más allá al permitir a los programadores trabajar exclusivamente con cadenas de fórmulas infijas y convertirlas instantáneamente al MathML apropiado cuando sea necesario.

Dependencias

LibSBML requiere una biblioteca independiente para realizar operaciones de lectura/escritura de bajo nivel en XML. Puede utilizar cualquiera de las tres bibliotecas de análisis XML disponibles: Xerces , expat o libxml2 . Los usuarios pueden especificar qué biblioteca desean utilizar durante la compilación de libSBML. LibSBML oculta las diferencias entre estas bibliotecas de análisis mediante una capa de abstracción; utiliza sin problemas la biblioteca con la que se haya compilado una instancia determinada de libSBML. (Sin embargo, todas las distribuciones binarias publicadas de libSBML utilizan la biblioteca libxml2 ).

Uso

LibSBML utiliza objetos de software (es decir, instancias de clases ) que se corresponden con los componentes de SBML, con variables miembro que representan los atributos de los objetos SBML correspondientes. La API de libSBML está diseñada para proporcionar una forma intuitiva de relacionar SBML con el código necesario para crearlo o manipularlo, mediante una jerarquía de clases que imita la estructura de SBML. Encontrará más información sobre los objetos de libSBML en la documentación de la API de libSBML .

Lectura y escritura de SBML

LibSBML permite leer y escribir en archivos o cadenas de texto. Una vez leído un documento SBML, libSBML almacena su contenido en un objeto SBMLDocument . Este objeto se puede volver a escribir posteriormente. A continuación se muestra un ejemplo escrito en Python :

>>> import libsbml >>> >>> # leer un documento >>> doc = libsbml . readSBMLFromFile ( filename ) >>> doc = libsbml . readSBMLFromString ( string ) >>> >>> # función auxiliar que toma una cadena >>> # o un nombre de archivo como argumento >>> doc = libsbml . readSBML ( filename ) >>> doc = libsbml . readSBML ( string ) >>> >>> # escribir un documento >>> libsbml . writeSBMLToFile ( doc , filename ) True >>> >>> libsbml . writeSBMLToString ( doc ) '<?xml version="1.0" encoding="UTF-8"?>\n <sbml xmlns="http://www.sbml.org/sbml/level3/version1/core"  level="3" version="1">\n  <model/>\n </sbml>\n'

Creación y manipulación de SBML

La API de libSBML permite crear fácilmente objetos y subobjetos que representan elementos SBML y los subelementos que contienen. A continuación se muestra un ejemplo escrito en C++ :

void createSBML () { // crea un documento SBML Nivel 3 Versión 1 SBMLDocument * doc = new SBMLDocument ( 3 , 1 );// crea el modelo como un subelemento del documento Model * model = doc -> createModel ();// crea un compartimento como un subelemento del modelo Compartimento * compartimento1 = modelo -> crearCompartimento ();// crea un compartimento independiente y luego agrégalo al modelo Compartimento * compartimento2 = nuevo Compartimento ( 3 , 1 ); modelo -> agregarCompartimento ( compartimento2 ); }

Acceso a los atributos

Cada componente en SBML tiene varios atributos asociados. Estos se almacenan como variables miembro de una clase determinada, y libSBML proporciona funciones para recuperar y consultar estos valores. La sintaxis de estas funciones es consistente en toda la biblioteca libSBML. A continuación se muestra un ejemplo escrito en Python :

>>> import libsbml >>> >>> # crear un documento SBML Nivel 3 Versión 1 >>> sbmlns = libsbml . SBMLNamespaces ( 3 , 1 ) >>> doc = libsbml . SBMLDocument ( sbmlns ) >>> >>> # crear el modelo como un subelemento del documento >>> model = doc . createModel () >>> >>> # crear un compartimento como un subelemento del modelo >>> compartment = model . createCompartment () >>> >>> # establecer los atributos en el compartimento >>> # tenga en cuenta que un valor de retorno de 0 indica éxito >>> compartment . setId ( "cell" ) 0 >>> compartment . setSize ( 2.3 ) 0 >>> compartment . setSpatialDimensions ( 3 ) 0 >>> compartment . setUnits ( "litre" ) ​​0 >>> compartment . setConstant ( True ) 0 >>> >>> # obtener los valores del atributo >>> compartimento . getId () 'celda' >>> compartimento . getSpatialDimensions () 3 >>> >>> # examinar el estado del atributo >>> compartimento . isSetSize () True >>> compartimento . getSize () 2.3 >>> >>> # eliminar un valor de atributo >>> compartimento . unsetSize () 0 >>> compartimento . isSetSize () False >>> compartimento . getSize () nan

Véase también

Referencias

  1. Hucka, M.; Finney, A.; Sauro, HM; Bolouri, H.; Doyle, JC; Kitano, H. ; Arkin, AP; Bornstein, AP; Bray, BJ; Cornish-Bowden, D.; Cuellar, A.; Dronov, AA; Gilles, S.; Ginkel, ED; Gor, M.; Goryanin, V.; Hedley, II; Hodgman, WJ; Hofmeyr, TC; Hunter, J. -H.; Juty, PJ; Kasberger, NS; Kremling, JL; Kummer, A.; Le Novère, U.; Loew, N.; Lucio, LM; Mendes, P. ; Minch, P.; Mjolsness, E. (2003). "El lenguaje de marcado de biología de sistemas (SBML): un medio para la representación e intercambio de modelos de redes bioquímicas" . Bioinformatics . 19 (4): 524– 531. doi : 10.1093/bioinformatics/btg015 . PMID 12611808 . 
  2. Finney, A.; Hucka, M. (2003). "Lenguaje de marcado de biología de sistemas: Nivel 2 y más allá". Biochemical Society Transactions . 31 (Pt 6): 1472– 1473. CiteSeerX 10.1.1.466.8001 . doi : 10.1042/bst0311472 . PMID 14641091 .  
  3. Hucka, M.; Finney, A.; Bornstein, BJ; Keating, SM; Shapiro, BE; Matthews, J.; Kovitz, BL; Schilstra, MJ; Funahashi, A.; Doyle, SM; Kitano, MJ (2004). "Desarrollo de una lingua franca y la infraestructura de software asociada para la biología de sistemas computacional: El proyecto Systems Biology Markup Language (SBML)" (PDF) . Systems Biology . 1 (1): 41– 53. doi : 10.1049/sb:20045008 (inactivo el 12 de julio de 2025). PMID 17052114 . {{cite journal}}: CS1 maint: DOI inactivo desde julio de 2025 ( enlace )
  4. Mendes, P. (1993). "GEPASI: Un paquete de software para modelar la dinámica, los estados estacionarios y el control de sistemas bioquímicos y otros" . Computer Applications in the Biosciences . 9 (5): 563– 571. doi : 10.1093/bioinformatics/9.5.563 . PMID 8293329 . 
  5. Jarnac, Sauro H. «Un sistema para el análisis metabólico interactivo». En: Hofmeyr, J-HS, et al., eds. Animating the Cellular Map: Proceedings of the 9th International Meeting on BioThermoKinetics . Stellenbosch, Sudáfrica: Stellenbosch University Press; 2000. pp. 221 228.
  • Página principal de libSBML