Documentation
Invoking EFM computation
- Call the function CalculateFluxModes
- Note: different input formats are supported, including SBML. Typing
help CalculateFluxModes
shows how to call the function for various input formats. For the most common formats, a sample call is given in the Examples section below.
API / Javadoc
- Javadoc of the API is available external page online
- Sample classes showing how to call the efmtool from Java are available in the ch.javasoft.metabolic.efm.sample package. They can be found in the source files and are also documented in the external page javadoc API (click on class names to see sources).
Libraries
- external page javasoft.ch (link no longer available) own development for numeric & matrix computations, a simple Java database, logging etc.
- external page Apache POI API to access Microsoft format files, for instance to read and write MS Excel files
- external page dom4j easy to use library for XML, XPath and XSLT
- external page jaxen (link no longer available) XPath library
- external page JUnit framework to write repeatable tests
- external page JMatIO Matlab's MAT-file I/O API in pure Java, supports Matlab 5 MAT-flie format reading and writing
FAQ
- How can i increase the heap memory of the MATLAB Java Virtual Machine (JVM), e.g. because a OutOfMemoryError occurs?
→ if matlab is started from within the efmtool directory, the efmtool/java.opts file is used, specifying the virtual machine memory options. To increase the memory, change the file accordingly.
→ see external page http://www.mathworks.com/support/solutions/data/1-18I2C.html - Can the tool be used without MATLAB?
→ Yes, the MATLAB integration is just a thin wrapper around the Java tool.
→ Sample code showing how to use the tool is available Download here (JAR, 23 KB)
→ Javadoc of the API is available external page here - Are source files available for the efmtool?
→ Yes, either click on the class/interface name in the external page javadoc of the API
→ or download Download metabolic-efm-all-src.jar (JAR, 2 MB) containing the Java source files corresponding to the classes in metabolic-efm-all.jar file (see efmtool/lib directory).
Examples
By Stoichiometry
(example from "System Modeling in Cellular Biology: From Concepts to Nuts and Bolts", section "Stoichiometric and Constraint Based Modeling", MIT Press, ISBN-10:0-262-19548-8 / ISBN-13:978-0-262-19548-5)
stru.stoich=[
1 , 0 , 0 , 0 ,-1 ,-1 ,-1 , 0 , 0 , 0
0 , 1 , 0 , 0 , 1 , 0 , 0 ,-1 ,-1 , 0
0 , 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 ,-1
0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 ,-1
0 , 0 , 0 ,-1 , 0 , 0 , 0 , 0 , 0 , 1
0 , 0 ,-1 , 0 , 0 , 0 , 0 , 0 , 1 , 1
];
stru.reversibilities=[0 1 0 0 0 0 0 1 0 0];
mnet = CalculateFluxModes(stru)
This example results the following 8 elementary modes:
Add the reaction and metabolite names to the struct above, e.g.
The names will be reflected in the output structure (e.g. in the reaction formulas).
By reaction formulas
The tool also directly parses reaction formulas:
Note that also (Palsson-like) formulas with compartments are supported, e.g.
Currently, only the following compartments are supported:
- [c] : cytosol
- [e] : extracellular
- [g] : Golgi appratus
- [m] : mitochondrion
- [n] : nucleus
- [r] : endoplasmic reticulum
- [v] : vacoule
- [x] : peroxisome
SBML Files
SBML files are directly parsed, a sample call looks like this:
Options
Various options are available. For instance
- exact arithmetic is used
- output vectors are normalized to length 1 and
- verbose output level FINE is used
by specifying the following options:
Note that the options argument opts is always the last input argument. All options are described on the help page, i.e. type
Known Issues
- Duplicate-gene compression is buggy. This compression option is switched off by default, thus standard computations are not affected. Still, for networks with such reactions, the option would be helpful.
Workaround: don't use this option, remove duplicate gene reactions manually - If reactions are enforced, using the ''enforce'' option, an exception similar to this one might occur:
RuntimeException: no replacement row found with non-zero pivot to reastablish row-echelon form of kernel matrix for row 1.
Implementation note: the error occurs since the initial kernel matrix has not full column rank due to the enforced reactions
Workaround: enforce fewer reactions, and filter the elementary modes manually after the computation - SignToDouble function fails with an error message like the following: "non-unique double expansion for efm 7, found 0 expansions: zeros(7,0)"
Workaround: use how option 'r' or 's' instead of the default value 'q' - If the input matrix is a zero matrix (no rows), an ArrayIndexOutOfBoundsException occurs. This is quite an artificial case, but it might occur if an external preprocessing step takes care of the network compression.
Workaround: none