Пример #1
0
    def testGetNestedField(self):
        """Check the NestedRecArray.field method.
        """

        nra0 = nra.array(descr=self.descr, buffer=self.buffer)

        # Test top level nested fields
        # The info field
        buffer = [
            [('Paco', 'Perez'), (10, 20, 30)],
            [('Maria', 'Luisa'), (0, 2.0, 10)],
            [('C3Peanut', 'Tofu'), (10, 30, 20)]
        ]
        my_descr = [('name', [('first','a9'), ('second','a9')]),
            ('coord', [('x','Float32'), ('y', 'f4'), ('z', 'f4')])]
        model = nra.array(buffer, descr=my_descr)
        modelFirst = model.field('name/first')

        nra1 = nra0.field('info')
        nra1First = nra1.field('name/first')
        nra2 = nra1.field('name')
        nra3=nra2.field('first')

        self.assert_(common.areArraysEqual(model, nra1))
        self.assert_(common.areArraysEqual(modelFirst, nra1First))
        self.assert_(common.areArraysEqual(modelFirst, nra3))
Пример #2
0
    def test02_NestedRecArrayCompat(self):
        """Creating a compatible nested record array``."""

        tbl = self.h5file.create_table("/", "test", self._TestTDescr, title=self._getMethodName())

        nrarr = numpy.array(testABuffer, dtype=tbl.description._v_nested_descr)
        self.assertTrue(common.areArraysEqual(nrarr, self._testAData), "Can not create a compatible structured array.")
Пример #3
0
    def _test(self):
        self.assert_("/ExtendibleArray" in self.h5file)

        arr = self.h5file.getNode("/ExtendibleArray")
        self.assert_(isinstance(arr, tables.EArray))

        self.assertEqual(arr.byteorder, "big")
        self.assertEqual(arr.atom.type, "int32")
        self.assertEqual(arr.shape, (10, 5))
        self.assertEqual(arr.extdim, 0)
        self.assertEqual(len(arr), 10)

        data = arr.read()
        expectedData = numpy.array(
            [
                [1, 1, 1, 3, 3],
                [1, 1, 1, 3, 3],
                [1, 1, 1, 0, 0],
                [2, 0, 0, 0, 0],
                [2, 0, 0, 0, 0],
                [2, 0, 0, 0, 0],
                [2, 0, 0, 0, 0],
                [2, 0, 0, 0, 0],
                [2, 0, 0, 0, 0],
                [2, 0, 0, 0, 0],
            ],
            dtype=arr.atom.type,
        )

        self.assert_(common.areArraysEqual(data, expectedData))
Пример #4
0
    def test_ref_str(self):
        array = self.h5file.get_node('/var')

        self.assertTrue(common.areArraysEqual(
                        array[1][0][0],
                        numpy.array([[116], [101], [115], [116]],
                                    dtype=numpy.uint16)))
Пример #5
0
 def test_double_ref(self):
     array = self.h5file.get_node('/var')
     self.assertTrue(
         common.areArraysEqual(
             array[2][0][0][1][0],
             numpy.array([[105], [110], [115], [105], [100], [101]],
                         dtype=numpy.uint16)))
Пример #6
0
    def testNRAFromRA(self):
        """Check the array function with a RecArray instance.
        """

        buffer_ = [('Cuke', 123, (45, 67)), ('Tader', 321, (76, 54))]
        names = ['name', 'value', 'pair']
        formats = ['a6', 'Int8', '(2,)Int16']
        ra = numarray.records.array(
            buffer_, names=names, formats=formats)
##            buffer_, names=names, formats=formats, aligned=True)

        names1 = ['newName', 'newValue', 'newPair']
        nra0 = nra.array(buffer=ra, descr=zip(names1, formats))
        nra1 = nra.array(buffer=buffer_, descr=zip(names1, formats))
        self.assert_(common.areArraysEqual(nra0, nra1))

        # Bad number of fields
        badFormats = ['Int8', '(2,)Int16']
        self.assertRaises(ValueError, nra.array, buffer=ra,
            formats=badFormats)

        # Bad format in the first field
        badFormats = ['a9', 'Int8', '(2,)Int16']
        self.assertRaises(ValueError, nra.array, buffer=ra,
            formats=badFormats)
Пример #7
0
    def test05a_modifyColumns(self):
        """Modifying one nested column (modifyColumns)."""

        tbl = self.h5file.createTable(
            '/', 'test', self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)
        tbl.flush()

        nColumn = self._testNestedCol
        # Get the nested column data and swap the first and last rows.
        raTable = self._testAData.copy()
        raColumn = raTable[nColumn]
        (raColumn[0], raColumn[-1]) = (raColumn[-1].copy(), raColumn[0].copy())
        newdtype = numpy.dtype([(nColumn, raTable.dtype.fields[nColumn][0])])

        # Write the resulting column and re-read the whole table.
        tbl.modifyColumns(names=[nColumn], columns=raColumn)
        tbl.flush()

        if self.reopen:
            self._reopen()
            tbl = self.h5file.root.test

        raReadTable = tbl.read()
        if common.verbose:
            print "Table read:", raReadTable
            print "Should look like:", raTable

        # Compare it to the written one.
        self.assert_(common.areArraysEqual(raTable, raReadTable),
                     "Written and read values differ.")
