/minMicrobiome

Code for generation of Minimal Microbiomes using a constraint-based approach

Primary LanguageMATLABMIT LicenseMIT

minMicrobiome

minMicrobiome is an algorithm to identify minimal microbiomes that are capable of a given functionality (metabolite production) from a large community of microbes, using a constraint-based approach. To arrive at a minimal microbiome, sequential deletion of member species is done and is followed by solving a mixed integer linear programming problem (MILP) with the objective to minimize L1 norm of the membership vector. minMicrobiome function accepts the type of functionality to be retained as one of the input parameters. The identified minimal microbiome need not be unique and running multiple iterations of the algorithm can yield more possible minimal microbiomes.

Requirements

  1. COBRA toolbox
  2. Solver for MILP and LP such as Gurobi

Instructions for use

The function can be called using the command: [solutionPert, supp_out] = minMicrobiome(modelCom, options);

Inputs

modelCom - a community model of AGORA models created using the COBRA toolbox function createCommModel, such that:

  • Each species in the community is represented as ‘_ org1’, ‘_ org2’, etc.
  • Exchange reactions start with ‘EX _’
  • Names of biomass equations start with ‘biomass

Optional inputs

  1. Fraction of growth rate to be retained in minimal microbiome – gr_frac (default value = 0.8)
  2. Fraction of SCFA to be retained in minimal microbiome – scfa_frac (default value = 0.8)
  3. For coupling biomass reaction to the others in a species: coupling constraint, c (default value = 1000) and threshold u (default value = 0.01)
  4. The functionality of the community that needs to be preserved – constraint, namely:
  • 1: maximum weighted sum of SCFAs (metabolites 1, 2 and 3, default wt = 1:1:1),
  • 2: maximum metabolite 1 production
  • 3: maximum metabolite 2 production
  • 4: maximum metabolite 3 production
    (default constraint value = 1. Default met_names: metabolite 1 = acetate, metabolite 2 = butyrate and metabolite 3 = propionate)
  1. Maximum number of organisms for MILP – maxMILP (default value = 10)
  2. Total no. of iterations the code should run – iter (default value = 3)
  3. Number of times the MILP should be run with different initial conditions – MILP_runs (default value = 1; keep this value to be <= number of organisms)
  4. Maximum number of rounds the generated random sequence should be ran over for deletion (MILP may not reduce to the desired number with 1 round) – max_del_rounds (default value = 10)
  5. Fraction of original growth rates for constraint while finding maximum SCFA production of the original community - gr_opt_frac (default value = 0.99)
  6. Sequence for deletion - del_seq (generated randomly by default)
  7. Does the metabolite production rate need to be calculated – 'yes' or 'no'? - met_calc_minMicrobiome (default value = ‘yes’)
  8. What is the maximum time up to which you would like it to run (seconds) – time_budget (default value = 10800 s)

Outputs

  1. solutionPert: a cell containing the identified minimal microbiomes after running the specified number of iterations (No. of minimal microbiomes calculated <= no. of iterations)
  2. supp_out: the additional output containing the list of all distinct minimal microbiomes identified, maximum production rate by each of them if applicable, the full community growth rate (gr_max), maximum individual growth rates and maximum SCFA production (max_scfa) of the original community, and the list of organisms removed during the initial deletion