|
6 | 6 |
|
7 | 7 | function test_getAnalyticalEngineFromPln |
8 | 8 | % Single gaussian lateral model |
9 | | - protonDummyPln = struct('radiationMode','protons','machine','Generic'); |
10 | | - protonDummyPln.propDoseCalc.engine = 'AnalyticalPB'; |
11 | | - engine = DoseEngines.matRad_ParticleAnalyticalBortfeldEngine.getEngineFromPln(protonDummyPln); |
| 9 | + testData.pln = struct('radiationMode','protons','machine','Generic'); |
| 10 | + testData.pln.propDoseCalc.engine = 'AnalyticalPB'; |
| 11 | + engine = DoseEngines.matRad_ParticleAnalyticalBortfeldEngine.getEngineFromPln(testData.pln); |
12 | 12 | assertTrue(isa(engine,'DoseEngines.matRad_ParticleAnalyticalBortfeldEngine')); |
13 | 13 |
|
14 | 14 | % Double Gaussian lateral model |
15 | 15 | % If you don't have my clusterDose basedata you cannot try this :P |
16 | 16 | %{ |
17 | | - protonDummyPln = struct('radiationMode','protons','machine','Generic_clusterDose'); |
18 | | - protonDummyPln.propDoseCalc.engine = 'AnalyticalPB'; |
19 | | - engine = DoseEngines.matRad_ParticleAnalyticalBortfeldEngine.getEngineFromPln(protonDummyPln); |
| 17 | + testData.pln = struct('radiationMode','protons','machine','Generic_clusterDose'); |
| 18 | + testData.pln.propDoseCalc.engine = 'AnalyticalPB'; |
| 19 | + engine = DoseEngines.matRad_ParticleAnalyticalBortfeldEngine.getEngineFromPln(testData.pln); |
20 | 20 | assertTrue(isa(engine,'DoseEngines.matRad_ParticleAnalyticalBortfeldEngine')); |
21 | 21 | %} |
22 | 22 |
|
|
31 | 31 | end |
32 | 32 |
|
33 | 33 | function test_calcDoseAnalytical |
34 | | - matRad_cfg = MatRad_Config.instance(); |
35 | | - |
36 | | - protonDummyPln = struct('radiationMode','protons','machine','Generic'); |
37 | | - protonDummyPln.propDoseCalc.engine = 'AnalyticalPB'; |
38 | | - |
39 | | - load([protonDummyPln.radiationMode '_' protonDummyPln.machine]); |
40 | | - |
41 | | - load BOXPHANTOM.mat |
42 | | - |
43 | | - stf = matRad_generateStf(ct, cst, protonDummyPln); |
44 | | - |
45 | | - resultGUI = matRad_calcDoseForward(ct, cst, stf, protonDummyPln, ones([1, stf(:).totalNumOfBixels])); |
| 34 | + testData = load('protons_testData.mat'); |
| 35 | + assertTrue(DoseEngines.matRad_ParticleAnalyticalBortfeldEngine.isAvailable(testData.pln)) |
| 36 | + testData.pln.propDoseCalc.engine = 'AnalyticalPB'; |
| 37 | + resultGUI = matRad_calcDoseForward(testData.ct, testData.cst, testData.stf, testData.pln, ones(sum([testData.stf(:).totalNumOfBixels]),1)); |
46 | 38 |
|
47 | 39 | assertTrue(isfield(resultGUI, 'physicalDose')); |
48 | 40 | assertTrue(isfield(resultGUI, 'w')); |
49 | | - assertTrue(isequal(size(ct.cube{1}), size(resultGUI.physicalDose))) |
| 41 | + assertTrue(isequal(testData.ct.cubeDim, size(resultGUI.physicalDose))); |
50 | 42 |
|
51 | 43 | function test_nonSupportedSettings |
52 | 44 | % Radiation mode other than protons not implemented |
53 | | - carbonDummyPln = struct('radiationMode','carbon','machine','Generic'); |
54 | | - carbonDummyPln.propDoseCalc.engine = 'AnalyticalPB'; |
55 | | - engine = DoseEngines.matRad_ParticleAnalyticalBortfeldEngine.getEngineFromPln(carbonDummyPln); |
56 | | - assertTrue(~isa(engine,'DoseEngines.matRad_ParticleAnalyticalBortfeldEngine')); |
57 | | - |
| 45 | + testData = load('carbon_testData.mat'); |
| 46 | + testData.pln.propDoseCalc.engine = 'AnalyticalPB'; |
| 47 | + assertFalse(DoseEngines.matRad_ParticleAnalyticalBortfeldEngine.isAvailable(testData.pln)); |
| 48 | + |
58 | 49 | % Biological models, LET, other lateral models not implemented |
59 | | - protonDummyPln = struct('radiationMode','protons','machine','Generic'); |
60 | | - protonDummyPln.propDoseCalc.engine = 'AnalyticalPB'; |
61 | | - protonDummyPln.propDoseCalc.calcLET = true; |
62 | | - protonDummyPln.propDoseCalc.calcBioDose = true; |
63 | | - protonDummyPln.propDoseCalc.lateralModel = 'double'; |
64 | | - engine = DoseEngines.matRad_ParticleAnalyticalBortfeldEngine.getEngineFromPln(protonDummyPln); |
| 50 | + testData = load('protons_testData.mat'); |
| 51 | + testData.pln.propDoseCalc.engine = 'AnalyticalPB'; |
| 52 | + testData.pln.propDoseCalc.calcLET = true; |
| 53 | + testData.pln.propDoseCalc.calcBioDose = true; |
| 54 | + testData.pln.propDoseCalc.lateralModel = 'double'; |
| 55 | + engine = DoseEngines.matRad_ParticleAnalyticalBortfeldEngine.getEngineFromPln(testData.pln); |
65 | 56 | assertTrue(isa(engine,'DoseEngines.matRad_ParticleAnalyticalBortfeldEngine')); |
66 | | - load BOXPHANTOM.mat |
67 | | - stf = matRad_generateStf(ct, cst, protonDummyPln); |
68 | | - resultGUI = matRad_calcDoseForward(ct, cst, stf, protonDummyPln, ones([1, stf(:).totalNumOfBixels])); |
| 57 | + |
| 58 | + resultGUI = matRad_calcDoseForward(testData.ct, testData.cst, testData.stf, testData.pln, ones(sum([testData.stf(:).totalNumOfBixels]),1)); |
69 | 59 | assertTrue(~engine.calcLET) |
70 | 60 | %assertTrue(~engine.calcBioDose) % Access protected property |
71 | 61 |
|
72 | 62 | % Invalid machine without radiation mode field |
73 | | - matRad_cfg = MatRad_Config.instance(); |
74 | | - protonDummyPln = struct('radiationMode','protons','machine','Empty'); |
75 | | - protonDummyPln.propDoseCalc.engine = 'AnalyticalPB'; |
76 | | - machine = []; |
77 | | - assertExceptionThrown(@() DoseEngines.matRad_ParticleAnalyticalBortfeldEngine.isAvailable(protonDummyPln, machine)); |
| 63 | + testData.pln.machine = 'Empty'; |
| 64 | + testData.pln.propDoseCalc.engine = 'AnalyticalPB'; |
| 65 | + assertExceptionThrown(@() DoseEngines.matRad_ParticleAnalyticalBortfeldEngine.isAvailable(testData.pln)); |
| 66 | + assertFalse(DoseEngines.matRad_ParticleAnalyticalBortfeldEngine.isAvailable(testData.pln,[])); |
78 | 67 |
|
79 | 68 |
|
80 | 69 |
|
0 commit comments