Skip to content

Commit

Permalink
doc: sketch of draft protocol
Browse files Browse the repository at this point in the history
  • Loading branch information
edkerk committed Dec 23, 2022
1 parent cf56471 commit b2f72b1
Showing 1 changed file with 76 additions and 0 deletions.
76 changes: 76 additions & 0 deletions tutorials/protocol.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
%% This script sketches the blueprint for the GECKO3 protocol.
% At a later stage, it can likely be converted into a script that is
% referenced in the protocol paper. Right now, this script might contain
% comments and clarifications that should rather be included in the
% protocol than in here, while other comments might be best kept in this
% script. At the moment it is just a sketchbook.

%% Prepare for ec model reconstruction
% - Prepare a folder in userData, or select another path whether all model-
% specific files and scripts will be kept
% - Find a high-quality GEM of your species of interest
% - For reference, might be best to be stored together with the
% model-specific files, e.g. userData/ecYeastGEM/model/yeast-GEM.xml
% - Install RAVEN & GECKO
% - RAVEN can be installed in many different ways, refer to GitHub Wiki.
% - GECKO can be installed via cloning or direct download of ZIP file.
% Should GECKO also be distributed as MATLAB Add-On, just like RAVEN?
% - GECKO should be added to the MATLAB path.
% - On Uniprot:
% - Search a proteome for your species and note the Organism ID / TaxId
% - Check which gene identifiers are used in the model, and see where
% this is represented in Uniprot. E.g. for yeast, the genes are in
% "Gene Names (Ordered locus)", which via the API can be gather via
% "gene_oln" according to https://www.uniprot.org/help/return_fields
% - On KEGG:
% - Find the organism code of your species
% - Prepare a ModelAdapter file with some of the above information and
% more.

%% Summary
% Pipeline can look different dependent on user preferences. Getting an
% all-DLKcat model would look something like:
% makeEcModel -> findMetSmiles -> writeDLKcatInput -> readDLKcatOutput ->
% selectKcatValue -> applyKcatConstraints -> ...
% while a fuzzy matching to BRENDA approach looks like:
% makeEcModel -> getECfromDatabase -> fuzzyMatching -> applyKcatConstraints
% -> ...

%% Initiate model reconstruction
% Load the model with RAVEN's importModel
modelY = importModel(fullfile(findGECKOroot,'userData','ecYeastGEM','models','yeast-GEM.xml'));

% Set the ModelAdapter correctly
setGECKOModelAdapter('userData/ecYeastGEM/ModelAdapter.m')

ecModel = makeEcModel(modelY);
% Read makeEcModel documentation to get a list of all it does: it prepare
% the new model.ec structure and prepares the S-matrix by splitting
% reversible reactions, isozymes etc.
% Can also make a geckoLight model with makeEcModel(..,..,true);

%% Gather kcat values
% Different approaches are possible: (1) DLKcat; (2) fuzzy matching; (3)
% manual kcatList. For (1) and (2), ecRxns parameter can indicate that you
% do not want to get kcats for all reactions. You might want to first run
% fuzzy matching, only keep the ones without any EC wildcards, and then run
% DLKcat for the remaining reactions.

% (1) DLKcat
% Requires metabolite SMILES:
model.metSmiles = findMetSmiles(model.metNames);
% Currently, a DLKcatInput.tsv file is written that can be used by DLKcat,
% and the DLKcatOutput.tsv file can be loaded into MATLAB again. Feiran is
% also working on providing DLKcat as a package that can directly be called
% by GECKO/MATLAB.
writeDLKcatInput(model);
kcatList = readDLKcatOutput(model);
ecModel = selectKcatValue(ecModel,kcatList);
ecModel = applyKcatConstraints(ecModel);

% (2) fuzzy matching
% Requires EC-codes
ecModel = getECfromDatabase(ecModel);
kcatList = fuzzyKcatMatching(ecModel);
ecModel = selectKcatValue(ecModel,kcatList);
ecModel = applyKcatConstraints(ecModel);

0 comments on commit b2f72b1

Please sign in to comment.