Пример #8
0
    def test04_modifyColumn(self):
        """Modifying one single nested column (modifyColumn)."""

        tbl = self.h5file.createTable(
            '/', 'test', self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)
        tbl.flush()

        nColumn = self._testNestedCol
        # Get the nested column data and swap the first and last rows.
        raTable = self._testAData.copy()
        raColumn = raTable[nColumn]
        # The next will not work until NestedRecords supports copies
        (raColumn[0], raColumn[-1]) = (raColumn[-1], raColumn[0])

        # Write the resulting column and re-read the whole table.
        tbl.modifyColumn(colname=nColumn, column=raColumn)
        tbl.flush()

        if self.reopen:
            self._reopen()
            tbl = self.h5file.root.test

        raReadTable = tbl.read()
        if common.verbose:
            print "Table read:", raReadTable
            print "Should look like:", raTable

        # Compare it to the written one.
        self.assert_(common.areArraysEqual(raTable, raReadTable),
                     "Written and read values differ.")
Пример #9
0
    def testNRAFromNRA(self):
        """Check the array function with a NestedRecArray instance.
        """

        nra0 = nra.array(buffer=self.buffer, descr=self.descr)
        my_Descr = [('ID', 'Int64'),
                    ('data', [('name', [('first', 'a9'), ('second', 'a9')]),
                              ('coord', [('x', 'Float32'), ('y', 'f4'),
                                         ('z', 'f4')])])]
        nra1 = nra.array(buffer=self.buffer, descr=my_Descr)
        nra2 = nra.array(buffer=nra0, descr=my_Descr)
        self.assert_(common.areArraysEqual(nra2, nra1))

        # Bad number of fields
        badDescr = [('data', [('name', [('first', 'a9'), ('second', 'a9')]),
                              ('coord', [('x', 'Float32'), ('y', 'f4'),
                                         ('z', 'f4')])])]
        self.assertRaises(ValueError, nra.array, buffer=nra0, descr=badDescr)

        # Bad format in the first field
        badDescr = [('ID', 'b1'),
                    ('data', [('name', [('first', 'a9'), ('second', 'a9')]),
                              ('coord', [('x', 'Float32'), ('y', 'f4'),
                                         ('z', 'f4')])])]
        self.assertRaises(ValueError, nra.array, buffer=nra0, descr=badDescr)
Пример #10
0
    def test05b_modifyColumns(self):
        """Modifying two nested columns (modify_columns)."""

        tbl = self.h5file.create_table("/", "test", self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)
        tbl.flush()

        # Get the nested column data and swap the first and last rows.
        colnames = ["x", "color"]  # Get the first two columns
        raCols = numpy.rec.fromarrays(
            [self._testAData["x"].copy(), self._testAData["color"].copy()], dtype=[("x", "(2,)i4"), ("color", "1a2")]
        )
        # descr=tbl.description._v_nested_descr[0:2])
        # or...
        # names=tbl.description._v_nested_names[0:2],
        # formats=tbl.description._v_nested_formats[0:2])
        (raCols[0], raCols[-1]) = (raCols[-1].copy(), raCols[0].copy())

        # Write the resulting columns
        tbl.modify_columns(names=colnames, columns=raCols)
        tbl.flush()

        if self.reopen:
            self._reopen()
            tbl = self.h5file.root.test

        # Re-read the appropriate columns
        raCols2 = numpy.rec.fromarrays([tbl.cols._f_col("x"), tbl.cols._f_col("color")], dtype=raCols.dtype)
        if common.verbose:
            print("Table read:", raCols2)
            print("Should look like:", raCols)

        # Compare it to the written one.
        self.assertTrue(common.areArraysEqual(raCols, raCols2), "Written and read values differ.")
Пример #11
0
    def test06_modifyRows(self):
        "Checking modifying several rows at once (using nestedrecarray)"

        tbl = self.h5file.createTable(
            '/', 'test', self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)
        tbl.flush()

        # Get the nested record and swap the first and last rows.
        raTable = self._testAData.copy()
        (raTable[0], raTable[-1]) = (raTable[-1].copy(), raTable[0].copy())

        # Write the resulting nested record and re-read the whole table.
        tbl.modifyRows(start=0, stop=2, rows=raTable)
        tbl.flush()

        if self.reopen:
            self._reopen()
            tbl = self.h5file.root.test

        raReadTable = tbl.read()
        if common.verbose:
            print "Table read:", raReadTable
            print "Should look like:", raTable

        # Compare it to the written one.
        self.assert_(common.areArraysEqual(raTable, raReadTable),
                     "Written and read values differ.")
