skip to content


MitoCore is a computer model of human central metabolism developed by the Bioinformatics group at the MRC Mitochondrial Biology Unit in collaboration with researchers at the University of Bordeaux. For a brief explanation of computer modelling see the modelling mitochondrial metabolism page. MitoCore has been designed as a research tool for scientists: from experimentalists looking to interpret their data and test hypotheses, to experienced modellers predicting the consequences of disease or using computationally intensive methods that are infeasible with larger models, as well as a teaching tool for those new to modelling and needing a small, manageable model on which to learn and experiment.

MitoCore is constraint-based model and designed to be used with methods such as Flux Balance Analysis. To produce a model of manageable scale for easy interpretation of results, MitoCore describes 324 metabolic reactions, 83 transport steps between mitochondrion and cytosol, and 74 metabolite inputs and outputs. Its key innovations include:

  • A more accurate partitioning of metabolism between cytosol and mitochondrial matrix
  • Better modelling of connecting transport steps
  • Differentiation of prosthetic groups and free co-factors in reactions
  • A new representation of the respiratory chain and the proton motive force

MitoCore also includes default uptake parameters that allow it to simulate normal cardiomyocyte metabolism 'out of the box'. The model files (and any future updates) are available in the resources section below. For more details on how our model was constructed and its capabilities see:

Smith AC, Eyassu F, Mazat J-P & Robinson AL (2017)
MitoCore: a curated constraint-based model for stimulating humam central metabolism
BMC Systems Biol 11, 114. doi:10.1186/s12918-017-0500-7

If you have any comments/questions regarding the model please contact us:



MitoCore is encoded in SBML format and so is compatible with a wide range of software. Below is a simple tutorial on how to simulate the model using the popular COBRA Toolbox software for MATLAB. A primer on the method of flux balance analysis can be found in this paper.

Once you’ve installed MATLAB, the COBRA Toolbox and a solver (we use GNU’s GLPK) by following these instructions, start the COBRA Toolbox: initCobraToolbox

Then read in the MitoCore model (make sure the model file is in the active directory in MATLAB): model = readCbModel('mitocore_v1.01.xml')

Then set the objective function for which the fluxes will be optimised. In the example below this is to maximise flux through the reaction in the model that represents ATP hydrolysis (i.e. maximising ATP production), which we often use to find realistic fluxes for central metabolism: model = changeObjective(model, 'OF_ATP_MitoCore') Any reaction in the model can be set as the objective function by replacing 'OF_ATP_MitoCore' in the example below with the appropriate reaction abbreviation - this can be found in the companion annotation spreadsheet below (Reactions & Fluxes worksheet, column E).

Now the objective function has been set we can perform flux balance analysis (FBA). There are many variations of FBA but our favourite type is geometric FBA, which produces a flux distribution that contains all sets of optimal FBA solutions while minimising overall flux (i.e it will pick the shortest path through the model). Geometric FBA can take several hours with a genome-scale model but only takes ~10 seconds with MitoCore on an average desktop computer: flux = geometricFBA(model) Congratulations! You have run your first FBA simulation using MitoCore! The results from geometric FBA are also independent of the linear solver used and so are reproducible between researchers.

To display the results, which is the flux distribution using the default model parameters, and represent cardiomyocyte metabolism: printFluxVector(model,flux,false,false) If you only want to see reactions with non zero flux use: printFluxVector(model,flux,true,false)

One of the easiest ways to interpret the results is to use the companion Excel spreadsheet (in the resources section below). The Reactions & Fluxes worksheet is organised by pathway (column G) and gives a description of what each reaction represents (column H), as well as annotation such as gene ids (columns R to S). Column O shows the flux results using the default model parameters. For example row 5 is the reaction for maximum ATP production, and its flux is 101 μmol/min/gDW (cell O5). To map your results onto the spreadsheet, copy and paste the results from MATLAB to the Raw Data worksheet over the existing flux figures (B7:C491). Column O on the Reactions & Fluxes spreadsheet will update automatically (by using the Excel VLOOKUP function).

The next step is to change a reaction parameter — perhaps to disable a reaction or to change the availability of a metabolite to replicate a disease. This is done by altering the upper bound (UB) or lower bound (LB) of a reaction. Setting the UB to 1000 represents unlimited flux in the forward direction of the reaction, whereas a LB of -1000 represents unlimited flux in the reverse direction of the reaction. Setting either the LB or UB to 0 makes the reaction irreversible in the forward or reverse direction. Setting both UB and LB to 0 will disable the reaction. The difference between the LB and UB is the flux range the simulation can use. Details of each reaction, such as its formula can be seen in the companion spreadsheet on the Reactions & Fluxes worksheet. To change a reaction parameter use: model = changeRxnBounds(model,'O2t', 1.0,'u'); The reaction in this example is the oxygen boundary condition (i.e. how much oxygen is available to the system) abbreviated as 'O2t' and the command sets the UB 'u' to 1.0 mumol/min/gram of dry weight, which would represent hypoxia. The default model upper and lower bounds (which represent cardiomyocyte metabolism) can be seen on the companion spreadsheet, Reactions & Fluxes worksheet column L and M. The lower bound can be set by replacing 'u' with 'l' in the command. To see the effect of this change in oxygen availability run geometric FBA again using the commands above.

An alternative way to change reaction parameters is to alter the SBML file directly by searching for the appropriate reaction id. In each reaction entry is a section called 'listOfParameters' where the upper and lower bounds can be altered directly: <listOfParameters> <parameter id="LOWER_BOUND" value="0" units="mumol_per_gDW_per_min"/> <parameter id="UPPER_BOUND" value="1000" units="mumol_per_gDW_per_min"/> <parameter id="OBJECTIVE_COEFFICIENT" value="0"/> <parameter id="FLUX_VALUE" value="0.000" units="mumol_per_gDW_per_min"/> </listOfParameters> The benefit of this approach is a large number of changes can be made and then the model saved to produce a record of the parameters used. The model can then be simply loaded back into MATLAB as above. The objective function can be set in a similar way by altering the objective coefficient from 0 to 1 (or -1 if you want to maximise the reverse direction of the reaction).

Many more functions and features can be found at the COBRA Toolbox website: including an excellent set of detailed tutorials.



MitoCore is available here in SBML format alongside its companion annotation spreadsheet:

Research Resources and Facilities