- Timestamp:
- Aug 1, 2017 12:02:35 PM (8 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 511ccb2d
- Parents:
- 248ff73 (diff), bc04647 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Location:
- test
- Files:
-
- 28 added
- 3 deleted
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
test/fileconverter/test/utest_nxcansas_writer.py
r248ff73 r5a8cdbb 62 62 if os.path.isfile(self.write_file_1d): 63 63 os.remove(self.write_file_1d) 64 if os.path.isfile(self.write_file_2d): 65 os.remove(self.write_file_2d) -
test/pr_inversion/test/utest_invertor.py
rac07a3a raaf5e49 6 6 # Disable "too many methods" complaint 7 7 # pylint: disable-msg=R0904 8 9 10 import unittest, math, numpy 8 from __future__ import print_function 9 10 11 import os 12 import unittest 13 import math 14 import numpy 11 15 from sas.sascalc.pr.invertor import Invertor 12 16 17 13 18 class TestFiguresOfMerit(unittest.TestCase): 14 19 … … 235 240 self.assertTrue(chi2/51.0<10.0) 236 241 except: 237 print "chi2 =", chi2/51.0242 print("chi2 =", chi2/51.0) 238 243 raise 239 244 … … 263 268 self.assertTrue(self.invertor.chi2/len(x)<200.00) 264 269 except: 265 print "Chi2(I(q)) =", self.invertor.chi2/len(x)270 print("Chi2(I(q)) =", self.invertor.chi2/len(x)) 266 271 raise 267 272 … … 297 302 self.assertTrue(chi2/51.0<50.0) 298 303 except: 299 print "chi2(P(r)) =", chi2/51.0304 print("chi2(P(r)) =", chi2/51.0) 300 305 raise 301 306 … … 341 346 self.assertTrue(self.invertor.chi2>0) 342 347 except: 343 print "Chi2 =", self.invertor.chi2348 print("Chi2 =", self.invertor.chi2) 344 349 raise 345 350 … … 365 370 self.assertTrue(self.invertor.chi2>0) 366 371 except: 367 print "Chi2 =", self.invertor.chi2372 print("Chi2 =", self.invertor.chi2) 368 373 raise 369 374 … … 416 421 417 422 # Save 418 self.invertor.to_file("test_output.txt") 423 f_name = "test_output.txt" 424 self.invertor.to_file(f_name) 419 425 420 426 # Load 421 self.invertor.from_file( "test_output.txt")427 self.invertor.from_file(f_name) 422 428 self.assertEqual(self.invertor.d_max, 160.0) 423 429 self.assertEqual(self.invertor.alpha, 0.0007) 424 430 self.assertEqual(self.invertor.chi2, 836.797) 425 431 self.assertAlmostEqual(self.invertor.pr(self.invertor.out, 10.0), 903.31577041, 4) 432 if os.path.isfile(f_name): 433 os.remove(f_name) 426 434 427 435 def test_qmin(self): -
test/run_one.py
raaad4c95 raaf5e49 1 1 #!/usr/bin/env python 2 from __future__ import print_function 2 3 3 4 import os … … 24 25 #print "\n".join(sys.path) 25 26 test_path,test_file = splitpath(abspath(sys.argv[1])) 26 print "=== testing:",sys.argv[1]27 print("=== testing:",sys.argv[1]) 27 28 #print test_path, test_file 28 29 sys.argv = [sys.argv[0]] -
test/sasdataloader/plugins/test_reader.py
r959eb01 raaf5e49 8 8 copyright 2008, University of Tennessee 9 9 """ 10 from __future__ import print_function 11 10 12 import os 11 13 import numpy as np … … 59 61 reader = Reader() 60 62 output = reader.read("../test/test_data.test") 61 print output.x63 print(output.x) 62 64 63 65 -
test/sasdataloader/test/sequence_tests.py
r959eb01 raaf5e49 1 from __future__ import print_function 2 1 3 from DataLoader.loader import Loader 2 4 from DataLoader.readers.IgorReader import Reader as igor_reader … … 8 10 out2 = Loader().load("MAR07232_rest.ASC") 9 11 if len(out2.detector)>1: 10 print "Consecutive reads using Loader failed"12 print("Consecutive reads using Loader failed") 11 13 12 14 def consecutive_reader(): … … 14 16 out2 = igor_reader().read("MAR07232_rest.ASC") 15 17 if len(out2.detector)>1: 16 print "Consecutive reads using Readers failed"17 print out118 print out218 print("Consecutive reads using Readers failed") 19 print(out1) 20 print(out2) 19 21 20 22 def single_abs(): … … 29 31 single_igor() 30 32 single_abs() 31 print "Test passed"33 print("Test passed") -
test/sasdataloader/test/testplugings.py
r959eb01 r17c9436 3 3 """ 4 4 5 import os 5 6 import unittest 6 7 from sas.sascalc.dataloader.loader import Loader, Registry … … 41 42 # Create module 42 43 import zipfile 43 z = zipfile.PyZipFile("plugins.zip", 'w') 44 f_name = "plugins.zip" 45 z = zipfile.PyZipFile(f_name, 'w') 44 46 z.writepy("../plugins", "") 45 47 z.close() 48 if os.path.isfile(f_name): 49 os.remove(f_name) 46 50 47 51 def testplugin_checksetup(self): -
test/sasdataloader/test/utest_abs_reader.py
r371b9e2 r5a8cdbb 2 2 Unit tests for data manipulations 3 3 """ 4 from __future__ import print_function 4 5 5 6 import unittest … … 7 8 from sas.sascalc.dataloader.loader import Loader 8 9 from sas.sascalc.dataloader.readers.IgorReader import Reader as IgorReader 9 from sas.sascalc.dataloader.readers.abs_reader import Reader as ABSReader 10 11 12 class ABSReaderTests(unittest.TestCase): 13 10 from sas.sascalc.dataloader.readers.abs_reader import Reader as AbsReader 11 from sas.sascalc.dataloader.readers.hfir1d_reader import Reader as HFIRReader 12 from sas.sascalc.dataloader.readers.danse_reader import Reader as DANSEReader 13 from sas.sascalc.dataloader.readers.cansas_reader import Reader as CANSASReader 14 15 from sas.sascalc.dataloader.data_info import Data1D 16 17 import os.path 18 19 20 class abs_reader(unittest.TestCase): 21 14 22 def setUp(self): 15 self.data_list = ABSReader().read("jan08002.ABS")16 self.data = self.data_list[0]17 23 reader = AbsReader() 24 self.data = reader.read("jan08002.ABS") 25 18 26 def test_abs_checkdata(self): 19 27 """ 20 Check the data content to see whether 28 Check the data content to see whether 21 29 it matches the specific file we loaded. 22 30 Check the units too to see whether the … … 26 34 self.assertEqual(self.data.filename, "jan08002.ABS") 27 35 self.assertEqual(self.data.meta_data['loader'], "IGOR 1D") 28 36 29 37 self.assertEqual(self.data.source.wavelength_unit, 'A') 30 38 self.assertEqual(self.data.source.wavelength, 6.0) 31 39 32 40 self.assertEqual(self.data.detector[0].distance_unit, 'mm') 33 41 self.assertEqual(self.data.detector[0].distance, 1000.0) 34 42 35 43 self.assertEqual(self.data.sample.transmission, 0.5667) 36 44 37 45 self.assertEqual(self.data.detector[0].beam_center_unit, 'mm') 38 46 center_x = 114.58*5.08 … … 40 48 self.assertEqual(self.data.detector[0].beam_center.x, center_x) 41 49 self.assertEqual(self.data.detector[0].beam_center.y, center_y) 42 50 43 51 self.assertEqual(self.data.y_unit, '1/cm') 44 52 self.assertEqual(self.data.x[0], 0.002618) … … 46 54 self.assertEqual(self.data.x[2], 0.01309) 47 55 self.assertEqual(self.data.x[126], 0.5828) 48 56 49 57 self.assertEqual(self.data.y[0], 0.02198) 50 58 self.assertEqual(self.data.y[1], 0.02201) 51 59 self.assertEqual(self.data.y[2], 0.02695) 52 60 self.assertEqual(self.data.y[126], 0.2958) 53 61 54 62 self.assertEqual(self.data.dy[0], 0.002704) 55 63 self.assertEqual(self.data.dy[1], 0.001643) 56 64 self.assertEqual(self.data.dy[2], 0.002452) 57 65 self.assertEqual(self.data.dy[126], 1) 58 66 59 67 def test_checkdata2(self): 60 68 self.assertEqual(self.data.dy[126], 1) 61 69 62 63 class HFIRReaderTests(unittest.TestCase): 70 def test_generic_loader(self): 71 # the generic loader should work as well 72 data = Loader().load("jan08002.ABS") 73 self.assertEqual(data.meta_data['loader'], "IGOR 1D") 74 75 76 class hfir_reader(unittest.TestCase): 64 77 65 78 def setUp(self): 66 self.data = Loader().load("S2-30dq.d1d") 79 reader = HFIRReader() 80 self.data = reader.read("S2-30dq.d1d") 67 81 68 82 def test_hfir_checkdata(self): 69 83 """ 70 Check the data content to see whether 84 Check the data content to see whether 71 85 it matches the specific file we loaded. 72 86 """ … … 76 90 self.assertEqual(len(self.data.x), 134) 77 91 self.assertEqual(len(self.data.y), 134) 78 # Q I dI dQ 92 # Q I dI dQ 79 93 # Point 1: 0.003014 0.003010 0.000315 0.008249 80 94 self.assertEqual(self.data.x[1], 0.003014) … … 83 97 self.assertEqual(self.data.dx[1], 0.008249) 84 98 85 86 class DanseReaderTests(unittest.TestCase): 87 99 def test_generic_loader(self): 100 # the generic loader should work as well 101 data = Loader().load("S2-30dq.d1d") 102 self.assertEqual(data.meta_data['loader'], "HFIR 1D") 103 104 105 class igor_reader(unittest.TestCase): 106 88 107 def setUp(self): 89 self.data = Loader().load("MP_New.sans") 90 91 def test_checkdata(self): 92 """ 93 Check the data content to see whether 108 # the IgorReader should be able to read this filetype 109 # if it can't, stop here. 110 reader = IgorReader() 111 self.data = reader.read("MAR07232_rest.ASC") 112 113 def test_igor_checkdata(self): 114 """ 115 Check the data content to see whether 94 116 it matches the specific file we loaded. 95 117 Check the units too to see whether the … … 97 119 tests won't pass 98 120 """ 121 self.assertEqual(self.data.filename, "MAR07232_rest.ASC") 122 self.assertEqual(self.data.meta_data['loader'], "IGOR 2D") 123 124 self.assertEqual(self.data.source.wavelength_unit, 'A') 125 self.assertEqual(self.data.source.wavelength, 8.4) 126 127 self.assertEqual(self.data.detector[0].distance_unit, 'mm') 128 self.assertEqual(self.data.detector[0].distance, 13705) 129 130 self.assertEqual(self.data.sample.transmission, 0.84357) 131 132 self.assertEqual(self.data.detector[0].beam_center_unit, 'mm') 133 center_x = (68.76 - 1)*5.0 134 center_y = (62.47 - 1)*5.0 135 self.assertEqual(self.data.detector[0].beam_center.x, center_x) 136 self.assertEqual(self.data.detector[0].beam_center.y, center_y) 137 138 self.assertEqual(self.data.I_unit, '1/cm') 139 # 3 points should be suffcient to check that the data is in column 140 # major order. 141 np.testing.assert_almost_equal(self.data.data[0:3], 142 [0.279783, 0.28951, 0.167634]) 143 np.testing.assert_almost_equal(self.data.qx_data[0:3], 144 [-0.01849072, -0.01821785, -0.01794498]) 145 np.testing.assert_almost_equal(self.data.qy_data[0:3], 146 [-0.01677435, -0.01677435, -0.01677435]) 147 148 def test_generic_loader(self): 149 # the generic loader should direct the file to IgorReader as well 150 data = Loader().load("MAR07232_rest.ASC") 151 self.assertEqual(data.meta_data['loader'], "IGOR 2D") 152 153 154 class DanseReaderTests(unittest.TestCase): 155 156 def setUp(self): 157 reader = DANSEReader() 158 self.data = reader.read("MP_New.sans") 159 160 def test_checkdata(self): 161 """ 162 Check the data content to see whether 163 it matches the specific file we loaded. 164 Check the units too to see whether the 165 Data1D defaults changed. Otherwise the 166 tests won't pass 167 """ 99 168 self.assertEqual(self.data.filename, "MP_New.sans") 100 169 self.assertEqual(self.data.meta_data['loader'], "DANSE") 101 170 102 171 self.assertEqual(self.data.source.wavelength_unit, 'A') 103 172 self.assertEqual(self.data.source.wavelength, 7.5) 104 173 105 174 self.assertEqual(self.data.detector[0].distance_unit, 'mm') 106 175 self.assertAlmostEqual(self.data.detector[0].distance, 5414.99, 3) 107 176 108 177 self.assertEqual(self.data.detector[0].beam_center_unit, 'mm') 109 178 center_x = 68.74*5.0 … … 111 180 self.assertEqual(self.data.detector[0].beam_center.x, center_x) 112 181 self.assertEqual(self.data.detector[0].beam_center.y, center_y) 113 182 114 183 self.assertEqual(self.data.I_unit, '1/cm') 115 184 self.assertEqual(self.data.data[0], 1.57831) … … 121 190 self.assertEqual(self.data.err_data[2], 2.06313) 122 191 123 192 def test_generic_loader(self): 193 # the generic loader should work as well 194 data = Loader().load("MP_New.sans") 195 self.assertEqual(data.meta_data['loader'], "DANSE") 196 197 124 198 class cansas_reader(unittest.TestCase): 125 199 126 200 def setUp(self): 201 reader = CANSASReader() 202 data = reader.read("cansas1d.xml") 203 self.data = data[0] 204 205 def test_generic_loader(self): 206 # the generic loader should work as well 127 207 data = Loader().load("cansas1d.xml") 128 self. data = data[0]129 208 self.assertEqual(data[0].meta_data['loader'], "CanSAS XML 1D") 209 130 210 def test_cansas_checkdata(self): 131 211 self.assertEqual(self.data.filename, "cansas1d.xml") 132 212 self._checkdata() 133 213 134 214 def _checkdata(self): 135 215 """ 136 Check the data content to see whether 216 Check the data content to see whether 137 217 it matches the specific file we loaded. 138 218 Check the units too to see whether the … … 140 220 tests won't pass 141 221 """ 142 143 222 self.assertEqual(self.data.run[0], "1234") 144 223 self.assertEqual(self.data.meta_data['loader'], "CanSAS XML 1D") 145 224 146 225 # Data 147 226 self.assertEqual(len(self.data.x), 2) … … 158 237 self.assertEqual(self.data.run_name['1234'], 'run name') 159 238 self.assertEqual(self.data.title, "Test title") 160 239 161 240 # Sample info 162 241 self.assertEqual(self.data.sample.ID, "SI600-new-long") … … 164 243 self.assertEqual(self.data.sample.thickness_unit, 'mm') 165 244 self.assertAlmostEqual(self.data.sample.thickness, 1.03) 166 245 167 246 self.assertAlmostEqual(self.data.sample.transmission, 0.327) 168 247 169 248 self.assertEqual(self.data.sample.temperature_unit, 'C') 170 249 self.assertEqual(self.data.sample.temperature, 0) … … 178 257 self.assertAlmostEqual(self.data.sample.orientation.y, 0.02, 6) 179 258 180 self.assertEqual(self.data.sample.details[0], "http://chemtools.chem.soton.ac.uk/projects/blog/blogs.php/bit_id/2720") 181 self.assertEqual(self.data.sample.details[1], "Some text here") 182 259 self.assertEqual(self.data.sample.details[0], "http://chemtools.chem.soton.ac.uk/projects/blog/blogs.php/bit_id/2720") 260 self.assertEqual(self.data.sample.details[1], "Some text here") 261 183 262 # Instrument info 184 263 self.assertEqual(self.data.instrument, "canSAS instrument") 185 264 186 265 # Source 187 266 self.assertEqual(self.data.source.radiation, "neutron") 188 267 189 268 self.assertEqual(self.data.source.beam_size_unit, "mm") 190 269 self.assertEqual(self.data.source.beam_size_name, "bm") 191 270 self.assertEqual(self.data.source.beam_size.x, 12) 192 271 self.assertEqual(self.data.source.beam_size.y, 13) 193 272 194 273 self.assertEqual(self.data.source.beam_shape, "disc") 195 274 196 275 self.assertEqual(self.data.source.wavelength_unit, "A") 197 276 self.assertEqual(self.data.source.wavelength, 6) 198 277 199 278 self.assertEqual(self.data.source.wavelength_max_unit, "nm") 200 279 self.assertAlmostEqual(self.data.source.wavelength_max, 1.0) … … 203 282 self.assertEqual(self.data.source.wavelength_spread_unit, "percent") 204 283 self.assertEqual(self.data.source.wavelength_spread, 14.3) 205 284 206 285 # Collimation 207 286 _found1 = False … … 209 288 self.assertEqual(self.data.collimation[0].length, 123.) 210 289 self.assertEqual(self.data.collimation[0].name, 'test coll name') 211 290 212 291 for item in self.data.collimation[0].aperture: 213 292 self.assertEqual(item.size_unit,'mm') 214 293 self.assertEqual(item.distance_unit,'mm') 215 294 216 if item.size.x ==50 \217 and item.distance ==11000.0 \218 and item.name =='source' \219 and item.type =='radius':295 if item.size.x == 50 \ 296 and item.distance == 11000.0 \ 297 and item.name == 'source' \ 298 and item.type == 'radius': 220 299 _found1 = True 221 elif item.size.x ==1.0 \222 and item.name =='sample' \223 and item.type =='radius':300 elif item.size.x == 1.0 \ 301 and item.name == 'sample' \ 302 and item.type == 'radius': 224 303 _found2 = True 225 226 if _found1 ==False or _found2==False:227 raise RuntimeError, "Could not find all data %s %s" % (_found1, _found2) 228 304 305 if _found1 == False or _found2 == False: 306 raise RuntimeError, "Could not find all data %s %s" % (_found1, _found2) 307 229 308 # Detector 230 309 self.assertEqual(self.data.detector[0].name, "fictional hybrid") 231 310 self.assertEqual(self.data.detector[0].distance_unit, "mm") 232 311 self.assertEqual(self.data.detector[0].distance, 4150) 233 312 234 313 self.assertEqual(self.data.detector[0].orientation_unit, "degree") 235 314 self.assertAlmostEqual(self.data.detector[0].orientation.x, 1.0, 6) 236 315 self.assertEqual(self.data.detector[0].orientation.y, 0.0) 237 316 self.assertEqual(self.data.detector[0].orientation.z, 0.0) 238 317 239 318 self.assertEqual(self.data.detector[0].offset_unit, "m") 240 319 self.assertEqual(self.data.detector[0].offset.x, .001) 241 320 self.assertEqual(self.data.detector[0].offset.y, .002) 242 321 self.assertEqual(self.data.detector[0].offset.z, None) 243 322 244 323 self.assertEqual(self.data.detector[0].beam_center_unit, "mm") 245 324 self.assertEqual(self.data.detector[0].beam_center.x, 322.64) 246 325 self.assertEqual(self.data.detector[0].beam_center.y, 327.68) 247 326 self.assertEqual(self.data.detector[0].beam_center.z, None) 248 327 249 328 self.assertEqual(self.data.detector[0].pixel_size_unit, "mm") 250 329 self.assertEqual(self.data.detector[0].pixel_size.x, 5) 251 330 self.assertEqual(self.data.detector[0].pixel_size.y, 5) 252 331 self.assertEqual(self.data.detector[0].pixel_size.z, None) 253 332 254 333 # Process 255 334 _found_term1 = False … … 259 338 self.assertTrue(item.date in ['04-Sep-2007 18:35:02', 260 339 '03-SEP-2006 11:42:47']) 261 print item.term340 print(item.term) 262 341 for t in item.term: 263 if t['name']=="ABS:DSTAND" \264 and t['unit'] =='mm' \265 and float(t['value']) ==1.0:342 if (t['name'] == "ABS:DSTAND" 343 and t['unit'] == 'mm' 344 and float(t['value']) == 1.0): 266 345 _found_term2 = True 267 elif t['name']=="radialstep" \268 and t['unit']=='mm' \269 and float(t['value'])==10.0:346 elif (t['name'] == "radialstep" 347 and t['unit'] == 'mm' 348 and float(t['value']) == 10.0): 270 349 _found_term1 = True 271 272 if _found_term1 ==False or _found_term2==False:350 351 if _found_term1 == False or _found_term2 == False: 273 352 raise RuntimeError, "Could not find all process terms %s %s" % (_found_term1, _found_term2) 274 353 275 354 def test_writer(self): 276 from sas.sascalc.dataloader.readers.cansas_reader import Reader 277 r = Reader() 278 x = np.ones(5) 279 y = np.ones(5) 280 dy = np.ones(5) 281 355 r = CANSASReader() 356 282 357 filename = "write_test.xml" 283 358 r.write(filename, self.data) … … 286 361 self.assertEqual(self.data.filename, filename) 287 362 self._checkdata() 363 if os.path.isfile(filename): 364 os.remove(filename) 288 365 289 366 def test_units(self): … … 293 370 """ 294 371 filename = "cansas1d_units.xml" 295 data = Loader().load(filename)372 data = CANSASReader().read(filename) 296 373 self.data = data[0] 297 374 self.assertEqual(self.data.filename, filename) … … 304 381 """ 305 382 filename = "cansas1d_badunits.xml" 306 data = Loader().load(filename)383 data = CANSASReader().read(filename) 307 384 self.data = data[0] 308 385 self.assertEqual(self.data.filename, filename) … … 311 388 # This one should 312 389 self.assertAlmostEqual(self.data.sample.transmission, 0.327) 313 390 314 391 self.assertEqual(self.data.meta_data['loader'], "CanSAS XML 1D") 315 print self.data.errors392 print(self.data.errors) 316 393 self.assertEqual(len(self.data.errors), 1) 317 394 … … 321 398 """ 322 399 filename = "cansas1d_slit.xml" 323 data = Loader().load(filename)400 data = CANSASReader().read(filename) 324 401 self.data = data[0] 325 402 self.assertEqual(self.data.filename, filename) 326 403 self.assertEqual(self.data.run[0], "1234") 327 404 328 405 # Data 329 406 self.assertEqual(len(self.data.x), 2) -
test/sasdataloader/test/utest_averaging.py
r8ffafd1 r5a8cdbb 1 1 2 2 import math 3 import os 3 4 import unittest 5 from scipy.stats import binned_statistic_2d 4 6 import numpy as np 7 5 8 import sas.sascalc.dataloader.data_info as data_info 6 9 from sas.sascalc.dataloader.loader import Loader 7 from sas.sascalc.dataloader.manipulations import Boxsum, Boxavg, Ring, get_q,\ 8 CircularAverage, SectorPhi, SectorQ, reader2D_converter, SlabX, SlabY 10 from sas.sascalc.dataloader.manipulations import (Boxavg, Boxsum, 11 CircularAverage, Ring, 12 SectorPhi, SectorQ, SlabX, 13 SlabY, get_q, 14 reader2D_converter) 9 15 10 16 … … 13 19 Test averaging manipulations on a flat distribution 14 20 """ 21 15 22 def setUp(self): 16 23 """ … … 18 25 should return the predefined height of the distribution (1.0). 19 26 """ 20 x_0 = np.ones([100, 100])21 dx_0 = np.ones([100, 100])27 x_0 = np.ones([100, 100]) 28 dx_0 = np.ones([100, 100]) 22 29 23 30 self.data = data_info.Data2D(data=x_0, err_data=dx_0) 24 31 detector = data_info.Detector() 25 32 detector.distance = 1000.0 # mm 26 detector.pixel_size.x = 1.0 # mm27 detector.pixel_size.y = 1.0 # mm33 detector.pixel_size.x = 1.0 # mm 34 detector.pixel_size.y = 1.0 # mm 28 35 29 36 # center in pixel position = (len(x_0)-1)/2 30 detector.beam_center.x = (len(x_0) -1)/2# pixel number31 detector.beam_center.y = (len(x_0) -1)/2# pixel number37 detector.beam_center.x = (len(x_0) - 1) / 2 # pixel number 38 detector.beam_center.y = (len(x_0) - 1) / 2 # pixel number 32 39 self.data.detector.append(detector) 33 40 34 41 source = data_info.Source() 35 source.wavelength = 10.0 # A42 source.wavelength = 10.0 # A 36 43 self.data.source = source 37 44 38 # get_q(dx, dy, det_dist, wavelength) where units are mm, mm, mm, and A 45 # get_q(dx, dy, det_dist, wavelength) where units are mm,mm,mm,and A 46 # respectively. 39 47 self.qmin = get_q(1.0, 1.0, detector.distance, source.wavelength) 40 48 self.qmax = get_q(49.5, 49.5, detector.distance, source.wavelength) 41 49 42 50 self.qstep = len(x_0) 43 x = np.linspace(start= -1*self.qmax,44 stop=self.qmax,45 num=self.qstep,46 endpoint=True )47 y = np.linspace(start= -1*self.qmax,48 stop=self.qmax,49 num=self.qstep,50 endpoint=True)51 self.data.x_bins =x52 self.data.y_bins =y51 x = np.linspace(start=-1 * self.qmax, 52 stop=self.qmax, 53 num=self.qstep, 54 endpoint=True) 55 y = np.linspace(start=-1 * self.qmax, 56 stop=self.qmax, 57 num=self.qstep, 58 endpoint=True) 59 self.data.x_bins = x 60 self.data.y_bins = y 53 61 self.data = reader2D_converter(self.data) 54 62 … … 57 65 Test ring averaging 58 66 """ 59 r = Ring(r_min=2 *self.qmin, r_max=5*self.qmin,60 center_x=self.data.detector[0].beam_center.x, 67 r = Ring(r_min=2 * self.qmin, r_max=5 * self.qmin, 68 center_x=self.data.detector[0].beam_center.x, 61 69 center_y=self.data.detector[0].beam_center.y) 62 70 r.nbins_phi = 20 … … 70 78 Test sector averaging 71 79 """ 72 r = SectorPhi(r_min=self.qmin, r_max=3 *self.qmin,73 phi_min=0, phi_max=math.pi *2.0)80 r = SectorPhi(r_min=self.qmin, r_max=3 * self.qmin, 81 phi_min=0, phi_max=math.pi * 2.0) 74 82 r.nbins_phi = 20 75 83 o = r(self.data) … … 81 89 """ 82 90 phi_max = math.pi * 1.5 83 r = SectorPhi(r_min=self.qmin, r_max=3 *self.qmin,91 r = SectorPhi(r_min=self.qmin, r_max=3 * self.qmin, 84 92 phi_min=0, phi_max=phi_max) 85 93 self.assertEqual(r.phi_max, phi_max) … … 94 102 95 103 def setUp(self): 96 self.data = Loader().load('MAR07232_rest.ASC') 104 filepath = os.path.join(os.path.dirname( 105 os.path.realpath(__file__)), 'MAR07232_rest.ASC') 106 self.data = Loader().load(filepath) 97 107 98 108 def test_ring(self): … … 100 110 Test ring averaging 101 111 """ 102 r = Ring(r_min=.005, r_max=.01, 103 center_x=self.data.detector[0].beam_center.x, 112 r = Ring(r_min=.005, r_max=.01, 113 center_x=self.data.detector[0].beam_center.x, 104 114 center_y=self.data.detector[0].beam_center.y, 105 nbins = 20) 106 # r.nbins_phi = 20 107 108 o = r(self.data) 109 data_list = Loader().load('ring_testdata.txt') 110 answer = data_list[0] 115 nbins=20) 116 ##r.nbins_phi = 20 117 118 o = r(self.data) 119 filepath = os.path.join(os.path.dirname( 120 os.path.realpath(__file__)), 'ring_testdata.txt') 121 answer = Loader().load(filepath) 111 122 112 123 for i in range(r.nbins_phi - 1): … … 115 126 self.assertAlmostEqual(o.dy[i + 1], answer.dy[i], 4) 116 127 117 def test_circular_avg(self): 128 def test_circularavg(self): 129 """ 130 Test circular averaging 131 The test data was not generated by IGOR. 132 """ 133 r = CircularAverage(r_min=.00, r_max=.025, 134 bin_width=0.0003) 135 r.nbins_phi = 20 136 137 o = r(self.data) 138 139 filepath = os.path.join(os.path.dirname( 140 os.path.realpath(__file__)), 'avg_testdata.txt') 141 answer = Loader().load(filepath) 142 for i in range(r.nbins_phi): 143 self.assertAlmostEqual(o.x[i], answer.x[i], 4) 144 self.assertAlmostEqual(o.y[i], answer.y[i], 4) 145 self.assertAlmostEqual(o.dy[i], answer.dy[i], 4) 146 147 def test_box(self): 118 148 """ 119 149 Test circular averaging 120 150 The test data was not generated by IGOR. 121 151 """ 122 r = CircularAverage(r_min=.00, r_max=.025, 123 bin_width=0.0003) 124 r.nbins_phi = 20 125 o = r(self.data) 126 127 output = Loader().load('avg_testdata.txt') 128 answer = output[0] 129 for i in range(r.nbins_phi): 130 self.assertAlmostEqual(o.x[i], answer.x[i], 4) 131 self.assertAlmostEqual(o.y[i], answer.y[i], 4) 132 self.assertAlmostEqual(o.dy[i], answer.dy[i], 4) 133 134 def test_box(self): 135 """ 136 Test circular averaging 137 The test data was not generated by IGOR. 138 """ 152 139 153 r = Boxsum(x_min=.01, x_max=.015, y_min=0.01, y_max=0.015) 140 154 s, ds, npoints = r(self.data) 141 155 self.assertAlmostEqual(s, 34.278990899999997, 4) 142 156 self.assertAlmostEqual(ds, 7.8007981835194293, 4) 143 self.assertAlmostEqual(npoints, 324.0000, 4) 157 self.assertAlmostEqual(npoints, 324.0000, 4) 144 158 145 159 r = Boxavg(x_min=.01, x_max=.015, y_min=0.01, y_max=0.015) … … 153 167 The test data was not generated by IGOR. 154 168 """ 155 r = SlabX(x_min=-.01, x_max=.01, y_min=-0.0002, y_max=0.0002, bin_width=0.0004) 169 170 r = SlabX(x_min=-.01, x_max=.01, y_min=-0.0002, 171 y_max=0.0002, bin_width=0.0004) 156 172 r.fold = False 157 173 o = r(self.data) 158 174 159 output = Loader().load('slabx_testdata.txt') 160 answer = output[0] 175 filepath = os.path.join(os.path.dirname( 176 os.path.realpath(__file__)), 'slabx_testdata.txt') 177 answer = Loader().load(filepath) 161 178 for i in range(len(o.x)): 162 179 self.assertAlmostEqual(o.x[i], answer.x[i], 4) … … 169 186 The test data was not generated by IGOR. 170 187 """ 171 r = SlabY(x_min=.005, x_max=.01, y_min=-0.01, y_max=0.01, bin_width=0.0004) 188 189 r = SlabY(x_min=.005, x_max=.01, y_min=- 190 0.01, y_max=0.01, bin_width=0.0004) 172 191 r.fold = False 173 192 o = r(self.data) 174 193 175 output = Loader().load('slaby_testdata.txt') 176 answer = output[0] 194 filepath = os.path.join(os.path.dirname( 195 os.path.realpath(__file__)), 'slaby_testdata.txt') 196 answer = Loader().load(filepath) 177 197 for i in range(len(o.x)): 178 198 self.assertAlmostEqual(o.x[i], answer.x[i], 4) … … 183 203 """ 184 204 Test sector averaging I(phi) 185 When considering the whole azimuthal range (2pi), 205 When considering the whole azimuthal range (2pi), 186 206 the answer should be the same as ring averaging. 187 207 The test data was not generated by IGOR. 188 208 """ 209 189 210 nbins = 19 190 211 phi_min = math.pi / (nbins + 1) … … 198 219 o = r(self.data) 199 220 200 output = Loader().load('ring_testdata.txt') 201 answer = output[0] 202 for i in range(len(o.x)): 203 self.assertAlmostEqual(o.x[i], answer.x[i], 4) 204 self.assertAlmostEqual(o.y[i], answer.y[i], 4) 205 self.assertAlmostEqual(o.dy[i], answer.dy[i], 4) 206 221 filepath = os.path.join(os.path.dirname( 222 os.path.realpath(__file__)), 'ring_testdata.txt') 223 answer = Loader().load(filepath) 224 for i in range(len(o.x)): 225 self.assertAlmostEqual(o.x[i], answer.x[i], 4) 226 self.assertAlmostEqual(o.y[i], answer.y[i], 4) 227 self.assertAlmostEqual(o.dy[i], answer.dy[i], 4) 228 207 229 def test_sectorphi_quarter(self): 208 230 """ … … 210 232 The test data was not generated by IGOR. 211 233 """ 212 r = SectorPhi(r_min=.005, r_max=.01, phi_min=0, phi_max=math.pi/2.0) 213 r.nbins_phi = 20 214 o = r(self.data) 215 216 output = Loader().load('sectorphi_testdata.txt') 217 answer = output[0] 218 for i in range(len(o.x)): 219 self.assertAlmostEqual(o.x[i], answer.x[i], 4) 220 self.assertAlmostEqual(o.y[i], answer.y[i], 4) 221 self.assertAlmostEqual(o.dy[i], answer.dy[i], 4) 222 234 235 r = SectorPhi(r_min=.005, r_max=.01, phi_min=0, phi_max=math.pi / 2.0) 236 r.nbins_phi = 20 237 o = r(self.data) 238 239 filepath = os.path.join(os.path.dirname( 240 os.path.realpath(__file__)), 'sectorphi_testdata.txt') 241 answer = Loader().load(filepath) 242 for i in range(len(o.x)): 243 self.assertAlmostEqual(o.x[i], answer.x[i], 4) 244 self.assertAlmostEqual(o.y[i], answer.y[i], 4) 245 self.assertAlmostEqual(o.dy[i], answer.dy[i], 4) 246 223 247 def test_sectorq_full(self): 224 248 """ … … 226 250 The test data was not generated by IGOR. 227 251 """ 228 r = SectorQ(r_min=.005, r_max=.01, phi_min=0, phi_max=math.pi/2.0) 229 r.nbins_phi = 20 230 o = r(self.data) 231 232 output = Loader().load('sectorq_testdata.txt') 233 answer = output[0] 234 for i in range(len(o.x)): 235 self.assertAlmostEqual(o.x[i], answer.x[i], 4) 236 self.assertAlmostEqual(o.y[i], answer.y[i], 4) 237 self.assertAlmostEqual(o.dy[i], answer.dy[i], 4) 252 253 r = SectorQ(r_min=.005, r_max=.01, phi_min=0, phi_max=math.pi / 2.0) 254 r.nbins_phi = 20 255 o = r(self.data) 256 257 filepath = os.path.join(os.path.dirname( 258 os.path.realpath(__file__)), 'sectorq_testdata.txt') 259 answer = Loader().load(filepath) 260 for i in range(len(o.x)): 261 self.assertAlmostEqual(o.x[i], answer.x[i], 4) 262 self.assertAlmostEqual(o.y[i], answer.y[i], 4) 263 self.assertAlmostEqual(o.dy[i], answer.dy[i], 4) 264 265 def test_sectorq_log(self): 266 """ 267 Test sector averaging I(q) 268 The test data was not generated by IGOR. 269 """ 270 271 r = SectorQ(r_min=.005, r_max=.01, phi_min=0, phi_max=math.pi / 2.0, base=10) 272 r.nbins_phi = 20 273 o = r(self.data) 274 275 expected_binning = np.logspace(np.log10(0.005), np.log10(0.01), 20, base=10) 276 for i in range(len(o.x)): 277 self.assertAlmostEqual(o.x[i], expected_binning[i], 3) 278 279 # TODO: Test for Y values (o.y) 280 # print len(self.data.x_bins) 281 # print len(self.data.y_bins) 282 # print self.data.q_data.shape 283 # data_to_bin = np.array(self.data.q_data) 284 # data_to_bin = data_to_bin.reshape(len(self.data.x_bins), len(self.data.y_bins)) 285 # H, xedges, yedges, binnumber = binned_statistic_2d(self.data.x_bins, self.data.y_bins, data_to_bin, 286 # bins=[[0, math.pi / 2.0], expected_binning], statistic='mean') 287 # xedges_width = (xedges[1] - xedges[0]) 288 # xedges_center = xedges[1:] - xedges_width / 2 289 290 # yedges_width = (yedges[1] - yedges[0]) 291 # yedges_center = yedges[1:] - yedges_width / 2 292 293 # print H.flatten().shape 294 # print o.y.shape 238 295 239 296 -
test/sasdataloader/test/utest_cansas.py
r7432acb r1fc50fb2 46 46 self.schema_1_0 = "cansas1d_v1_0.xsd" 47 47 self.schema_1_1 = "cansas1d_v1_1.xsd" 48 48 self.write_1_0_filename = "isis_1_0_write_test.xml" 49 self.write_1_1_filename = "isis_1_1_write_test.xml" 49 50 50 51 def get_number_of_entries(self, dictionary, name, i): … … 56 57 return name 57 58 58 59 59 def test_invalid_xml(self): 60 60 """ … … 62 62 """ 63 63 invalid = StringIO.StringIO('<a><c></b></a>') 64 reader = XMLreader(invalid) 65 64 XMLreader(invalid) 66 65 67 66 def test_xml_validate(self): … … 82 81 self.assertFalse(xmlschema.validate(invalid)) 83 82 84 85 83 def test_real_xml(self): 86 84 reader = XMLreader(self.xml_valid, self.schema_1_0) … … 90 88 else: 91 89 self.assertFalse(valid) 92 93 90 94 91 def _check_data(self, data): … … 105 102 self.assertTrue(data.meta_data["xmlpreprocess"] is not None) 106 103 107 108 104 def _check_data_1_1(self, data): 109 105 spectrum = data.trans_spectrum[0] 110 106 self.assertTrue(len(spectrum.wavelength) == 138) 111 107 112 113 108 def test_cansas_xml(self): 114 filename = "isis_1_1_write_test.xml"115 109 xmlreader = XMLreader(self.isis_1_1, self.schema_1_1) 116 110 valid = xmlreader.validate_xml() 117 111 xmlreader.set_processing_instructions() 118 112 self.assertTrue(valid) 119 fo = open(self.isis_1_1)120 str = fo.read()121 113 reader_generic = Loader() 122 114 dataloader = reader_generic.load(self.isis_1_1) … … 128 120 self._check_data(cansasreader[i]) 129 121 self._check_data_1_1(cansasreader[i]) 130 reader_generic.save(filename, dataloader[i], None) 131 fo = open(filename) 132 str = fo.read() 122 reader_generic.save(self.write_1_1_filename, dataloader[i], None) 133 123 reader2 = Loader() 134 return_data = reader2.load(filename) 124 self.assertTrue(os.path.isfile(self.write_1_1_filename)) 125 return_data = reader2.load(self.write_1_1_filename) 135 126 written_data = return_data[0] 136 127 self._check_data(written_data) 137 128 if os.path.isfile(self.write_1_1_filename): 129 os.remove(self.write_1_1_filename) 138 130 139 131 def test_double_trans_spectra(self): … … 144 136 for item in data: 145 137 self._check_data(item) 146 147 138 148 139 def test_entry_name_recurse(self): … … 155 146 self.assertTrue(len(d) == 6) 156 147 157 158 148 def test_load_cansas_file(self): 159 valid = []160 149 reader1 = XMLreader(self.xml_valid, self.schema_1_0) 161 150 self.assertTrue(reader1.validate_xml()) … … 173 162 self.assertFalse(reader7.validate_xml()) 174 163 175 176 164 def test_invalid_cansas(self): 177 165 list = self.loader.load(self.cansas1d_notitle) … … 184 172 self.assertTrue(data.detector[0].distance == 4150) 185 173 186 187 174 def test_old_cansas_files(self): 188 175 reader1 = XMLreader(self.cansas1d, self.schema_1_0) 189 176 self.assertTrue(reader1.validate_xml()) 190 177 file_loader = Loader() 191 file 1 = file_loader.load(self.cansas1d)178 file_loader.load(self.cansas1d) 192 179 reader2 = XMLreader(self.cansas1d_units, self.schema_1_0) 193 180 self.assertTrue(reader2.validate_xml()) … … 197 184 self.assertTrue(reader4.validate_xml()) 198 185 199 200 186 def test_save_cansas_v1_0(self): 201 filename = "isis_1_0_write_test.xml"202 187 xmlreader = XMLreader(self.isis_1_0, self.schema_1_0) 203 188 valid = xmlreader.validate_xml() … … 210 195 self._check_data(dataloader[i]) 211 196 self._check_data(cansasreader[i]) 212 reader_generic.save( filename, dataloader[i], None)197 reader_generic.save(self.write_1_0_filename, dataloader[i], None) 213 198 reader2 = Reader() 214 return_data = reader2.read(filename) 199 self.assertTrue(os.path.isfile(self.write_1_0_filename)) 200 return_data = reader2.read(self.write_1_0_filename) 215 201 written_data = return_data[0] 216 xmlwrite = XMLreader(filename, self.schema_1_0)202 XMLreader(self.write_1_0_filename, self.schema_1_0) 217 203 valid = xmlreader.validate_xml() 218 204 self.assertTrue(valid) 219 205 self._check_data(written_data) 220 206 if os.path.isfile(self.write_1_0_filename): 207 os.remove(self.write_1_0_filename) 221 208 222 209 def test_processing_instructions(self): … … 224 211 valid = reader.validate_xml() 225 212 if valid: 226 # #find the processing instructions and make into a dictionary213 # find the processing instructions and make into a dictionary 227 214 dic = self.get_processing_instructions(reader) 228 215 self.assertTrue(dic == {'xml-stylesheet': \ … … 232 219 xmldoc = minidom.parseString(xml) 233 220 234 # #take the processing instructions and put them back in221 # take the processing instructions and put them back in 235 222 xmldoc = self.set_processing_instructions(xmldoc, dic) 236 xml_output = xmldoc.toprettyxml() 237 223 xmldoc.toprettyxml() 238 224 239 225 def set_processing_instructions(self, minidom_object, dic): … … 243 229 minidom_object.insertBefore(pi, xmlroot) 244 230 return minidom_object 245 246 231 247 232 def get_processing_instructions(self, xml_reader_object): -
test/sasguiframe/test/utest_manipulations.py
r959eb01 rc0ca2e3d 2 2 Unit tests for data manipulations 3 3 """ 4 #TODO: what happens if you add a Data1D to a Data2D? 5 4 # TODO: what happens if you add a Data1D to a Data2D? 5 6 import math 7 import os.path 6 8 import unittest 7 import math 9 8 10 import numpy as np 9 from sas.sascalc.dataloader.loader import Loader 10 from sas.sas gui.guiframe.dataFitting import Data1D, Data2D11 from sas.sasgui.guiframe.dataFitting import Data1D as Theory1D12 13 import os.path 14 15 class data_info_tests(unittest.TestCase):16 11 12 from sas.sascalc.dataloader.loader import Loader 13 from sas.sasgui.guiframe.dataFitting import Data1D 14 from sas.sasgui.guiframe.dataFitting import Data2D 15 16 17 class DataInfoTests(unittest.TestCase): 18 17 19 def setUp(self): 18 20 data = Loader().load("cansas1d.xml") 19 21 self.data = data[0] 20 22 21 23 def test_clone1D(self): 22 24 """ … … 24 26 """ 25 27 clone = self.data.clone_without_data() 26 28 27 29 for i in range(len(self.data.detector)): 28 self.assertEqual(self.data.detector[i].distance, clone.detector[i].distance) 29 30 class theory1d_tests(unittest.TestCase): 31 30 self.assertEqual( 31 self.data.detector[i].distance, clone.detector[i].distance) 32 33 34 class Theory1DTests(unittest.TestCase): 35 32 36 def setUp(self): 33 37 data = Loader().load("cansas1d.xml") 34 38 self.data = data[0] 35 39 36 40 def test_clone_theory1D(self): 37 41 """ 38 42 Test basic cloning 39 43 """ 40 theory = Theory1D(x=[], y=[], dy=None)44 theory = Data1D(x=[], y=[], dy=None) 41 45 theory.clone_without_data(clone=self.data) 42 46 theory.copy_from_datainfo(data1d=self.data) 43 47 for i in range(len(self.data.detector)): 44 self.assertEqual(self.data.detector[i].distance, theory.detector[i].distance) 45 48 self.assertEqual( 49 self.data.detector[i].distance, theory.detector[i].distance) 50 46 51 for i in range(len(self.data.x)): 47 52 self.assertEqual(self.data.x[i], theory.x[i]) … … 49 54 self.assertEqual(self.data.dy[i], theory.dy[i]) 50 55 51 class manip_tests(unittest.TestCase): 52 56 57 class ManipTests(unittest.TestCase): 58 53 59 def setUp(self): 54 60 # Create two data sets to play with 55 61 x_0 = np.ones(5) 56 62 for i in range(5): 57 x_0[i] = x_0[i] *(i+1.0)58 59 y_0 = 2.0 *np.ones(5)60 dy_0 = 0.5 *np.ones(5)63 x_0[i] = x_0[i] * (i + 1.0) 64 65 y_0 = 2.0 * np.ones(5) 66 dy_0 = 0.5 * np.ones(5) 61 67 self.data = Data1D(x_0, y_0, dy=dy_0) 62 68 63 69 x = self.data.x 64 70 y = np.ones(5) 65 71 dy = np.ones(5) 66 72 self.data2 = Data1D(x, y, dy=dy) 67 68 73 69 74 def test_load(self): 70 75 """ … … 73 78 # There should be 5 entries in the file 74 79 self.assertEqual(len(self.data.x), 5) 75 80 76 81 for i in range(5): 77 82 # The x values should be from 1 to 5 78 self.assertEqual(self.data.x[i], float(i +1))79 83 self.assertEqual(self.data.x[i], float(i + 1)) 84 80 85 # All y-error values should be 0.5 81 self.assertEqual(self.data.dy[i], 0.5) 82 86 self.assertEqual(self.data.dy[i], 0.5) 87 83 88 # All y values should be 2.0 84 self.assertEqual(self.data.y[i], 2.0) 85 89 self.assertEqual(self.data.y[i], 2.0) 90 86 91 def test_add(self): 87 result = self.data2 +self.data92 result = self.data2 + self.data 88 93 for i in range(5): 89 94 self.assertEqual(result.y[i], 3.0) 90 self.assertEqual(result.dy[i], math.sqrt(0.5**2 +1.0))91 95 self.assertEqual(result.dy[i], math.sqrt(0.5**2 + 1.0)) 96 92 97 def test_sub(self): 93 result = self.data2 -self.data98 result = self.data2 - self.data 94 99 for i in range(5): 95 100 self.assertEqual(result.y[i], -1.0) 96 self.assertEqual(result.dy[i], math.sqrt(0.5**2 +1.0))97 101 self.assertEqual(result.dy[i], math.sqrt(0.5**2 + 1.0)) 102 98 103 def test_mul(self): 99 result = self.data2 *self.data104 result = self.data2 * self.data 100 105 for i in range(5): 101 106 self.assertEqual(result.y[i], 2.0) 102 self.assertEqual(result.dy[i], math.sqrt((0.5*1.0)**2+(1.0*2.0)**2)) 103 107 self.assertEqual(result.dy[i], math.sqrt( 108 (0.5 * 1.0)**2 + (1.0 * 2.0)**2)) 109 104 110 def test_div(self): 105 result = self.data2 /self.data111 result = self.data2 / self.data 106 112 for i in range(5): 107 113 self.assertEqual(result.y[i], 0.5) 108 self.assertEqual(result.dy[i], math.sqrt((1.0/2.0)**2+(0.5*1.0/4.0)**2)) 109 114 self.assertEqual(result.dy[i], math.sqrt( 115 (1.0 / 2.0)**2 + (0.5 * 1.0 / 4.0)**2)) 116 110 117 def test_radd(self): 111 result = self.data +3.0118 result = self.data + 3.0 112 119 for i in range(5): 113 120 self.assertEqual(result.y[i], 5.0) 114 121 self.assertEqual(result.dy[i], 0.5) 115 116 result = 3.0 +self.data122 123 result = 3.0 + self.data 117 124 for i in range(5): 118 125 self.assertEqual(result.y[i], 5.0) 119 126 self.assertEqual(result.dy[i], 0.5) 120 127 121 128 def test_rsub(self): 122 result = self.data -3.0129 result = self.data - 3.0 123 130 for i in range(5): 124 131 self.assertEqual(result.y[i], -1.0) 125 132 self.assertEqual(result.dy[i], 0.5) 126 127 result = 3.0 -self.data133 134 result = 3.0 - self.data 128 135 for i in range(5): 129 136 self.assertEqual(result.y[i], 1.0) 130 137 self.assertEqual(result.dy[i], 0.5) 131 138 132 139 def test_rmul(self): 133 result = self.data *3.0140 result = self.data * 3.0 134 141 for i in range(5): 135 142 self.assertEqual(result.y[i], 6.0) 136 143 self.assertEqual(result.dy[i], 1.5) 137 138 result = 3.0 *self.data144 145 result = 3.0 * self.data 139 146 for i in range(5): 140 147 self.assertEqual(result.y[i], 6.0) 141 148 self.assertEqual(result.dy[i], 1.5) 142 149 143 150 def test_rdiv(self): 144 result = self.data /4.0151 result = self.data / 4.0 145 152 for i in range(5): 146 153 self.assertEqual(result.y[i], 0.5) 147 154 self.assertEqual(result.dy[i], 0.125) 148 149 result = 6.0 /self.data155 156 result = 6.0 / self.data 150 157 for i in range(5): 151 158 self.assertEqual(result.y[i], 3.0) 152 self.assertEqual(result.dy[i], 6.0*0.5/4.0) 153 154 class manip_2D(unittest.TestCase): 155 159 self.assertEqual(result.dy[i], 6.0 * 0.5 / 4.0) 160 161 162 class Manin2DTests(unittest.TestCase): 163 156 164 def setUp(self): 157 165 # Create two data sets to play with 158 x_0 = 2.0 *np.ones(25)159 dx_0 = 0.5 *np.ones(25)166 x_0 = 2.0 * np.ones(25) 167 dx_0 = 0.5 * np.ones(25) 160 168 qx_0 = np.arange(25) 161 169 qy_0 = np.arange(25) 162 170 mask_0 = np.zeros(25) 163 dqx_0 = np.arange(25) /100164 dqy_0 = np.arange(25) /100171 dqx_0 = np.arange(25) / 100 172 dqy_0 = np.arange(25) / 100 165 173 q_0 = np.sqrt(qx_0 * qx_0 + qy_0 * qy_0) 166 self.data = Data2D(image=x_0, err_image=dx_0, qx_data=qx_0, 167 qy_data=qy_0, q_data=q_0, mask=mask_0, 174 self.data = Data2D(image=x_0, err_image=dx_0, qx_data=qx_0, 175 qy_data=qy_0, q_data=q_0, mask=mask_0, 168 176 dqx_data=dqx_0, dqy_data=dqy_0) 169 177 170 178 y = np.ones(25) 171 179 dy = np.ones(25) … … 174 182 mask = np.zeros(25) 175 183 q = np.sqrt(qx * qx + qy * qy) 176 self.data2 = Data2D(image=y, err_image=dy, qx_data=qx, qy_data=qy, 184 self.data2 = Data2D(image=y, err_image=dy, qx_data=qx, qy_data=qy, 177 185 q_data=q, mask=mask) 178 179 186 180 187 def test_load(self): 181 188 """ … … 184 191 # There should be 5 entries in the file 185 192 self.assertEqual(np.size(self.data.data), 25) 186 193 187 194 for i in range(25): 188 195 # All y-error values should be 0.5 189 self.assertEqual(self.data.err_data[i], 0.5) 190 196 self.assertEqual(self.data.err_data[i], 0.5) 197 191 198 # All y values should be 2.0 192 self.assertEqual(self.data.data[i], 2.0) 193 199 self.assertEqual(self.data.data[i], 2.0) 200 194 201 def test_add(self): 195 result = self.data2 +self.data202 result = self.data2 + self.data 196 203 for i in range(25): 197 204 self.assertEqual(result.data[i], 3.0) 198 self.assertEqual(result.err_data[i], math.sqrt(0.5**2 +1.0))199 205 self.assertEqual(result.err_data[i], math.sqrt(0.5**2 + 1.0)) 206 200 207 def test_sub(self): 201 result = self.data2 -self.data202 for i in range(25): 203 204 self.assertEqual(result.err_data[i], math.sqrt(0.5**2+1.0))205 208 result = self.data2 - self.data 209 for i in range(25): 210 self.assertEqual(result.data[i], -1.0) 211 self.assertEqual(result.err_data[i], math.sqrt(0.5**2 + 1.0)) 212 206 213 def test_mul(self): 207 result = self.data2 *self.data214 result = self.data2 * self.data 208 215 for i in range(25): 209 216 self.assertEqual(result.data[i], 2.0) 210 self.assertEqual(result.err_data[i], math.sqrt((0.5*1.0)**2+(1.0*2.0)**2)) 211 217 self.assertEqual(result.err_data[i], math.sqrt( 218 (0.5 * 1.0)**2 + (1.0 * 2.0)**2)) 219 212 220 def test_div(self): 213 result = self.data2 /self.data221 result = self.data2 / self.data 214 222 for i in range(25): 215 223 self.assertEqual(result.data[i], 0.5) 216 self.assertEqual(result.err_data[i], math.sqrt((1.0/2.0)**2+(0.5*1.0/4.0)**2)) 217 224 self.assertEqual(result.err_data[i], math.sqrt( 225 (1.0 / 2.0)**2 + (0.5 * 1.0 / 4.0)**2)) 226 218 227 def test_radd(self): 219 result = self.data +3.0228 result = self.data + 3.0 220 229 for i in range(25): 221 230 self.assertEqual(result.data[i], 5.0) 222 231 self.assertEqual(result.err_data[i], 0.5) 223 224 result = 3.0 +self.data232 233 result = 3.0 + self.data 225 234 for i in range(25): 226 235 self.assertEqual(result.data[i], 5.0) 227 236 self.assertEqual(result.err_data[i], 0.5) 228 237 229 238 def test_rsub(self): 230 result = self.data -3.0239 result = self.data - 3.0 231 240 for i in range(25): 232 241 self.assertEqual(result.data[i], -1.0) 233 242 self.assertEqual(result.err_data[i], 0.5) 234 235 result = 3.0 -self.data243 244 result = 3.0 - self.data 236 245 for i in range(25): 237 246 self.assertEqual(result.data[i], 1.0) 238 247 self.assertEqual(result.err_data[i], 0.5) 239 248 240 249 def test_rmul(self): 241 result = self.data *3.0250 result = self.data * 3.0 242 251 for i in range(25): 243 252 self.assertEqual(result.data[i], 6.0) 244 253 self.assertEqual(result.err_data[i], 1.5) 245 246 result = 3.0 *self.data254 255 result = 3.0 * self.data 247 256 for i in range(25): 248 257 self.assertEqual(result.data[i], 6.0) 249 258 self.assertEqual(result.err_data[i], 1.5) 250 259 251 260 def test_rdiv(self): 252 result = self.data /4.0261 result = self.data / 4.0 253 262 for i in range(25): 254 263 self.assertEqual(result.data[i], 0.5) 255 264 self.assertEqual(result.err_data[i], 0.125) 256 265 257 result = 6.0 /self.data266 result = 6.0 / self.data 258 267 for i in range(25): 259 268 self.assertEqual(result.data[i], 3.0) 260 self.assertEqual(result.err_data[i], 6.0*0.5/4.0) 261 262 class extra_manip_2D(unittest.TestCase): 263 269 self.assertEqual(result.err_data[i], 6.0 * 0.5 / 4.0) 270 271 272 class ExtraManip2DTests(unittest.TestCase): 273 264 274 def setUp(self): 265 275 # Create two data sets to play with 266 x_0 = 2.0 *np.ones(25)267 dx_0 = 0.5 *np.ones(25)276 x_0 = 2.0 * np.ones(25) 277 dx_0 = 0.5 * np.ones(25) 268 278 qx_0 = np.arange(25) 269 279 qy_0 = np.arange(25) 270 280 mask_0 = np.zeros(25) 271 dqx_0 = np.arange(25) /100272 dqy_0 = np.arange(25) /100281 dqx_0 = np.arange(25) / 100 282 dqy_0 = np.arange(25) / 100 273 283 q_0 = np.sqrt(qx_0 * qx_0 + qy_0 * qy_0) 274 self.data = Data2D(image=x_0, err_image=dx_0, qx_data=qx_0, 275 qy_data=qy_0, q_data=q_0, mask=mask_0, 284 self.data = Data2D(image=x_0, err_image=dx_0, qx_data=qx_0, 285 qy_data=qy_0, q_data=q_0, mask=mask_0, 276 286 dqx_data=dqx_0, dqy_data=dqy_0) 277 287 278 288 y = np.ones(25) 279 289 dy = np.ones(25) … … 282 292 mask = np.zeros(25) 283 293 q = np.sqrt(qx * qx + qy * qy) 284 self.data2 = Data2D(image=y, err_image=dy, qx_data=qx, qy_data=qy, 294 self.data2 = Data2D(image=y, err_image=dy, qx_data=qx, qy_data=qy, 285 295 q_data=q, mask=mask) 286 287 296 288 297 def test_load(self): 289 298 """ … … 292 301 # There should be 5 entries in the file 293 302 self.assertEqual(np.size(self.data.data), 25) 294 303 295 304 for i in range(25): 296 305 # All y-error values should be 0.5 297 self.assertEqual(self.data.err_data[i], 0.5) 298 306 self.assertEqual(self.data.err_data[i], 0.5) 307 299 308 # All y values should be 2.0 300 self.assertEqual(self.data.data[i], 2.0) 301 309 self.assertEqual(self.data.data[i], 2.0) 310 302 311 def test_add(self): 303 result = self.data2 +self.data312 result = self.data2 + self.data 304 313 for i in range(25): 305 314 self.assertEqual(result.data[i], 3.0) 306 self.assertEqual(result.err_data[i], math.sqrt(0.5**2 +1.0))307 315 self.assertEqual(result.err_data[i], math.sqrt(0.5**2 + 1.0)) 316 308 317 def test_sub(self): 309 result = self.data2 -self.data310 for i in range(25): 311 312 self.assertEqual(result.err_data[i], math.sqrt(0.5**2+1.0))313 318 result = self.data2 - self.data 319 for i in range(25): 320 self.assertEqual(result.data[i], -1.0) 321 self.assertEqual(result.err_data[i], math.sqrt(0.5**2 + 1.0)) 322 314 323 def test_mul(self): 315 result = self.data2 *self.data324 result = self.data2 * self.data 316 325 for i in range(25): 317 326 self.assertEqual(result.data[i], 2.0) 318 self.assertEqual(result.err_data[i], math.sqrt((0.5*1.0)**2+(1.0*2.0)**2)) 319 327 self.assertEqual(result.err_data[i], math.sqrt( 328 (0.5 * 1.0)**2 + (1.0 * 2.0)**2)) 329 320 330 def test_div(self): 321 result = self.data2 /self.data331 result = self.data2 / self.data 322 332 for i in range(25): 323 333 self.assertEqual(result.data[i], 0.5) 324 self.assertEqual(result.err_data[i], math.sqrt((1.0/2.0)**2+(0.5*1.0/4.0)**2)) 325 334 self.assertEqual(result.err_data[i], math.sqrt( 335 (1.0 / 2.0)**2 + (0.5 * 1.0 / 4.0)**2)) 336 326 337 def test_radd(self): 327 result = self.data +3.0338 result = self.data + 3.0 328 339 for i in range(25): 329 340 self.assertEqual(result.data[i], 5.0) 330 341 self.assertEqual(result.err_data[i], 0.5) 331 332 result = 3.0 +self.data342 343 result = 3.0 + self.data 333 344 for i in range(25): 334 345 self.assertEqual(result.data[i], 5.0) 335 346 self.assertEqual(result.err_data[i], 0.5) 336 347 337 348 def test_rsub(self): 338 result = self.data -3.0349 result = self.data - 3.0 339 350 for i in range(25): 340 351 self.assertEqual(result.data[i], -1.0) 341 352 self.assertEqual(result.err_data[i], 0.5) 342 343 result = 3.0 -self.data353 354 result = 3.0 - self.data 344 355 for i in range(25): 345 356 self.assertEqual(result.data[i], 1.0) 346 357 self.assertEqual(result.err_data[i], 0.5) 347 358 348 359 def test_rmul(self): 349 result = self.data *3.0360 result = self.data * 3.0 350 361 for i in range(25): 351 362 self.assertEqual(result.data[i], 6.0) 352 363 self.assertEqual(result.err_data[i], 1.5) 353 354 result = 3.0 *self.data364 365 result = 3.0 * self.data 355 366 for i in range(25): 356 367 self.assertEqual(result.data[i], 6.0) 357 368 self.assertEqual(result.err_data[i], 1.5) 358 369 359 370 def test_rdiv(self): 360 result = self.data /4.0371 result = self.data / 4.0 361 372 for i in range(25): 362 373 self.assertEqual(result.data[i], 0.5) 363 374 self.assertEqual(result.err_data[i], 0.125) 364 375 365 result = 6.0 /self.data376 result = 6.0 / self.data 366 377 for i in range(25): 367 378 self.assertEqual(result.data[i], 3.0) 368 self.assertEqual(result.err_data[i], 6.0*0.5/4.0) 379 self.assertEqual(result.err_data[i], 6.0 * 0.5 / 4.0) 380 369 381 370 382 if __name__ == '__main__': 371 383 unittest.main() 372 -
test/sasrealspace/test/early_test.py
r959eb01 raaf5e49 1 from __future__ import print_function 1 2 2 3 import VolumeCanvas … … 30 31 t_0 = time.time() 31 32 value_1 = 1.0e8*canvas.getIq(0.1) 32 print "density = 0.1: output=%g time=%g" % (value_1, time.time()-t_0)33 print("density = 0.1: output=%g time=%g" % (value_1, time.time()-t_0)) 33 34 34 35 t_0 = time.time() 35 36 canvas.setParam('lores_density', 1) 36 37 value_1 = 1.0e8*canvas.getIq(0.1) 37 print "density = 1000: output=%g time=%g" % (value_1, time.time()-t_0)38 print("density = 1000: output=%g time=%g" % (value_1, time.time()-t_0)) 38 39 39 40 t_0 = time.time() 40 41 canvas.setParam('lores_density', 0.01) 41 42 value_1 = 1.0e8*canvas.getIq(0.1) 42 print "density = 0.00001: output=%g time=%g" % (value_1, time.time()-t_0)43 print 43 print("density = 0.00001: output=%g time=%g" % (value_1, time.time()-t_0)) 44 print() 44 45 45 46 … … 63 64 #ana_1 = form_factor(q, radius) 64 65 65 print "q=%g sim=%g ana=%g ratio=%g" % (q, sim_1, ana_1, sim_1/ana_1)66 print("q=%g sim=%g ana=%g ratio=%g" % (q, sim_1, ana_1, sim_1/ana_1)) 66 67 67 68 def test_2(): … … 73 74 shell_vol = 4.0/3.0*math.pi*outer_radius*outer_radius*outer_radius - core_vol 74 75 shell_sld = -1.0*core_vol/shell_vol 75 print "Shell SLD", shell_sld76 print("Shell SLD", shell_sld) 76 77 77 78 … … 126 127 ana_1 = sphere.run(q) 127 128 128 print "q=%g sim=%g ana=%g ratio=%g" % (q, sim_1, ana_1, sim_1/ana_1)129 print("q=%g sim=%g ana=%g ratio=%g" % (q, sim_1, ana_1, sim_1/ana_1)) 129 130 out.write( "%g %g %g\n" % (q, sim_1, ana_1)) 130 131 … … 168 169 #ana_1 = form_factor(q, radius) 169 170 170 print "q=%g sim=%g ana=%g ratio=%g" % (q, sim_1, ana_1, sim_1/ana_1)171 print("q=%g sim=%g ana=%g ratio=%g" % (q, sim_1, ana_1, sim_1/ana_1)) 171 172 172 173 def test_5(): … … 193 194 ana = ana.runXY([0.1, 0.1]) 194 195 sim = model.getIq2D(0.1, 0.1) 195 print ana, sim, sim/ana, ana/sim196 print(ana, sim, sim/ana, ana/sim) 196 197 197 198 def test_6(): … … 232 233 233 234 234 print model.npts235 print(model.npts) 235 236 for i in range(40): 236 237 qmax = 0.5 … … 240 241 anaY = ana.runXY([0, qmax*i/40.0]) 241 242 simY = model.getIq2D(0, qmax*i/40.0) 242 print anaX, simX, simX/anaX, '|', anaY, simY, simY/anaY243 print(anaX, simX, simX/anaX, '|', anaY, simY, simY/anaY) 243 244 244 245 def test_7(): 245 246 from sas.models.CoreShellModel import CoreShellModel 246 print "Testing core-shell"247 print("Testing core-shell") 247 248 radius = 15 248 249 thickness = 5 … … 287 288 ana_val = ana.runXY([q, 0.2]) 288 289 sim_val, err = canvas.getIq2DError(q, 0.2) 289 print ana_val, sim_val, sim_val/ana_val, err, (sim_val-ana_val)/err290 print(ana_val, sim_val, sim_val/ana_val, err, (sim_val-ana_val)/err) 290 291 291 292 -
test/sasrealspace/test/sim_validation.py
rac07a3a raaf5e49 5 5 @license: This software is provided as part of the DANSE project 6 6 """ 7 from __future__ import print_function 8 7 9 import math, time, pylab 8 10 9 11 try: 10 12 import VolumeCanvas 11 print "Testing local version"13 print("Testing local version") 12 14 except: 13 print "Testing installed version"15 print("Testing installed version") 14 16 import sas.sascalc.realspace.VolumeCanvas as VolumeCanvas 15 17 … … 250 252 ana = validator.run_ana(q) 251 253 sim, err = validator.run_sim(q) 252 print 253 (sim-ana), sim/ana, str(math.fabs(sim-ana)>err)) 254 print("q=%-g ana=%-g sim=%-g err=%-g diff=%-g (%-g) %s" % (q, ana, sim, err, 255 (sim-ana), sim/ana, str(math.fabs(sim-ana)>err))) 254 256 output.write("%g %g %g %g\n" % (q, ana, sim, err)) 255 257 output.close() … … 278 280 ana = validator.run_ana2D(q*math.cos(phi), q*math.sin(phi)) 279 281 sim, err = validator.run_sim2D(q*math.cos(phi), q*math.sin(phi)) 280 print 281 (sim-ana), sim/ana, str(math.fabs(sim-ana)>err)) 282 print("q=%-g ana=%-g sim=%-g err=%-g diff=%-g (%-g) %s" % (q, ana, sim, err, 283 (sim-ana), sim/ana, str(math.fabs(sim-ana)>err))) 282 284 output.write("%g %g %g %g\n" % (q, ana, sim, err)) 283 print "Time elapsed: ", time.time()-t_0285 print("Time elapsed: ", time.time()-t_0) 284 286 output.close() 285 287 … … 306 308 for d in d_list: 307 309 sim, err = validator.run_sim(q, density=d) 308 print 310 print("d=%-g ana=%-g sim=%-g err=%-g diff=%-g (%g) %s" % \ 309 311 (d, ana, sim, err, (sim-ana), (sim-ana)/ana, 310 str(math.fabs(sim-ana)>err)) 312 str(math.fabs(sim-ana)>err))) 311 313 output.write("%g %g %g %g \n" % (d, ana, sim, err)) 312 314 output.close() -
test/sasrealspace/test/utest_oriented.py
r959eb01 raaf5e49 3 3 @copyright: University of Tennessee, for the DANSE project 4 4 """ 5 from __future__ import print_function 5 6 6 7 import unittest, math, sys … … 16 17 try: 17 18 import VolumeCanvas 18 print "Testing local version"19 print("Testing local version") 19 20 except: 20 print sys.exc_value21 print(sys.exc_value) 21 22 #testing the version that is working on 22 print "Testing installed version"23 print("Testing installed version") 23 24 import sas.sascalc.realspace.VolumeCanvas as VolumeCanvas 24 25 … … 241 242 self.assert_( math.fabs(sim_val/ana_val-1.0)<0.05 ) 242 243 except: 243 print "Error", ana_val, sim_val, sim_val/ana_val244 print("Error", ana_val, sim_val, sim_val/ana_val) 244 245 raise sys.exc_type, sys.exc_value 245 246 … … 395 396 self.assert_( math.fabs(sim_val/ana_val-1.0)<0.05 ) 396 397 except: 397 print "Error", ana_val, sim_val, sim_val/ana_val398 print("Error", ana_val, sim_val, sim_val/ana_val) 398 399 raise sys.exc_type, sys.exc_value 399 400 … … 407 408 self.assert_( math.fabs(sim_val/ana_val-1.0)<0.05 ) 408 409 except: 409 print "Error", ana_val, sim_val, sim_val/ana_val410 print("Error", ana_val, sim_val, sim_val/ana_val) 410 411 raise sys.exc_type, sys.exc_value 411 412 … … 419 420 self.assert_( math.fabs(sim_val/ana_val-1.0)<0.05 ) 420 421 except: 421 print "Error", ana_val, sim_val, sim_val/ana_val422 print("Error", ana_val, sim_val, sim_val/ana_val) 422 423 raise sys.exc_type, sys.exc_value 423 424 … … 431 432 self.assert_( math.fabs(sim_val/ana_val-1.0)<0.05 ) 432 433 except: 433 print "Error", ana_val, sim_val, sim_val/ana_val434 print("Error", ana_val, sim_val, sim_val/ana_val) 434 435 raise sys.exc_type, sys.exc_value 435 436 -
test/sasrealspace/test/utest_realspace.py
r45dffa69 raaf5e49 3 3 @author: Mathieu Doucet / UTK 4 4 """ 5 from __future__ import print_function 5 6 6 7 import unittest, math, time … … 15 16 try: 16 17 import VolumeCanvas 17 print "Testing local version"18 print("Testing local version") 18 19 except: 19 20 import sys 20 print sys.exc_value21 print(sys.exc_value) 21 22 #testing the version that is working on 22 print "Testing installed version"23 print("Testing installed version") 23 24 import sas.sascalc.realspace.VolumeCanvas as VolumeCanvas 24 25 -
test/utest_sasview.py
r959eb01 raaf5e49 1 1 #!/usr/bin/env python 2 from __future__ import print_function 3 2 4 import os 3 5 import subprocess … … 80 82 if has_failed: 81 83 failed += 1 82 print "Result for %s (%s): FAILED" % (module_name, module_dir)83 print std_out84 print("Result for %s (%s): FAILED" % (module_name, module_dir)) 85 print(std_out) 84 86 else: 85 87 passed += 1 86 print "Result for %s: SUCCESS" % module_name88 print("Result for %s: SUCCESS" % module_name) 87 89 88 print "\n----------------------------------------------"90 print("\n----------------------------------------------") 89 91 if n_tests == 0: 90 print "No tests."92 print("No tests.") 91 93 else: 92 print "Results by test modules:"93 print " PASSED: %d" % passed94 print("Results by test modules:") 95 print(" PASSED: %d" % passed) 94 96 ratio = 100.0*failed/(failed+passed) 95 print " FAILED: %d (%.0f%%)" % (failed,ratio)97 print(" FAILED: %d (%.0f%%)" % (failed,ratio)) 96 98 97 print "Results by tests:"98 print " Tests run: %d" % n_tests99 print " Tests failed: %d" % n_failures100 print " Test errors: %d" % n_errors101 print "----------------------------------------------"99 print("Results by tests:") 100 print(" Tests run: %d" % n_tests) 101 print(" Tests failed: %d" % n_failures) 102 print(" Test errors: %d" % n_errors) 103 print("----------------------------------------------") 102 104 103 105 return failed -
test/sascalculator/test/utest_slit_length_calculator.py
r959eb01 rb09095a 5 5 import unittest 6 6 from sas.sascalc.dataloader.readers.ascii_reader import Reader 7 from sas.sascalc.calculator.slit_length_calculator import SlitlengthCalculator as calculator 7 from sas.sascalc.calculator.slit_length_calculator import SlitlengthCalculator \ 8 as calculator 8 9 9 import os.path10 10 11 class slit_calculator(unittest.TestCase):11 class SlitCalculator(unittest.TestCase): 12 12 13 13 def setUp(self): … … 15 15 self.reader = Reader() 16 16 17 def test_slit length_calculation(self):17 def test_slit_length_calculation(self): 18 18 """ 19 19 Test slit_length_calculator" 20 20 """ 21 f = self.reader.read("beam profile.DAT") 21 list = self.reader.read("beam profile.DAT") 22 self.assertTrue(len(list) == 1) 23 f = list[0] 22 24 cal = calculator() 23 25 cal.set_data(f.x,f.y) 24 slit length = cal.calculate_slit_length()26 slit_length = cal.calculate_slit_length() 25 27 26 28 # The value "5.5858" was obtained by manual calculation. 27 29 # It turns out our slit length is FWHM/2 28 self.assertAlmostEqual(slit length,5.5858/2, 3)30 self.assertAlmostEqual(slit_length, 5.5858/2, 3) 29 31 30 32 -
test/sasdataloader/test/utest_ascii.py
r959eb01 rad92c5a 6 6 7 7 import unittest 8 from sas.sascalc.dataloader.loader import Loader 9 10 import os.path 8 from sas.sascalc.dataloader.loader import Loader 11 9 12 class abs_reader(unittest.TestCase): 10 11 class ABSReaderTests(unittest.TestCase): 13 12 14 13 def setUp(self): 15 14 self.loader = Loader() 16 15 self.f1_list = self.loader.load("ascii_test_1.txt") 16 self.f1 = self.f1_list[0] 17 self.f2_list = self.loader.load("ascii_test_2.txt") 18 self.f2 = self.f2_list[0] 19 self.f3_list = self.loader.load("ascii_test_3.txt") 20 self.f3 = self.f3_list[0] 21 self.f4_list = self.loader.load("ascii_test_4.abs") 22 self.f4 = self.f4_list[0] 23 self.f5_list = self.loader.load("ascii_test_5.txt") 24 self.f5 = self.f5_list[0] 25 17 26 def test_checkdata(self): 18 27 """ 19 28 Test .ABS file loaded as ascii 20 29 """ 21 f = self.loader.load("ascii_test_1.txt")22 30 # The length of the data is 10 23 self.assertEqual(len( f.x), 10)24 self.assertEqual( f.x[0],0.002618)25 self.assertEqual( f.x[9],0.0497)26 self.assertEqual( f.x_unit, '1/A')27 self.assertEqual( f.y_unit, '1/cm')31 self.assertEqual(len(self.f1.x), 10) 32 self.assertEqual(self.f1.x[0],0.002618) 33 self.assertEqual(self.f1.x[9],0.0497) 34 self.assertEqual(self.f1.x_unit, '1/A') 35 self.assertEqual(self.f1.y_unit, '1/cm') 28 36 29 self.assertEqual( f.meta_data['loader'],"ASCII")30 37 self.assertEqual(self.f1.meta_data['loader'],"ASCII") 38 31 39 def test_truncated_1(self): 32 40 """ … … 38 46 as though it were the start of a footer). 39 47 """ 40 # Test .ABS file loaded as ascii 41 f = self.loader.load("ascii_test_2.txt") 42 # The length of the data is 10 43 self.assertEqual(len(f.x), 5) 44 self.assertEqual(f.x[0],0.002618) 45 self.assertEqual(f.x[4],0.02356) 46 48 # The length of the data is 5 49 self.assertEqual(len(self.f2.x), 5) 50 self.assertEqual(self.f2.x[0],0.002618) 51 self.assertEqual(self.f2.x[4],0.02356) 52 47 53 def test_truncated_2(self): 48 54 """ … … 52 58 reading at the first inconsitent line. 53 59 """ 54 # Test .ABS file loaded as ascii55 f = self.loader.load("ascii_test_3.txt")56 60 # The length of the data is 5 57 self.assertEqual(len( f.x), 5)58 self.assertEqual( f.x[0],0.002618)59 self.assertEqual( f.x[4],0.02356)60 61 self.assertEqual(len(self.f3.x), 5) 62 self.assertEqual(self.f3.x[0],0.002618) 63 self.assertEqual(self.f3.x[4],0.02356) 64 61 65 def test_truncated_3(self): 62 66 """ … … 66 70 reading at the last line of header. 67 71 """ 68 # Test .ABS file loaded as ascii69 f = self.loader.load("ascii_test_4.abs")70 72 # The length of the data is 5 71 self.assertEqual(len( f.x), 5)72 self.assertEqual( f.x[0],0.012654)73 self.assertEqual( f.x[4],0.02654)74 73 self.assertEqual(len(self.f4.x), 5) 74 self.assertEqual(self.f4.x[0],0.012654) 75 self.assertEqual(self.f4.x[4],0.02654) 76 75 77 def test_truncated_4(self): 76 78 """ … … 78 80 Only the last 5 2-col lines should be read. 79 81 """ 80 # Test .ABS file loaded as ascii81 f = self.loader.load("ascii_test_5.txt")82 82 # The length of the data is 5 83 self.assertEqual(len( f.x), 5)84 self.assertEqual( f.x[0],0.02879)85 self.assertEqual( f.x[4],0.0497)86 83 self.assertEqual(len(self.f5.x), 5) 84 self.assertEqual(self.f5.x[0],0.02879) 85 self.assertEqual(self.f5.x[4],0.0497) 86 87 87 def test_truncated_5(self): 88 88 """ 89 Test a 6-col ascii file with complex header where one of them has a letter and90 many lines with 2 or 2 columns in the middle of the data section.91 Only last four lines should be read.89 Test a 6-col ascii file with complex header where one of them has a 90 letter and many lines with 2 or 2 columns in the middle of the data 91 section. Will be rejected because fewer than 5 lines. 92 92 """ 93 93 # Test .ABS file loaded as ascii … … 98 98 except: 99 99 self.assertEqual(f, None) 100 100 101 101 if __name__ == '__main__': 102 102 unittest.main() -
test/sasdataloader/test/utest_red2d_reader.py
r959eb01 r248ff73 7 7 import unittest 8 8 from sas.sascalc.dataloader.loader import Loader 9 9 10 10 import os.path 11 11 12 12 class abs_reader(unittest.TestCase): 13 13 14 14 def setUp(self): 15 15 self.loader = Loader() 16 16 17 17 def test_checkdata(self): 18 18 """ 19 19 Test .DAT file loaded as IGOR/DAT 2D Q_map 20 20 """ 21 f = self.loader.load("exp18_14_igor_2dqxqy.dat") 21 f = self.loader.load("exp18_14_igor_2dqxqy.dat")[0] 22 22 # The length of the data is 10 23 23 self.assertEqual(len(f.qx_data), 36864) … … 26 26 self.assertEqual(f.Q_unit, '1/A') 27 27 self.assertEqual(f.I_unit, '1/cm') 28 28 29 29 self.assertEqual(f.meta_data['loader'],"IGOR/DAT 2D Q_map") 30 31 30 31 32 32 if __name__ == '__main__': 33 33 unittest.main() 34 -
test/sasinvariant/test/utest_use_cases.py
r959eb01 rb09095a 6 6 import unittest 7 7 from sas.sascalc.dataloader.loader import Loader 8 9 8 from sas.sascalc.invariant import invariant 9 10 10 11 11 class Data1D: 12 12 pass 13 13 14 14 15 class TestLineFit(unittest.TestCase): 15 16 """ … … 17 18 """ 18 19 def setUp(self): 19 self.data = Loader().load("linefittest.txt") 20 20 self.data_list = Loader().load("linefittest.txt") 21 self.data = self.data_list[0] 22 21 23 def test_fit_line_data(self): 22 24 """ 23 25 Fit_Test_1: test linear fit, ax +b, without fixed 24 26 """ 25 27 26 28 # Create invariant object. Background and scale left as defaults. 27 29 fit = invariant.Extrapolator(data=self.data) 28 30 29 # #Without holding31 # Without holding 30 32 p, dp = fit.fit(power=None) 31 33 … … 33 35 self.assertAlmostEquals(p[0], 2.3983,3) 34 36 self.assertAlmostEquals(p[1], 0.87833,3) 35 36 37 37 38 def test_fit_line_data_fixed(self): … … 39 40 Fit_Test_2: test linear fit, ax +b, with 'a' fixed 40 41 """ 41 42 42 43 # Create invariant object. Background and scale left as defaults. 43 44 fit = invariant.Extrapolator(data=self.data) 44 45 # With holding a = -power =445 46 # With holding a = -power =4 46 47 p, dp = fit.fit(power=-4) 47 48 … … 49 50 self.assertAlmostEquals(p[0], 4) 50 51 self.assertAlmostEquals(p[1], -4.0676,3) 51 52 53 52 54 class TestLineFitNoweight(unittest.TestCase): 53 55 """ … … 55 57 """ 56 58 def setUp(self): 57 self.data = Loader().load("linefittest_no_weight.txt") 58 59 self.data_list = Loader().load("linefittest_no_weight.txt") 60 self.data = self.data_list[0] 61 59 62 def skip_test_fit_line_data_no_weight(self): 60 63 """ 61 64 Fit_Test_1: test linear fit, ax +b, without fixed 62 65 """ 63 66 64 67 # Create invariant object. Background and scale left as defaults. 65 68 fit = invariant.Extrapolator(data=self.data) 66 67 # #Without holding69 70 # Without holding 68 71 p, dp = fit.fit(power=None) 69 72 … … 71 74 self.assertAlmostEquals(p[0], 2.4727,3) 72 75 self.assertAlmostEquals(p[1], 0.6,3) 73 74 76 75 77 def test_fit_line_data_fixed_no_weight(self): … … 77 79 Fit_Test_2: test linear fit, ax +b, with 'a' fixed 78 80 """ 79 81 80 82 # Create invariant object. Background and scale left as defaults. 81 83 fit = invariant.Extrapolator(data=self.data) 82 84 83 85 #With holding a = -power =4 84 86 p, dp = fit.fit(power=-4) … … 87 89 self.assertAlmostEquals(p[0], 4) 88 90 self.assertAlmostEquals(p[1], -7.8,3) 89 91 92 90 93 class TestInvPolySphere(unittest.TestCase): 91 94 """ … … 93 96 """ 94 97 def setUp(self): 95 self.data = Loader().load("PolySpheres.txt") 96 98 self.data_list = Loader().load("PolySpheres.txt") 99 self.data = self.data_list[0] 100 97 101 def test_wrong_data(self): 98 102 """ test receiving Data1D not of type loader""" 99 100 101 103 self.assertRaises(ValueError,invariant.InvariantCalculator, Data1D()) 102 104 103 105 def test_use_case_1(self): 104 106 """ … … 107 109 # Create invariant object. Background and scale left as defaults. 108 110 inv = invariant.InvariantCalculator(data=self.data) 109 111 110 112 # We have to be able to tell the InvariantCalculator whether we want the 111 113 # extrapolation or not. By default, when the user doesn't specify, we 112 # should compute Q* without extrapolation. That's what should be done in __init__. 113 114 # should compute Q* without extrapolation. That's what should be done 115 # in __init__. 116 114 117 # We call get_qstar() with no argument, which signifies that we do NOT 115 118 # want extrapolation. 116 119 qstar = inv.get_qstar() 117 120 118 121 # The volume fraction and surface use Q*. That means that the following 119 122 # methods should check that Q* has been computed. If not, it should … … 121 124 v, dv = inv.get_volume_fraction_with_error(contrast=2.6e-6) 122 125 s, ds = inv.get_surface_with_error(contrast=2.6e-6, porod_const=2) 123 126 124 127 # Test results 125 128 self.assertAlmostEquals(qstar, 7.48959e-5,2) 126 129 self.assertAlmostEquals(v, 0.005644689, 4) 127 130 self.assertAlmostEquals(s , 941.7452, 3) 128 131 129 132 def test_use_case_2(self): 130 133 """ 131 132 133 """ 134 # Create invariant object. Background and scale left as defaults. 135 inv = invariant.InvariantCalculator(data=self.data) 136 134 Invariant without extrapolation. Invariant, volume fraction and surface 135 are given with errors. 136 """ 137 # Create invariant object. Background and scale left as defaults. 138 inv = invariant.InvariantCalculator(data=self.data) 139 137 140 # Get the invariant with errors 138 141 qstar, qstar_err = inv.get_qstar_with_error() 139 142 140 143 # The volume fraction and surface use Q*. That means that the following 141 144 # methods should check that Q* has been computed. If not, it should … … 147 150 self.assertAlmostEquals(v, 0.005644689, 1) 148 151 self.assertAlmostEquals(s , 941.7452, 3) 149 150 152 151 153 def test_use_case_3(self): 152 154 """ … … 155 157 # Create invariant object. Background and scale left as defaults. 156 158 inv = invariant.InvariantCalculator(data=self.data) 157 159 158 160 # Set the extrapolation parameters for the low-Q range 159 161 160 162 # The npts parameter should have a good default. 161 163 # The range parameter should be 'high' or 'low' 162 164 # The function parameter should default to None. If it is None, 163 # the method should pick a good default (Guinier at low-Q and 1/q^4 at high-Q). 164 # The method should also check for consistency of the extrapolation and function 165 # parameters. For instance, you might not want to allow 'high' and 'guinier'. 165 # the method should pick a good default 166 # (Guinier at low-Q and 1/q^4 at high-Q). 167 # The method should also check for consistency of the extrapolation 168 # and function parameters. For instance, you might not want to allow 169 # 'high' and 'guinier'. 166 170 # The power parameter (not shown below) should default to 4. 167 171 inv.set_extrapolation(range='low', npts=10, function='guinier') 168 169 # The version of the call without error 170 # At this point, we could still compute Q* without extrapolation by calling171 # get_qstar with arguments, or with extrapolation=None.172 173 # The version of the call without error 174 # At this point, we could still compute Q* without extrapolation by 175 # calling get_qstar with arguments, or with extrapolation=None. 172 176 qstar = inv.get_qstar(extrapolation='low') 173 177 174 178 # The version of the call with error 175 179 qstar, qstar_err = inv.get_qstar_with_error(extrapolation='low') … … 178 182 v, dv = inv.get_volume_fraction_with_error(contrast=2.6e-6) 179 183 s, ds = inv.get_surface_with_error(contrast=2.6e-6, porod_const=2) 180 184 181 185 # Test results 182 186 self.assertAlmostEquals(qstar, 7.49e-5, 1) 183 187 self.assertAlmostEquals(v, 0.005648401, 4) 184 188 self.assertAlmostEquals(s , 941.7452, 3) 185 189 186 190 def test_use_case_4(self): 187 191 """ … … 190 194 # Create invariant object. Background and scale left as defaults. 191 195 inv = invariant.InvariantCalculator(data=self.data) 196 197 # Set the extrapolation parameters for the high-Q range 198 inv.set_extrapolation(range='high', npts=10, function='power_law', 199 power=4) 192 200 193 # Set the extrapolation parameters for the high-Q range 194 inv.set_extrapolation(range='high', npts=10, function='power_law', power=4) 195 196 # The version of the call without error 197 # The function parameter defaults to None, then is picked to be 'power_law' for extrapolation='high' 201 # The version of the call without error 202 # The function parameter defaults to None, then is picked to be 203 # 'power_law' for extrapolation='high' 198 204 qstar = inv.get_qstar(extrapolation='high') 199 205 200 206 # The version of the call with error 201 207 qstar, qstar_err = inv.get_qstar_with_error(extrapolation='high') … … 204 210 v, dv = inv.get_volume_fraction_with_error(contrast=2.6e-6) 205 211 s, ds = inv.get_surface_with_error(contrast=2.6e-6, porod_const=2) 206 212 207 213 # Test results 208 214 self.assertAlmostEquals(qstar, 7.49e-5,2) 209 215 self.assertAlmostEquals(v, 0.005952674, 3) 210 216 self.assertAlmostEquals(s , 941.7452, 3) 211 217 212 218 def test_use_case_5(self): 213 219 """ … … 216 222 # Create invariant object. Background and scale left as defaults. 217 223 inv = invariant.InvariantCalculator(data=self.data) 218 224 219 225 # Set the extrapolation parameters for the low- and high-Q ranges 220 226 inv.set_extrapolation(range='low', npts=10, function='guinier') 221 inv.set_extrapolation(range='high', npts=10, function='power_law', power=4) 222 223 # The version of the call without error 224 # The function parameter defaults to None, then is picked to be 'power_law' for extrapolation='high' 227 inv.set_extrapolation(range='high', npts=10, function='power_law', 228 power=4) 229 230 # The version of the call without error 231 # The function parameter defaults to None, then is picked to be 232 # 'power_law' for extrapolation='high' 225 233 qstar = inv.get_qstar(extrapolation='both') 226 234 … … 231 239 v, dv = inv.get_volume_fraction_with_error(contrast=2.6e-6) 232 240 s, ds = inv.get_surface_with_error(contrast=2.6e-6, porod_const=2) 233 241 234 242 # Test results 235 243 self.assertAlmostEquals(qstar, 7.88981e-5,2) 236 244 self.assertAlmostEquals(v, 0.005952674, 3) 237 245 self.assertAlmostEquals(s , 941.7452, 3) 238 246 239 247 def test_use_case_6(self): 240 248 """ … … 243 251 # Create invariant object. Background and scale left as defaults. 244 252 inv = invariant.InvariantCalculator(data=self.data) 245 253 246 254 # Set the extrapolation parameters for the high-Q range 247 255 inv.set_extrapolation(range='low', npts=10, function='power_law', power=4) 248 256 249 257 # The version of the call without error 250 258 # The function parameter defaults to None, then is picked to be 'power_law' for extrapolation='high' 251 259 qstar = inv.get_qstar(extrapolation='low') 252 260 253 261 # The version of the call with error 254 262 qstar, qstar_err = inv.get_qstar_with_error(extrapolation='low') … … 257 265 v, dv = inv.get_volume_fraction_with_error(contrast=2.6e-6) 258 266 s, ds = inv.get_surface_with_error(contrast=2.6e-6, porod_const=2) 259 267 260 268 # Test results 261 269 self.assertAlmostEquals(qstar, 7.49e-5,2) 262 270 self.assertAlmostEquals(v, 0.005952674, 3) 263 271 self.assertAlmostEquals(s , 941.7452, 3) 264 272 273 265 274 class TestInvPinholeSmear(unittest.TestCase): 266 275 """ … … 271 280 list = Loader().load("latex_smeared.xml") 272 281 self.data_q_smear = list[0] 273 282 274 283 def test_use_case_1(self): 275 284 """ … … 278 287 inv = invariant.InvariantCalculator(data=self.data_q_smear) 279 288 qstar = inv.get_qstar() 280 289 281 290 v = inv.get_volume_fraction(contrast=2.6e-6) 282 291 s = inv.get_surface(contrast=2.6e-6, porod_const=2) … … 285 294 self.assertAlmostEquals(v, 0.115352622, 2) 286 295 self.assertAlmostEquals(s , 941.7452, 3 ) 287 296 288 297 def test_use_case_2(self): 289 298 """ … … 293 302 # Create invariant object. Background and scale left as defaults. 294 303 inv = invariant.InvariantCalculator(data=self.data_q_smear) 295 304 296 305 # Get the invariant with errors 297 306 qstar, qstar_err = inv.get_qstar_with_error() … … 303 312 self.assertAlmostEquals(v, 0.115352622, 2) 304 313 self.assertAlmostEquals(s , 941.7452, 3 ) 305 314 306 315 def test_use_case_3(self): 307 316 """ … … 319 328 v, dv = inv.get_volume_fraction_with_error(contrast=2.6e-6) 320 329 s, ds = inv.get_surface_with_error(contrast=2.6e-6, porod_const=2) 321 330 322 331 # Test results 323 332 self.assertAlmostEquals(qstar, 0.00138756,2) 324 333 self.assertAlmostEquals(v, 0.117226896,2) 325 334 self.assertAlmostEquals(s ,941.7452, 3) 326 335 327 336 def test_use_case_4(self): 328 337 """ … … 337 346 # The version of the call with error 338 347 qstar, qstar_err = inv.get_qstar_with_error(extrapolation='high') 339 340 # Get the volume fraction and surface341 # WHY SHOULD THIS FAIL?342 #self.assertRaises(RuntimeError, inv.get_volume_fraction_with_error, 2.6e-6)343 344 # Check that an exception is raised when the 'surface' is not defined345 # WHY SHOULD THIS FAIL?346 #self.assertRaises(RuntimeError, inv.get_surface_with_error, 2.6e-6, 2)347 348 348 349 # Test results 349 350 self.assertAlmostEquals(qstar, 0.0045773,2) 350 351 351 352 def test_use_case_5(self): 352 353 """ … … 357 358 # Set the extrapolation parameters for the low- and high-Q ranges 358 359 inv.set_extrapolation(range='low', npts=10, function='guinier') 359 inv.set_extrapolation(range='high', npts=10, function='power_law', power=4) 360 # The version of the call without error 361 # The function parameter defaults to None, then is picked to be 'power_law' for extrapolation='high' 360 inv.set_extrapolation(range='high', npts=10, function='power_law', 361 power=4) 362 # The version of the call without error 363 # The function parameter defaults to None, then is picked to be 364 # 'power_law' for extrapolation='high' 362 365 qstar = inv.get_qstar(extrapolation='both') 363 366 # The version of the call with error 364 367 qstar, qstar_err = inv.get_qstar_with_error(extrapolation='both') 365 366 # Get the volume fraction and surface 367 # WHY SHOULD THIS FAIL? 368 #self.assertRaises(RuntimeError, inv.get_volume_fraction_with_error, 2.6e-6) 369 #self.assertRaises(RuntimeError, inv.get_surface_with_error, 2.6e-6, 2) 370 368 371 369 # Test results 372 370 self.assertAlmostEquals(qstar, 0.00460319,3)
Note: See TracChangeset
for help on using the changeset viewer.