Пример #12
0
    def test(self):
        self.assertIn('/ExtendibleArray', self.h5file)

        arr = self.h5file.get_node('/ExtendibleArray')
        self.assertIsInstance(arr, tables.EArray)

        self.assertEqual(arr.byteorder, 'big')
        self.assertEqual(arr.atom.type, 'int32')
        self.assertEqual(arr.shape, (10, 5))
        self.assertEqual(arr.extdim, 0)
        self.assertEqual(len(arr), 10)

        data = arr.read()
        expectedData = numpy.array([
            [1, 1, 1, 3, 3],
            [1, 1, 1, 3, 3],
            [1, 1, 1, 0, 0],
            [2, 0, 0, 0, 0],
            [2, 0, 0, 0, 0],
            [2, 0, 0, 0, 0],
            [2, 0, 0, 0, 0],
            [2, 0, 0, 0, 0],
            [2, 0, 0, 0, 0],
            [2, 0, 0, 0, 0]], dtype=arr.atom.type)

        self.assertTrue(common.areArraysEqual(data, expectedData))
Пример #13
0
    def testNRAFromNRA(self):
        """Check the array function with a NestedRecArray instance.
        """

        nra0 = nra.array(buffer=self.buffer, descr=self.descr)
        my_Descr = [('ID', 'Int64'),
            ('data', [('name', [('first','a9'), ('second','a9')]),
            ('coord', [('x','Float32'), ('y', 'f4'), ('z', 'f4')])])]
        nra1 = nra.array(buffer=self.buffer, descr=my_Descr)
        nra2 = nra.array(buffer=nra0, descr=my_Descr)
        self.assert_(common.areArraysEqual(nra2, nra1))

        # Bad number of fields
        badDescr = [
            ('data', [('name', [('first','a9'), ('second','a9')]),
            ('coord', [('x','Float32'), ('y', 'f4'), ('z', 'f4')])])]
        self.assertRaises(ValueError, nra.array, buffer=nra0,
            descr=badDescr)

        # Bad format in the first field
        badDescr = [('ID', 'b1'),
            ('data', [('name', [('first','a9'), ('second','a9')]),
            ('coord', [('x','Float32'), ('y', 'f4'), ('z', 'f4')])])]
        self.assertRaises(ValueError, nra.array, buffer=nra0,
            descr=badDescr)
Пример #14
0
    def test_ref_utf_str(self):
        array = self.h5file.get_node('/ANN/my_arr')

        self.assertTrue(common.areArraysEqual(
                        array[0][0][0],
                        numpy.array([0, 0],
                                    dtype=numpy.uint64)))
Пример #15
0
    def _test(self):
        self.assertTrue('/ExtendibleArray' in self.h5file)

        arr = self.h5file.get_node('/ExtendibleArray')
        self.assertTrue(isinstance(arr, tables.EArray))

        self.assertEqual(arr.byteorder, 'big')
        self.assertEqual(arr.atom.type, 'int32')
        self.assertEqual(arr.shape, (10, 5))
        self.assertEqual(arr.extdim, 0)
        self.assertEqual(len(arr), 10)

        data = arr.read()
        expectedData = numpy.array([
            [1, 1, 1, 3, 3],
            [1, 1, 1, 3, 3],
            [1, 1, 1, 0, 0],
            [2, 0, 0, 0, 0],
            [2, 0, 0, 0, 0],
            [2, 0, 0, 0, 0],
            [2, 0, 0, 0, 0],
            [2, 0, 0, 0, 0],
            [2, 0, 0, 0, 0],
            [2, 0, 0, 0, 0]], dtype=arr.atom.type)

        self.assertTrue(common.areArraysEqual(data, expectedData))
Пример #16
0
    def test_ref_str(self):
        array = self.h5file.get_node('/var')

        self.assertTrue(
            common.areArraysEqual(
                array[1][0][0],
                numpy.array([[116], [101], [115], [116]], dtype=numpy.uint16)))
Пример #17
0
    def test_ref_utf_str(self):
        array = self.h5file.get_node('/ANN/my_arr')

        self.assertTrue(common.areArraysEqual(
                        array[0][0][0],
                        numpy.array([0, 0],
                                    dtype=numpy.uint64)))
Пример #18
0
 def test(self):
     arr = self.h5file.get_node('/Test')
     data = arr.read()
     expectedData = numpy.array(
             [(1, 11), (2, 12), (3, 13)],
             dtype={'names': ['A', 'B'], 'formats': ['<u4', '<u4'],
                    'offsets': [0, 4], 'itemsize': 16})
     self.assertTrue(common.areArraysEqual(data, expectedData))
