Home > core > removeReactions.m

removeReactions

PURPOSE ^

removeReactions

SYNOPSIS ^

function reducedModel=removeReactions(model,rxnsToRemove,removeUnusedMets,removeUnusedGenes,removeUnusedComps)

DESCRIPTION ^

 removeReactions
   Deletes a set of reactions from a model

   model             a model structure
   rxnsToRemove      either a cell array of reaction IDs, a logical vector
                     with the same number of elements as reactions in the model,
                     or a vector of indexes to remove
   removeUnusedMets  remove metabolites that are no longer in use (opt,
                     default false)
   removeUnusedGenes remove genes that are no longer in use (opt, default
                     false)
   removeUnusedComps remove compartments that are no longer in use (opt,
                     default false)

   reducedModel      an updated model structure

   Usage: reducedModel=removeReactions(model,rxnsToRemove,removeUnusedMets,...
           removeUnusedGenes,removeUnusedComps)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function reducedModel=removeReactions(model,rxnsToRemove,removeUnusedMets,removeUnusedGenes,removeUnusedComps)
0002 % removeReactions
0003 %   Deletes a set of reactions from a model
0004 %
0005 %   model             a model structure
0006 %   rxnsToRemove      either a cell array of reaction IDs, a logical vector
0007 %                     with the same number of elements as reactions in the model,
0008 %                     or a vector of indexes to remove
0009 %   removeUnusedMets  remove metabolites that are no longer in use (opt,
0010 %                     default false)
0011 %   removeUnusedGenes remove genes that are no longer in use (opt, default
0012 %                     false)
0013 %   removeUnusedComps remove compartments that are no longer in use (opt,
0014 %                     default false)
0015 %
0016 %   reducedModel      an updated model structure
0017 %
0018 %   Usage: reducedModel=removeReactions(model,rxnsToRemove,removeUnusedMets,...
0019 %           removeUnusedGenes,removeUnusedComps)
0020 
0021 if nargin<3
0022     removeUnusedMets=false;
0023 end
0024 if nargin<4
0025     removeUnusedGenes=false;
0026 end
0027 if nargin<5
0028     removeUnusedComps=false;
0029 end
0030 if ~islogical(rxnsToRemove) && ~isnumeric(rxnsToRemove)
0031     rxnsToRemove=convertCharArray(rxnsToRemove);
0032 end
0033 
0034 reducedModel=model;
0035 
0036 if ~isempty(rxnsToRemove) || removeUnusedMets || removeUnusedGenes
0037     indexesToDelete=getIndexes(model,rxnsToRemove,'rxns');
0038     
0039     %Remove reactions
0040     if ~isempty(indexesToDelete)
0041         reducedModel.rxns(indexesToDelete)=[];
0042         if isfield(reducedModel,'lb')
0043             reducedModel.lb(indexesToDelete)=[];
0044         end
0045         if isfield(reducedModel,'ub')
0046             reducedModel.ub(indexesToDelete)=[];
0047         end
0048         if isfield(reducedModel,'rev')
0049             reducedModel.rev(indexesToDelete)=[];
0050         end
0051         if isfield(reducedModel,'c')
0052             reducedModel.c(indexesToDelete)=[];
0053         end
0054         if isfield(reducedModel,'S')
0055             reducedModel.S(:,indexesToDelete)=[];
0056         end
0057         if isfield(reducedModel,'rxnNames')
0058             reducedModel.rxnNames(indexesToDelete)=[];
0059         end
0060         if isfield(reducedModel,'rxnGeneMat')
0061             reducedModel.rxnGeneMat(indexesToDelete,:)=[];
0062         end
0063         if isfield(reducedModel,'grRules')
0064             reducedModel.grRules(indexesToDelete,:)=[];
0065         end
0066         if isfield(reducedModel,'subSystems')
0067             reducedModel.subSystems(indexesToDelete,:)=[];
0068         end
0069         if isfield(reducedModel,'eccodes')
0070             reducedModel.eccodes(indexesToDelete,:)=[];
0071         end
0072         if isfield(reducedModel,'equations')
0073             reducedModel.equations(indexesToDelete,:)=[];
0074         end
0075         if isfield(reducedModel,'rxnMiriams')
0076             reducedModel.rxnMiriams(indexesToDelete,:)=[];
0077         end
0078         if isfield(reducedModel,'rxnComps')
0079             reducedModel.rxnComps(indexesToDelete,:)=[];
0080         end
0081         if isfield(reducedModel,'rxnFrom')
0082             reducedModel.rxnFrom(indexesToDelete,:)=[];
0083         end
0084         if isfield(reducedModel,'rxnScores')
0085             reducedModel.rxnScores(indexesToDelete,:)=[];
0086         end
0087         if isfield(reducedModel,'rxnNotes')
0088             reducedModel.rxnNotes(indexesToDelete,:)=[];
0089         end
0090         if isfield(reducedModel,'rxnReferences')
0091             reducedModel.rxnReferences(indexesToDelete,:)=[];
0092         end
0093         if isfield(reducedModel,'rxnConfidenceScores')
0094             reducedModel.rxnConfidenceScores(indexesToDelete,:)=[];
0095         end
0096         if isfield(reducedModel,'rxnDeltaG')
0097             reducedModel.rxnDeltaG(indexesToDelete,:)=[];
0098         end
0099         if isfield(reducedModel,'pwys')
0100             reducedModel.pwys(indexesToDelete,:)=[];
0101         end
0102         if isfield(reducedModel,'spontaneous')
0103             reducedModel.spontaneous(indexesToDelete)=[];
0104         end
0105     end
0106     
0107     %Remove unused metabolites
0108     if removeUnusedMets==true
0109         if isfield(reducedModel,'S')
0110             [usedMets, ~]=find(reducedModel.S);
0111             unUsedMets=true(numel(reducedModel.mets),1);
0112             unUsedMets(usedMets)=false;
0113             reducedModel=removeMets(reducedModel,unUsedMets,false,false,false,removeUnusedComps);
0114         end
0115     end
0116     
0117     %Remove unused genes
0118     if removeUnusedGenes==true && isfield(reducedModel,'rxnGeneMat')
0119         %Find all genes that are not used
0120         [~, b]=find(reducedModel.rxnGeneMat);
0121         toKeep=false(numel(reducedModel.genes),1);
0122         toKeep(b)=true;
0123         
0124         reducedModel.genes=reducedModel.genes(toKeep);
0125         reducedModel.rxnGeneMat=reducedModel.rxnGeneMat(:,toKeep);
0126         
0127         if isfield(reducedModel,'geneShortNames')
0128             reducedModel.geneShortNames=reducedModel.geneShortNames(toKeep);
0129         end
0130         
0131         if isfield(reducedModel,'geneMiriams')
0132             reducedModel.geneMiriams=reducedModel.geneMiriams(toKeep);
0133         end
0134         
0135         if isfield(reducedModel,'geneFrom')
0136             reducedModel.geneFrom=reducedModel.geneFrom(toKeep);
0137         end
0138         
0139         if isfield(reducedModel,'geneComps')
0140             reducedModel.geneComps=reducedModel.geneComps(toKeep);
0141         end
0142     end
0143 else
0144     reducedModel=model;
0145 end
0146 end

Generated by m2html © 2005