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 pageonlinecall_made
- 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 pagejavadoc APIcall_made (click on class names to see sources).
Libraries
- external pagejavasoft.chcall_made (link no longer available) own development for numeric & matrix computations, a simple Java database, logging etc.
- external pageApache POIcall_made API to access Microsoft format files, for instance to read and write MS Excel files
- external pagedom4jcall_made easy to use library for XML, XPath and XSLT
- external pagejaxencall_made (link no longer available) XPath library
- external pageJUnitcall_made framework to write repeatable tests
- external pageJMatIOcall_made 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 pagehttp://www.mathworks.com/support/solutions/data/1-18I2C.htmlcall_made - 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 Downloadhere (JAR, 23 KB)vertical_align_bottom
→ Javadoc of the API is available external pageherecall_made - Are source files available for the efmtool?
→ Yes, either click on the class/interface name in the external pagejavadoc of the APIcall_made
→ or download Downloadmetabolic-efm-all-src.jar (JAR, 2 MB)vertical_align_bottom 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