-
Notifications
You must be signed in to change notification settings - Fork 121
/
DirectEnergyConversionTest.py
345 lines (253 loc) · 13.5 KB
/
DirectEnergyConversionTest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
from mantid.simpleapi import *
from mantid import api
import unittest
import inspect
import os, sys
from DirectEnergyConversion import DirectEnergyConversion
#-----------------------------------------------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------------------------------------------
#-----------------------------------------------------------------------------------------------------------------------------------------
class DirectEnergyConversionTest(unittest.TestCase):
def __init__(self, methodName):
self.reducer = None
return super(DirectEnergyConversionTest, self).__init__(methodName)
def setUp(self):
if self.reducer == None or type(self.reducer) != type(DirectEnergyConversion):
self.reducer = DirectEnergyConversion("MAPS");
def tearDown(self):
pass
#def test_build_coupled_keys_dict_simple(self):
# params = ["];
def test_init_reducer(self):
tReducer = self.reducer
self.assertTrue(tReducer._idf_values_read)
tReducer.initialise("MAP",True);
self.assertEqual(tReducer.instr_name,"MAP")
self.assertRaises(KeyError,setattr,tReducer,'instr_name','NonExistingInstrument')
def test_set_non_default_wrong_value(self):
tReducer = self.reducer
# should do nothing as already initialized above
tReducer.initialise("MAP")
# non-existing property can not be set!
self.assertRaises(KeyError,tReducer.set_input_parameters,non_existing_property="Something_Meaningfull")
def test_set_non_default_simple_value(self):
tReducer = self.reducer
# should do nothing as already initialized above
tReducer.initialise("MAP");
prop_changed=tReducer.set_input_parameters(van_mass=100,det_cal_file='det4to1_1912.dat')
self.assertTrue("van_mass" in prop_changed)
self.assertTrue("det_cal_file" in prop_changed)
self.assertEqual(tReducer.van_mass,100);
self.assertEqual(tReducer.det_cal_file,'det4to1_1912.dat');
self.assertAlmostEqual(tReducer.van_sig,0.,7)
kw=dict();
kw["vanadium-mass"]=200
kw["diag_van_median_sigma"]=1
kw["det_cal_file"]=None
kw["save_format"]=''
prop_changed=tReducer.set_input_parameters(**kw)
self.assertTrue("van_mass" in prop_changed,"vanadium-mass should correspond to van_mass")
self.assertTrue("van_sig" in prop_changed," diag_van_median_sigma should correspond to van_sig ")
self.assertEqual(tReducer.van_mass,200);
self.assertEqual(tReducer.det_cal_file,None);
self.assertAlmostEqual(tReducer.van_sig,1.,7)
def test_set_non_default_complex_value(self):
tReducer = self.reducer
# should do nothing as already initialized above, but if not will initiate the instrument
tReducer.initialise("MAP");
range = tReducer.norm_mon_integration_range
self.assertAlmostEqual(range[0],1000.,7," Default integration min range on MAPS should be as described in MAPS_Parameters.xml file")
self.assertAlmostEqual(range[1],2000.,7," Default integration max range on MAPS should be as described in MAPS_Parameters.xml file")
self.assertEqual(tReducer.ei_mon_spectra,[41474,41475]," Default ei monitors on MAPS should be as described in MAPS_Parameters.xml file")
self.assertRaises(KeyError,tReducer.set_input_parameters,mon_norm_range=1)
self.assertRaises(KeyError,tReducer.set_input_parameters,mon_norm_range=[10,100,100])
kw=dict();
kw["norm_mon_integration_range"]=[50,1050]
kw["ei-mon1-spec"]=10
prop_changed=tReducer.set_input_parameters(**kw)
range=tReducer.norm_mon_integration_range
self.assertAlmostEqual(range[0],50.,7)
self.assertAlmostEqual(range[1],1050.,7)
self.assertEqual(tReducer.ei_mon_spectra,[10,41475])
self.assertTrue("norm_mon_integration_range" in prop_changed,"mon_norm_range should change")
self.assertTrue("ei_mon_spectra" in prop_changed,"changing ei-mon1-spec should change ei_mon_spectra")
def test_set_non_default_complex_value_synonims(self):
tReducer = self.reducer
# should do nothing as already initialized above, but if not will initiate the instrument
tReducer.initialise("MAP");
#
kw = dict();
kw["test_ei2_mon_spectra"]=10000
prop_changed=tReducer.set_input_parameters(**kw)
self.assertEqual(tReducer.ei_mon_spectra,[41474,10000])
self.assertTrue("ei_mon_spectra" in prop_changed,"changing test_ei2_mon_spectra should change ei_mon_spectra")
prop_changed=tReducer.set_input_parameters(test_mon_spectra_composite=[10000,2000])
self.assertEqual(tReducer.ei_mon_spectra,[10000,2000])
self.assertTrue("ei_mon_spectra" in prop_changed,"changing test_mon_spectra_composite should change ei_mon_spectra")
def test_set_get_mono_range(self):
tReducer = self.reducer
# should do nothing as already initialized above, but if not will initiate the instrument
tReducer.initialise("MAP");
energy_incident = 100
tReducer.incident_energy = energy_incident
hi_frac = tReducer.monovan_hi_frac
lo_frac = tReducer.monovan_lo_frac
tReducer.monovan_integr_range = None
self.assertEqual(tReducer.monovan_integr_range,[lo_frac*energy_incident,hi_frac*energy_incident])
def test_comlex_get(self):
tReducer = self.reducer
van_rmm = tReducer.van_rmm;
self.assertEqual(50.9415,van_rmm)
def test_comlex_set(self):
tReducer = self.reducer
tReducer.energy_bins='-30,3,10'
bins = tReducer.energy_bins
self.assertAlmostEqual(bins[0],-30)
self.assertAlmostEqual(bins[1],3)
self.assertAlmostEqual(bins[2],10)
tReducer.energy_bins=[-20,4,100]
bins = tReducer.energy_bins
self.assertAlmostEqual(bins[0],-20)
self.assertAlmostEqual(bins[1],4)
self.assertAlmostEqual(bins[2],100)
tReducer.map_file = "some_map"
self.assertEqual("some_map.map",tReducer.map_file)
tReducer.monovan_mapfile = "other_map"
self.assertEqual("other_map.map",tReducer.monovan_mapfile)
tReducer.monovan_mapfile = "other_map.myExt"
self.assertEqual("other_map.myExt",tReducer.monovan_mapfile)
tReducer.save_format = 'unknown'
self.assertTrue(tReducer.save_format is None)
tReducer.save_format = '.spe'
self.assertEqual(['.spe'],tReducer.save_format)
def test_set_format(self):
tReducer = self.reducer
tReducer.save_format = '';
self.assertTrue(tReducer.save_format is None)
#self.assertRaises(KeyError,tReducer.energy_bins=20,None)
def test_default_warnings(self):
tReducer = self.reducer
keys_changed=['somethins_else1','sample_mass','sample_rmm','somethins_else2']
self.assertEqual(0,tReducer.check_abs_norm_defaults_changed(keys_changed))
keys_changed=['somethins_else1','sample_rmm','somethins_else2']
self.assertEqual(1,tReducer.check_abs_norm_defaults_changed(keys_changed))
keys_changed=['somethins_else1','somethins_else2']
self.assertEqual(2,tReducer.check_abs_norm_defaults_changed(keys_changed))
def test_do_white(self) :
tReducer = self.reducer
monovan = 1000
data = None
name = tReducer.make_ckpt_name('do_white',monovan,data,'t1')
self.assertEqual('do_white1000t1',name)
def test_get_parameter(self):
tReducer = self.reducer
param = tReducer.get_default_parameter('map_file')
self.assertTrue(isinstance(param,str))
param = tReducer.get_default_parameter('ei-mon1-spec')
self.assertTrue(isinstance(param,int))
param = tReducer.get_default_parameter('check_background')
self.assertTrue(isinstance(param,bool))
print "Instr_type :",type(tReducer.instrument)
def test_save_formats(self):
tReducer = self.reducer;
ws_name = '__empty_'+tReducer._instr_name
pws = mtd[ws_name]
self.assertEqual(pws.name(),ws_name);
self.assertTrue(tReducer.save_format is None)
# do nothing
tReducer.save_results(pws,'test_path')
tReducer.test_name='';
def f_spe(workspace, filename):
tReducer.test_name += (workspace.name()+'_file_spe_' + filename)
def f_nxspe(workspace, filename):
tReducer.test_name += (workspace.name()+'_file_nxspe_' + filename)
def f_nxs(workspace, filename):
tReducer.test_name += (workspace.name()+'_file_nxs_' + filename)
# redefine test save methors to produce test ouptut
tReducer._DirectEnergyConversion__save_formats['.spe']=lambda workspace,filename: f_spe(workspace,filename);
tReducer._DirectEnergyConversion__save_formats['.nxspe']=lambda workspace,filename : f_nxspe(workspace,filename);
tReducer._DirectEnergyConversion__save_formats['.nxs']=lambda workspace,filename : f_nxs(workspace,filename);
# set non-exisiting format
tReducer.save_format = 'non-existing-format'
self.assertTrue(tReducer.save_format is None)
tReducer.save_format = 'spe'
self.assertTrue(tReducer.save_format is None)
tReducer.save_format = '.spe'
self.assertEqual(tReducer.save_format,['.spe'])
tReducer.test_name='';
tReducer.save_results(pws)
self.assertEquals(ws_name+'_file_spe_'+ws_name+'.spe',tReducer.test_name)
file_long_name = ws_name+'_file_spe_other_file_name.spe'
tReducer.test_name='';
tReducer.save_results(pws,'other_file_name')
self.assertEquals(file_long_name,tReducer.test_name)
file_long_name=ws_name+'_file_nxspe_ofn.nxspe'+ws_name+'_file_nxs_ofn.nxs'
tReducer.test_name='';
tReducer.save_results(pws,'ofn',['.nxspe','.nxs'])
self.assertEquals(file_long_name,tReducer.test_name)
#clear all previous default formats
tReducer.save_format=[];
self.assertTrue(tReducer.save_format is None)
format_list = ['.nxspe','.nxs','.spe']
file_long_name = '';
tReducer.save_format = format_list;
for i in xrange(len(format_list)):
self.assertEqual(tReducer.save_format[i],format_list[i]);
end = len(format_list[i]);
file_long_name+=ws_name+'_file_'+format_list[i][1:end]+'_ofn'+format_list[i]
tReducer.test_name='';
tReducer.save_results(pws,'ofn')
self.assertEquals(file_long_name,tReducer.test_name)
def test_set_spectra_to_mon(self):
tReducer = self.reducer;
self.assertTrue(tReducer.spectra_to_monitors_list is None);
tReducer.spectra_to_monitors_list = 35;
self.assertTrue(isinstance(tReducer.spectra_to_monitors_list,list));
self.assertEquals(35,tReducer.spectra_to_monitors_list[0]);
tReducer.spectra_to_monitors_list = None;
self.assertTrue(tReducer.spectra_to_monitors_list is None);
tReducer.spectra_to_monitors_list = 'None';
self.assertTrue(tReducer.spectra_to_monitors_list is None);
tReducer.spectra_to_monitors_list = [];
self.assertTrue(tReducer.spectra_to_monitors_list is None);
tReducer.spectra_to_monitors_list = '467';
self.assertEquals(467,tReducer.spectra_to_monitors_list[0]);
tReducer.spectra_to_monitors_list = '467,444';
self.assertEquals(467,tReducer.spectra_to_monitors_list[0]);
self.assertEquals(444,tReducer.spectra_to_monitors_list[1]);
tReducer.spectra_to_monitors_list = ['467','444'];
self.assertEquals(467,tReducer.spectra_to_monitors_list[0]);
self.assertEquals(444,tReducer.spectra_to_monitors_list[1]);
def test_process_copy_spectra_to_monitors(self):
pass
def test_set_get_ei_monitor(self):
tReducer = self.reducer;
self.assertEqual(41474,tReducer.ei_mon_spectra[0])
self.assertEqual(41475,tReducer.ei_mon_spectra[1])
# HOW TO MAKE IT WORK? it fails silently
# tReducer.ei_mon_spectra[1]=100;
# self.assertEqual(41474,tReducer.ei_mon_spectra[0])
# self.assertEqual(100,tReducer.ei_mon_spectra[1])
tReducer.ei_mon_spectra=[100,200];
self.assertEqual(100,tReducer.ei_mon_spectra[0])
self.assertEqual(200,tReducer.ei_mon_spectra[1])
tReducer.init_idf_params(True);
self.assertEqual(41474,tReducer.ei_mon_spectra[0])
self.assertEqual(41475,tReducer.ei_mon_spectra[1])
def test_load_monitors_with_workspacer(self):
tReducer =self.reducer;
self.assertFalse(tReducer.load_monitors_with_workspace)
tReducer.load_monitors_with_workspace=True;
self.assertTrue(tReducer.load_monitors_with_workspace)
tReducer.load_monitors_with_workspace=0;
self.assertFalse(tReducer.load_monitors_with_workspace)
tReducer.load_monitors_with_workspace=10;
self.assertTrue(tReducer.load_monitors_with_workspace)
#def test_diag_call(self):
# tReducer = self.reducer
# # should do nothing as already initialized above, but if not will initiate the instrument
# tReducer.initialise("MAP")
# tReducet.di
if __name__=="__main__":
unittest.main()