Home > RAVEN > removeRxns.m

removeRxns

PURPOSE ^

removeRxns

SYNOPSIS ^

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

DESCRIPTION ^

 removeRxns
   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=removeRxns(model,rxnsToRemove,removeUnusedMets,...
           removeUnusedGenes,removeUnusedComps)

   Rasmus Agren, 2013-02-07

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function reducedModel=removeRxns(model,rxnsToRemove,removeUnusedMets,removeUnusedGenes,removeUnusedComps)
0002 % removeRxns
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=removeRxns(model,rxnsToRemove,removeUnusedMets,...
0019 %           removeUnusedGenes,removeUnusedComps)
0020 %
0021 %   Rasmus Agren, 2013-02-07
0022 %
0023 
0024 if nargin<3
0025     removeUnusedMets=false;
0026 end
0027 if nargin<4
0028     removeUnusedGenes=false;
0029 end
0030 if nargin<5
0031     removeUnusedComps=false;
0032 end
0033 
0034 if ischar(rxnsToRemove)
0035     rxnsToRemove={rxnsToRemove};
0036 end
0037 
0038 reducedModel=model;
0039 
0040 if ~isempty(rxnsToRemove) || removeUnusedMets || removeUnusedGenes
0041     indexesToDelete=getIndexes(model,rxnsToRemove,'rxns');
0042 
0043     %Remove reactions
0044     if ~isempty(indexesToDelete)
0045         reducedModel.rxns(indexesToDelete)=[];
0046         if isfield(reducedModel,'lb')
0047             reducedModel.lb(indexesToDelete)=[];
0048         end
0049         if isfield(reducedModel,'ub')
0050             reducedModel.ub(indexesToDelete)=[];
0051         end
0052         if isfield(reducedModel,'rev')
0053             reducedModel.rev(indexesToDelete)=[];
0054         end
0055         if isfield(reducedModel,'c')
0056             reducedModel.c(indexesToDelete)=[];
0057         end
0058         if isfield(reducedModel,'S')
0059             reducedModel.S(:,indexesToDelete)=[];
0060         end
0061         if isfield(reducedModel,'rxnNames')
0062             reducedModel.rxnNames(indexesToDelete)=[];
0063         end
0064         if isfield(reducedModel,'rxnGeneMat')
0065             reducedModel.rxnGeneMat(indexesToDelete,:)=[];
0066         end
0067         if isfield(reducedModel,'grRules')
0068             reducedModel.grRules(indexesToDelete,:)=[];
0069         end
0070         if isfield(reducedModel,'subSystems')
0071             reducedModel.subSystems(indexesToDelete,:)=[];
0072         end
0073         if isfield(reducedModel,'eccodes')
0074             reducedModel.eccodes(indexesToDelete,:)=[];
0075         end
0076         if isfield(reducedModel,'equations')
0077             reducedModel.equations(indexesToDelete,:)=[];
0078         end
0079         if isfield(reducedModel,'rxnMiriams')
0080             reducedModel.rxnMiriams(indexesToDelete,:)=[];
0081         end
0082         if isfield(reducedModel,'rxnFrom')
0083             reducedModel.rxnFrom(indexesToDelete,:)=[];
0084         end
0085         if isfield(reducedModel,'rxnScores')
0086             reducedModel.rxnScores(indexesToDelete,:)=[];
0087         end
0088     end
0089     
0090     %Remove unused metabolites
0091     if removeUnusedMets==true
0092         if isfield(reducedModel,'S')
0093             [usedMets crap crap]=find(reducedModel.S);
0094             unUsedMets=true(numel(reducedModel.mets),1);
0095             unUsedMets(usedMets)=false;
0096             reducedModel=removeMets(reducedModel,unUsedMets,false,false,false,removeUnusedComps);
0097         end
0098     end
0099 
0100     %Remove unused genes
0101     if removeUnusedGenes==true && isfield(reducedModel,'rxnGeneMat')
0102         %Find all genes that are not used
0103         [a b crap]=find(reducedModel.rxnGeneMat);
0104         toKeep=false(numel(reducedModel.genes),1);
0105         toKeep(b)=true;
0106 
0107         reducedModel.genes=reducedModel.genes(toKeep);
0108         reducedModel.rxnGeneMat=reducedModel.rxnGeneMat(:,toKeep);
0109 
0110         if isfield(reducedModel,'geneShortNames')
0111            reducedModel.geneShortNames=reducedModel.geneShortNames(toKeep); 
0112         end
0113 
0114         if isfield(reducedModel,'geneMiriams')
0115            reducedModel.geneMiriams=reducedModel.geneMiriams(toKeep); 
0116         end
0117         
0118         if isfield(reducedModel,'geneFrom')
0119            reducedModel.geneFrom=reducedModel.geneFrom(toKeep); 
0120         end
0121     end
0122 else
0123     reducedModel=model;
0124 end
0125 end

Generated on Tue 16-Jul-2013 21:50:02 by m2html © 2005