Commits
27 27 | # |
28 28 | # Test suite for the CASA ms tool, |
29 29 | # using examples from ms.xml |
30 30 | # |
31 31 | ########################################################################### |
32 32 | |
33 33 | import shutil |
34 34 | import os |
35 35 | import time |
36 36 | import unittest |
37 - | from numpy import array, testing, where |
37 + | from numpy import array, ndarray, testing, where |
38 38 | from math import ceil |
39 39 | |
40 40 | from taskinit import mstool, cbtool |
41 41 | |
42 42 | datadir = os.environ.get('CASAPATH').split()[0]+'/data/regression/' |
43 43 | datafile = os.path.join(datadir, "unittest/listobs/ngc5921_ut.ms") |
44 44 | print 'ms tool tests will use data from '+ datafile |
45 45 | |
46 46 | class mstool_test_base(unittest.TestCase): |
47 47 | |
490 490 | self.assertAlmostEqual(rec['data'][0][0][0], (3.1573812961578369+0j)) |
491 491 | # test polarization conversion |
492 492 | self.ms.reset() |
493 493 | self.ms.selectpolarization(["XX"]) |
494 494 | rec = self.ms.getdata(["axis_info", "data"]) |
495 495 | testing.assert_array_equal(rec["axis_info"]["corr_axis"], ["XX"]) |
496 496 | self.assertEqual(rec['data'].shape[0], 1) |
497 497 | self.assertAlmostEqual(rec['data'][0][0][0], (2.7459716796875+0j)) |
498 498 | |
499 499 | |
500 - | def test_select_empty(self): |
501 - | """test ms.select with empty selection""" |
500 + | def test_select_getdata_empty(self): |
501 + | """test ms.select() and ms.getdata() with empty selection""" |
502 502 | self.assertTrue(self.ms.selectinit()) |
503 503 | self.assertEqual(self.ms.nrow(True), 22653) |
504 504 | |
505 505 | # This ms has scans 1-7 only. casacore will throw a MSSelectionNullSelection |
506 + | # ms.msselect should return false and the selection set to empty=0 rows |
506 507 | field = 'N5921_2' |
507 508 | scan = '9999' |
508 509 | sel={'field': field, 'scan': scan} |
509 510 | total_rows = 22653 |
510 511 | self.assertEqual(False, self.ms.msselect(sel)) |
511 512 | self.assertEqual(self.ms.nrow(True), 0) |
512 513 | self.assertEqual(self.ms.nrow(), total_rows) |
513 514 | self.assertEqual(self.ms.msselectedindices()['field'].size, 1) |
514 515 | self.assertEqual(self.ms.msselectedindices()['field'][0], 2) |
515 516 | self.assertEqual(self.ms.msselectedindices()['scan'].size, 1) |
516 517 | self.assertEqual(self.ms.msselectedindices()['scan'][0], int(scan)) |
518 + | # ms.getdata should handle the empty selection gracefully and return an empty dict |
519 + | self.assertEqual({}, self.ms.getdata(["axis_info", "data"])) |
520 + | |
517 521 | self.ms.reset() |
518 522 | self.assertEqual(self.ms.nrow(True), total_rows) |
519 523 | self.assertEqual(self.ms.nrow(False), total_rows) |
520 524 | self.assertEqual(self.ms.msselectedindices()['field'].size, 0) |
521 525 | self.assertEqual(self.ms.msselectedindices()['scan'].size, 0) |
526 + | get_res = self.ms.getdata(["axis_info", "data"]) |
527 + | self.assertTrue('data' in get_res) |
528 + | self.assertEqual(type(get_res['data']), ndarray) |
529 + | self.assertEqual(get_res['data'].shape, (2, 63, 22653)) |
522 530 | |
523 531 | def test_msseltoindex(self): |
524 532 | """test ms.msseltoindex""" |
525 533 | # select field id 2 |
526 534 | rec = self.ms.msseltoindex(self.testms, field="N*") |
527 535 | self.assertEqual(rec['field'], [2]) |
528 536 | |
529 537 | |
530 538 | |
531 539 | # ------------------------------------------------------------------------------ |