Skip to content

Commit

Permalink
GECKO 3.1.0 (#333)
Browse files Browse the repository at this point in the history
* fix: getStandardKcat with multiple subSystems

* Bug: Fix compatibility running ecFSEOF with GECKO3 models (#301)

* reverse: simulateGrowth for ecFSEOF

* fix: consistency in terminology

* refactor: fluxes for a target

* refactor: compatibility to GECKO3 ecFlux_scanning

* refactor: add compatibility to GECKO3

* fix: typo

* fix: save file type file

* fix: filter tolerance

* fix: if not carbon uptake have been defined

* fix: add toleracne to protein pool

* refactor: spaces instead of tabs

* fix: function input description

* Update src/geckomat/utilities/ecFSEOF/run_ecFSEOF.m

---------

Co-authored-by: edkerk <[email protected]>

* feat: user defined proteins to ignore in tunning kcats (#306)

* fix: applyCustomKcats with customKcats structure input (#304)

* fix: applyCustomKcats should allow struct as input

* fix: applyCustomKcats correct parse default param

* fix: applyCustomKcats

* applyCustomKcats doc and tests

* refactor: reduce command window output testss

* Apply suggestions from code review

Co-authored-by: Albert Tafur Rangel <[email protected]>

---------

Co-authored-by: Albert Tafur Rangel <[email protected]>

* doc: updateProtPool and flexibilizeProtConcs (#297)

* fix: updateProtPool avoid correctinf for f twice

* doc: flexibilizeProtConcs explain overconstraining

* fix: loadProtData measuredProt if NaN exist

* doc: protocol.m describe updateProtPool input

* fix: updateProtPool simplified new pool calculation

* chore: update protocol for updateProtPool

---------

Co-authored-by: Mihail Anton <[email protected]>

* feat: a function that creates a the project structure an adapter class (#312)

* feat: create structure project

* feat: include empty .keep files

---------

Co-authored-by: edkerk <[email protected]>

* feat: currencyMets and pseudoreactions handling (#313)

* fix: writeDLKcatInput currencyMets handling

* fix: filter out pseudoreactions makeEcModel

* fix: makeEcModel find pseudoreactions

* chore: restructure tutorials (#310)

* chore: rename userData to tutorials

* chore: move protocol and adapters

* chore: keep original in full under blankExample

* chore: compact adapters for human and yeast

* chore: cleanup protocol for yeast

* feat: add a model adapter under blankExample

* chore: rename adapter

* feat: copy protocol from yeast to human

* fix: typo

* fix: new folder names in adapters

* fix: update paths to tutorials

* refactor: model adapter expects full adapter path and extension

* fix: file paths for yeast-GEM tutorial

* style: protocol in tutorial prints step

* chore: rm doc

* feat: compress outputs about downloading complexes

* fix: full path to adapter in test

* fix: full paths for adapters in tests

* fix: undo bad path change

* chore: remove blankExample, use startGECKOproject

* chore: restore yeast-GEM protocol.m content

* chore: run through yeast-GEM protocol

* feat: simplify ModelAdapterManager commands

* fix: allow to set empty default adapter

* fix: tests refer to test adapter

---------

Co-authored-by: edkerk <[email protected]>

* feat: add manually-generated doc for online use

* feat: updateGECKOdoc function

* chore: update documentation

by running updateGECKOdoc()

* fix: getStandardKcat and applyKcatConstraints (#320)

* fix: getStandardKcat light model standard enzyme

In light ecModels, even if standard enzyme is not a pseudo-substrate (it will always use prot_pool instesad), standard enzyme should still be in ecModel.ec.enzyme (and .rxnEnzMat etc.), to calculate MW/kcat.

* refactor: applyKcatConstraints simplify light

* refactor: getStandardKcat

* fix: applyKcatConstraints zero-kcats light ecModel

* feat: copyECtoGEM function

* fix: minor bugs identified (#316)

* fix: use logical vector to construct equations

* fix: increase default tolerance

* style: typo

* style: use standard input names

* fix: adaptar default method name

* fix: set values under solver tol to zero

* feat: run_ecFSEOF check alphaLims parameter

---------

Co-authored-by: Eduard Kerkhoven <[email protected]>

* feat: updates related to tutorials (#319)

* feat: new/updated functions around enzyme usage

* feat: install and adapter manager

* feat: Crabtree plot and data

* feat: updated protocol and model file

* refactor: rename tutorials full_ and light_ecModel

* feat: loadConventionalGEM can load YAML

* feat: use progressbar to give time estimates

* fix: ecFVA correct number of simulations

* feat: sensitivityTuning reports eccodes

* feat: fillProtConcs select column from protData

* feat: flexibilizeProtConcs sort by highest ratio

* feat: plotCrabtree plus graphs

* feat: plot light vs full ecModel analysis

* feat: GECKOInstaller checks RAVEN version

* feat: update of full_ecModel protocol

moved progressbar to RAVEN 2.8.2

* fix: getStandardKcat light model standard enzyme

In light ecModels, even if standard enzyme is not a pseudo-substrate (it will always use prot_pool instesad), standard enzyme should still be in ecModel.ec.enzyme (and .rxnEnzMat etc.), to calculate MW/kcat.

* refactor: applyKcatConstraints simplify light

* refactor: getStandardKcat

* feat: light_ecModel tutorial overhaul

* fix: plot light vs full

* fix: applyKcatConstraints zero-kcats light ecModel

* feat: copyECtoGEM function

* chore: updateDocumentation

* fix: full_ecModel/protocol.m step 13

* full_ecModel misc small fixes

* fix: full_ecModel/protocol.m step 15

* fix: full_ecModel/protocol.m install instructions

* fix: findMetSmiles report success and handle prot_

* fix: full_ecModel customKcat non-funct. protein

* fix: plotCrabtree avoid flux minimalization

* fix: full_ecModel various minor changes

* fix: GECKOInstaller RAVEN dep version bump

* fix: full_ecModel and light_ecModel from review

* fix: remove unused functions

* feat: rerun light_ecModel pipeline

* refactor: change vanHoek1998.csv to .tsv

* fix: full_ecModel tutorial ecFVA (#321)

* fix: remake ecFVA plot with generic plot function

* fix: GECKOInstaller ignore doc subfolder

* chore: updateGECKOdoc

* fix: remove old ecFVA.tsv

no purpose to write this file

* refactor: speedup fuzzyKcatMatching & getECfromGEM

* feat: saveEcModel more logical input

* refactor: swap TIFF for PDF

* refactor: applyComplexData (#323)

* refactor: speed increase applyComplexData

* feat: applyComplexData progressbar + code comments

* feat: light_ecModel tutorial getSubsetEcModel (#322)

* fix: remake ecFVA plot with generic plot function

* fix: GECKOInstaller ignore doc subfolder

* chore: updateGECKOdoc

* fix: remove old ecFVA.tsv

no purpose to write this file

* fix: getStandardKcat no standard gene in light-ec

* fix: light_ecModel until step 29

* feat: getSubsetEcModel + tutorial

* feat: parameters format, phylDist.mat file and yeast-GEM.yml (#325)

* refactor: rename KEGG params to param.kegg.

to param.kegg.geneID

* refactor: rename Complex params to param.complex

* refactor: rename UniProt params to param.uniprot.

* fix: remove unused obj.params entries

remnants of GECKO2

* refactor: add _id to uniprot taxonomy

* refactor: use taxonomicID from complex portal

easier to find than precise species name

* feat: use RAVEN's phylDist.mat

from RAVEN 2.8.3 includes species names

* feat: tutorial yeast-GEM as yaml

* feat: yeast-GEM file is for tutorial only

* fix: remove unused manualModifications

* fix: small fixes

* docs: add link to tutorials in README

* docs: skip mentioning the required RAVEN version, since it is checked at installation

* feat: compare light vs full ecModel (#328)

* chore: rerun full_ecModel tutorial

* feat: light vs full ecModel comparison

* doc: swap step 29 and 30

* chore: rerun light_ecModel tutorial (#331)

* chore: rerun full_ecModel tutorial

* feat: light vs full ecModel comparison

* doc: swap step 29 and 30

* chore: rerun light_ecModel tutorial

* refactor: consistent use of isozyme

In agreement with manuscript

* chore: updateDocumentation

* doc: format of warning messages

* fix: plotlightVSfull.m handle use of alt solvers

* fix: consistent cutoff for low fluxes

---------

Co-authored-by: Albert Tafur Rangel <[email protected]>
Co-authored-by: Mihail Anton <[email protected]>
  • Loading branch information
3 people authored Jul 3, 2023
1 parent 4b2a7e4 commit 9148132
Show file tree
Hide file tree
Showing 221 changed files with 1,004,214 additions and 185,782 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ geckopy/geckopy/data_files/*.xml
*.ppt*
# Only allowed .mat file
!phylDist.mat
# Ignore intermediate model files
*_stage*.yml

# Packages #
############
Expand Down
77 changes: 58 additions & 19 deletions GECKOInstaller.m
Original file line number Diff line number Diff line change
@@ -1,14 +1,31 @@
classdef GECKOInstaller
% GECKOInstaller
% Support for installing and uninstalling
% Run GECKOInstaller.install to install (will set up the path in MATLAB)
% Run GECKOInstaller.uninstall to clear the path from MATLAB
% To install, you first need to cd to the GECKO root.
% GECKOInstaller
% Support for installing and uninstalling
% Run GECKOInstaller.install to install (will set up the path in MATLAB)
% Run GECKOInstaller.uninstall to clear the path from MATLAB
% To install, you first need to cd to the GECKO root.

methods (Static)
function install
sourceDir = fileparts(which(mfilename));
paths = GECKOInstaller.GetFilteredSubPaths(sourceDir, GECKOInstaller.FILE_FILTER);

GECKOInstaller.checkRAVENversion('2.8.3'); % Minimum RAVEN version

% Check unique function names
if ~exist("checkFunctionUniqueness.m")
error(['Cannot find RAVEN Toolbox in the MATLAB path. Make ' ...
'sure you have installed RAVEN in accordance to the ' ...
'following instructions, including running ''checkInstallation()'': ' ...
'https://github.com/SysBioChalmers/RAVEN/wiki/Installation'])
else
status=checkFunctionUniqueness(paths);
if ~status
error(['You might have multiple GECKO installations in your ' ...
'MATLAB path. Rerun GECKOInstaller.install after ' ...
'resolving the conflicting functions.'])
end
end
addpath(paths);
savepath;
end
Expand All @@ -19,32 +36,54 @@
savepath;
end
function path = getGECKOMainPath()
path = fileparts(which(mfilename));
path = strrep(path, '\', '/'); %get rid of backslashes in Windows
if ~endsWith(path, '/')
path = strcat(path,'/');
end
end
path = fileparts(which(mfilename));
path = strrep(path, '\', '/'); %get rid of backslashes in Windows
if ~endsWith(path, '/')
path = strcat(path,'/');
end
end

function newPaths = GetFilteredSubPaths(path_, filter_)
pathSep = pathsep();
%Check that there are no separators in the path - that will cause
%Check that there are no separators in the path - that will cause
%problems since the separator is used to separate paths in a string
if contains(path_, pathSep)
error('The path in which GECKO resides may not contain semicolons for this installation to work!');
end
if contains(path_, pathSep)
error('The path in which GECKO resides may not contain semicolons for this installation to work!');
end
paths = genpath(path_);
splitPaths = strsplit(paths, pathSep);
%remove the last, it is empty
splitPaths = splitPaths(1,1:end-1);
matches = regexp(splitPaths, filter_, 'match');
okPaths = cellfun(@isempty, matches);
pathsLeft = splitPaths(1,okPaths);
newPaths = strcat(char(join(pathsLeft, pathSep)), pathSep);
newPaths = char(join(pathsLeft, pathSep));
end
function checkRAVENversion(minmVer)
try
currVer = checkInstallation('versionOnly');
if strcmp(currVer,'develop')
printOrange('WARNING: Cannot determine your RAVEN version as it is in a development branch.\n')
else
currVerNum = str2double(strsplit(currVer,'.'));
minmVerNum = str2double(strsplit(minmVer,'.'));
for i=1:3
if currVerNum(i)<minmVerNum(i)
error('Installed RAVEN version is %s, while the minimum is %s.',currVer,minmVer)
end
end
end
catch
warning(['Cannot find RAVEN Toolbox in the MATLAB path, or the version ' ...
'is too old (before v' minmVer '). Make sure you have installed RAVEN in ' ...
'accordance to the following instructions, including running ' ...
'''checkInstallation()'': https://github.com/SysBioChalmers/RAVEN/wiki/Installation'])
end

end
end

properties (Constant)
FILE_FILTER = '.*\.git|.idea|userData.*';
end
FILE_FILTER = '.*\.git|.idea|tutorials.*|.github|_MACOSX|doc';
end
end
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ The **GECKO** toolbox enhances a **G**enome-scale model to account for **E**nzym

💡 In the GECKO folder, `protocol.m` contains instructions on how to reconstruct and analyze an ecModel for _S. cerevisiae_. This demonstrates how many of GECKO's functions can be used.

💡 In the [`GECKO/tutorials`](https://github.com/SysBioChalmers/GECKO/tree/main/tutorials) folder there are examples of how GECKO can be applied to GEMs, in either of its _full_ or _light_ forms. Each `protocol.m` contains instructions on how to reconstruct and analyze an ecModel, demonstrating how different fuctions in GECKO can be used. The source code documentation is also available
[online](http://sysbiochalmers.github.io/GECKO/doc/).

_**Note:** Regarding code and model compatibility with earlier GECKO versions, see [Previous versions: GECKO 1 and 2](#previous-versions-gecko-1-and-2)_.

### Citation
Expand All @@ -23,7 +26,7 @@ _**Note:** Regarding code and model compatibility with earlier GECKO versions, s
#### Required software

- MATLAB version 2019b or later, no additional MathWorks toolboxes are required.
- [RAVEN Toolbox](https://github.com/SysBioChalmers/RAVEN) version 2.7.12 or later. The RAVEN Toolbox Wiki contains [installation instructions for both RAVEN](https://github.com/SysBioChalmers/RAVEN/wiki/Installation) and [Gurobi](https://github.com/SysBioChalmers/RAVEN/wiki/Installation#solvers). Briefly, RAVEN is either downloaded via `git clone`, as ZIP-archive from GitHub, or installed as a [MATLAB AddOn](https://se.mathworks.com/matlabcentral/fileexchange/112330-raven-toolbox). After finishing all installation instructions, the user should run installation checks in MATLAB with: `checkInstallation`.
- [RAVEN Toolbox](https://github.com/SysBioChalmers/RAVEN). The RAVEN Toolbox Wiki contains [installation instructions for both RAVEN](https://github.com/SysBioChalmers/RAVEN/wiki/Installation) and [Gurobi](https://github.com/SysBioChalmers/RAVEN/wiki/Installation#solvers). Briefly, RAVEN is either downloaded via `git clone`, as ZIP-archive from GitHub, or installed as a [MATLAB AddOn](https://se.mathworks.com/matlabcentral/fileexchange/112330-raven-toolbox). After finishing all installation instructions, the user should run installation checks in MATLAB with: `checkInstallation`.
- [Gurobi Optimizer](https://www.gurobi.com/solutions/gurobi-optimizer/) is recommended for simulations (free academic license available). Alternatively, the open-source [GNU Linear Programming Kit](https://www.gnu.org/software/glpk/) (distributed with RAVEN) or SoPlex as part of the [SCIP Optimization Suite](https://scipopt.org/) can be used.
- [Docker](https://www.docker.com/) for running DLKcat. Installation instructions are available at https://docs.docker.com/get-docker .

Expand Down
3 changes: 2 additions & 1 deletion _config.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
theme: jekyll-theme-minimal
logo: GECKO.png
show_downloads: false
show_downloads: true
exclude: [.github, databases, src, test, userData]
keep_files: ["doc/"]
Binary file removed databases/PhylDist.mat
Binary file not shown.
Binary file added doc/alpha.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/c++.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/c.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/demoicon.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/down.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 9148132

Please sign in to comment.