Skip to main content

MetEvolSim (Metabolome Evolution Simulator) Python Package

Project description

MetEvolSim

Python package dedicated to the evolution of metabolic concentrations

   


MetEvolSim is a Python package providing numerical tools to study the long-term evolution of metabolic concentrations. MetEvolSim takes as an input any SBML metabolic network model, as soon as kinetic parameters and initial metabolic concentrations are specified, and a stable steady-state exists. Steady-state concentrations are computed thanks to Copasi software.

MetEvolSim is being developed by Charles Rocabert, Gábor Boross and Balázs Papp.

   

Table of contents

Dependencies

  • Python ≥ 3,
  • Numpy ≥ 1.15 (automatically installed when using pip),
  • Python-libsbml ≥ 5.17 (automatically installed when using pip),
  • NetworkX ≥ 2.2 (automatically installed when using pip),
  • pip ≥ 19.1 (optional).

Installation

• To install Copasi software, visit http://copasi.org/.

• To install the current release of MetEvolSim:

pip install MetEvolSim

Alternatively, download the latest release in the folder of your choice and unzip it. Then follow the instructions below:

# Navigate to the MetEvolSim folder
cd /path/to/MetEvolSim

# Install metevolsim Python package
python3 setup.py install

First usage

MetEvolSim takes as an input any SBML metabolic network model, as soon as kinetic parameters and initial metabolic concentrations are specified, and a stable steady-state exists. MetEvolSim provides a class to manipulate SBML models: the class Model. It is also necessary to define an objective function (a list of reaction names and coefficients), and to provide the path of CopasiSE software.

# Import metevolsim package
import MetEvolSim

# Create an objective function
target_fluxes = [['ATPase', 1.0], ['PDC', 1.0]]

# Load the SBML metabolic model
model = MetEvolSim.Model(sbml_filename='glycolysis.xml', objective_function=target_fluxes, copasi_path='/Applications/COPASI/CopasiSE')

# Print some informations on the metabolic model
print(model.get_number_of_species())
print(model.get_WT_species_value('Glc'))

# Get a kinetic parameter at random
param = model.get_random_parameter()
print(param)

# Mutate this kinetic parameter with a log-scale mutation size 0.01
model.random_parameter_mutation(param, sigma=0.01)

# Compute wild-type and mutant steady-states
model.compute_WT_steady_state()
model.compute_mutant_steady_state()

# Run a metabolic control analysis on the wild-type
model.compute_WT_metabolic_control_analysis()
# This function will output two datasets:
# - output/WT_MCA_unscaled.txt containing unscaled control coefficients,
# - output/WT_MCA_scaled.txt containing scaled control coefficients.

# Compute all pairwise metabolite shortest paths
model.build_species_graph()
model.save_shortest_paths(filename="glycolysis_shortest_paths.txt")

MetEvolSim offers two specific numerical approaches to analyze the evolution of metabolic abundances:

  • Evolution experiments, based on a Markov Chain Monte Carlo (MCMC) algorithm,
  • Sensitivity analysis, by exploring every kinetic parameters in a given range and recording associated fluxes and metabolic abundances changes.

All numerical analyses output files are saved in a subfolder output, automatically created by MetEvolSim.

Evolution experiments:

Algorithm overview: A. The model of interest is loaded as a wild-type from a SBML file (kinetic equations, kinetic parameter values and initial metabolic concentrations must be specified). B. At each iteration t, a single kinetic parameter is selected at random and mutated through a log10-normal distribution of standard deviation σ. C. The new steady-state is computed using Copasi software, and the MOMA distance z between the mutant and the wild-type target fluxes is computed. D. If z is under a given selection threshold ω, the mutation is accepted. Else, the mutation is discarded. E. A new iteration t+1 is computed.


Six types of selection are available:
  • MUTATION_ACCUMULATION: Run a mutation accumulation experiment by accepting all new mutations without any selection threshold,
  • ABSOLUTE_METABOLIC_SUM_SELECTION: Run an evolution experiment by applying a stabilizing selection on the sum of absolute metabolic abundances,
  • RELATIVE_METABOLIC_SUM_SELECTION: Run an evolution experiment by applying a stabilizing selection on the sum of relative metabolic abundances,
  • ABSOLUTE_TARGET_FLUXES_SELECTION: Run an evolution experiment by applying a stabilizing selection on the MOMA distance of absolute target fluxes,
  • RELATIVE_TARGET_FLUXES_SELECTION: Run an evolution experiment by applying a stabilizing selection on the MOMA distance of relative target fluxes.
# Load a Markov Chain Monte Carlo (MCMC) instance
mcmc = MetEvolSim.MCMC(sbml_filename='glycolysis.xml', objective_function=target_fluxes, total_iterations=10000, sigma=0.01, selection_scheme="MUTATION_ACCUMULATION", selection_threshold=1e-4, copasi_path='/Applications/COPASI/CopasiSE')

# Initialize the MCMC instance 
mcmc.initialize()

# Compute the successive iterations and write output files
stop_MCMC = False
while not stop_MCMC:
    stop_mcmc = mcmc.iterate()
    mcmc.write_output_file()
    mcmc.write_statistics()

Sensitivity analysis:

For each kinetic parameter p, each metabolic abundance [Xi] and each flux νj, the algorithm numerically computes relative derivatives and control coefficients.

# Load a sensitivity analysis instance
sa = MetEvolSim.SensitivityAnalysis(sbml_filename='glycolysis.xml', factor_range=1.0, factor_step=0.01, copasi_path='/Applications/COPASI/CopasiSE')

# Initialize the sensitivity analysis instance 
sa.initialize()

# Perform the sensitivity analysis for each kinetic parameter
stop_SA = False
while not stop_SA:
    stop_SA = sa.explore_next_parameter()

Help

To get some help on a MetEvolSim class or method, use the Python help function:

help(MetEvolSim.Model.set_species_initial_value)

to obtain a quick description and the list of parameters and outputs:

Help on function set_species_initial_value in module MetEvolSim:

set_species_initial_value(self, species_id, value)
    Set the initial concentration of the species 'species_id' in the
    mutant model.

    Parameters
    ----------
    species_id: str
            Species identifier (as defined in the SBML model).
    value: float >= 0.0
            Species abundance.

    Returns
    -------
    None
(END)

Copyright

Copyright © 2018-2019 Charles Rocabert, Gábor Boross and Balázs Papp. All rights reserved.

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

MetEvolSim-0.4.0.tar.gz (42.0 kB view hashes)

Uploaded Source

Built Distribution

MetEvolSim-0.4.0-py3-none-any.whl (30.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page