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-08-01

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-08-01
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,'rxnComps')
0083             reducedModel.rxnComps(indexesToDelete,:)=[];
0084         end
0085         if isfield(reducedModel,'rxnFrom')
0086             reducedModel.rxnFrom(indexesToDelete,:)=[];
0087         end
0088         if isfield(reducedModel,'rxnScores')
0089             reducedModel.rxnScores(indexesToDelete,:)=[];
0090         end
0091     end
0092     
0093     %Remove unused metabolites
0094     if removeUnusedMets==true
0095         if isfield(reducedModel,'S')
0096             [usedMets crap crap]=find(reducedModel.S);
0097             unUsedMets=true(numel(reducedModel.mets),1);
0098             unUsedMets(usedMets)=false;
0099             reducedModel=removeMets(reducedModel,unUsedMets,false,false,false,removeUnusedComps);
0100         end
0101     end
0102 
0103     %Remove unused genes
0104     if removeUnusedGenes==true && isfield(reducedModel,'rxnGeneMat')
0105         %Find all genes that are not used
0106         [a b crap]=find(reducedModel.rxnGeneMat);
0107         toKeep=false(numel(reducedModel.genes),1);
0108         toKeep(b)=true;
0109 
0110         reducedModel.genes=reducedModel.genes(toKeep);
0111         reducedModel.rxnGeneMat=reducedModel.rxnGeneMat(:,toKeep);
0112 
0113         if isfield(reducedModel,'geneShortNames')
0114            reducedModel.geneShortNames=reducedModel.geneShortNames(toKeep); 
0115         end
0116 
0117         if isfield(reducedModel,'geneMiriams')
0118            reducedModel.geneMiriams=reducedModel.geneMiriams(toKeep); 
0119         end
0120         
0121         if isfield(reducedModel,'geneFrom')
0122            reducedModel.geneFrom=reducedModel.geneFrom(toKeep); 
0123         end
0124         
0125         if isfield(reducedModel,'geneComps')
0126            reducedModel.geneComps=reducedModel.geneComps(toKeep); 
0127         end
0128     end
0129 else
0130     reducedModel=model;
0131 end
0132 end

Generated on Mon 06-Jan-2014 14:58:12 by m2html © 2005