Пример #19
0
    def testNRAadd(self):
        """Check the addition of nested arrays.
        """

        ra1 = numarray.records.array([[1, 2], [3, 4]],
                                     formats=['Int32', 'Int32'])
        ra2 = numarray.records.array([[5, 6], [7, 8]],
                                     formats=['Int32', 'Int32'])
        ra3 = ra1 + ra2
        nra1 = nra.array(buffer=ra1, descr=[('c1', 'Int32'), ('c2', 'Int32')])
        nra2 = nra.array(buffer=ra2, descr=[('a', 'Int32'), ('b', 'Int32')])
        nra3 = nra1 + nra2
        nra4 = nra1 + ra1
        self.assert_(common.areArraysEqual(nra3._flatArray, ra3))
        self.assertEqual(nra3.descr, nra1.descr)
        self.assert_(
            common.areArraysEqual(nra4._flatArray, nra1._flatArray + ra1))
        self.assertRaises(TypeError, nra.NestedRecArray.__add__, nra1, 3)
Пример #20
0
    def test02_NestedRecArrayCompat(self):
        """Creating a compatible ``NestedRecArray``."""

        tbl = self.h5file.createTable(
            '/', 'test', self._TestTDescr, title=self._getMethodName())

        nrarr = numpy.array(testABuffer, dtype=tbl.description._v_nestedDescr)
        self.assert_(common.areArraysEqual(nrarr, self._testAData),
                     "Can not create a compatible record array.")
Пример #21
0
    def testGetBottomLevelField(self):
        """Check the NestedRecArray.field method.
        """

        nra0 = nra.array(descr=self.descr, buffer=self.buffer)

        # Test bottom level fields
        nra1 = nra0.field('info/coord/x')
        ra1 = numarray.array([10, 0, 10], type='Float32')
        self.assert_(common.areArraysEqual(nra1, ra1))
Пример #22
0
    def testGetTopLevelFlatField(self):
        """Check the NestedRecArray.field method.
        """

        nra0 = nra.array(descr=self.descr, buffer=self.buffer)

        # Test top level flat fields
        nra1 = nra0.field('position')
        ra1 = numarray.array([1, 2, 3], type='Int64')
        self.assert_(common.areArraysEqual(nra1, ra1))
Пример #23
0
    def testNRAFromArrayList(self):
        """Check the fromarrays function.
        """

        # arrayList argument is a list of lists
        nra0 = nra.array(buffer=self.buffer, descr=self.descr)
        nra1 = nra.fromarrays(self.array_list, formats=self.formats)
        nra2 = nra.fromarrays(self.array_list,
            formats=self.formats, names=self.names)
        nra3 = nra.fromarrays(self.array_list, descr=self.descr)

        self.assertEqual(common.areArraysEqual(nra1, nra2), False)
        self.assert_(common.areArraysEqual(nra2, nra3))
        self.assert_(common.areArraysEqual(nra0, nra2))

        # arrayList argument is a list of NestedRecArrays
        nra0 = nra.array(buffer=[[1,4],[2,4]], formats=['f8','f4'])
        self.assertRaises(TypeError, nra.fromarrays,
            [nra0, nra0.field('c2')], formats=[['f8','f4'],'f4'])
Пример #24
0
    def testNestedRecordCreation(self):
        """Check the creation of NestedRecord instances from NestedRecArrays.
        """

        nra0 = nra.array(descr=self.descr, buffer=self.buffer)

        nrecord = nra0[0]
        self.assert_(isinstance(nrecord, nra.NestedRecord))
        self.assert_(common.areArraysEqual(nra0, nrecord.array))
        self.assertEqual(nrecord.row, 0)
Пример #25
0
    def testGetBottomLevelField(self):
        """Check the NestedRecArray.field method.
        """

        nra0 = nra.array(descr=self.descr, buffer=self.buffer)

        # Test bottom level fields
        nra1 = nra0.field('info/coord/x')
        ra1 = numarray.array([10, 0, 10], type='Float32')
        self.assert_(common.areArraysEqual(nra1, ra1))
Пример #26
0
    def test03_NRA(self):
        """Creating a table from a nested record array object."""

        tbl = self.h5file.create_table("/", "test", self._testAData, title=self._getMethodName())
        tbl.flush()
        readAData = tbl.read()
        if common.verbose:
            print("Read data:", readAData)
            print("Should look like:", self._testAData)
        self.assertTrue(common.areArraysEqual(self._testAData, readAData), "Written and read values differ.")
