-
Peter Schubert authoredPeter Schubert authored
modelpruner - prune metabolic models coded in (SBML)
This is a port to Python and improvement of the network reduction MATLAB code (CNAreduceMFNetwork.m) implemented in CellNetAnalyzer [1].
Making use of functions provided by glpk [2] and sbmlxdf.
The network reduction method is based on An algorithm for the reduction of genome-scale metabolic network models to meaningful core models [3]. This port does not implement the additional (optional) step of network compression, which converts linear pathways to single reactions and suppresses some biomass metabolites and transport reactions.
Benefits of this port:
This is a port of the respective MATLAB code, mainly the functions CNAreduceMFNetwork, CNAcompressMFNetwork, with following enhancements:
- significant speedup (e.g. network reduction of genome-scale E. coli network 30 h -> 1 h on a laptop)
- direct interface to SBML coded models (import from SBML / export to SBML)
- use of open software
- modifications can be implemented easier in Python compared to MATLAB (fewer people program in MATLAB)
- SBML identifiers, annotations, gene-product-associations, genes and groups carried over transparently from the full network to the pruned network, making integration with external databases easier
- protected reactions, metabolites, functions, flux bound overwrites can be provided in an Excel spreadsheet, alternatively as a Python dict
Speed-up improvements mainly due to faster implementation of flux variability function calls on glpk. Additional speed improvements achieved by continually removing reactions and blocked metabolites during the network reduction process. Essential reactions identified earlier.
install package:
$ pip3 install networkred@git+https://gitlab.cs.uni-duesseldorf.de/schubert/modelprune.git
Small Python example
import modelpruner
# file names
full_sbml = 'sample_data/SBML_models/Deniz_model_fba.xml'
pruned_sbml = 'sample_data/SBML_models/Deniz_model_fba_pruned.xml'
protected_parts = 'sample_data/data/Deniz_model_fba_nrp.xlsx'
# load the original model
mp = modelpruner.ModelPruner(full_sbml, protected_parts)
# prune the network
mp.prune()
# export reduced model to sbml
mp.write_sbml(pruned_sbml)
License
Peter Schubert, Computational Cell Biology, HHU Duesseldorf, July 2022
References
[1] Kamp A, Thiele S, Haedicke O, Klamt S. (2017) Use of CellNetAnalyzer in biotechnology and metabolic engineering. Journal of Biotechnolgy 261: 221-228. https://doi.org/10.1016/j.jbiotec.2017.05.001
[2] GNU gklp reference #### TO BE UPDATED
[3] Erdrich P, Steuer R, Klamt S. (2015) An algorithm for the reduction of genome-scale metabolic network models to meaningful core models. BMC Syst Biol 9, 48. https://doi.org/10.1186/s12918-015-0191-x