Skip to content

Latest commit

 

History

History
89 lines (50 loc) · 3.97 KB

README.md

File metadata and controls

89 lines (50 loc) · 3.97 KB

moomin.jl

This is a Julia implementation of MOOMIN, a method for analysing differential expression (DE) data with the help of a metabolic network, that was previously released for MATLAB. If you prefer the MATLAB version, you can find it here:

https://github.com/htpusa/moomin

All the core functionality is the same, however, some external utilities for manipulating metabolic networks are currently lacking in Julia. In addition, only .mat files can be used with this version.

The purpose of MOOMIN is to take DE results and metabolic network, and produce a hypothesis of a metabolic shift. This is represented by colours (coded as integers in the code):

-'r.red'/2: increase in flux, reaction operates in reverse direction (with respect to the direction considered as "primary" in the network)

-'red'/1: increase in flux

-'grey'/0: no change in flux

-'blue'/-1: decrease in flux

-'r.blue'/-2: decrease in flux, reaction operates in reverse direction

-'yellow'/6: indeterminate change ie a change in flux took place but the direction of the reaction and hence the nature of the change are indeterminate

For full details of the methodology see the original publication:

https://doi.org/10.1093/bioinformatics/btz584

Dependencies

How install and use Julia, see: https://julialang.org/

A MILP solver is needed, you can use either CPLEX or Gurobi. GLPK unfortunately appears to be way too slow.

Installing CPLEX for Julia: https://github.com/jump-dev/CPLEX.jl

Installing Gurobi for Julia: https://github.com/jump-dev/Gurobi.jl

Note that academic licenses are available for both solvers.

Usage

The easiest way to run moomin.jl, once you have installed Julia and CPLEX, is to use the Julia REPL. Navigate to this directory, and activate the package by entering Pkg by pressing ] and running activate .. After that you can test that everything is working by running test moomin. Exit the Pkg with backspace or ^C, and run using moomin. After that you can use all functions in the package.

The only functions you would normally need are runMoomin and writeOutput. The former reads the data and the network file and runs the algorithm. It returns a custom structure that contains all the inputs and outputs of the method. This structure can then be passed to writeOutput to export results. Type ? and then the name of the function to see how to use them. Note that before using runMoomin, you need to import your solver of choice and create an Optimizer object to pass to the function.

Note that MOOMIN requires DE results obtained using Bayesian methods. That is, the input should have posterior probabilities of differential expression (PPDE). For Bayesian DE analysis, I recommend EBseq.

The network needs to include GPR information and the gene identifiers should match with those in the data.

Shout-outs

moomin.jl uses

https://github.com/JuliaIO/MAT.jl to read .mat files

https://jump.dev/ to build and solve MILPs

https://github.com/jump-dev/CPLEX.jl to interact with CPLEX

or

https://github.com/jump-dev/Gurobi.jl to interact with Gurobi

The E. coli model used for tests was downloaded from http://systemsbiology.ucsd.edu/Downloads/EcoliCore

Tips

If you are experiencing long running times, try turning off stoichiometry (stoichiometry=false). This should make the MILP easier to solve.

You can export your results in different formats using the writeOutput function:

-format=full prints a tab-delimited file with the most information.

-format=json with string=false can be used to visualise results using Escher.

Citation

If you use moomin.jl, please cite

Taneli Pusa, Mariana Galvão Ferrarini, Ricardo Andrade, Arnaud Mary, Alberto Marchetti-Spaccamela, Leen Stougie, Marie-France Sagot, MOOMIN – Mathematical explOration of ’Omics data on a MetabolIc Network, Bioinformatics, Volume 36, Issue 2, 15 January 2020, Pages 514–523, https://doi.org/10.1093/bioinformatics/btz584