SkillAgentSearch skills...

FluxML

A Universal Modeling Language for Metabolic Flux Analysis

Install / Use

/learn @modsim/FluxML

README

<p align="center"> <img src="images/fluxml_logo.png"></p>

Build Status

Introduction

<p align="justify">FluxML is a universal modeling language for metabolic flux analysis designed with the aim of providing a standard document format for creating, validating and reliable exchanging of arbitrary metabolic models across different simulation tools. It's hierarchically structured based on widely used XML (eX-tensible Markup Language) and specified all essential information required to enable performing both isotopically stationary and non-stationary 13C metabolic Fux analysis including the structure of the metabolic network, atom transitions, experimental data, model constraints and parameters. <br/> FluxML is organized in three major releases, termed Levels. Level 1 is dedicated to isotopically stationary 13C MFA while Level 2 covers isotopically non-stationary 13C MFA in addition. With Level 3 the general case of multiple, isotopically stationary and non-stationary isotopic tracer experiments are supported. For all released FluxML Levels, a formal syntax description defined in a W3C XML Schema Document (https://13cflux.net/fluxml), an associated [UML diagram](images/fluxml_diagram.png) and an open-source C/C++ library, named <i>libFluxML</i>, for parsing, serializing and manipulating FluxML documents which supports all releases of FluxML up through Level 3 are provided. In the following sections the FluxML elements are briefly addressed.</p>

FluxML is published in Frontiers in Microbiology (doi: 10.3389/fmicb.2019.01022). If you use this work, please cite accordingly.

Table of Contents

libFluxML C++ API

<p align="justify"> LibFluxML is an open-source library for reading and manipulating FluxML documents. The current version of LibFluxML supports all releases of FluxML up through Level 3. For more information about FluxML, please see [FluxML Language Specification](#the-basic-layout-of-fluxml-format) above. </p> <hr> <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0,vertical-align:middle " src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a> This work is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution Share Alike 4.0</a>. <hr>

Dictionary of XML Terms

<p align="justify"> In order to fully understand the organization of any XML-based data format, it is necessary to understand the following basic terms and how they apply to the data structure. Note that this dictionary is in no way complete; it is purely intended to provide a frame of reference for the sections that follow. For those interested in learning the complete language and terminology of XML, please refer to the XML resources section of the W3C web site (http://www.w3.org/XML/).</p>

Document

<p align="justify"> The standard term for a body of data that is formatted and described using XML is generally referred to as a "document." Although the ASCII characters that make up an XML data stream can be stored to nonvolatile storage in many hardware and operating systems, the concept of a "file" does not really apply to XML data. XML representations of data can also be generated from database queries, software applications, or even hardware and streamed between computers without ever existing as a "file" in any one particular operating system. However, for practical purposes in the case of storing analytical instrument data to a long term archive (files in non-volatile storage), the term "file" and "document" are basically equivalent and are used as interchangeable terms in the following descriptions.</p>

Element

<p align="justify"> An "element" is a unique tag used to represent a specific piece of information in XML. An element can consist of data or be a collection of other elements. Elements are the fundamental building blocks used to identify data and define relational hierarchies of information in an XML document.</p>

Attribute

<p align="justify">An "attribute" is an item of information attached to an element that is relevant to the data contained within the element itself. In some cases, information stored in an attribute could also be represented as an additional element within the parent element's hierarchy. However, attributes of a given type can be applied to one or more elements within an XML hierarchy, while elements generally follow a specific hierarchy (although this is not a requirement)</p>

Namespace

<p align="justify"> XML namespaces are used for providing uniquely named elements and attributes in an XML document. They are defined in a W3C <a href="http://www.w3.org/XML/">recommendation</a>. An XML instance may contain element or attribute names from more than one XML vocabulary. If each vocabulary is given a namespace, the ambiguity between identically named elements or attributes can be resolved. </p>

The Basic Structure of FluxML Format

<p align="justify"> Being a XML format, the layout of FluxML is hierarchic. Figure 1 shows the hierarchical structure of the FluxML document. The top-level element fluxml contains the optional element info which provides basic information about the model and the element reactionnetwork containing the metabolites and reactions which, together with the constraints element defines the isotope network structure. A very important core concept in FluxML is that of configurations, encoding the concept that one model structure can be evaluated within different experimental settings. In this way, model instances that, for instance, distinguish themselves in the selection of the substrate (input pool) or the tracer mixture, flux parametrization and/or measurement configuration can be stored in different sections within the same file. Another key concept of FluxML is the separation of the experimental data declaration and their specification as represented by the measurement sub-elements model and data, respectively. </p> <p align="center"> <img src="images/fluxml_basic_layout.png"><br><b>Figure 1:</b> The main elements of the FluxML document</p> <p align="justify"> Like any other well-formed XML document, the FluxML document can optionally begin with an XML preamble. This is mostly used to provide XML version information and to declare the character encoding of the document. Especially for FluxML documents the XML version 1.0 and the UTF-8 character encoding should be used, while the attribute standalone is optional and signals FluxML parsers and validators that the document depends on an external document type definition (DTD). The XML preamble is followed by exactly one single root element fluxml, which indicates parsing applications the starting point for reading the encapsulated data. The root element can have a number of optional attributes. This usually includes an "xmlns" attribute indicating the XML namespace denoted by URI "http://13cflux.net/fluxml" which tells parsers the location of XML schema grammar that was used to write the document. The following XML fragment shows the basic structure representation of a FluxML document:</p>
<fluxml xmlns="http://www.13cflux.net/fluxml"> 
   <info> ... </info> [0..1]
   <reactionnetwork> ... </reactionnetwork> [1]
   <constraints> ... </constraints> [0..1]
   <configuration> ... </configuration> [1..*]
</fluxml>
<p align="justify">The first element below the root element fluxml is the optional element <b>info</b> which provides basic information about described model and contains a number of optional subelements:</p> <!-- XML Schema Representation: ```xml <xsd:element name="info"> <xsd:complexType> <xsd:sequence> <xsd:element ref="name" minOccurs="0"/> <xsd:element ref="version" minOccurs="0"/> <xsd:element ref="date" minOccurs="0"/> <xsd:element ref="comment" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:element> ``` XML Instance Representation: -->
<info> 
  <modeler> xsd:string </modeler> [0..1]
  <strain> xsd:string </strain> [0..1]
  <version> xsd:string </version> [0..1]
  <date> \d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} </date> [0..1]
  <comment> xsd:string </comment> [0..1]
  <signature> xsd:string </signature> [0..1]
</info>
<p align="justify">The modeler and strain indicate the name of the modeler and use

Related Skills

View on GitHub
GitHub Stars12
CategoryProduct
Updated28d ago
Forks6

Languages

C++

Security Score

95/100

Audited on Mar 5, 2026

No findings