Пример #27
0
    def testNestedRecordCreation(self):
        """Check the creation of NestedRecord instances from NestedRecArrays.
        """

        nra0 = nra.array(descr=self.descr, buffer=self.buffer)

        nrecord = nra0[0]
        self.assert_(isinstance(nrecord, nra.NestedRecord))
        self.assert_(common.areArraysEqual(nra0, nrecord.array))
        self.assertEqual(nrecord.row, 0)
Пример #28
0
    def testGetTopLevelFlatField(self):
        """Check the NestedRecArray.field method.
        """

        nra0 = nra.array(descr=self.descr, buffer=self.buffer)

        # Test top level flat fields
        nra1 = nra0.field('position')
        ra1 = numarray.array([1, 2, 3], type='Int64')
        self.assert_(common.areArraysEqual(nra1, ra1))
Пример #29
0
    def testNRAadd(self):
        """Check the addition of nested arrays.
        """

        ra1 = numarray.records.array([[1, 2], [3, 4]],
            formats=['Int32', 'Int32'])
        ra2 = numarray.records.array([[5, 6], [7, 8]],
            formats=['Int32', 'Int32'])
        ra3 = ra1 + ra2
        nra1 = nra.array(buffer=ra1,
            descr=[('c1', 'Int32'), ('c2', 'Int32')])
        nra2 = nra.array(buffer=ra2,
            descr=[('a', 'Int32'), ('b', 'Int32')])
        nra3 = nra1 + nra2
        nra4 = nra1 + ra1
        self.assert_(common.areArraysEqual(nra3._flatArray, ra3))
        self.assertEqual(nra3.descr, nra1.descr)
        self.assert_(common.areArraysEqual(nra4._flatArray,
            nra1._flatArray + ra1))
        self.assertRaises(TypeError, nra.NestedRecArray.__add__, nra1, 3)
Пример #30
0
    def testFlattenNestedRecord(self):
        """Check the flattening of NestedRecord instances.
        """

        nra0 = nra.array(descr=self.descr, buffer=self.buffer)
        nrecord = nra0[0]
        frecord = nrecord.asRecord()

        self.assert_(isinstance(frecord, numarray.records.Record))
        self.assert_(common.areArraysEqual(nra0.asRecArray(), frecord.array))
        self.assertEqual(nrecord.row, frecord.row)
Пример #31
0
    def test04_NRA2(self):
        """Creating a table from a generated nested record array object."""

        tbl = self.h5file.create_table("/", "test", self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)
        readAData = tbl.read()

        tbl2 = self.h5file.create_table("/", "test2", readAData, title=self._getMethodName())
        readAData2 = tbl2.read()

        self.assertTrue(common.areArraysEqual(self._testAData, readAData2), "Written and read values differ.")
Пример #32
0
    def testFlattenNestedRecord(self):
        """Check the flattening of NestedRecord instances.
        """

        nra0 = nra.array(descr=self.descr, buffer=self.buffer)
        nrecord = nra0[0]
        frecord = nrecord.asRecord()

        self.assert_(isinstance(frecord, numarray.records.Record))
        self.assert_(common.areArraysEqual(nra0.asRecArray(), frecord.array))
        self.assertEqual(nrecord.row, frecord.row)
Пример #33
0
    def testNRAFromArrayList(self):
        """Check the fromarrays function.
        """

        # arrayList argument is a list of lists
        nra0 = nra.array(buffer=self.buffer, descr=self.descr)
        nra1 = nra.fromarrays(self.array_list, formats=self.formats)
        nra2 = nra.fromarrays(self.array_list,
                              formats=self.formats,
                              names=self.names)
        nra3 = nra.fromarrays(self.array_list, descr=self.descr)

        self.assertEqual(common.areArraysEqual(nra1, nra2), False)
        self.assert_(common.areArraysEqual(nra2, nra3))
        self.assert_(common.areArraysEqual(nra0, nra2))

        # arrayList argument is a list of NestedRecArrays
        nra0 = nra.array(buffer=[[1, 4], [2, 4]], formats=['f8', 'f4'])
        self.assertRaises(TypeError,
                          nra.fromarrays, [nra0, nra0.field('c2')],
                          formats=[['f8', 'f4'], 'f4'])
Пример #34
0
    def test01_read_out_arg(self):
        tbl = self.h5file.create_table("/", "test", self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)

        if self.reopen:
            self._reopen()
            tbl = self.h5file.root.test

        nrarr = numpy.rec.array(testABuffer, dtype=tbl.description._v_nested_descr)
        # When reading an entire nested column, the output array must contain
        # all fields in the table.  The output buffer will contain the contents
        # of all fields.  The selected column alone will be returned from the
        # method call.
        all_cols = numpy.empty(1, tbl.dtype)
        tblcols = tbl.read(start=0, step=2, field="Info", out=all_cols)
        nrarrcols = nrarr["Info"][0::2]
        if common.verbose:
            print("Read cols:", tblcols)
            print("Should look like:", nrarrcols)
        self.assertTrue(common.areArraysEqual(nrarrcols, tblcols), "Original array are retrieved doesn't match.")
        self.assertTrue(common.areArraysEqual(nrarr[0::2], all_cols), "Output buffer does not match full table.")
