Beispiel #1
0
    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")
Beispiel #4
0
 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")
Beispiel #6
0
 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")
Beispiel #7
0
 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")
Beispiel #9
0
 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")
Beispiel #10
0
 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")
Beispiel #11
0
 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")
Beispiel #12
0
 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")
Beispiel #13
0
 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")
Beispiel #14
0
    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")
Beispiel #15
0
 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")
Beispiel #16
0
 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")
Beispiel #17
0
 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")
Beispiel #18
0
 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")
Beispiel #19
0
    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")
Beispiel #20
0
 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")
Beispiel #21
0
 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")
Beispiel #22
0
    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")
Beispiel #23
0
 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")
Beispiel #24
0
    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")
Beispiel #25
0
 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")
Beispiel #26
0
    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")
Beispiel #27
0
    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")
Beispiel #28
0
    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")
Beispiel #29
0
 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")
Beispiel #30
0
 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")
Beispiel #31
0
 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")
Beispiel #32
0
 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")
Beispiel #33
0
    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")
Beispiel #34
0
    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")
Beispiel #35
0
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)