diff --git a/INIT/removeLowScoreGenes.m b/INIT/removeLowScoreGenes.m
index 76a5bdeb..a98a65cf 100644
--- a/INIT/removeLowScoreGenes.m
+++ b/INIT/removeLowScoreGenes.m
@@ -109,13 +109,20 @@
% regenerate "genes" and "rxnGeneMat" model fields
[genes,rxnGeneMat] = getGenesFromGrRules(newModel.grRules);
-newModel.genes = genes;
-newModel.rxnGeneMat = rxnGeneMat;
-% update other gene-related fields
-remInd = ~ismember(model.genes,newModel.genes);
+% determine which of the original genes were removed
+remInd = ~ismember(model.genes,genes);
remGenes = model.genes(remInd);
+% Keep the retained genes in their original order rather than the sorted
+% order returned by getGenesFromGrRules. Gene removal never introduces new
+% genes, so the remaining genes are model.genes(~remInd). Preserving this
+% order ensures the gene-associated fields trimmed below (geneShortNames,
+% proteins, etc.), which are indexed by remInd, stay aligned with genes.
+newModel.genes = model.genes(~remInd);
+[~,reorderInd] = ismember(newModel.genes,genes);
+newModel.rxnGeneMat = rxnGeneMat(:,reorderInd);
+
if isfield(newModel,'geneShortNames')
newModel.geneShortNames(remInd) = [];
end
diff --git a/doc/INIT/INITStepDesc.html b/doc/INIT/INITStepDesc.html
index 02850578..113533f7 100644
--- a/doc/INIT/INITStepDesc.html
+++ b/doc/INIT/INITStepDesc.html
@@ -70,55 +70,57 @@
SOURCE CODE % .mets Names of metabolites to remove
0025
0026 MILPParams
-0027
-0028 AbsMIPGaps
-0029
-0030
-0031 end
-0032 methods
-0033 function obj = INITStepDesc(posRevOff_, AllowMetSecr_, howToUsePrevResults_, rxnsToIgnoreMask_, metsToIgnore_, MILPParams_, absMIPGaps_)
-0034 if nargin > 0
-0035 obj.PosRevOff = posRevOff_;
-0036 else
-0037 obj.PosRevOff = false;
-0038 end
-0039 if nargin > 1
-0040 obj.AllowMetSecr = AllowMetSecr_;
-0041 else
-0042 obj.AllowMetSecr = false;
-0043 end
-0044 if nargin > 2
-0045 obj.HowToUsePrevResults = howToUsePrevResults_;
-0046 else
-0047 obj.HowToUsePrevResults = 'essential';
-0048 end
-0049 if nargin > 3
-0050 obj.RxnsToIgnoreMask = rxnsToIgnoreMask_;
-0051 else
-0052 obj.RxnsToIgnoreMask = [1;0;0;0;0;0;0;0];
-0053 end
-0054 if nargin > 4
-0055 obj.MetsToIgnore = metsToIgnore_;
-0056 else
-0057 obj.MetsToIgnore = [1;0;0;0;0;0;0;0];
-0058 end
-0059 if nargin > 5
-0060 obj.MILPParams = MILPParams_;
-0061 else
-0062 params = struct();
-0063 params.TimeLimit = 5000;
-0064 params.MIPGap = 0.0004;
-0065 obj.MILPParams = {params};
-0066 end
-0067
-0068 if nargin > 6
-0069 obj.AbsMIPGaps = absMIPGaps_;
-0070 else
-0071 obj.AbsMIPGaps = 10;
-0072 end
-0073 end
-0074 end
-0075 end
+0027
+0028
+0029
+0030 AbsMIPGaps
+0031
+0032
+0033 end
+0034 methods
+0035 function obj = INITStepDesc(posRevOff_, AllowMetSecr_, howToUsePrevResults_, rxnsToIgnoreMask_, metsToIgnore_, MILPParams_, absMIPGaps_)
+0036 if nargin > 0
+0037 obj.PosRevOff = posRevOff_;
+0038 else
+0039 obj.PosRevOff = false;
+0040 end
+0041 if nargin > 1
+0042 obj.AllowMetSecr = AllowMetSecr_;
+0043 else
+0044 obj.AllowMetSecr = false;
+0045 end
+0046 if nargin > 2
+0047 obj.HowToUsePrevResults = howToUsePrevResults_;
+0048 else
+0049 obj.HowToUsePrevResults = 'essential';
+0050 end
+0051 if nargin > 3
+0052 obj.RxnsToIgnoreMask = rxnsToIgnoreMask_;
+0053 else
+0054 obj.RxnsToIgnoreMask = [1;0;0;0;0;0;0;0];
+0055 end
+0056 if nargin > 4
+0057 obj.MetsToIgnore = metsToIgnore_;
+0058 else
+0059 obj.MetsToIgnore = [1;0;0;0;0;0;0;0];
+0060 end
+0061 if nargin > 5
+0062 obj.MILPParams = MILPParams_;
+0063 else
+0064 params = struct();
+0065 params.TimeLimit = 5000;
+0066 params.MIPGap = 0.0004;
+0067 obj.MILPParams = {params};
+0068 end
+0069
+0070 if nargin > 6
+0071 obj.AbsMIPGaps = absMIPGaps_;
+0072 else
+0073 obj.AbsMIPGaps = 10;
+0074 end
+0075 end
+0076 end
+0077 end
Generated by m2html © 2005