changeGeneAssociation

PURPOSE ^

changeGeneAssociation Change gene associations in a model

SYNOPSIS ^

function model = changeGeneAssociation(model,rxnName,grRule,geneNameList,systNameList)

DESCRIPTION ^

changeGeneAssociation Change gene associations in a model

 model = changeGeneAssociation(model,rxnName,grRule,geneName,systName)

INPUTS
 model             COBRA Toolbox model structure
 rxnName           Name of the new reaction
 grRule            Gene-reaction rule in boolean format (and/or allowed)

OPTIONAL INPUTS
 geneNameList      List of gene names (used only for translation from
                   common gene names to systematic gene names)
 systNameList      List of systematic names

OUTPUT
 model             COBRA Toolbox model structure with new gene reaction
                   associations

 Markus Herrgard 1/12/07

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function model = changeGeneAssociation(model,rxnName,grRule,geneNameList,systNameList)
0002 %changeGeneAssociation Change gene associations in a model
0003 %
0004 % model = changeGeneAssociation(model,rxnName,grRule,geneName,systName)
0005 %
0006 %INPUTS
0007 % model             COBRA Toolbox model structure
0008 % rxnName           Name of the new reaction
0009 % grRule            Gene-reaction rule in boolean format (and/or allowed)
0010 %
0011 %OPTIONAL INPUTS
0012 % geneNameList      List of gene names (used only for translation from
0013 %                   common gene names to systematic gene names)
0014 % systNameList      List of systematic names
0015 %
0016 %OUTPUT
0017 % model             COBRA Toolbox model structure with new gene reaction
0018 %                   associations
0019 %
0020 % Markus Herrgard 1/12/07
0021 
0022 if (nargin < 4)
0023     translateNamesFlag = false;
0024 else
0025     translateNamesFlag = true;
0026 end
0027 
0028 [isInModel,rxnID] = ismember(rxnName,model.rxns);
0029 
0030 if (~isInModel)
0031     error(['Reaction ' rxnName ' not in the model']); 
0032 end
0033 
0034 if ~isfield(model,'genes')
0035     model.genes = {};
0036 end
0037 nGenes = length(model.genes);
0038 model.rules{rxnID} = '';
0039 % IT 01/2010 - this line caused problems for xls2model.m
0040     model.rxnGeneMat(rxnID,:) = zeros(1,nGenes);
0041 % Remove extra white space
0042 grRule = regexprep(grRule,'\s{2,}',' ');
0043 grRule = regexprep(grRule,'( ','(');
0044 grRule = regexprep(grRule,' )',')');
0045 
0046 if (~isempty(grRule))
0047     [genes,rule] = parseBoolean(grRule);
0048     for i = 1:length(genes)
0049         if (translateNamesFlag)
0050             % Translate gene names to systematic names
0051             [isInList,translID] = ismember(genes{i},geneNameList);
0052             if isInList
0053                 newGene = systNameList{translID};
0054                 grRule = regexprep(grRule,[genes{i} '$'],newGene);
0055                 grRule = regexprep(grRule,[genes{i} '\s'],[newGene ' ']);
0056                 grRule = regexprep(grRule,[genes{i} ')'],[newGene ')']);
0057                 genes{i} = newGene;
0058             else
0059                 warning(['Gene name ' genes{i} ' not in translation list']);
0060             end
0061         end
0062         geneID = find(strcmp(model.genes,genes{i}));
0063         if (isempty(geneID))
0064             warning(['New gene ' genes{i} ' added to model']);
0065             % Append gene
0066             model.genes = [model.genes; genes(i)];
0067             nGenes = length(model.genes);
0068             model.rxnGeneMat(rxnID,end+1) = 1;
0069             rule = strrep(rule,['x(' num2str(i) ')'],['x(' num2str(nGenes) ')']);
0070         else
0071             model.rxnGeneMat(rxnID,geneID) = 1;
0072             rule = strrep(rule,['x(' num2str(i) ')'],['x(' num2str(geneID) ')']);
0073         end
0074     end
0075     model.rules{rxnID} = rule;
0076 end
0077 
0078 model.grRules{rxnID} = grRule;
0079 
0080 %make sure variables are column vectors
0081 model.rules = columnVector(model.rules);
0082 model.grRules = columnVector(model.grRules);

Generated on Thu 21-Jun-2012 15:39:23 by m2html © 2003