Skip to content

Commit e1e507c

Browse files
committed
Caches for Classes now check if the cached classes are valid, and recaches otherwise
1 parent 0c53355 commit e1e507c

File tree

4 files changed

+29
-0
lines changed

4 files changed

+29
-0
lines changed

matRad/bioModels/matRad_BiologicalModel.m

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,13 @@
128128
folders = [folders matRad_cfg.userfolders];
129129

130130
persistent metaBioModels lastOptionalPaths
131+
132+
%First we do a sanity check if persistently stored metaclasses are valid
133+
if ~matRad_cfg.isOctave && ~isempty(metaBioModels) && ~all(cellfun(@isvalid,metaBioModels))
134+
matRad_cfg.dispWarning('Found invalid BioModels, updating model cache.');
135+
metaBioModels = [];
136+
end
137+
131138
if isempty(metaBioModels) || (~isempty(lastOptionalPaths) && ~isequal(lastOptionalPaths, folders))
132139
lastOptionalPaths = folders;
133140
metaBioModels = matRad_findSubclasses(meta.class.fromName(mfilename('class')),'folders',folders,'includeSubfolders',true);

matRad/doseCalc/+DoseEngines/@matRad_DoseEngineBase/getAvailableEngines.m

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,14 @@
3737
%Get available, valid classes through call to matRad helper function
3838
%for finding subclasses
3939
persistent allAvailableDoseEngines lastOptionalPaths
40+
41+
%First we do a sanity check if persistently stored metaclasses are valid
42+
if ~matRad_cfg.isOctave && ~isempty(allAvailableDoseEngines) && ~all(cellfun(@isvalid,allAvailableDoseEngines))
43+
matRad_cfg.dispWarning('Found invalid Dose Engines, updating engine cache.');
44+
allAvailableDoseEngines = [];
45+
end
46+
47+
%Check if we need to find the engines and if yes, do
4048
if isempty(allAvailableDoseEngines) || (~isempty(lastOptionalPaths) && ~isequal(lastOptionalPaths, optionalPaths))
4149
lastOptionalPaths = optionalPaths;
4250
allAvailableDoseEngines = matRad_findSubclasses('DoseEngines.matRad_DoseEngineBase','packages',{'DoseEngines'},'folders',optionalPaths,'includeAbstract',false);

matRad/scenarios/matRad_ScenarioModel.m

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,13 @@ function listAllScenarios(this)
234234
folders = [folders matRad_cfg.userfolders];
235235

236236
persistent metaScenarioModels lastOptionalPaths
237+
238+
%First we do a sanity check if persistently stored metaclasses are valid
239+
if ~matRad_cfg.isOctave && ~isempty(metaScenarioModels) && ~all(cellfun(@isvalid,metaScenarioModels))
240+
matRad_cfg.dispWarning('Found invalid ScenarioModels, updating model cache.');
241+
metaScenarioModels = [];
242+
end
243+
237244
if isempty(metaScenarioModels) || (~isempty(lastOptionalPaths) && ~isequal(lastOptionalPaths, folders))
238245
lastOptionalPaths = folders;
239246
metaScenarioModels = matRad_findSubclasses(meta.class.fromName(mfilename('class')),'folders',folders,'includeSubfolders',true);

matRad/steering/matRad_StfGeneratorBase.m

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,13 @@ function createPatientGeometry(this)
446446
%Get available, valid classes through call to matRad helper function
447447
%for finding subclasses
448448
persistent allAvailableStfGenerators lastOptionalPaths
449+
450+
%First we do a sanity check if persistently stored metaclasses are valid
451+
if ~matRad_cfg.isOctave && ~isempty(allAvailableStfGenerators) && ~all(cellfun(@isvalid,allAvailableStfGenerators))
452+
matRad_cfg.dispWarning('Found invalid Steering Geometry Generators, updating cache.');
453+
allAvailableStfGenerators = [];
454+
end
455+
449456
if isempty(allAvailableStfGenerators) || (~isempty(lastOptionalPaths) && ~isequal(lastOptionalPaths, optionalPaths))
450457
lastOptionalPaths = optionalPaths;
451458
allAvailableStfGenerators = matRad_findSubclasses(mfilename('class'),'folders',optionalPaths,'includeAbstract',false);

0 commit comments

Comments
 (0)