Пример #35
0
    def testCreateNestedRecArray(self):
        """Check the array function.
        """

        flatarray = numarray.records.array(self.flat_buffer,
            self.flat_formats)
        common.verbosePrint( """\nTesting the creation of a nested """
            """recarray: buffer + formats""")
        nra1 = nra.array(formats=self.formats, buffer=self.buffer)
        common.verbosePrint(
            """\nTesting the creation of a nested recarray: buffer + """
            """formats + names""")
        nra2 = nra.array(names=self.names,
            formats=self.formats, buffer=self.buffer)
        common.verbosePrint(
            """\nTesting the creation of a nested recarray: buffer + descr""")
        nra3 = nra.array(descr=self.descr, buffer=self.buffer)

        self.assertEqual(common.areArraysEqual(nra1, nra2), False)

        self.assert_(common.areArraysEqual(nra2, nra3))
Пример #36
0
    def testCreateNestedRecArray(self):
        """Check the array function.
        """

        flatarray = numarray.records.array(self.flat_buffer, self.flat_formats)
        common.verbosePrint("""\nTesting the creation of a nested """
                            """recarray: buffer + formats""")
        nra1 = nra.array(formats=self.formats, buffer=self.buffer)
        common.verbosePrint(
            """\nTesting the creation of a nested recarray: buffer + """
            """formats + names""")
        nra2 = nra.array(names=self.names,
                         formats=self.formats,
                         buffer=self.buffer)
        common.verbosePrint(
            """\nTesting the creation of a nested recarray: buffer + descr""")
        nra3 = nra.array(descr=self.descr, buffer=self.buffer)

        self.assertEqual(common.areArraysEqual(nra1, nra2), False)

        self.assert_(common.areArraysEqual(nra2, nra3))
Пример #37
0
    def test03_NRA(self):
        """Creating a table from a NestedRecArray object."""

        tbl = self.h5file.createTable(
            '/', 'test', self._testAData, title=self._getMethodName())
        tbl.flush()
        readAData = tbl.read()
        if common.verbose:
            print "Read data:", readAData
            print "Should look like:", self._testAData
        self.assert_(common.areArraysEqual(self._testAData, readAData),
                     "Written and read values differ.")
Пример #38
0
    def test00_append(self):
        """Appending a set of rows."""

        tbl = self.h5file.create_table("/", "test", self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)
        tbl.flush()

        if self.reopen:
            self._reopen()
            tbl = self.h5file.root.test

        readAData = tbl.read()
        self.assertTrue(common.areArraysEqual(self._testAData, readAData), "Written and read values differ.")
Пример #39
0
    def test04_NRA2(self):
        """Creating a table from a generated NestedRecArray object."""

        tbl = self.h5file.createTable(
            '/', 'test', self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)
        readAData = tbl.read()

        tbl2 = self.h5file.createTable(
            '/', 'test2', readAData, title=self._getMethodName())
        readAData2 = tbl2.read()

        self.assert_(common.areArraysEqual(self._testAData, readAData2),
                     "Written and read values differ.")
Пример #40
0
    def testSetSlice(self):
        """Set a nested array slice.
        """

        nra0 = nra.array(descr=self.descr, buffer=self.buffer)

        buffer = [[10, (('Paco', 'Perez'), (10, 20, 30))],
                  [20, (('Maria', 'Luisa'), (0, 2.0, 10))],
                  [30, (('C3Peanut', 'Tofu'), (10, 30, 20))]]
        model = nra.array(buffer, descr=self.descr)

        nra0[0:3] = model[0:3]

        self.assert_(common.areArraysEqual(nra0, model))
Пример #41
0
    def test02_read(self):
        """Checking Table.read with a nested Column."""

        tbl = self.h5file.create_table("/", "test", self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)

        if self.reopen:
            self._reopen()
            tbl = self.h5file.root.test

        tblcols = tbl.read(start=0, step=2, field="Info/value")
        nrarr = numpy.rec.array(testABuffer, dtype=tbl.description._v_nested_descr)
        nrarrcols = nrarr["Info"]["value"][0::2]
        self.assertTrue(common.areArraysEqual(nrarrcols, tblcols), "Original array are retrieved doesn't match.")
