A Python implementation of flux balance analysis
A python implementation of flux balance analysis to model microbial metabolism
PyFBA is a Python flux-balance-analysis package that allows you to build models from genomes, gapfill models, and run flux-balance-analysis on that model. The aim of PyFBA is to provide an extensible, python-based platform for FBA work.
PyFBA is being developed by Daniel Cuevas, Taylor O’Connell, and Rob Edwards in Rob’s bioinformatics group at San Diego State University together with help from Janaka Edirisinghe, Chris Henry, Ross Overbeek and others at Argonne National Labs.
To use PyFBA you need Python 2.7 or greater, and you need to install the GNU GLPK and a Python wrapper for that program, pyGLPK available from github.
We also leverage the Model SEED GitHub repository with all the latest biochemistry tables.
Our installation page has detailed instructions on installing PyFBA and getting everything running.
Getting Started with PyFBA
Once you have installed GLPK, PyGLPK, and PyFBA, you will most likely want to build a model from a genome, gap fill that model, and test it for growth on different media. We have detailed instructions that walk you through the step-by-step procedures that you need to use to run flux balance analysis on your own genome.
Copyright and License
PyFBA is copyright Daniel Cuevas, Taylor O’Connell, and Rob Edwards, and is released under the MIT license.
Crucial edit to setup.py file
Adding PyFBA.model package to list.
Updated all the code to work with Python 3.
However, this breaks compatibility with Python 2 because of the “errors” keyword in open.
The main changes include relative imports, a new class in the tests/ package to allow deep assertions, and using this type of construct with the open command to ignore unicode errors in ModelSeed:
with open(ssfile, ‘r’, errors=’replace’) as sin:
Added function to obtain Model SEED complexes from a set of roles
Added gap-fill step to add reactions based on existent EC numbers
Optimized and fixed bugs during gap-fill reaction minimization process
New Model class objects
Model object contains functionality to make common processes easier to facilitate.
- Generate model from RAST annotations
- Save model to hard disk location
- Load model from hard disk location
- Run FBA
- Run FBA and obtain flux values
- Run FBA and obtain flux values according to SEED subsystems
- Run gap-fill
- Remember which reactions were gap-filled reactions and which media
New iPython Notebooks
- Find a metabolite.ipynb
- PATRIC to FBA.ipynb
Added a CITATION.md
Please cite us if you use PyFBA
Added the iPython Notebook directory
Example code showing:
importing an SBML file and running FBA
how to build your model from functional roles and how to gap-fill that model on a media
Added minimization by accuracy
Removed PyFBA/gapfill/minimize_additional_reactions.py and created reaction_minimization.py
Example gap-fill pipeline
Removed the author tag
It is superflous, that is what versioning is for.
Several changes to files:
Updated the subsystem functions and changed the name to a generic name. The date is handled by versioning!
Changing the version number
Adding reaction flux information that can be pulled after the sm has been solved
Fixed an issue where we were over-incorporating reactions based on things in the media
We only test the right half of the reactions if the left half do not grow, and once we have <10 reactions to search through we just iterate and knock out each reaction sequentially. It is faster than the shuffle approach.
Changed the way we read roles
SEED has a notion of multifunctional roles, and we added splitting those functions into roles
Gap generation code
Testing each of the individual reactions in a model
Shifted the order of gapfilling
This order makes more logical sense!
Updated the tests
With all these changes, the tests were not right
Refactored separating roles to functions. SEED has a concept of multifunctional roles and this separates out our roles before we search for them.
- Removed installation dependencies from setup.py because they break installation! You need to install the dependencies manually
- Refactored the code to remove the os.environ dependencies
- Initial release