def test_spw_separation(self): '''Partition: create an MMS separated by spws with observation selection''' # NOTE: ms.getscansummary() used in ph.getScanNrows does not honour several observation # IDs, therefore I need to selection by obs id in partition partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='spw', observation='2') time.sleep(10) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Dictionary with selection to compare with original MS mysel = {'observation': '2'} # Compare nrows of all scans in MMS and MS slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s, selection=mysel) self.assertEqual( mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' % (s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s, selection=mysel) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mmsN, msN))
def test_scan_spw(self): '''Partition: separationaxis=scan with spw selection''' partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='scan', spw='1~4,10,11') time.sleep(10) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Dictionary with selection to compare with original MS mysel = {'spw': '1~4,10,11'} # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s, selection=mysel) self.assertEqual( mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' % (s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s, selection=mysel) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mms_spw, ms_spw))
def test_scan_selection(self): '''Partition: create an MMS using scan selection''' partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='scan', scan='1,2,3,11') time.sleep(10) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) self.assertEqual(slist.__len__(), 4) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s) self.assertEqual( mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' % (s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mmsN, msN))
def test_default(self): '''Partition: create an MMS with default values''' partition(vis=self.msfile, outputvis=self.mmsfile) time.sleep(10) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Compare nrows of all scans slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s) self.assertEqual(mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' %(s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mmsN, msN)) # TO DO: Compare both table using compTables when sorting in partition is fixed self.assertTrue(th.compTables(self.msfile, self.mmsfile, ['FLAG','FLAG_CATEGORY','TIME_CENTROID', 'WEIGHT_SPECTRUM','DATA']))
def test_scan_spw(self): '''Partition: separationaxis=scan with spw selection''' partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='scan', spw='1~4,10,11') time.sleep(10) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Dictionary with selection to compare with original MS mysel = {'spw':'1~4,10,11'} # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s, selection=mysel) self.assertEqual(mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' %(s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s, selection=mysel) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mms_spw, ms_spw))
def test_default(self): '''Partition: create an MMS with default values''' partition(vis=self.msfile, outputvis=self.mmsfile) time.sleep(10) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Compare nrows of all scans slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s) self.assertEqual( mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' % (s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mmsN, msN)) # TO DO: Compare both table using compTables when sorting in partition is fixed self.assertTrue( th.compTables(self.msfile, self.mmsfile, [ 'FLAG', 'FLAG_CATEGORY', 'TIME_CENTROID', 'WEIGHT_SPECTRUM', 'DATA' ]))
def test_scan_spw(self): '''Partition: separationaxis=scan with spw selection''' partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='scan', spw='1~4,10,11', flagbackup=False, datacolumn='data') self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') self.assertTrue(os.path.exists(self.msfile),'Make sure the input MS is not deleted inside the task') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Dictionary with selection to compare with original MS mysel = {'spw':'1~4,10,11'} # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s, selection=mysel) self.assertEqual(mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' %(s, mmsN, msN)) # The comparison should be # ms_spw = 1 --> mms_spw = 0 # ms_spw = 2 --> mms_spw = 1, etc. # Check that MMS spw IDs have been re-indexed properly indexed_ids = range(6) for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) self.assertEqual(mms_spw, indexed_ids, 'spw IDs were not properly re-indexed') # The separation axis should be written to the output MMS sepaxis = ph.axisType(self.mmsfile) self.assertEqual(sepaxis, 'scan', 'Partition did not write AxisType correctly in MMS')
def test_scan_selection(self): '''Partition: create an MMS using scan selection''' partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='scan', scan='1,2,3,11') time.sleep(10) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) self.assertEqual(slist.__len__(), 4) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s) self.assertEqual(mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' %(s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mmsN, msN))
def test_default_sequential(self): '''Partition: create an MMS with default values in sequential''' partition(vis=self.msfile, outputvis=self.mmsfile, disableparallel=True) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Get scans of MMS slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s) self.assertEqual(mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' %(s, mmsN, msN)) # Compare spw IDs of MS and MMS for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mmsN, msN)) # The separation axis should be written to the output MMS sepaxis = ph.axisType(self.mmsfile) self.assertEqual(sepaxis, 'scan,spw', 'Partition did not write AxisType correctly in MMS')
def test_spw_selection(self): '''Partition: create an MMS separated by spws with spw=2,4 selection''' partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='spw', spw='2,4', flagbackup=False, disableparallel=True) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Dictionary with selection to compare with original MS mysel = {'spw':'2,4'} # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s, selection=mysel) self.assertEqual(mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' %(s, mmsN, msN)) # spwids are re-indexed. The expected IDs are: # ms_spw = 2 --> mms_spw = 0 # ms_spw = 4 --> mms_spw = 1 # Check that MMS spw IDs have been re-indexed properly indexed_ids = range(2) for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) self.assertEqual(mms_spw, indexed_ids, 'spw IDs were not properly re-indexed')
def test_all_columns(self): '''Partition: datacolumn=all''' partition(vis=self.msfile, outputvis=self.mmsfile, datacolumn='all', flagbackup=False, disableparallel=True) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) self.assertEqual(slist.__len__(), 2) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s) self.assertEqual( mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' % (s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mms_spw, ms_spw))
def test_sepaxis(self): '''Partition: separationaxis=auto''' partition(vis=self.msfile, outputvis=self.mmsfile, spw='0~11',separationaxis='auto', flagbackup=False, disableparallel=True, datacolumn='data') # partition(vis=self.msfile, outputvis=self.mmsfile,separationaxis='auto') self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Dictionary with selection to compare with original MS mysel = {'spw':'0~11'} # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) self.assertEqual(slist.__len__(), 2) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s, selection=mysel) # msN = ph.getScanNrows(self.msfile, s) self.assertEqual(mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' %(s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s, selection=mysel) # ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mms_spw, ms_spw)) # The separation axis should be written to the output MMS sepaxis = ph.axisType(self.mmsfile) self.assertEqual(sepaxis, 'scan,spw', 'Partition did not write AxisType correctly in MMS')
def test_spw_separation(self): '''Partition: create an MMS separated by spws with observation selection''' # NOTE: ms.getscansummary() used in ph.getScanNrows does not honour several observation # IDs, therefore I need to selection by obs id in partition partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='spw', observation='2') time.sleep(10) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Dictionary with selection to compare with original MS mysel = {'observation':'2'} # Compare nrows of all scans in MMS and MS slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s, selection=mysel) self.assertEqual(mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' %(s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s, selection=mysel) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mmsN, msN))
def test_default_sequential(self): '''Partition: create an MMS with default values in sequential''' partition(vis=self.msfile, outputvis=self.mmsfile, disableparallel=True) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Get scans of MMS slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s) self.assertEqual( mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' % (s, mmsN, msN)) # Compare spw IDs of MS and MMS for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mmsN, msN)) # The separation axis should be written to the output MMS sepaxis = ph.axisType(self.mmsfile) self.assertEqual(sepaxis, 'scan,spw', 'Partition did not write AxisType correctly in MMS')
def test_all_columns(self): '''Partition: datacolumn=all''' partition(vis=self.msfile, outputvis=self.mmsfile, datacolumn='all', flagbackup=False, disableparallel=True) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) self.assertEqual(slist.__len__(), 2) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s) self.assertEqual(mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' %(s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mms_spw, ms_spw))
def test_spw_separation(self): '''Partition: create an MMS separated by spws with observation selection''' # NOTE: ms.getscansummary() used in ph.getScanNrows does not honour several observation # IDs, therefore I need to selection by obs id in partition partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='spw', observation='2', flagbackup=False, disableparallel=True) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Dictionary with selection to compare with original MS mysel = {'observation':'2'} # Compare nrows of all scans in MMS and MS slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s, selection=mysel) self.assertEqual(mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' %(s, mmsN, msN)) # spwids are re-indexed. The expected IDs are: # ms_spw = 2 --> mms_spw = 0 # ms_spw = 3 --> mms_spw = 1, etc. # Check that MMS spw IDs have been re-indexed properly indexed_ids = range(4) for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) self.assertEqual(mms_spw, indexed_ids, 'spw IDs were not properly re-indexed')
def test_scan_selection(self): """Partition: create an MMS using scan selection""" partition( vis=self.msfile, outputvis=self.mmsfile, separationaxis="scan", scan="1,2,3,11", flagbackup=False, disableparallel=True, ) self.assertTrue(os.path.exists(self.mmsfile), "MMS was not created for this test") # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) self.assertEqual(slist.__len__(), 4) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s) self.assertEqual(mmsN, msN, "Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s" % (s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual( mms_spw, ms_spw, "list of spws in scan=%s differs: " "mms_spw=%s <--> ms_spw=%s" % (s, mmsN, msN) )
def test_default_scan(self): '''Partition: create an MMS with default values and axis=scan''' partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='scan') self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Compare nrows of all scans slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s) self.assertEqual( mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' % (s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mmsN, msN)) # Sort the output MSs so that they can be compared myms = mstool() myms.open(self.msfile) myms.sort('ms_sorted.ms', [ 'OBSERVATION_ID', 'ARRAY_ID', 'SCAN_NUMBER', 'FIELD_ID', 'DATA_DESC_ID', 'ANTENNA1', 'ANTENNA2', 'TIME' ]) myms.done() myms.open(self.mmsfile) myms.sort('mms_sorted.ms', [ 'OBSERVATION_ID', 'ARRAY_ID', 'SCAN_NUMBER', 'FIELD_ID', 'DATA_DESC_ID', 'ANTENNA1', 'ANTENNA2', 'TIME' ]) myms.done() self.assertTrue( th.compTables('ms_sorted.ms', 'mms_sorted.ms', [ 'FLAG', 'FLAG_CATEGORY', 'TIME_CENTROID', 'WEIGHT_SPECTRUM', 'DATA' ])) # Compare the DATA column self.assertTrue( th.compVarColTables('ms_sorted.ms', 'mms_sorted.ms', 'DATA'))
def test_default_scan(self): """Partition: create an MMS with default values and axis=scan""" partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis="scan") self.assertTrue(os.path.exists(self.mmsfile), "MMS was not created for this test") # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Compare nrows of all scans slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s) self.assertEqual(mmsN, msN, "Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s" % (s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual( mms_spw, ms_spw, "list of spws in scan=%s differs: " "mms_spw=%s <--> ms_spw=%s" % (s, mmsN, msN) ) # Sort the output MSs so that they can be compared myms = mstool() myms.open(self.msfile) myms.sort( "ms_sorted.ms", ["OBSERVATION_ID", "ARRAY_ID", "SCAN_NUMBER", "FIELD_ID", "DATA_DESC_ID", "ANTENNA1", "ANTENNA2", "TIME"], ) myms.done() myms.open(self.mmsfile) myms.sort( "mms_sorted.ms", ["OBSERVATION_ID", "ARRAY_ID", "SCAN_NUMBER", "FIELD_ID", "DATA_DESC_ID", "ANTENNA1", "ANTENNA2", "TIME"], ) myms.done() self.assertTrue( th.compTables( "ms_sorted.ms", "mms_sorted.ms", ["FLAG", "FLAG_CATEGORY", "TIME_CENTROID", "WEIGHT_SPECTRUM", "DATA"] ) ) # Compare the DATA column self.assertTrue(th.compVarColTables("ms_sorted.ms", "mms_sorted.ms", "DATA"))
def test_scan_spw(self): '''Partition: separationaxis=scan with spw selection''' partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='scan', spw='1~4,10,11', flagbackup=False, datacolumn='data') self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') self.assertTrue( os.path.exists(self.msfile), 'Make sure the input MS is not deleted inside the task') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Dictionary with selection to compare with original MS mysel = {'spw': '1~4,10,11'} # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s, selection=mysel) self.assertEqual( mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' % (s, mmsN, msN)) # The comparison should be # ms_spw = 1 --> mms_spw = 0 # ms_spw = 2 --> mms_spw = 1, etc. # Check that MMS spw IDs have been re-indexed properly indexed_ids = range(6) for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) self.assertEqual(mms_spw, indexed_ids, 'spw IDs were not properly re-indexed') # The separation axis should be written to the output MMS sepaxis = ph.axisType(self.mmsfile) self.assertEqual(sepaxis, 'scan', 'Partition did not write AxisType correctly in MMS')
def test_sepaxis(self): '''Partition: separationaxis=auto''' partition(vis=self.msfile, outputvis=self.mmsfile, spw='0~11', separationaxis='auto', flagbackup=False, disableparallel=True, datacolumn='data') # partition(vis=self.msfile, outputvis=self.mmsfile,separationaxis='auto') self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Dictionary with selection to compare with original MS mysel = {'spw': '0~11'} # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) self.assertEqual(slist.__len__(), 2) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s, selection=mysel) # msN = ph.getScanNrows(self.msfile, s) self.assertEqual( mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' % (s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s, selection=mysel) # ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mms_spw, ms_spw)) # The separation axis should be written to the output MMS sepaxis = ph.axisType(self.mmsfile) self.assertEqual(sepaxis, 'scan,spw', 'Partition did not write AxisType correctly in MMS')
def test_sepaxis(self): """Partition: separationaxis=auto""" partition( vis=self.msfile, outputvis=self.mmsfile, spw="0~11", separationaxis="auto", flagbackup=False, disableparallel=True, datacolumn="data", ) # partition(vis=self.msfile, outputvis=self.mmsfile,separationaxis='auto') self.assertTrue(os.path.exists(self.mmsfile), "MMS was not created for this test") # Dictionary with selection to compare with original MS mysel = {"spw": "0~11"} # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) self.assertEqual(slist.__len__(), 2) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s, selection=mysel) # msN = ph.getScanNrows(self.msfile, s) self.assertEqual(mmsN, msN, "Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s" % (s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s, selection=mysel) # ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual( mms_spw, ms_spw, "list of spws in scan=%s differs: " "mms_spw=%s <--> ms_spw=%s" % (s, mms_spw, ms_spw) ) # The separation axis should be written to the output MMS sepaxis = ph.axisType(self.mmsfile) self.assertEqual(sepaxis, "scan,spw", "Partition did not write AxisType correctly in MMS")
def test_default_scan(self): '''Partition: create an MMS with default values and axis=scan''' partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='scan') self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Compare nrows of all scans slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s) self.assertEqual(mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' %(s, mmsN, msN)) # Compare spw IDs for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) ms_spw = ph.getSpwIds(self.msfile, s) self.assertEqual(mms_spw, ms_spw, 'list of spws in scan=%s differs: '\ 'mms_spw=%s <--> ms_spw=%s' %(s, mmsN, msN)) # Sort the output MSs so that they can be compared myms = mstool() myms.open(self.msfile) myms.sort('ms_sorted.ms',['OBSERVATION_ID','ARRAY_ID','SCAN_NUMBER','FIELD_ID','DATA_DESC_ID','ANTENNA1','ANTENNA2','TIME']) myms.done() myms.open(self.mmsfile) myms.sort('mms_sorted.ms',['OBSERVATION_ID','ARRAY_ID','SCAN_NUMBER','FIELD_ID','DATA_DESC_ID','ANTENNA1','ANTENNA2','TIME']) myms.done() self.assertTrue(th.compTables('ms_sorted.ms', 'mms_sorted.ms', ['FLAG','FLAG_CATEGORY','TIME_CENTROID', 'WEIGHT_SPECTRUM','DATA'])) # Compare the DATA column self.assertTrue(th.compVarColTables('ms_sorted.ms','mms_sorted.ms','DATA'))
def test_spw_separation(self): '''Partition: create an MMS separated by spws with observation selection''' # NOTE: ms.getscansummary() used in ph.getScanNrows does not honour several observation # IDs, therefore I need to selection by obs id in partition partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='spw', observation='2', flagbackup=False, disableparallel=True) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Dictionary with selection to compare with original MS mysel = {'observation': '2'} # Compare nrows of all scans in MMS and MS slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s, selection=mysel) self.assertEqual( mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' % (s, mmsN, msN)) # spwids are re-indexed. The expected IDs are: # ms_spw = 2 --> mms_spw = 0 # ms_spw = 3 --> mms_spw = 1, etc. # Check that MMS spw IDs have been re-indexed properly indexed_ids = range(4) for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) self.assertEqual(mms_spw, indexed_ids, 'spw IDs were not properly re-indexed')
def test_spw_selection(self): '''Partition: create an MMS separated by spws with spw=2,4 selection''' partition(vis=self.msfile, outputvis=self.mmsfile, separationaxis='spw', spw='2,4', flagbackup=False, disableparallel=True) self.assertTrue(os.path.exists(self.mmsfile), 'MMS was not created for this test') # Take the dictionary and compare with original MS thisdict = listpartition(vis=self.mmsfile, createdict=True) # Dictionary with selection to compare with original MS mysel = {'spw': '2,4'} # Compare nrows of all scans in selection slist = ph.getMMSScans(thisdict) for s in slist: mmsN = ph.getMMSScanNrows(thisdict, s) msN = ph.getScanNrows(self.msfile, s, selection=mysel) self.assertEqual( mmsN, msN, 'Nrows in scan=%s differs: mms_nrows=%s <--> ms_nrows=%s' % (s, mmsN, msN)) # spwids are re-indexed. The expected IDs are: # ms_spw = 2 --> mms_spw = 0 # ms_spw = 4 --> mms_spw = 1 # Check that MMS spw IDs have been re-indexed properly indexed_ids = range(2) for s in slist: mms_spw = ph.getSpwIds(self.mmsfile, s) self.assertEqual(mms_spw, indexed_ids, 'spw IDs were not properly re-indexed')