def test_tableinfo(self): """Test table info.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) self.assertTrue(tableexists("ttable.py_tmp.tab1")) self.assertTrue(tableiswritable("ttable.py_tmp.tab1")) self.assertEqual(t.nrows(), 0) self.assertEqual(t.ncols(), 6) self.assertTrue(compare(t.colnames(), ['cols', 'colc', 'coli', 'cold', 'colb', 'colarr'])) self.assertEqual(tableinfo("ttable.py_tmp.tab1"), {'readme': '', 'subType': '', 'type': ''}) t.addreadmeline("test table run") t.putinfo({'type': 'test', 'subType': 'test1'}) self.assertEqual(t.info()['readme'], 'test table run\n') self.assertEqual(t.info()['subType'], 'test1') self.assertEqual(t.info()['type'], 'test') self.assertEqual(len(t), 0) print(str(t)) self.assertEqual(t.endianformat(), 'little') t.close() tabledelete("ttable.py_tmp.tab1")
def test_tableinfo(self): """Test table info.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) self.assertTrue(tableexists("ttable.py_tmp.tab1")) self.assertTrue(tableiswritable("ttable.py_tmp.tab1")) self.assertEqual(t.nrows(), 0) self.assertEqual(t.ncols(), 6) self.assertTrue( compare(t.colnames(), ['cols', 'colc', 'coli', 'cold', 'colb', 'colarr'])) self.assertEqual(tableinfo("ttable.py_tmp.tab1"), { 'readme': '', 'subType': '', 'type': '' }) t.addreadmeline("test table run") t.putinfo({'type': 'test', 'subType': 'test1'}) self.assertEqual(t.info()['readme'], 'test table run\n') self.assertEqual(t.info()['subType'], 'test1') self.assertEqual(t.info()['type'], 'test') self.assertEqual(len(t), 0) print(str(t)) self.assertEqual(t.endianformat(), 'little') t.close() tabledelete("ttable.py_tmp.tab1")
def test_hypercolumn(self): """Test hypercolumns.""" scd1 = makescacoldesc("col2", "aa") scd2 = makescacoldesc("col1", 1, "IncrementalStMan") scd3 = makescacoldesc("colrec1", {}) acd1 = makearrcoldesc("arr1", 1, 0, [2, 3, 4]) acd2 = makearrcoldesc("arr2", 0. + 0j) td = maketabdesc([scd1, scd2, scd3, acd1, acd2]) tabledefinehypercolumn(td, "TiledArray", 4, ["arr1"]) tab = table("mytable", tabledesc=td, nrow=100) tab.done() tabledelete("mytable")
def test_hypercolumn(self): """Test hypercolumns.""" scd1 = makescacoldesc("col2", "aa") scd2 = makescacoldesc("col1", 1, "IncrementalStMan") scd3 = makescacoldesc("colrec1", {}) acd1 = makearrcoldesc("arr1", 1, 0, [2, 3, 4]) acd2 = makearrcoldesc("arr2", 0. + 0j) td = maketabdesc([scd1, scd2, scd3, acd1, acd2]) tabledefinehypercolumn(td, "TiledArray", 4, ["arr1"]) tab = table("mytable", tabledesc=td, nrow=100) tab.done() tabledelete("mytable")
def test_adddmcolumns(self): """Add some columns.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) # A scalar with the IncrementalStMan storage manager t.addcols(maketabdesc(makescacoldesc("coli2", 0)), dminfo={ 'TYPE': "IncrementalStMan", 'NAME': "ism1", 'SPEC': {} }) self.assertIn("coli2", t.colnames()) # An array with the StandardStMan t.addcols(maketabdesc(makearrcoldesc("colarrssm", ""))) self.assertIn("colarrssm", t.colnames()) # An array with the TiledShapeStMan t.addcols(maketabdesc(makearrcoldesc("colarrtsm", 0. + 0j, ndim=2)), dminfo={ 'TYPE': "TiledShapeStMan", 'NAME': "tsm1", 'SPEC': {} }) self.assertIn("colarrtsm", t.colnames()) print(t.getdminfo()) coldmi = t.getdminfo('colarrtsm') print(t.getcoldesc('colarrtsm')) coldmi["NAME"] = 'tsm2' t.addcols(maketabdesc(makearrcoldesc("colarrtsm2", 0., ndim=2)), coldmi) self.assertEqual(t.getdminfo('colarrtsm2')["NAME"], 'tsm2') t.removecols('colarrtsm2') # Write some data. t.addrows(22) t.putcell('colarrtsm', 0, np.array([[1, 2, 3], [4, 5, 6]])) t.putcell('colarrtsm', 1, t.getcell('colarrtsm', 0) + 10) self.assertEqual(t.getcell('colarrtsm', 0)[1, 2], 6) print(t.getvarcol('colarrtsm')) np.testing.assert_array_equal( t.getcellslice('colarrtsm', 0, [1, 1], [1, 2]), np.array([[5. + 0.j, 6. + 0.j]])) print(t.getvarcol('colarrtsm')) t.close() tabledelete("ttable.py_tmp.tab1")
def test_subtables(self): """Testing subtables.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) sub = table("sub", maketabdesc((c1, c2, c3))) t.putkeyword("subtablename", sub, makesubrecord=True) print(t.getsubtables()) t.close() tabledelete("ttable.py_tmp.tab1")
def test_deletecols(self): """Delete some columns.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) a = ['colarr', 'cols', 'colb', 'colc'] t.removecols(a) self.assertNotIn(a, t.colnames()) t.close() tabledelete("ttable.py_tmp.tab1")
def test_subtables(self): """Testing subtables.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) sub = table("sub", maketabdesc((c1, c2, c3))) t.putkeyword("subtablename", sub, makesubrecord=True) print(t.getsubtables()) t.close() tabledelete("ttable.py_tmp.tab1")
def test_iter(self): """Testing tableiter.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(2) for iter_ in t.iter('coli', sort=False): print(iter_.getcol('coli'), iter_.rownumbers(t)) iter_.close() t.close() tabledelete("ttable.py_tmp.tab1")
def test_adddata(self): """Add some more data.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(22) for i in range(2, 22): t.putcell('coli', i, i / 2) print(t[10]) t.close() tabledelete("ttable.py_tmp.tab1")
def test_taqlcalc(self): """Some TaQL calculations.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(2) np.testing.assert_array_almost_equal( t.calc("(1 km)cm"), np.array([100000.])) np.testing.assert_array_equal(t.calc("coli+1"), np.array([1, 1])) t.close() tabledelete("ttable.py_tmp.tab1")
def test_deletecols(self): """Delete some columns.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) a = ['colarr', 'cols', 'colb', 'colc'] t.removecols(a) self.assertNotIn(a, t.colnames()) t.close() tabledelete("ttable.py_tmp.tab1")
def test_adddata(self): """Add some more data.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(22) for i in range(2, 22): t.putcell('coli', i, i / 2) print(t[10]) t.close() tabledelete("ttable.py_tmp.tab1")
def test_adddmcolumns(self): """Add some columns.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) # A scalar with the IncrementalStMan storage manager t.addcols(maketabdesc(makescacoldesc("coli2", 0)), dminfo={'TYPE': "IncrementalStMan", 'NAME': "ism1", 'SPEC': {}}) self.assertIn("coli2", t.colnames()) # An array with the StandardStMan t.addcols(maketabdesc(makearrcoldesc("colarrssm", ""))) self.assertIn("colarrssm", t.colnames()) # An array with the TiledShapeStMan t.addcols(maketabdesc(makearrcoldesc("colarrtsm", 0. + 0j, ndim=2)), dminfo={'TYPE': "TiledShapeStMan", 'NAME': "tsm1", 'SPEC': {}}) self.assertIn("colarrtsm", t.colnames()) print(t.getdminfo()) coldmi = t.getdminfo('colarrtsm') print(t.getcoldesc('colarrtsm')) coldmi["NAME"] = 'tsm2' t.addcols(maketabdesc(makearrcoldesc( "colarrtsm2", 0., ndim=2)), coldmi) self.assertEqual(t.getdminfo('colarrtsm2')["NAME"], 'tsm2') t.removecols('colarrtsm2') # Write some data. t.addrows(22) t.putcell('colarrtsm', 0, np.array([[1, 2, 3], [4, 5, 6]])) t.putcell('colarrtsm', 1, t.getcell('colarrtsm', 0) + 10) self.assertEqual(t.getcell('colarrtsm', 0)[1, 2], 6) print(t.getvarcol('colarrtsm')) np.testing.assert_array_equal(t.getcellslice('colarrtsm', 0, [1, 1], [1, 2]), np.array([[5. + 0.j, 6. + 0.j]])) print(t.getvarcol('colarrtsm')) t.close() tabledelete("ttable.py_tmp.tab1")
def test_taqlcalc(self): """Some TaQL calculations.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(2) np.testing.assert_array_almost_equal(t.calc("(1 km)cm"), np.array([100000.])) np.testing.assert_array_equal(t.calc("coli+1"), np.array([1, 1])) t.close() tabledelete("ttable.py_tmp.tab1")
def test_iter(self): """Testing tableiter.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(2) for iter_ in t.iter('coli', sort=False): print(iter_.getcol('coli'), iter_.rownumbers(t)) iter_.close() t.close() tabledelete("ttable.py_tmp.tab1")
def test_check_datatypes(self): """Checking datatypes.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) self.assertEqual(t.coldatatype("coli"), 'int') self.assertEqual(t.coldatatype("cold"), 'double') self.assertEqual(t.coldatatype("cols"), 'string') self.assertEqual(t.coldatatype("colb"), 'boolean') self.assertEqual(t.coldatatype("colc"), 'dcomplex') self.assertEqual(t.coldatatype("colarr"), 'double') t.close() tabledelete("ttable.py_tmp.tab1")
def test_subset(self): """Create a subset.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t1 = t.query('coli >0', sortlist='coli desc', columns='coli,cold') querycols = t1.colnames() t1 = taql('select coli,cold from $t where coli>0 order by coli desc') taqlcol = t1.colnames() self.assertEqual(querycols, taqlcol) t1.close() t.close() tabledelete("ttable.py_tmp.tab1")
def test_tablecolumn(self): """Table column.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(20) with tablecolumn(t, 'coli') as tc: tc[6] += 20 self.assertEqual(tc[6], 20) self.assertIn(20, tc[18:4:-2]) self.assertEqual(tc[0:][6], 20) self.assertEqual(tc.datatype(), 'int') self.assertEqual(tc.name(), 'coli') print(tc.table()) self.assertTrue(tc.isscalar()) self.assertFalse(tc.isvar()) self.assertEqual(tc.nrows(), 20) self.assertTrue(tc.iscelldefined(2)) self.assertEqual(tc.getcell(3), 0) print(tc._) self.assertEqual(tc.getcol(2, 15)[4], 20) tc.putkeyword('key1', "keyval") self.assertIn('key1', tc.keywordnames()) self.assertIn('key1', tc.fieldnames()) self.assertEqual(tc.getdesc()['dataManagerType'], 'StandardStMan') self.assertEqual(tc.getdminfo()['TYPE'], 'StandardStMan') for iter_ in tc.iter(sort=False): print(iter_[0]['coli']) self.assertEqual(len(tc), 20) self.assertEqual(tc.getkeywords()['key1'], 'keyval') np.testing.assert_equal(tc.getvarcol()['r1'], 0) tc.putcell(2, 55) self.assertEqual(tc[2], 55) iter_.close() t.close() tabledelete("ttable.py_tmp.tab1")
def test_subset(self): """Create a subset.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t1 = t.query('coli >0', sortlist='coli desc', columns='coli,cold') querycols = t1.colnames() t1 = taql('select coli,cold from $t where coli>0 order by coli desc') taqlcol = t1.colnames() self.assertEqual(querycols, taqlcol) t1.close() t.close() tabledelete("ttable.py_tmp.tab1")
def test_check_datatypes(self): """Checking datatypes.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) self.assertEqual(t.coldatatype("coli"), 'int') self.assertEqual(t.coldatatype("cold"), 'double') self.assertEqual(t.coldatatype("cols"), 'string') self.assertEqual(t.coldatatype("colb"), 'boolean') self.assertEqual(t.coldatatype("colc"), 'dcomplex') self.assertEqual(t.coldatatype("colarr"), 'double') t.close() tabledelete("ttable.py_tmp.tab1")
def test_tablecolumn(self): """Table column.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(20) with tablecolumn(t, 'coli') as tc: tc[6] += 20 self.assertEqual(tc[6], 20) self.assertIn(20, tc[18:4:-2]) self.assertEqual(tc[0:][6], 20) self.assertEqual(tc.datatype(), 'int') self.assertEqual(tc.name(), 'coli') print(tc.table()) self.assertTrue(tc.isscalar()) self.assertFalse(tc.isvar()) self.assertEqual(tc.nrows(), 20) self.assertTrue(tc.iscelldefined(2)) self.assertEqual(tc.getcell(3), 0) print(tc._) self.assertEqual(tc.getcol(2, 15)[4], 20) tc.putkeyword('key1', "keyval") self.assertIn('key1', tc.keywordnames()) self.assertIn('key1', tc.fieldnames()) self.assertEqual(tc.getdesc()['dataManagerType'], 'StandardStMan') self.assertEqual(tc.getdminfo()['TYPE'], 'StandardStMan') for iter_ in tc.iter(sort=False): print(iter_[0]['coli']) self.assertEqual(len(tc), 20) self.assertEqual(tc.getkeywords()['key1'], 'keyval') np.testing.assert_equal(tc.getvarcol()['r1'], 0) tc.putcell(2, 55) self.assertEqual(tc[2], 55) iter_.close() t.close() tabledelete("ttable.py_tmp.tab1")
def test_addcolumns(self): """Add columns.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(2) cd1 = makecoldesc("col2", t.getcoldesc('coli')) t.addcols(cd1) self.assertEqual(t.ncols(), 7) self.assertIn('col2', t.colnames()) t.renamecol("col2", "ncol2") self.assertNotIn('col2', t.colnames()) self.assertIn('ncol2', t.colnames()) t.close() tabledelete("ttable.py_tmp.tab1")
def test_keywords(self): """Do keyword handling.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(2) t.putkeyword('key1', "keyval") t.putkeyword('keyrec', {'skey1': 1, 'skey2': 3.}) self.assertTrue(t._["keyrec"]['skey1'], 1) self.assertEqual(t.getkeyword('key1'), 'keyval') self.assertIn('key1', t.keywordnames()) self.assertIn('keyrec', t.keywordnames()) key1 = t.keywordnames() key2 = t.fieldnames() self.assertEqual(key1, key2) self.assertIn('skey1', t.fieldnames('keyrec')) self.assertIn('skey2', t.fieldnames('keyrec')) t.putcolkeyword('coli', 'keycoli', {'colskey': 1, 'colskey2': 3.}) self.assertEqual(t.getcolkeywords('coli')['keycoli']['colskey2'], 3) # getattr tc = t.coli self.assertEqual(tc[0], 0) self.assertEqual(t.key1, 'keyval') self.assertRaises(AttributeError, lambda: t.key2) t.removekeyword('key1') self.assertNotIn('key1', t.getcolkeywords('coli')) # Print table row # tr = t.row(['coli', 'cold') # self.assertEqual(tr[0]['coli'], 0) # # Update a few fields in the row # tr[0] = {'coli': 10, 'cold': 14} # self.assertEqual(tr[0]['coli'], 10) t.close() tabledelete("ttable.py_tmp.tab1")
def test_addcolumns(self): """Add columns.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(2) cd1 = makecoldesc("col2", t.getcoldesc('coli')) t.addcols(cd1) self.assertEqual(t.ncols(), 7) self.assertIn('col2', t.colnames()) t.renamecol("col2", "ncol2") self.assertNotIn('col2', t.colnames()) self.assertIn('ncol2', t.colnames()) t.close() tabledelete("ttable.py_tmp.tab1")
def test_tableascii(self): """Testing ASCII table.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5)), ack=False) tcol = t.colnames() t.addrows(5) t.toascii('asciitemp1', columnnames=tcol) tablefromascii(tablename='tablefromascii', asciifile='asciitemp1') ta = table("tablefromascii", readonly=False) tacol = ta.colnames() self.assertEqual(tcol, tacol) ta.close() t.close() tabledelete('tablefromascii') tabledelete("ttable.py_tmp.tab1")
def test_keywords(self): """Do keyword handling.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(2) t.putkeyword('key1', "keyval") t.putkeyword('keyrec', {'skey1': 1, 'skey2': 3.}) self.assertTrue(t._["keyrec"]['skey1'], 1) self.assertEqual(t.getkeyword('key1'), 'keyval') self.assertIn('key1', t.keywordnames()) self.assertIn('keyrec', t.keywordnames()) key1 = t.keywordnames() key2 = t.fieldnames() self.assertEqual(key1, key2) self.assertIn('skey1', t.fieldnames('keyrec')) self.assertIn('skey2', t.fieldnames('keyrec')) t.putcolkeyword('coli', 'keycoli', {'colskey': 1, 'colskey2': 3.}) self.assertEqual(t.getcolkeywords('coli')['keycoli']['colskey2'], 3) # getattr tc = t.coli self.assertEqual(tc[0], 0) self.assertEqual(t.key1, 'keyval') self.assertRaises(AttributeError, lambda: t.key2) t.removekeyword('key1') self.assertNotIn('key1', t.getcolkeywords('coli')) # Print table row # tr = t.row(['coli', 'cold') # self.assertEqual(tr[0]['coli'], 0) # # Update a few fields in the row # tr[0] = {'coli': 10, 'cold': 14} # self.assertEqual(tr[0]['coli'], 10) t.close() tabledelete("ttable.py_tmp.tab1")
def test_tableascii(self): """Testing ASCII table.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5)), ack=False) tcol = t.colnames() t.addrows(5) t.toascii('asciitemp1', columnnames=tcol) tablefromascii(tablename='tablefromascii', asciifile='asciitemp1') ta = table("tablefromascii", readonly=False) tacol = ta.colnames() self.assertEqual(tcol, tacol) ta.close() t.close() tabledelete('tablefromascii') tabledelete("ttable.py_tmp.tab1")
def test_copyandrename(self): """Copy and rename tables.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t_copy = tablecopy("ttable.py_tmp.tab1", "ttabel.tab1") self.assertEqual(t.name().split('/')[-1], 'ttable.py_tmp.tab1') self.assertEqual(t_copy.name().split('/')[-1], 'ttabel.tab1') numofrows = t.nrows() numofcols = t.ncols() self.assertEqual(t_copy.nrows(), numofrows) self.assertEqual(t_copy.ncols(), numofcols) tablerename("ttabel.tab1", "renamedttabel.tab1") self.assertEqual(t_copy.name().split('/')[-1], 'renamedttabel.tab1') t_copy.done() tabledelete("renamedttabel.tab1") t.close() tabledelete("ttable.py_tmp.tab1")
def test_check_putdata(self): """Add rows and put data.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(2) self.assertEqual(t.nrows(), 2) np.testing.assert_array_equal(t.getcol('coli'), np.array([0, 0])) t.putcol("coli", (1, 2)) np.testing.assert_array_equal(t.getcol('coli'), np.array([1, 2])) np.testing.assert_array_equal(t.getcol('cold'), np.array([0., 0.])) t.putcol("cold", t.getcol('coli') + 3) np.testing.assert_array_equal(t.getcol('cold'), np.array([4., 5.])) t.removerows(1) self.assertEqual(t.nrows(), 1) t.close() tabledelete("ttable.py_tmp.tab1")
def test_check_putdata(self): """Add rows and put data.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t.addrows(2) self.assertEqual(t.nrows(), 2) np.testing.assert_array_equal(t.getcol('coli'), np.array([0, 0])) t.putcol("coli", (1, 2)) np.testing.assert_array_equal(t.getcol('coli'), np.array([1, 2])) np.testing.assert_array_equal( t.getcol('cold'), np.array([0., 0.])) t.putcol("cold", t.getcol('coli') + 3) np.testing.assert_array_equal( t.getcol('cold'), np.array([4., 5.])) t.removerows(1) self.assertEqual(t.nrows(), 1) t.close() tabledelete("ttable.py_tmp.tab1")
def test_copyandrename(self): """Copy and rename tables.""" c1 = makescacoldesc("coli", 0) c2 = makescacoldesc("cold", 0.) c3 = makescacoldesc("cols", "") c4 = makescacoldesc("colb", True) c5 = makescacoldesc("colc", 0. + 0j) c6 = makearrcoldesc("colarr", 0.) t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5, c6)), ack=False) t_copy = tablecopy("ttable.py_tmp.tab1", "ttabel.tab1") self.assertEqual(t.name().split('/')[-1], 'ttable.py_tmp.tab1') self.assertEqual(t_copy.name().split('/')[-1], 'ttabel.tab1') numofrows = t.nrows() numofcols = t.ncols() self.assertEqual(t_copy.nrows(), numofrows) self.assertEqual(t_copy.ncols(), numofcols) tablerename("ttabel.tab1", "renamedttabel.tab1") self.assertEqual(t_copy.name().split('/')[-1], 'renamedttabel.tab1') t_copy.done() tabledelete("renamedttabel.tab1") t.close() tabledelete("ttable.py_tmp.tab1")
def test_msutil(self): """Testing msutil.""" datacoldesc = makearrcoldesc("DATA", 0., ndim=2, shape=[20, 4]) ms = default_ms("tabtemp", maketabdesc((datacoldesc))) ms.close() spw = table("tabtemp/SPECTRAL_WINDOW", readonly=False) spw.addrows() spw.putcell('NUM_CHAN', 0, 20) t = table("tabtemp", readonly=False) print(t.colnames()) addImagingColumns("tabtemp") self.assertIn('MODEL_DATA', t.colnames()) self.assertIn('CORRECTED_DATA', t.colnames()) self.assertIn('IMAGING_WEIGHT', t.colnames()) removeImagingColumns("tabtemp") self.assertNotIn('MODEL_DATA', t.colnames()) self.assertNotIn('CORRECTED_DATA', t.colnames()) self.assertNotIn('IMAGING_WEIGHT', t.colnames()) addDerivedMSCal("tabtemp") self.assertIn('PA1', t.colnames()) self.assertIn('PA2', t.colnames()) self.assertIn('LAST', t.colnames()) self.assertIn('AZEL2', t.colnames()) self.assertIn('AZEL1', t.colnames()) self.assertIn('UVW_J2000', t.colnames()) self.assertIn('LAST1', t.colnames()) self.assertIn('LAST2', t.colnames()) self.assertIn('HA1', t.colnames()) self.assertIn('HA2', t.colnames()) self.assertIn('HA', t.colnames()) removeDerivedMSCal("tabtemp") self.assertNotIn('PA1', t.colnames()) self.assertNotIn('PA2', t.colnames()) self.assertNotIn('LAST', t.colnames()) self.assertNotIn('AZEL2', t.colnames()) self.assertNotIn('AZEL1', t.colnames()) self.assertNotIn('UVW_J2000', t.colnames()) self.assertNotIn('LAST1', t.colnames()) self.assertNotIn('LAST2', t.colnames()) self.assertNotIn('HA1', t.colnames()) self.assertNotIn('HA2', t.colnames()) self.assertNotIn('HA', t.colnames()) self.assertNotIn('HA', t.colnames()) self.assertNotIn('HA', t.colnames()) taql("SELECT FROM tabtemp where TIME in (SELECT DISTINCT TIME" + " FROM tabtemp LIMIT 10) GIVING first10.MS AS PLAIN") taql("SELECT FROM tabtemp where TIME in (SELECT DISTINCT TIME" + " FROM tabtemp LIMIT 10 OFFSET 10) GIVING second10.MS AS PLAIN") msconcat(["first10.MS", "second10.MS"], "combined.MS", concatTime=True) spw.close() t.close() tabledelete("tabtemp")
def test_msutil(self): """Testing msutil.""" datacoldesc = makearrcoldesc("DATA", 0., ndim=2, shape=[20, 4]) ms = default_ms("tabtemp", maketabdesc((datacoldesc))) ms.close() spw = table("tabtemp/SPECTRAL_WINDOW", readonly=False) spw.addrows() spw.putcell('NUM_CHAN', 0, 20) t = table("tabtemp", readonly=False) print(t.colnames()) addImagingColumns("tabtemp") self.assertIn('MODEL_DATA', t.colnames()) self.assertIn('CORRECTED_DATA', t.colnames()) self.assertIn('IMAGING_WEIGHT', t.colnames()) removeImagingColumns("tabtemp") self.assertNotIn('MODEL_DATA', t.colnames()) self.assertNotIn('CORRECTED_DATA', t.colnames()) self.assertNotIn('IMAGING_WEIGHT', t.colnames()) addDerivedMSCal("tabtemp") self.assertIn('PA1', t.colnames()) self.assertIn('PA2', t.colnames()) self.assertIn('LAST', t.colnames()) self.assertIn('AZEL2', t.colnames()) self.assertIn('AZEL1', t.colnames()) self.assertIn('UVW_J2000', t.colnames()) self.assertIn('LAST1', t.colnames()) self.assertIn('LAST2', t.colnames()) self.assertIn('HA1', t.colnames()) self.assertIn('HA2', t.colnames()) self.assertIn('HA', t.colnames()) removeDerivedMSCal("tabtemp") self.assertNotIn('PA1', t.colnames()) self.assertNotIn('PA2', t.colnames()) self.assertNotIn('LAST', t.colnames()) self.assertNotIn('AZEL2', t.colnames()) self.assertNotIn('AZEL1', t.colnames()) self.assertNotIn('UVW_J2000', t.colnames()) self.assertNotIn('LAST1', t.colnames()) self.assertNotIn('LAST2', t.colnames()) self.assertNotIn('HA1', t.colnames()) self.assertNotIn('HA2', t.colnames()) self.assertNotIn('HA', t.colnames()) self.assertNotIn('HA', t.colnames()) self.assertNotIn('HA', t.colnames()) taql("SELECT FROM tabtemp where TIME in (SELECT DISTINCT TIME" + " FROM tabtemp LIMIT 10) GIVING first10.MS AS PLAIN") taql("SELECT FROM tabtemp where TIME in (SELECT DISTINCT TIME" + " FROM tabtemp LIMIT 10 OFFSET 10) GIVING second10.MS AS PLAIN") msconcat(["first10.MS", "second10.MS"], "combined.MS", concatTime=True) spw.close() t.close() tabledelete("tabtemp")
def main(ms_files, outfile, clobber=True): """ Performs a virtual concatenation with possible frequency gaps Parameters ---------- ms_files : list List of files to merge, ordered by frequency. Files that do not exist are identified as gaps and are filled with flagged dummy data outfile : str Output file clobber : bool, optional If True, existing files are overwritten """ if type(ms_files) is str: ms_files = [f.strip(' \'\"') for f in ms_files.strip('[]').split(',')] if type(clobber) is str: if clobber.lower() == 'true': clobber = True else: clobber = False if os.path.exists(outfile): if clobber: pt.tabledelete(outfile) else: return # Find at least one existing ms ms_exists = None for ms in ms_files: if os.path.exists(ms): ms_exists = ms sw = pt.table('{}::SPECTRAL_WINDOW'.format(ms)) ms_exists_ref_freq = sw.getcol('REF_FREQUENCY')[0] sw.close() break if ms_exists is None: print('ERROR: no files exist') sys.exit(1) # Identify gaps ms_files_to_concat = [] for i, ms in enumerate(ms_files): if not os.path.exists(ms): # Missing file means gap, so create an appropriate dummy dataset with # a random name ms_new = '{0}_{1}.ms'.format( os.path.splitext(ms)[0], uuid.uuid4().urn.split('-')[-1]) pt.tableutil.tablecopy(ms_exists, ms_new) # Alter SPECTRAL_WINDOW subtable as appropriate to fill gap sw = pt.table('{}::SPECTRAL_WINDOW'.format(ms_new), readonly=False) tot_bandwidth = sw.getcol('TOTAL_BANDWIDTH')[0] if i > 0: sw_low = pt.table('{}::SPECTRAL_WINDOW'.format(ms_files[i - 1])) ref_freq = sw_low.getcol('REF_FREQUENCY') + tot_bandwidth sw_low.close() else: for j in range(1, len(ms_files) - 1): if os.path.exists(ms_files[j]): sw_high = pt.table('{}::SPECTRAL_WINDOW'.format( ms_files[j])) ref_freq = sw_high.getcol( 'REF_FREQUENCY') - tot_bandwidth * j sw_high.close() break chan_freq = sw.getcol('CHAN_FREQ') - ms_exists_ref_freq + ref_freq sw.putcol('REF_FREQUENCY', ref_freq) sw.putcol('CHAN_FREQ', chan_freq) sw.close() # Flag all data t = pt.table(ms_new, readonly=False) t.putcol('FLAG_ROW', np.ones(len(t), dtype=bool)) t.close() ms_files_to_concat.append(ms_new) else: ms_files_to_concat.append(ms) # Concat pt.msutil.msconcat(ms_files_to_concat, outfile)
def main(ms_files, outfile, clobber=True): """ Performs a virtual concatenation with possible frequency gaps Parameters ---------- ms_files : list List of files to merge, ordered by frequency. Files that do not exist are identified as gaps and are filled with flagged dummy data outfile : str Output file clobber : bool, optional If True, existing files are overwritten """ if type(ms_files) is str: ms_files = [f.strip(' \'\"') for f in ms_files.strip('[]').split(',')] if type(clobber) is str: if clobber.lower() == 'true': clobber = True else: clobber = False if os.path.exists(outfile): if clobber: pt.tabledelete(outfile) else: return # Find at least one existing ms ms_exists = None for ms in ms_files: if os.path.exists(ms): ms_exists = ms sw = pt.table('{}::SPECTRAL_WINDOW'.format(ms)) ms_exists_ref_freq = sw.getcol('REF_FREQUENCY')[0] sw.close() break if ms_exists is None: print('ERROR: no files exist') sys.exit(1) # Identify gaps ms_files_to_concat = [] for i, ms in enumerate(ms_files): if not os.path.exists(ms): # Missing file means gap, so create an appropriate dummy dataset with # a random name ms_new = '{0}_{1}.ms'.format(os.path.splitext(ms)[0], uuid.uuid4().urn.split('-')[-1]) pt.tableutil.tablecopy(ms_exists, ms_new) # Alter SPECTRAL_WINDOW subtable as appropriate to fill gap sw = pt.table('{}::SPECTRAL_WINDOW'.format(ms_new), readonly=False) tot_bandwidth = sw.getcol('TOTAL_BANDWIDTH')[0] if i > 0: sw_low = pt.table('{}::SPECTRAL_WINDOW'.format(ms_files[i-1])) ref_freq = sw_low.getcol('REF_FREQUENCY') + tot_bandwidth sw_low.close() else: for j in range(1, len(ms_files)-1): if os.path.exists(ms_files[j]): sw_high = pt.table('{}::SPECTRAL_WINDOW'.format(ms_files[j])) ref_freq = sw_high.getcol('REF_FREQUENCY') - tot_bandwidth * j sw_high.close() break chan_freq = sw.getcol('CHAN_FREQ') - ms_exists_ref_freq + ref_freq sw.putcol('REF_FREQUENCY', ref_freq) sw.putcol('CHAN_FREQ', chan_freq) sw.close() # Flag all data t = pt.table(ms_new, readonly=False) t.putcol('FLAG_ROW', np.ones(len(t), dtype=bool)) t.close() ms_files_to_concat.append(ms_new) else: ms_files_to_concat.append(ms) # Concat pt.msutil.msconcat(ms_files_to_concat, outfile)