Пример #42
0
    def testGetNestedField(self):
        """Check the NestedRecArray.field method.
        """

        nra0 = nra.array(descr=self.descr, buffer=self.buffer)

        # Test top level nested fields
        # The info field
        buffer = [[('Paco', 'Perez'), (10, 20, 30)],
                  [('Maria', 'Luisa'), (0, 2.0, 10)],
                  [('C3Peanut', 'Tofu'), (10, 30, 20)]]
        my_descr = [('name', [('first', 'a9'), ('second', 'a9')]),
                    ('coord', [('x', 'Float32'), ('y', 'f4'), ('z', 'f4')])]
        model = nra.array(buffer, descr=my_descr)
        modelFirst = model.field('name/first')

        nra1 = nra0.field('info')
        nra1First = nra1.field('name/first')
        nra2 = nra1.field('name')
        nra3 = nra2.field('first')

        self.assert_(common.areArraysEqual(model, nra1))
        self.assert_(common.areArraysEqual(modelFirst, nra1First))
        self.assert_(common.areArraysEqual(modelFirst, nra3))
Пример #43
0
    def test00_append(self):
        """Appending a set of rows."""

        tbl = self.h5file.createTable(
            '/', 'test', self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)
        tbl.flush()

        if self.reopen:
            self._reopen()
            tbl = self.h5file.root.test

        readAData = tbl.read()
        self.assert_(common.areArraysEqual(self._testAData, readAData),
                     "Written and read values differ.")
Пример #44
0
    def testSetSlice(self):
        """Set a nested array slice.
        """

        nra0 = nra.array(descr=self.descr, buffer=self.buffer)

        buffer = [
            [10, (('Paco', 'Perez'), (10, 20, 30))],
            [20, (('Maria', 'Luisa'), (0, 2.0, 10))],
            [30, (('C3Peanut', 'Tofu'), (10, 30, 20))]
        ]
        model = nra.array(buffer, descr=self.descr)

        nra0[0:3] = model[0:3]

        self.assert_(common.areArraysEqual(nra0, model))
Пример #45
0
    def test(self):
        self.assertIn('/TestArray', self.h5file)

        arr = self.h5file.get_node('/TestArray')
        self.assertIsInstance(arr, tb.Array)

        self.assertEqual(arr.atom.type, self.type)
        self.assertEqual(arr.byteorder, self.byteorder)
        self.assertEqual(arr.shape, (6, 5))

        data = arr.read()
        expectedData = np.array(
            [[0, 1, 2, 3, 4], [1, 2, 3, 4, 5], [2, 3, 4, 5, 6],
             [3, 4, 5, 6, 7], [4, 5, 6, 7, 8], [5, 6, 7, 8, 9]],
            dtype=self.type)
        self.assertTrue(common.areArraysEqual(data, expectedData))
