News and release notes for MICOM#

This includes a list of major changes for each minor version starting from 0.19.0.

For information on how to use micom please refer to the documentation.


Backports the visualizers to be compatible with scikit-learn 0.24.1 to avoid some issues with Qiime2.

Re-enables the Qiime model loading test in the CI.


Fixes a bug where model annotation tables could not be generated if there were multiple exchange reactions for a single metabolite. This made MICOM not work with AGORA2 in some instances.

Now checks for demand reactions and in database construction as well.


Bump the required cobra version to avoid numpy version errors.

0.32.1 - 0.32.2#

Adjustments to solver settings and lost of improvements to Gurobi that make it much faster.


Helper functions to save results were added.


Fixed a bug where minimal_medium would maximize with OSQP instead of minimize.


More adjustments to OSQP.


Fix a bug in the stabilization term used for OSQP. Try to avoid fragmentation warning.


Fix regression in T-SNE.

0.31.2 - 0.31.3#

Some more fixes to the media completion.


Show added flux as fraction of total in complete_db_medium.


The medium completion functions now have a flag that allows adding additional flux to components already in the candidate medium. The default is now changed to that new non-strict mode which makes it much easier and more efficient to complete media. In that case the max_added_import amount now specifies the maximum flux added on top the limit specified in the candidate medium.


Fixed a bug where T-SNE would complain in low sample numbers.

0.30.3 - 0.30.4#

Those were fixes to deployment and dependencies only.


Avoids a bug in COBRAPY that can yield to huge serialized versions of the models.


Fix compatibility with Python 3.7.


build will now detect existing models in the output folder and skip them. This now allows to resume interrupted builds. Explicit rebuild requires you to delete the folder now.


Fixes a bug where using more than 1 thread for workflows would not return results in some cases.


Fixed some dependency errors on older Python versions.


Port tests to cobrapy 0.25 and above. Fix an import error in workflows.core.


Suppresses some warning in annotations from cobrapy.


Fixes some CI and build issues.


Renames the n_jobs arguments to threads across the code base for consistency and updates the arguments for workflow.

workflow now does not spawn a process for single-threaded runs, reducing overhead.

Fixes an issue where workflow would deadlock with pytest-cov.


Fixes an issue where an accumulation in warnings in spawned processes trips up jupyter.


Fixes a deployment issue with the previous build.


Annotations now include the molecular weight, number of carbon atoms, and the number of nitrogen atoms for each compound.


Now adjusts active demands to be optional. This was an issue with some models in AGORA that had forced biotin demands. This effectively prohibits zero growth rates and is problematic for MICOM.

Fix the logger for multiprocessing.


Handle CARVEME models better in workflows.complete_medium.

Workflows now have a deterministic return error (same order as inputs).


build_database now allows to set the compression algorithm and level.


Fixed settings to get better convergence behavior with OSQP.


MICOM now works with OSQP and works out of the box without a commercial QP solver. See the installation docs for more information.


The sample heatmap in plot_exchanges_per_sample is now automatically rotated when there are mores samples than reactions.

media workflows will use presolving by default since those are often numerically problematic.


Fix the signature and add deprecation warnings for optimize_* methods.

plot_exchanges_per_taxon will now use normalized fluxes (per 1 gDW for each taxon) which allows better comparability. The old behavior can be enabled with use_total_flux=True.

Avoid negative growth rate constraints in _apply_min_growth.

Can now enable presolving/scaling in grow and tradeoff.


Fix some warnings from pandas.

Avoid a crash in reularize_l2_norm when all reactions for a taxon have been fixed to zero.

Raise a better error if the minimal medium optimization fails in grow.

Use the right tolerance when setting atol and rtol automatically.


Fixed an error in if build was run without a model database but with a file column in the taxonomy.


Fixed missing data files.


Improves version compatibility with cobrapy and QIIME 2.


Fixed a bug where incorrectly labeled biomass demand reactions were treated like an exchange.


Lowered the required version for pandas to re-enable compatibility with Python 3.6.

Docs are now built on all pushes.


atol and rtol are now consistently exposed.

Remove six dependency.


Got a bit smarter in cleaning up compartment suffixes. This fixes the odd “_e_m” suffix in CARVEME-derived models. This will change the names of exchange reactions compared to version 0.21.x.


Stabilize minimal_medium a bit more.

The strategy to calculate fluxes in the grow workflow can now be set with the strategy argument. For instance, you can now get fluxes via parsimonious FBA instead of assuming minimal imports.

Fixed a bug where minimal media classification with weights="mass" would fail due to invalid elements in the formula (for instance “X”).


This version brings new functionality to design growth media from a skeleton medium. This also allows for a quicker verification of media against the model databases.

Added workflows:

  • check_db_media check if models in a model database can grow on a given medium

  • complete_db_mediacompletes a growth medium so all models in the db can grow on it

Together with this we now provide several new revised growth media for the gut on In particular, we finally provide the often requested growth medium for the carveME database.


minimal_medium now accepts weighting the fluxes bei molecular weight or any elemental content. For instance, you can now calculate a minimal medium that minimizes carbon import for instance. The used weigths argument propagates to any workflow using this function including complete_medium, fix_medium and grow.

0.1.0 - 0.18.0#

minimal_medium now has an option to return all fluxes along with the import and export fluxes. Useful if you want to check what every individual taxa consumes.

Addition of Community.cooperative_tradeoff which brings a fast method to get nearly unique growth rates for a particular growth tradeoff (for instance 50% maximal growth rate).

Addition of elasticity coefficients which allows you to study which import and export reactions are sensitive to changes in diet or taxa abundances.

Several changes to make micom capable of handling numerical instable models. This includes a crossover strategy to obtain an optimal or near-optimal from an incomplete interior point optimization.