0001 function subModel = extractSubNetwork(model,rxnNames,metNames)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 selRxns = ismember(model.rxns,rxnNames);
0019 subS = model.S(:,selRxns);
0020 if (nargin < 3)
0021 selMets = ~all(subS == 0,2);
0022 else
0023 selMets = ismember(model.mets,metNames);
0024 end
0025
0026 subS = subS(selMets,:);
0027
0028 subModel.S = subS;
0029 subModel.rxns = model.rxns(selRxns);
0030 subModel.mets = model.mets(selMets);
0031 if (isfield(model,'b'))
0032 subModel.b = model.b(selMets);
0033 end
0034 if (isfield(model,'metNames'))
0035 subModel.metNames = model.metNames(selMets);
0036 end
0037 if (isfield(model,'metFormulas'))
0038 subModel.metFormulas = model.metFormulas(selMets);
0039 end
0040 if (isfield(model,'description'))
0041 subModel.description = model.description;
0042 end
0043 if (isfield(model,'rev'))
0044 subModel.rev = model.rev(selRxns);
0045 end
0046 if (isfield(model,'lb'))
0047 subModel.lb = model.lb(selRxns);
0048 end
0049 if (isfield(model,'ub'))
0050 subModel.ub = model.ub(selRxns);
0051 end
0052 if (isfield(model,'c'))
0053 subModel.c = model.c(selRxns);
0054 end
0055 if (isfield(model,'genes'))
0056 newRxnGeneMat = model.rxnGeneMat(selRxns,:);
0057 selGenes = sum(newRxnGeneMat)' > 0;
0058 subModel.rxnGeneMat = newRxnGeneMat(:,selGenes);
0059 subModel.genes = model.genes(selGenes);
0060 subModel.grRules = model.grRules(selRxns);
0061 end
0062 if (isfield(model,'geneNames'))
0063 subModel.geneNameRules = model.geneNameRules(selRxns);
0064 subModel.geneNames = model.geneNames(selGenes);
0065 end
0066 if (isfield(model,'subSystems'))
0067 subModel.subSystems = model.subSystems(selRxns);
0068 end