Пример #46
0
    def _test(self):
        self.assert_("/TestArray" in self.h5file)

        arr = self.h5file.getNode("/TestArray")
        self.assert_(isinstance(arr, tables.Array))

        self.assertEqual(arr.atom.type, self.type)
        self.assertEqual(arr.byteorder, self.byteorder)
        self.assertEqual(arr.shape, (6, 5))

        data = arr.read()
        expectedData = numpy.array(
            [[0, 1, 2, 3, 4], [1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [3, 4, 5, 6, 7], [4, 5, 6, 7, 8], [5, 6, 7, 8, 9]],
            dtype=self.type,
        )
        self.assert_(common.areArraysEqual(data, expectedData))
Пример #47
0
    def _test(self):
        self.assert_('/TestArray' in self.h5file)

        arr = self.h5file.getNode('/TestArray')
        self.assert_(isinstance(arr, tables.Array))

        self.assertEqual(arr.atom.type, self.type)
        self.assertEqual(arr.byteorder, self.byteorder)
        self.assertEqual(arr.shape, (6, 5))

        data = arr.read()
        expectedData = numpy.array(
            [[0, 1, 2, 3, 4], [1, 2, 3, 4, 5], [2, 3, 4, 5, 6],
             [3, 4, 5, 6, 7], [4, 5, 6, 7, 8], [5, 6, 7, 8, 9]],
            dtype=self.type)
        self.assert_(common.areArraysEqual(data, expectedData))
Пример #48
0
    def testSetRow2NestedRecord(self):
        """Check the NestedRecArray.__setitem__ with NestedRecord instances.
        """

        nra0 = nra.array(descr=self.descr, buffer=self.buffer)

        buffer = [[10, (('Paco', 'Perez'), (10, 20, 30))],
                  [20, (('Maria', 'Luisa'), (0, 2.0, 10))],
                  [30, (('C3Peanut', 'Tofu'), (10, 30, 20))]]
        model = nra.array(buffer, descr=self.descr)

        nra0[0] = model[0]
        nra0[1] = model[1]
        nra0[2] = model[2]

        self.assert_(common.areArraysEqual(nra0, model))
Пример #49
0
    def test02_read(self):
        """Checking Table.read with a nested Column."""

        tbl = self.h5file.createTable(
            '/', 'test', self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)

        if self.reopen:
            self._reopen()
            tbl = self.h5file.root.test

        tblcols = tbl.read(start=0, step=2, field='Info/value')
        nrarr = numpy.rec.array(testABuffer,
                                dtype=tbl.description._v_nestedDescr)
        nrarrcols = nrarr['Info']['value'][0::2]
        self.assert_(common.areArraysEqual(nrarrcols, tblcols),
                     "Original array are retrieved doesn't match.")
Пример #50
0
    def test04a__getitem__(self):
        """Checking cols.__getitem__() with subgroups with a single index."""

        tbl = self.h5file.create_table("/", "test", self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)

        if self.reopen:
            self._reopen()
            tbl = self.h5file.root.test

        nrarr = numpy.array(testABuffer, dtype=tbl.description._v_nested_descr)
        tblcols = tbl.cols._f_col("Info")[1]
        nrarrcols = nrarr["Info"][1]
        if common.verbose:
            print("Read cols:", tblcols)
            print("Should look like:", nrarrcols)
        self.assertTrue(common.areArraysEqual(nrarrcols, tblcols), "Original array are retrieved doesn't match.")
Пример #51
0
    def test04a__getitem__(self):
        """Checking cols.__getitem__() with subgroups with a single index."""

        tbl = self.h5file.createTable(
            '/', 'test', self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)

        if self.reopen:
            self._reopen()
            tbl = self.h5file.root.test

        nrarr = numpy.array(testABuffer, dtype=tbl.description._v_nestedDescr)
        tblcols = tbl.cols._f_col('Info')[1]
        nrarrcols = nrarr['Info'][1]
        if common.verbose:
            print "Read cols:", tblcols
            print "Should look like:", nrarrcols
        self.assert_(common.areArraysEqual(nrarrcols, tblcols),
                     "Original array are retrieved doesn't match.")
Пример #52
0
def areDescriptionsEqual(desc1, desc2):
    """
    Are both `desc1` and `desc2` equivalent descriptions?

    The arguments may be description objects (``IsDescription``,
    ``Description``) or dictionaries.
    """

    if isinstance(desc1, t.Col):
        # This is a rough comparison but it suffices here.
        return (desc1.type == desc2.type
                and desc2.dtype == desc2.dtype
                and desc1._v_pos == desc2._v_pos
                #and desc1.dflt == desc2.dflt)
                and common.areArraysEqual(desc1.dflt, desc2.dflt))

    if hasattr(desc1, '_v_colObjects'):  # quacks like a Description
        cols1 = desc1._v_colObjects
    elif hasattr(desc1, 'columns'):  # quacks like an IsDescription
        cols1 = desc1.columns
    else:  # hope it quacks like a dictionary
        cols1 = desc1

    if hasattr(desc2, '_v_colObjects'):  # quacks like a Description
        cols2 = desc2._v_colObjects
    elif hasattr(desc2, 'columns'):  # quacks like an IsDescription
        cols2 = desc2.columns
    else:  # hope it quacks like a dictionary
        cols2 = desc2

    if len(cols1) != len(cols2):
        return False

    for (colName, colobj1) in cols1.iteritems():
        colobj2 = cols2[colName]
        if colName == '_v_pos':
            # The comparison may not be quite exhaustive!
            return colobj1 == colobj2
        if not areDescriptionsEqual(colobj1, colobj2):
            return False

    return True
Пример #53
0
    def test01_read(self):
        """Checking Table.read with subgroups with a range index with step."""

        tbl = self.h5file.createTable(
            '/', 'test', self._TestTDescr, title=self._getMethodName())
        tbl.append(self._testAData)

        if self.reopen:
            self._reopen()
            tbl = self.h5file.root.test

        nrarr = numpy.rec.array(testABuffer,
                                dtype=tbl.description._v_nestedDescr)
        tblcols = tbl.read(start=0, step=2, field='Info')
        nrarrcols = nrarr['Info'][0::2]
        if common.verbose:
            print "Read cols:", tblcols
            print "Should look like:", nrarrcols
        self.assert_(common.areArraysEqual(nrarrcols, tblcols),
                     "Original array are retrieved doesn't match.")
Пример #54
0
    def test01_row(self):
        """Appending individual rows."""

        tbl = self.h5file.createTable(
            '/', 'test', self._TestTDescr, title=self._getMethodName())

        row = tbl.row
        # Add the first row
        self._appendRow(row, 0)
        # Add the rest of the rows field by field.
        for i in range(1, len(self._testAData)):
            self._appendRow(row, i)
        tbl.flush()

        if self.reopen:
            self._reopen()
            tbl = self.h5file.root.test

        readAData = tbl.read()
        self.assert_(common.areArraysEqual(self._testAData, readAData),
                     "Written and read values differ.")