source: sasview/DataLoader/test/utest_abs_reader.py @ 4c00964

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 4c00964 was 4c00964, checked in by Mathieu Doucet <doucetm@…>, 16 years ago

Working on cansas writer

  • Property mode set to 100644
File size: 9.9 KB
Line 
1"""
2    Unit tests for data manipulations
3"""
4
5import unittest
6import numpy, math
7from DataLoader.loader import  Loader
8from DataLoader.data_info import Data1D
9 
10import os.path
11
12class abs_reader(unittest.TestCase):
13   
14    def setUp(self):
15        self.data = Loader().load("jan08002.ABS")
16       
17    def test_checkdata(self):
18        """
19            Check the data content to see whether
20            it matches the specific file we loaded.
21            Check the units too to see whether the
22            Data1D defaults changed. Otherwise the
23            tests won't pass
24        """
25        self.assertEqual(self.data.filename, "jan08002.ABS")
26       
27        self.assertEqual(self.data.source.wavelength_unit, 'A')
28        self.assertEqual(self.data.source.wavelength, 6.0)
29       
30        self.assertEqual(self.data.detector[0].distance_unit, 'mm')
31        self.assertEqual(self.data.detector[0].distance, 1000.0)
32       
33        self.assertEqual(self.data.sample.transmission, 0.5667)
34       
35        self.assertEqual(self.data.detector[0].beam_center_unit, 'mm')
36        center_x = 114.58*5.0
37        center_y = 64.22*5.0
38        self.assertEqual(self.data.detector[0].beam_center.x, center_x)
39        self.assertEqual(self.data.detector[0].beam_center.y, center_y)
40       
41        self.assertEqual(self.data.y_unit, '1/cm')
42        self.assertEqual(self.data.x[0], 0.002618)
43        self.assertEqual(self.data.x[1], 0.007854)
44        self.assertEqual(self.data.x[2], 0.01309)
45        self.assertEqual(self.data.x[126], 0.5828)
46       
47        self.assertEqual(self.data.y[0], 0.02198)
48        self.assertEqual(self.data.y[1], 0.02201)
49        self.assertEqual(self.data.y[2], 0.02695)
50        self.assertEqual(self.data.y[126], 0.2958)
51       
52        self.assertEqual(self.data.dy[0], 0.002704)
53        self.assertEqual(self.data.dy[1], 0.001643)
54        self.assertEqual(self.data.dy[2], 0.002452)
55        self.assertEqual(self.data.dy[126], 1)
56       
57    def test_checkdata2(self):
58        self.assertEqual(self.data.dy[126], 1)
59
60class igor_reader(unittest.TestCase):
61   
62    def setUp(self):
63        self.data = Loader().load("MAR07232_rest.ASC")
64       
65    def test_checkdata(self):
66        """
67            Check the data content to see whether
68            it matches the specific file we loaded.
69            Check the units too to see whether the
70            Data1D defaults changed. Otherwise the
71            tests won't pass
72        """
73        self.assertEqual(self.data.filename, "MAR07232_rest.ASC")
74       
75        self.assertEqual(self.data.source.wavelength_unit, 'A')
76        self.assertEqual(self.data.source.wavelength, 8.4)
77       
78        self.assertEqual(self.data.detector[0].distance_unit, 'mm')
79        self.assertEqual(self.data.detector[0].distance, 13705)
80       
81        self.assertEqual(self.data.sample.transmission, 0.84357)
82       
83        self.assertEqual(self.data.detector[0].beam_center_unit, 'mm')
84        center_x = 68.76*5.0
85        center_y = 62.47*5.0
86        self.assertEqual(self.data.detector[0].beam_center.x, center_x)
87        self.assertEqual(self.data.detector[0].beam_center.y, center_y)
88       
89        self.assertEqual(self.data.I_unit, '1/cm')
90        self.assertEqual(self.data.data[0][0], 0.279783)
91        self.assertEqual(self.data.data[0][1], 0.28951)
92        self.assertEqual(self.data.data[0][2], 0.167634)
93       
94class danse_reader(unittest.TestCase):
95   
96    def setUp(self):
97        self.data = Loader().load("MP_New.sans")
98
99    def test_checkdata(self):
100        """
101            Check the data content to see whether
102            it matches the specific file we loaded.
103            Check the units too to see whether the
104            Data1D defaults changed. Otherwise the
105            tests won't pass
106        """
107        self.assertEqual(self.data.filename, "MP_New.sans")
108       
109        self.assertEqual(self.data.source.wavelength_unit, 'A')
110        self.assertEqual(self.data.source.wavelength, 7.5)
111       
112        self.assertEqual(self.data.detector[0].distance_unit, 'mm')
113        self.assertAlmostEqual(self.data.detector[0].distance, 5414.99, 3)
114       
115        self.assertEqual(self.data.detector[0].beam_center_unit, 'mm')
116        center_x = 68.74*5.0
117        center_y = 64.77*5.0
118        self.assertEqual(self.data.detector[0].beam_center.x, center_x)
119        self.assertEqual(self.data.detector[0].beam_center.y, center_y)
120       
121        self.assertEqual(self.data.I_unit, '1/cm')
122        self.assertEqual(self.data.data[0][0], 1.57831)
123        self.assertEqual(self.data.data[0][1], 2.70983)
124        self.assertEqual(self.data.data[0][2], 3.83422)
125
126        self.assertEqual(self.data.err_data[0][0], 1.37607)
127        self.assertEqual(self.data.err_data[0][1], 1.77569)
128        self.assertEqual(self.data.err_data[0][2], 2.06313)
129
130 
131class cansas_reader(unittest.TestCase):
132   
133    def setUp(self):
134        self.data = Loader().load("cansas1d.xml")
135 
136    def test_checkdata(self):
137        """
138            Check the data content to see whether
139            it matches the specific file we loaded.
140            Check the units too to see whether the
141            Data1D defaults changed. Otherwise the
142            tests won't pass
143        """
144        self.assertEqual(self.data.filename, "cansas1d.xml")
145        self.assertEqual(self.data.run, "1234")
146       
147        # Sample info
148        self.assertEqual(self.data.sample.ID, "SI600-new-long")
149        self.assertEqual(self.data.sample.thickness_unit, 'mm')
150        self.assertEqual(self.data.sample.thickness, 1.03)
151       
152        self.assertEqual(self.data.sample.transmission, 0.327)
153       
154        self.assertEqual(self.data.sample.temperature_unit, 'C')
155        self.assertEqual(self.data.sample.temperature, 0)
156
157        self.assertEqual(self.data.sample.position_unit, 'mm')
158        self.assertEqual(self.data.sample.position.x, 10)
159        self.assertEqual(self.data.sample.position.y, 0)
160
161        self.assertEqual(self.data.sample.orientation_unit, 'degree')
162        self.assertEqual(self.data.sample.orientation.x, 22.5)
163        self.assertEqual(self.data.sample.orientation.y, 0.02)
164
165        self.assertEqual(self.data.sample.details[0], "http://chemtools.chem.soton.ac.uk/projects/blog/blogs.php/bit_id/2720") 
166        self.assertEqual(self.data.sample.details[1], "Some text here") 
167       
168        # Instrument info
169        self.assertEqual(self.data.instrument, "TEST instrument")
170       
171        # Source
172        self.assertEqual(self.data.source.radiation, "neutron")
173       
174        self.assertEqual(self.data.source.beam_size_unit, "mm")
175        self.assertEqual(self.data.source.beam_size.x, 12)
176        self.assertEqual(self.data.source.beam_size.y, 12)
177       
178        self.assertEqual(self.data.source.beam_shape, "disc")
179       
180        self.assertEqual(self.data.source.wavelength_unit, "A")
181        self.assertEqual(self.data.source.wavelength, 6)
182       
183        self.assertEqual(self.data.source.wavelength_max_unit, "nm")
184        self.assertEqual(self.data.source.wavelength_max, 1.0)
185        self.assertEqual(self.data.source.wavelength_min_unit, "nm")
186        self.assertEqual(self.data.source.wavelength_min, 0.22)
187        self.assertEqual(self.data.source.wavelength_spread_unit, "percent")
188        self.assertEqual(self.data.source.wavelength_spread, 14.3)
189       
190        # Collimation
191        _found1 = False
192        _found2 = False
193        self.assertEqual(self.data.collimation[0].length, 123.)
194       
195        for item in self.data.collimation[0].aperture:
196            self.assertEqual(item.size_unit,'mm')
197            self.assertEqual(item.distance_unit,'mm')
198           
199            if item.size.x==50 \
200                and item.distance==11000.:
201                _found1 = True
202            elif item.size.x==1.0:
203                _found2 = True
204               
205        if _found1==False or _found2==False:
206            print item.distance
207            raise RuntimeError, "Could not find all data %s %s" % (_found1, _found2) 
208           
209        # Detector
210        self.assertEqual(self.data.detector[0].name, "fictional hybrid")
211        self.assertEqual(self.data.detector[0].distance_unit, "m")
212        self.assertEqual(self.data.detector[0].distance, 4.150)
213       
214        self.assertEqual(self.data.detector[0].orientation_unit, "degree")
215        self.assertEqual(self.data.detector[0].orientation.x, 1.0)
216        self.assertEqual(self.data.detector[0].orientation.y, 0.0)
217        self.assertEqual(self.data.detector[0].orientation.z, 0.0)
218       
219        self.assertEqual(self.data.detector[0].offset_unit, "m")
220        self.assertEqual(self.data.detector[0].offset.x, .01)
221        self.assertEqual(self.data.detector[0].offset.y, .02)
222        self.assertEqual(self.data.detector[0].offset.z, None)
223       
224        self.assertEqual(self.data.detector[0].beam_center_unit, "mm")
225        self.assertEqual(self.data.detector[0].beam_center.x, 322.64)
226        self.assertEqual(self.data.detector[0].beam_center.y, 327.68)
227        self.assertEqual(self.data.detector[0].beam_center.z, None)
228       
229        self.assertEqual(self.data.detector[0].pixel_size_unit, "mm")
230        self.assertEqual(self.data.detector[0].pixel_size.x, 5)
231        self.assertEqual(self.data.detector[0].pixel_size.y, 5)
232        self.assertEqual(self.data.detector[0].pixel_size.z, None)
233       
234        # Process
235       
236       
237       
238    def test_writer(self):
239        from DataLoader.readers.cansas_reader import Reader
240        r = Reader()
241        x = numpy.ones(5)
242        y = numpy.ones(5)
243        dy = numpy.ones(5)
244       
245        d = Loader().load("jan08002.ABS")
246        #d = Data1D(x, y, dy)
247        r.write("write_test.xml", d)
248       
249       
250       
251       
252           
253
254if __name__ == '__main__':
255    unittest.main()
256   
Note: See TracBrowser for help on using the repository browser.