Exemplo n.º 1
0
    def test_dim(self):
        self.start()

        data = np.array(range(1000), dtype=np.float64).reshape((500, 2))
        with gxvv.GXvv(data) as vv:
            self.assertEqual(vv.dim, 2)
            self.assertEqual(vv.np.shape, (500, 2))
            self.assertEqual(tuple(vv.np[499, :]), (998., 999.))

        data = np.array(range(300), dtype=np.float64).reshape((100, 3))
        with gxvv.GXvv(data) as vv:
            self.assertEqual(vv.dim, 3)
            self.assertEqual(vv.np.shape, (100, 3))
            self.assertEqual(tuple(vv.np[99, :]), (297., 298., 299.))

        with gxvv.GXvv(dim=3) as vv:
            vv.set_data(np.array(range(300), dtype=np.float64))
            self.assertEqual(vv.dim, 3)
            self.assertEqual(vv.np.shape, (100, 3))
            self.assertEqual(tuple(vv.np[99, :]), (297., 298., 299.))

        with gxvv.GXvv(dim=3) as vv:
            data = np.array(range(300), dtype=np.float64)
            data[1] = data[299] = np.nan
            vv.set_data(data)
            self.assertTrue(np.isnan(data[299]))
            self.assertEqual(vv.dim, 3)
            self.assertEqual(vv.np.shape, (100, 3))
            self.assertEqual(tuple(vv.np[99, :2]), (297., 298.))
            self.assertTrue(np.isnan(vv.np[99, 2]))
Exemplo n.º 2
0
    def test_strings(self):
        self.start(gsys.func_name())

        fidvv = (99, 0.1)
        npdata = np.array(["name", "maki", "neil", "rider"])
        with gxvv.GXvv(npdata, fid=fidvv) as vv:
            self.assertEqual(vv.fid, fidvv)
            self.assertEqual(vv.length, len(npdata))
            self.assertEqual(vv.gxtype, -5)
            self.assertTrue(vv.dtype.type is np.str_)
            self.assertEqual(str(vv.dtype), '<U5')

            npd, fid = vv.get_np(vv.dtype)
            self.assertEqual(npd[0], "name")
            self.assertEqual(npd[1], "maki")
            self.assertEqual(npd[2], "neil")
            self.assertEqual(npd[3], "rider")

            npd, fid = vv.get_np(vv.dtype, start=2, n=2)
            self.assertEqual(npd[0], "neil")
            self.assertEqual(npd[1], "rider")
            self.assertEqual(fid, (99.2, 0.1))

        npdata = np.array(["1", "2", "3", "4000", "*"])
        with gxvv.GXvv(npdata, fid=fid) as vv:
            npd, fid = vv.get_np(np.float)
            self.assertEqual(npd[0], 1.0)
            self.assertEqual(npd[1], 2.0)
            self.assertEqual(npd[2], 3.0)
            self.assertEqual(npd[3], 4000.0)
            self.assertEqual(npd[4], gxapi.rDUMMY)

        npdata = np.array(["1", "2", "3", "4000", "40000", "*"])
        with gxvv.GXvv(npdata, fid=fid) as vv:
            npd, fid = vv.get_np(np.int)
            self.assertEqual(npd[0], 1)
            self.assertEqual(npd[1], 2)
            self.assertEqual(npd[2], 3)
            self.assertEqual(npd[3], 4000)
            self.assertEqual(npd[4], 40000)
            self.assertEqual(npd[5], gxapi.iDUMMY)

        npdata = np.array(["1", "2", "3", "4000", "40000", "*"])
        with gxvv.GXvv(npdata, fid=fid) as vv:
            npd, fid = vv.get_np(np.int, start=2, n=3)
            self.assertEqual(npd[0], 3)
            self.assertEqual(npd[1], 4000)
            self.assertEqual(npd[2], 40000)

        npdata = np.array(["make_it_big enough"])
        with gxvv.GXvv(npdata, fid=fid) as vv:
            npd, fid = vv.get_np(np.int, start=0, n=1)
            self.assertEqual(npd[0], gxapi.iDUMMY)

            npdata = np.array([1., 2., -30., -87.66662])
            vv.set_np(npdata)
            npd, fid = vv.get_np(start=0, n=4)
            self.assertEqual(npd[0], "1.0")
            self.assertEqual(npd[2], "-30.0")
            self.assertEqual(npd[3], "-87.66662")
Exemplo n.º 3
0
    def test_vv(self):
        self.start(gsys.func_name())

        self.assertEqual(gxvv.__version__, geosoft.__version__)

        with gxvv.GXvv(dtype=np.float) as vv:
            self.assertEqual(vv.fid, (0.0, 1.0))

        fid = (10.1, 0.99)
        with gxvv.GXvv(dtype=np.float, fid=fid) as vv:
            self.assertEqual(vv.fid, fid)
            self.assertEqual(vv.length, 0)

            fid = (-45, 7)
            vv.fid = fid
            self.assertEqual(vv.fid, fid)

            vv.reFid((-40, 8), 4)
            self.assertEqual(vv.fid, (-40, 8))
            self.assertEqual(vv.length, 4)

        with gxvv.GXvv([1, 2, 3, 4, 5, 6]) as vv:
            self.assertEqual(vv.fid, (0.0, 1.0))
            self.assertEqual(vv.length, 6)
            self.assertEqual(vv.dtype, np.int32)
            self.assertEqual(vv.gxtype, gxu.gx_dtype(np.int32))

        with gxvv.GXvv([1, 2, 3, 4, 5, 6], dtype=np.int64) as vv:
            self.assertEqual(vv.fid, (0.0, 1.0))
            self.assertEqual(vv.length, 6)
            self.assertEqual(vv.dtype, np.int64)
            self.assertEqual(vv.gxtype, gxu.gx_dtype(np.int64))
Exemplo n.º 4
0
    def test_vv(self):
        self.start()

        self.assertEqual(gxvv.__version__, geosoft.__version__)

        with gxvv.GXvv(dtype=np.float) as vv:
            self.assertTrue(vv.gxvv, gxapi.GXVV)
            self.assertEqual(vv.fid, (0.0, 1.0))

        fid = (10.1, 0.99)
        with gxvv.GXvv(dtype=np.float, fid=fid) as vv:
            self.assertTrue(vv.is_float)
            self.assertFalse(vv.is_int)
            self.assertFalse(vv.is_string)
            self.assertEqual(vv.fid, fid)
            self.assertEqual(vv.length, 0)

            fid = (-45, 7)
            vv.fid = fid
            self.assertEqual(vv.fid, fid)

            vv.refid((-40, 8), 4)
            self.assertEqual(vv.fid, (-40, 8))
            self.assertEqual(vv.length, 4)
            self.assertEqual(len(vv.np), 4)

            vv.length = 16
            self.assertEqual(vv.fid, (-40, 8))
            self.assertEqual(vv.length, 16)
            self.assertEqual(len(vv.np), 16)
            self.assertEqual(vv.dim, 1)

            vv.refid((-38, 1.5))
            self.assertEqual(vv.fid, (-38, 1.5))
            self.assertEqual(vv.length, 80)

            vv.refid((1000, 50))
            self.assertEqual(vv.fid, (1000., 50.))
            self.assertEqual(vv.length, 0)

            self.assertRaises(gxvv.VVException, vv.refid, (1, 0))
            self.assertRaises(gxvv.VVException, vv.refid, (1, -1))

        with gxvv.GXvv([1, 2, 3, 4, 5, 6]) as vv:
            self.assertTrue(vv.is_int)
            self.assertFalse(vv.is_float)
            self.assertFalse(vv.is_string)

            self.assertEqual(vv.fid, (0.0, 1.0))
            self.assertEqual(vv.length, 6)
            self.assertEqual(vv.dtype, np.int32)
            self.assertEqual(vv.gxtype, gxu.gx_dtype(np.int32))

        with gxvv.GXvv([1, 2, 3, 4, 5, 6], dtype=np.int64) as vv:
            self.assertEqual(vv.fid, (0.0, 1.0))
            self.assertEqual(vv.length, 6)
            self.assertEqual(vv.dtype, np.int64)
            self.assertEqual(vv.gxtype, gxu.gx_dtype(np.int64))
Exemplo n.º 5
0
    def test_draw_surface_3d(self):

        verts = np.array([[0, 0, 0],
                          [5, 0, 0],
                          [5, 5, 0],
                          [0, 3, 5],
                          [2.5, 2, 10],
                          [-3, 6, 8],
                          [-4, 0, 12]], dtype=np.float64)
        faces = np.array([[0, 1, 2],
                          [0, 2, 3],
                          [3, 2, 4],
                          [1, 2, 4],
                          [3, 4, 5],
                          [6, 4, 5]], dtype=np.int32)

        with gxv.View_3d.new() as v3d:
            v3d_file = v3d.file_name
            with gxg.Draw_3d(v3d, 'Surface') as g:
                verts = verts[faces].reshape(-1, 3)
                vx, vy, vz = gxvv.vvset_from_np(verts)
                vf1, vf2, vf3 = gxvv.vvset_from_np(faces)
                normals = gxg.vertex_normals_np(faces, verts)
                nx, ny, nz = gxvv.vvset_from_np(normals[faces].reshape(-1, 3))

                # using a constant color does not complain
                v3d.gxview.draw_surface_3d_ex('test',
                                              vx.gxvv, vy.gxvv, vz.gxvv,
                                              nx.gxvv, ny.gxvv, nz.gxvv,
                                              gxapi.GXVV.null(), gxg.C_GREY,
                                              vf1.gxvv, vf2.gxvv, vf3.gxvv,
                                              v3d.coordinate_system.gxipj)

                # using an array color raises invalid number of colour if we pass colours/vertex
                color = np.array([gxg.C_GREY for i in range(vx.length)])
                color_vv = gxvv.GXvv(color, dtype=np.int32)
                try:
                    v3d.gxview.draw_surface_3d_ex('test2',
                                                  vx.gxvv, vy.gxvv, vz.gxvv,
                                                  nx.gxvv, ny.gxvv, nz.gxvv,
                                                  color_vv.gxvv, gxg.C_GREY,
                                                  vf1.gxvv, vf2.gxvv, vf3.gxvv,
                                                  v3d.coordinate_system.gxipj)

                except gxapi.GXAPIError as e:
                    print(str(e))

                    # and if pass colours/face it asserts
                    color = np.array([gxg.C_GREY for i in range(faces.shape[0])])
                    color_vv = gxvv.GXvv(color, dtype=np.int32)
                    v3d.gxview.draw_surface_3d_ex('test2',
                                                  vx.gxvv, vy.gxvv, vz.gxvv,
                                                  nx.gxvv, ny.gxvv, nz.gxvv,
                                                  color_vv.gxvv, gxg.C_GREY,
                                                  vf1.gxvv, vf2.gxvv, vf3.gxvv,
                                                  v3d.coordinate_system.gxipj)
Exemplo n.º 6
0
    def test_string(self):
        self.start(gsys.func_name())

        l = [1, 2, 3]
        with gxvv.GXvv(l, dtype='U45') as vv:
            self.assertEqual(vv.list(), ['1', '2', '3'])

        l = [1, 2, "abcdefg"]
        with gxvv.GXvv(l, dtype='U4') as vv:
            self.assertEqual(vv.list(), ['1', '2', 'abcd'])
Exemplo n.º 7
0
    def test_list(self):
        self.start(gsys.func_name())

        l = [1, 2, 3]
        with gxvv.GXvv(l) as vv:
            self.assertEqual(vv.list(), l)
        l = [1., 2., 3.]
        with gxvv.GXvv(l) as vv:
            self.assertEqual(vv.list(), l)
        l = ["a", "b", "abc"]
        with gxvv.GXvv(l) as vv:
            self.assertEqual(vv.list(), l)
Exemplo n.º 8
0
    def test_write_vv_GDB(self):
        self.start(gsys.func_name())

        with gxgdb.GXdb.open(self.gdb_name) as gdb:

            gdb.delete_channel('test')
            gdb.new_channel('test')
            vv = gxvv.GXvv(np.array([1.0, 2.0, 3.0, 4.0]))
            gdb.write_channel_vv('D590875', 'test', vv)
            npd, ch, fid = gdb.read_line('D590875', channels=['test'])
            self.assertEqual(npd.shape, (4, 1))
            self.assertEqual(npd[:, 0].tolist(), [1.0, 2.0, 3.0, 4.0])

            gdb.delete_channel('test')
            gdb.new_channel('test', np.float64)
            vv = gxvv.GXvv(dtype=np.float64)
            vv.set_np(np.array([1, 2, 3, 4], dtype=np.int64))
            gdb.write_channel_vv('D590875', 'test', vv)
            npd, ch, fid = gdb.read_line('D590875',
                                         channels=['test'],
                                         dtype=np.int)
            self.assertEqual(npd.shape, (4, 1))
            self.assertEqual(npd[:, 0].tolist(), [1, 2, 3, 4])

            gdb.delete_channel('test')
            gdb.new_channel('test', np.int32)
            gdb.write_channel_vv('D590875', 'test', vv)
            npd, ch, fid = gdb.read_line('D590875', 'test')
            self.assertEqual(npd.shape, (4, 1))
            self.assertEqual(npd[:, 0].tolist(), [1.0, 2.0, 3.0, 4.0])

            gdb.delete_channel('test')
            gdb.new_channel('test', dtype=np.int32)
            vv.fid = (3, 2)
            gdb.write_channel_vv('D590875', 'test', vv)
            npd, ch, fid = gdb.read_line('D590875', 'test', dtype=int)
            self.assertEqual(npd.shape, (4, 1))
            self.assertEqual(npd[:, 0].tolist(), [1, 2, 3, 4])
            self.assertEqual(fid[0], 3.0)
            self.assertEqual(fid[1], 2.0)

            gdb.new_channel('test', np.int32)
            vv = gxvv.GXvv(np.array([1, 2, 3, 4], dtype=np.int32),
                           fid=(2.5, 0.33))
            gdb.write_channel_vv('D590875', 'test', vv)
            npd, ch, fid = gdb.read_line('D590875', channels=['test'])
            self.assertEqual(npd.shape, (4, 1))
            self.assertEqual(npd[:, 0].tolist(), [1, 2, 3, 4])
            self.assertEqual(fid[0], 2.5)
            self.assertEqual(fid[1], 0.33)

            gdb.discard()
Exemplo n.º 9
0
        def read_grid_we_just_made_as_type(gstype):

            # open the grid with specified type
            img = gxapi.GXIMG.create_file(gstype, 'test.grd',
                                          gxapi.IMG_FILE_READORWRITE)
            self.assertTrue(img.e_type() == gstype)

            # read the 10'th row as int
            vv = gxvv.GXvv(dtype=int)
            img.read_v(10, 0, 0, vv.gxvv)
            self.assertEqual(vv[10][0], 1)

            # read as float
            vv = gxvv.GXvv(dtype=float)
            img.read_v(10, 0, 0, vv.gxvv)
            self.assertEqual(vv[10][0], 1.)
Exemplo n.º 10
0
    def test_read_write_channel_vv_va(self):
        self.start(gsys.func_name())

        with gxgdb.GXdb.open(self.gdb_name) as gdb:
            gdb.delete_channel('test_chan_vv')
            vv = gxvv.GXvv(np.array([1., 2., 3.]), fid=(-10, 2.5))
            gdb.write_channel_vv('T46', 'test_chan_vv', vv)
            vv = gdb.read_channel_vv('T46', 'test_chan_vv')
            self.assertEqual(vv.length, 3)
            self.assertEqual(vv.fid, (-10.0, 2.5))
            va = gdb.read_channel_va('T46', 'test_chan_vv')
            self.assertEqual(va.width, 1)
            self.assertEqual(va.length, 3)
            self.assertEqual(va.fid, (-10.0, 2.5))
            gdb.delete_channel('test_chan_vv')

            va = gxva.GXva(np.array([[1., 2., 3.], [8, 9, 10]]),
                           fid=(-10, 2.5))
            gdb.write_channel_va('T46', 'test_chan_va', va)
            self.assertRaises(gxgdb.GDBException, gdb.read_channel_vv, 'T46',
                              'test_chan_va')
            va = gdb.read_channel_va('T46', 'test_chan_va')
            self.assertEqual(va.width, 3)
            self.assertEqual(va.length, 2)
            self.assertEqual(va.fid, (-10.0, 2.5))
            gdb.delete_channel('test_chan_va')
Exemplo n.º 11
0
    def test_empty(self):
        self.start()

        empty = np.array([])
        vv = gxvv.GXvv(empty)
        self.assertEqual(len(vv), 0)
        self.assertEqual(vv.np.size, 0)
Exemplo n.º 12
0
    def test_uom(self):
        self.start()

        with gxvv.GXvv(range(1000), unit_of_measure='maki') as vv:
            self.assertEqual(vv.unit_of_measure, 'maki')
            vv.unit_of_measure = 'nT'
            self.assertEqual(vv.unit_of_measure, 'nT')
Exemplo n.º 13
0
    def test_pj(self):
        self.start()

        with gxcs.Coordinate_system('DHDN / Okarito 2000') as cs:
            with gxcs.Coordinate_system('DHDN') as csll:
                with gxcs.Coordinate_translate(cs, csll) as pj:

                    lon, lat = pj.convert((500000, 6500000))
                    self.assertAlmostEqual(lon, 171)
                    self.assertAlmostEqual(lat, 8)

                    lon, lat = pj.convert((500000., 6500000.))
                    self.assertAlmostEqual(lon, 171.168823147)
                    self.assertAlmostEqual(lat, 8.36948254242)

                    ll = pj.convert(
                        np.array([500000., 6500000.], dtype=np.float32))
                    self.assertAlmostEqual(ll[0], 171.16882, 5)
                    self.assertAlmostEqual(ll[1], 8.36948, 5)

                    lon, lat, z = pj.convert((500000., 6500000., 50.))
                    self.assertAlmostEqual(lon, 171.168823147)
                    self.assertAlmostEqual(lat, 8.36948254242)
                    self.assertAlmostEqual(z, 50)

                    ll = pj.convert([[500000., 6500000.], [505000., 6510000.]])
                    self.assertAlmostEqual(ll[0][0], 171.168823147)
                    self.assertAlmostEqual(ll[0][1], 8.36948254242)
                    self.assertAlmostEqual(ll[1][0], 171.214439577)
                    self.assertAlmostEqual(ll[1][1], 8.45978927383)

                    ll = pj.convert(
                        np.array([[500000., 6500000.], [505000., 6510000.]]))
                    self.assertTrue(type(ll) is np.ndarray)
                    self.assertAlmostEqual(ll[0][0], 171.168823147)
                    self.assertAlmostEqual(ll[0][1], 8.36948254242)
                    self.assertAlmostEqual(ll[1][0], 171.214439577)
                    self.assertAlmostEqual(ll[1][1], 8.45978927383)

                    vvx = gxvv.GXvv([500000., 505000.])
                    vvy = gxvv.GXvv([6500000., 6510000.])
                    pj.convert_vv(vvx, vvy)
                    self.assertAlmostEqual(vvx[0][0], 171.168823147)
                    self.assertAlmostEqual(vvy[0][0], 8.36948254242)
                    self.assertAlmostEqual(vvx[1][0], 171.214439577)
                    self.assertAlmostEqual(vvy[1][0], 8.45978927383)
Exemplo n.º 14
0
    def test_vv_creation(self):
        self.start()

        vv = gxvv.GXvv(range(6),
                       fid=(-0.5, 2),
                       dtype=np.float32,
                       unit_of_measure='maki')
        vv2 = gxvv.GXvv(vv)
        self.assertTrue(vv == vv2)
        self.assertEqual(tuple(vv2.np), tuple(vv.np))
        self.assertEqual(vv.fid, vv2.fid)
        self.assertEqual(vv.dim, vv2.dim)
        self.assertEqual(vv.unit_of_measure, vv2.unit_of_measure)
        self.assertEqual(vv.dtype, vv2.dtype)
        vv.fid = (0., 1.)
        self.assertFalse(vv == vv2)
        vv2 = gxvv.GXvv(vv, unit_of_measure='maki2')
        self.assertFalse(vv == vv2)
        vv2 = gxvv.GXvv(vv, dim=1)
        self.assertTrue(vv == vv2)
        vv2 = gxvv.GXvv(vv, dim=2)
        self.assertFalse(vv == vv2)
        vv2 = gxvv.GXvv(vv, dim=3)
        self.assertFalse(vv == vv2)
        vv3 = gxvv.GXvv(vv2, dim=1)
        self.assertTrue(vv == vv3)
Exemplo n.º 15
0
        def read_grid_we_just_made_as_default():

            # open the grid with default type, which I expect will be GS_LONG
            img = gxapi.GXIMG.create_file(gxapi.GS_TYPE_DEFAULT, 'test.grd',
                                          gxapi.IMG_FILE_READORWRITE)

            # !!!! - the grid is GS_FLOAT, but I expected GS_LONG
            self.assertTrue(img.e_type() == gxapi.GS_LONG)

            # read the 10'th row as int, we get the right data
            vv = gxvv.GXvv(dtype=int)
            img.read_v(10, 0, 0, vv.gxvv)
            self.assertEqual(vv[10][0], 1)

            # try as float, also correct
            vv = gxvv.GXvv(dtype=float)
            img.read_v(10, 0, 0, vv.gxvv)
            self.assertEqual(vv[10][0], 1.)
Exemplo n.º 16
0
    def test_voxel(self):
        self.start()
        if self.skip():

            name = 'voxel.geosoft_voxel'
            gxapi.GXVOX.generate_constant_value(name,
                                                1.0,
                                                5,
                                                0, 0, 0,
                                                1, 1, 1,
                                                300, 200, 50,
                                                gxcs.Coordinate_system().gxipj,
                                                gxmeta.Metadata().gxmeta)

            gxvox = gxapi.GXVOX.create(name)
            minx = gxapi.float_ref()
            miny = gxapi.float_ref()
            minz = gxapi.float_ref()
            maxx = gxapi.float_ref()
            maxy = gxapi.float_ref()
            maxz = gxapi.float_ref()
            gxvox.get_area(minx, miny, minz, maxx, maxy, maxz)
            self.assertEqual(minx.value, -0.5)
            self.assertEqual(maxz.value, 49.5)

            vvx = gxvv.GXvv()
            vvy = gxvv.GXvv()
            vvz = gxvv.GXvv()
            gxvox.get_location_points(vvx.gxvv, vvy.gxvv, vvz.gxvv)
            gxvoxe = gxapi.GXVOXE.create(gxvox)
            vvd = gxvv.GXvv([float(n) for n in range(500)])
            gxvoxe.vector(0., 0., 0., 1.5, 1.5, 0.5, vvd.gxvv, gxapi.VOXE_EVAL_INTERP)
            self.assertEqual(vvd.length, 500)
            self.assertEqual(vvd[0][0], 1.0)
            self.assertTrue(np.isnan(vvd[499][0]))
            gxvoxe = None
            gxvox = None

            try:
                os.remove(name)
                os.remove(name + '.xml')
            except:
                pass
Exemplo n.º 17
0
    def test_ppoint_constructors(self):
        self.start()

        def verify():
            self.assertEqual(pp.x.tolist(), [1., 4., 7., 10., 13.])
            self.assertEqual(pp.z.tolist(), [3., 6., 9., 12., 15.])
            self.assertEqual(pp.xy.tolist(), nppp[:, :2].tolist())

        lpp = ((1, 2, 3), (4, 5, 6), (7, 8, 9), (10, 11, 12), (13, 14, 15))
        nppp = np.array(lpp)
        pp = gxgeo.PPoint(lpp)
        verify()

        nppp = np.array(lpp)
        pp = gxgeo.PPoint(nppp)
        verify()

        vvx = gxvv.GXvv(nppp[:, 0])
        vvy = gxvv.GXvv(nppp[:, 1])
        vvz = gxvv.GXvv(nppp[:, 2])
        pp = gxgeo.PPoint((vvx, vvy, vvz))
        verify()
        pp = gxgeo.PPoint((vvx, vvy), z=5)
        self.assertEqual(pp.x.tolist(), [1., 4., 7., 10., 13.])
        self.assertEqual(pp.z.tolist(), [5, 5, 5, 5, 5])

        vvx, vvy, vvz = pp.make_xyz_vv()
        self.assertEqual(tuple(vvx),
                         ((1, 0.0), (4, 1.0), (7, 2.0), (10, 3.0), (13, 4.0)))
        self.assertEqual(tuple(vvy),
                         ((2, 0.0), (5, 1.0), (8, 2.0), (11, 3.0), (14, 4.0)))
        self.assertEqual(tuple(vvz), ((5.0, 0.0), (5.0, 1.0), (5.0, 2.0),
                                      (5.0, 3.0), (5.0, 4.0)))

        pps = []
        for xyz in lpp:
            pps.append(gxgeo.Point(xyz))
        pp = gxgeo.PPoint(pps)
        verify()

        e = pp.extent
        self.assertTrue(e[0] == gxgeo.Point((1, 2, 3)))
        self.assertTrue(e[1] == gxgeo.Point((13, 14, 15)))
Exemplo n.º 18
0
    def test_string(self):
        self.start()

        l = [1, 2, 3]
        with gxvv.GXvv(l, dtype='U2') as vv:
            self.assertEqual(list(vv.np), ['1', '2', '3'])

        # Since we are using UTF-8 internally characters can take anywhere between 1 and 4 bytes.
        # Specifying a numpy dtype to instantiate VV will ensure the internal space is enough to allocate up to
        # that 4 times the Unicode characters, however any Numpy arrays will limit the characters to the passed dtype.
        l = [1, 2, "abcdefghijklmnopqrstuvxyz"]
        with gxvv.GXvv(l, dtype='U4') as vv:
            self.assertEqual(list(vv.np), ['1', '2', 'abcd'])

        # The following 4-byte UTF-8 characters can be correctly extracted (to limits of what is specified).
        # Characters from http://www.i18nguy.com/unicode/supplementary-test.html
        l = [1, 2, "𠜎𠜱𠝹𠱓𠱸𠲖"]
        with gxvv.GXvv(l, dtype='U4') as vv:
            self.assertEqual(list(vv.np), ['1', '2', '𠜎𠜱𠝹𠱓'])
        with gxvv.GXvv(l, dtype='U2') as vv:
            self.assertEqual(list(vv.np), ['1', '2', '𠜎𠜱'])
Exemplo n.º 19
0
    def test_iterator(self):
        self.start()

        with gxvv.GXvv(range(1000)) as vv:
            l2 = [v for v in vv]
            self.assertEqual(len(l2), 1000)
            self.assertEqual(l2[0], (0., 0))
            self.assertEqual(l2[999], (999., 999))

            vvlist = vv.list()
            self.assertEqual(len(vvlist), 1000)
            self.assertEqual(vvlist[0], 0.0)
            self.assertEqual(vvlist[999], 999.)
Exemplo n.º 20
0
    def test_ppoint_constructors(self):
        self.start(gsys.func_name())

        def verify():
            self.assertEqual(pp.x.tolist(), [1., 4., 7., 10., 13.])
            self.assertEqual(pp.z.tolist(), [3., 6., 9., 12., 15.])
            self.assertEqual(pp.xy.tolist(), nppp[:, :2].tolist())

        lpp = ((1, 2, 3), (4, 5, 6), (7, 8, 9), (10, 11, 12), (13, 14, 15))
        nppp = np.array(lpp)
        pp = gxgm.PPoint(lpp)
        verify()

        nppp = np.array(lpp)
        pp = gxgm.PPoint(nppp)
        verify()

        vvx = gxvv.GXvv(nppp[:, 0])
        vvy = gxvv.GXvv(nppp[:, 1])
        vvz = gxvv.GXvv(nppp[:, 2])
        pp = gxgm.PPoint((vvx, vvy, vvz))
        verify()
Exemplo n.º 21
0
    def test_vv(self):
        self.start()

        max = gxapi.iMAX // 16
        npdata = np.empty(max)
        with gxvv.GXvv(npdata) as vv:
            self.assertTrue(vv.length, max)
        del npdata
        gc.collect()

        npdata = np.empty(gxapi.iMAX + 1)
        self.assertRaises(gxvv.VVException, gxvv.GXvv, npdata)
        del npdata
        gc.collect()
Exemplo n.º 22
0
        def make_int32_grid():

            # create an int32 grid
            img = gxapi.GXIMG.create_new_file(3, 1, 50, 20, 'test.grd')

            # read 10 row, test that it is dummy
            vv = gxvv.GXvv(dtype=int)
            img.read_v(10, 0, 0, vv.gxvv)
            self.assertEqual(vv[10][0], gxapi.GS_S4DM)

            # fill 10'th row with 1, test that it is 1.
            vv.fill(1)
            img.write_v(10, 0, 0, vv.gxvv)
            img.read_v(10, 0, 0, vv.gxvv)
            self.assertEqual(vv[10][0], 1)

            # OK, grid is as expected, close
            img = None
Exemplo n.º 23
0
        verts = verts[faces].reshape(-1, 3)
        vx, vy, vz = gxvv.vvset_from_np(verts)
        vf1, vf2, vf3 = gxvv.vvset_from_np(faces)
        normals = gxg.vertex_normals_np(faces, verts)
        nx, ny, nz = gxvv.vvset_from_np(normals[faces].reshape(-1, 3))

        # using a constant color does not complain
        v3d.gxview.draw_surface_3d_ex('test', vx.gxvv, vy.gxvv, vz.gxvv,
                                      nx.gxvv, ny.gxvv, nz.gxvv,
                                      gxapi.GXVV.null(), gxg.C_GREY, vf1.gxvv,
                                      vf2.gxvv, vf3.gxvv,
                                      v3d.coordinate_system.gxipj)

        # using an array color raises invalid number of colour if we pass colours/vertex
        color = np.array([gxg.C_GREY for i in range(vx.length)])
        color_vv = gxvv.GXvv(color, dtype=np.int32)
        try:
            v3d.gxview.draw_surface_3d_ex('test2', vx.gxvv, vy.gxvv, vz.gxvv,
                                          nx.gxvv, ny.gxvv, nz.gxvv,
                                          color_vv.gxvv, gxg.C_GREY, vf1.gxvv,
                                          vf2.gxvv, vf3.gxvv,
                                          v3d.coordinate_system.gxipj)

        except gxapi.GXAPIError as e:
            print(str(e))

            # and if pass colours/face it asserts
            color = np.array([gxg.C_GREY for i in range(faces.shape[0])])
            color_vv = gxvv.GXvv(color, dtype=np.int32)
            v3d.gxview.draw_surface_3d_ex('test2', vx.gxvv, vy.gxvv, vz.gxvv,
                                          nx.gxvv, ny.gxvv, nz.gxvv,
Exemplo n.º 24
0
    def test_np(self):
        self.start(gsys.func_name())

        fid = (99, 0.1)
        npdata = np.array([1, 2, 3, 4, 5, 6, 7])
        with gxvv.GXvv(npdata, fid=fid) as vv:
            self.assertEqual(vv.fid, fid)
            self.assertEqual(vv.length, len(npdata))

            np2 = vv.get_np(vv.dtype)
            self.assertEqual(np2[0].shape, (7, ))
            np2, fid2 = vv.get_np(vv.dtype, start=1)
            self.assertEqual(fid2, (99.1, .1))
            self.assertEqual(np2.shape, (6, ))
            self.assertEqual(vv.get_np(vv.dtype, start=6)[0].shape, (1, ))
            self.assertRaises(gxvv.VVException, vv.get_np, vv.dtype, start=7)

            np3, fid3 = vv.get_np(np.int)
            self.assertEqual(fid3, fid)
            self.assertEqual(np3[0], 1)
            self.assertEqual(np3[6], 7)

            self.assertEqual(vv.get_float(6), 7.0)
            self.assertEqual(vv.get_int(6), 7)
            self.assertEqual(vv.get_string(6), "7")

        npdata = np.array([1, 2, 3, 4, 5, 6, 7], dtype=np.int)
        with gxvv.GXvv(npdata, fid=fid) as vv:
            np3 = vv.get_np(dtype=np.int64)
            self.assertEqual(np3[0][0], 1)
            self.assertEqual(np3[0][6], 7)
            np3 = vv.get_np(np.float)
            self.assertEqual(np3[0][0], 1.)
            self.assertEqual(np3[0][6], 7.)

            vv.set_np(np.array([4, 5, 6, 7], dtype=np.int))
            np3, fid = vv.get_np(dtype=np.int64)
            self.assertEqual(len(np3), 4)
            self.assertEqual(np3[0], 4)
            self.assertEqual(np3[3], 7)
            np3, fid = vv.get_np(np.float)
            self.assertEqual(np3[0], 4.)
            self.assertEqual(np3[3], 7.)

        npdata = np.array(['4', '5', '6', '7'])
        vv3 = gxvv.GXvv(npdata, fid=fid)
        np3, fid = vv3.get_np()
        self.assertEqual(len(np3), 4)
        self.assertEqual(np3[0], '4')
        self.assertEqual(np3[3], '7')
        np3, fid = vv.get_np(np.float)
        self.assertEqual(np3[0], 4.)
        self.assertEqual(np3[3], 7.)

        npdata = np.array(['4000', '50', '60', '-70'])
        vv3 = gxvv.GXvv(npdata, fid=fid)
        np3, fid = vv3.get_np()
        self.assertEqual(len(np3), 4)
        self.assertEqual(np3[0], '4000')
        self.assertEqual(np3[3], '-70')
        np3, fid = vv3.get_np(np.float)
        self.assertEqual(np3[0], 4000.)
        self.assertEqual(np3[3], -70.)
Exemplo n.º 25
0
    def test_mesh(self):
        self.start()

        v = list(np.array(range(27), dtype=np.float).reshape(-1, 3))
        f = list(np.array(range(len(v))).reshape(-1, 3))
        m = gxgeo.Mesh((f, v))
        self.assertEqual(len(m.faces), len(f))
        self.assertEqual(len(m.verticies), len(v))
        self.assertEqual(tuple(m[2][2]), (24., 25., 26.))
        self.assertEqual(tuple(m.extent_minimum), (0, 1, 2))
        m2 = m + 1.5
        self.assertEqual(tuple(m2[2][2]), (25.5, 26.5, 27.5))
        self.assertEqual(tuple(m2.extent_minimum), (1.5, 2.5, 3.5))
        m2 = m2 - 1.5
        self.assertEqual(tuple(m2[2][2]), (24., 25., 26.))
        self.assertEqual(tuple(m2.extent_minimum), (0, 1, 2))
        m2 = m + (1, 10, 50)
        self.assertEqual(tuple(m2[2][2]), (25., 35., 76.))
        self.assertEqual(tuple(m2.extent_minimum), (1, 11, 52))
        m2 = m2 - (1, 10, 50)
        self.assertEqual(tuple(m2[2][2]), (24., 25., 26.))
        self.assertEqual(tuple(m2.extent_minimum), (0, 1, 2))
        m2 = m + (m + (1, 10, 50))
        self.assertEqual(tuple(m2.extent_maximum), (25., 35., 76.))
        self.assertEqual(m2.extent_maximum_xyz, (25., 35., 76.))
        self.assertEqual(m2.extent_minimum_xyz, (0, 1, 2))
        self.assertEqual(m2.extent_maximum_xy, (25., 35.))
        self.assertEqual(m2.extent_minimum_xy, (0, 1))
        self.assertEqual(m2.centroid_xyz, (12.5, 18.0, 39.0))
        self.assertEqual(m2.centroid_xy, (12.5, 18.0))

        self.assertEqual(len(m2), 2 * len(m))
        mm = gxgeo.Mesh((np.append(m2.faces, m2.faces, axis=0), m2.verticies))
        self.assertEqual(len(mm), 12)
        self.assertEqual(len(mm.verticies), 18)
        mp = mm.point_array()
        self.assertEqual(len(mp), 18)
        mp = mm.point_array(unique=False)
        self.assertEqual(len(mp), 36)

        v = np.array(v)
        v[:, 0] += 500000
        v[:, 1] += 6000000
        m = gxgeo.Mesh((f, v), coordinate_system="NAD83 / UTM zone 17N")
        m = gxgeo.Mesh(m, coordinate_system="NAD27 / UTM zone 17N")
        self.assertEqual(str(m.coordinate_system), "NAD27 / UTM zone 17N")
        self.assertEqual(tuple(m[2][2]),
                         (500006.87887296296, 5999802.6514122421, 26.0))

        m83 = gxgeo.Mesh(m, coordinate_system="NAD83 / UTM zone 17N")
        self.assertEqual(m83.coordinate_system, "NAD83 / UTM zone 17N")
        self.assertEqual(tuple(m[2][2]),
                         (500006.87887296296, 5999802.6514122421, 26.0))
        self.assertEqual(tuple(m83[2][2]),
                         (500024.00010005565, 6000025.0009018015, 26.0))

        f = np.array(f)
        f1vv = gxvv.GXvv(f[:, 0])
        f2vv = gxvv.GXvv(f[:, 1])
        f3vv = gxvv.GXvv(f[:, 2])
        xvv = gxvv.GXvv(v[:, 0])
        yvv = gxvv.GXvv(v[:, 1])
        zvv = gxvv.GXvv(v[:, 2])
        m = gxgeo.Mesh(((f1vv, f2vv, f3vv), (xvv, yvv, zvv)),
                       coordinate_system="NAD83 / UTM zone 17N",
                       name='vv')
        self.assertEqual(m.name, 'vv')
        mm = gxgeo.Mesh(m, coordinate_system="NAD27 / UTM zone 17N")
        self.assertEqual(mm.name, '_mesh_')
        m2 = gxgeo.Mesh(mm,
                        coordinate_system="NAD27 / UTM zone 17N",
                        name='vv_copy')
        self.assertEqual(m2.name, 'vv_copy')
        self.assertEqual(str(m2.coordinate_system), "NAD27 / UTM zone 17N")
        self.assertEqual(tuple(m2[2][2]),
                         (500006.87887296296, 5999802.6514122421, 26.0))
        self.assertEqual(str(m2), 'vv_copy(3 faces)')
        self.assertTrue(mm == m2)
        self.assertEqual(len(list(m2)), 3)
        self.assertFalse(m == m2)

        m3 = m + m2
        self.assertEqual(len(m3), 6)
        self.assertEqual(m3.length, 6)

        f1vv, f2vv, f3vv = m3.faces_vv()
        self.assertEqual(tuple(f1vv.np), (0, 3, 6, 9, 12, 15))
        self.assertEqual(tuple(f2vv.np), (1, 4, 7, 10, 13, 16))
        self.assertEqual(tuple(f3vv.np), (2, 5, 8, 11, 14, 17))
        xvv, yvv, zvv = m3.verticies_vv()
        self.assertEqual(tuple(xvv.np[:3]), (500000.0, 500003.0, 500006.0))
        self.assertEqual(tuple(yvv.np[:3]), (6000001.0, 6000004.0, 6000007.0))
        self.assertEqual(tuple(zvv.np[:3]), (2.0, 5.0, 8.0))
Exemplo n.º 26
0
    def test_strings(self):
        self.start()

        fidvv = (99, 0.1)
        npdata = np.array(["name", "maki", "neil", "rider"])
        with gxvv.GXvv(npdata, fid=fidvv) as vv:
            self.assertTrue(vv.is_string)
            self.assertFalse(vv.is_int)
            self.assertFalse(vv.is_float)
            self.assertEqual(vv.fid, fidvv)
            self.assertEqual(vv.length, len(npdata))
            self.assertEqual(vv.gxtype, -20)
            self.assertTrue(vv.dtype.type is np.str_)
            self.assertEqual(str(vv.dtype), '<U5')

            npd, fid = vv.get_data(vv.dtype)
            self.assertEqual(npd[0], "name")
            self.assertEqual(npd[1], "maki")
            self.assertEqual(npd[2], "neil")
            self.assertEqual(npd[3], "rider")

            npd, fid = vv.get_data(vv.dtype, start=2, n=2)
            self.assertEqual(npd[0], "neil")
            self.assertEqual(npd[1], "rider")
            self.assertEqual(fid, (99.2, 0.1))

            vv.fill(2.5)
            self.assertEqual(vv[0][0], '2.5')
            self.assertEqual(vv[len(vv) - 1][0], '2.5')

        npdata = np.array(["1", "2", "3", "4000", "*"])
        with gxvv.GXvv(npdata, fid=fid) as vv:
            npd, fid = vv.get_data(np.float)
            self.assertEqual(npd[0], 1.0)
            self.assertEqual(npd[1], 2.0)
            self.assertEqual(npd[2], 3.0)
            self.assertEqual(npd[3], 4000.0)
            self.assertTrue(np.isnan(npd[4]))

        npdata = np.array(["1", "2", "3", "4000", "40000", "*"])
        with gxvv.GXvv(npdata, fid=fid) as vv:
            npd, fid = vv.get_data(np.int)
            self.assertEqual(npd[0], 1)
            self.assertEqual(npd[1], 2)
            self.assertEqual(npd[2], 3)
            self.assertEqual(npd[3], 4000)
            self.assertEqual(npd[4], 40000)
            self.assertEqual(npd[5], gxapi.iDUMMY)

        with gxvv.GXvv(npdata, fid=fid, dtype=np.float) as vv:
            npd, fid = vv.get_data(np.int)
            self.assertEqual(npd[0], 1)
            self.assertEqual(npd[1], 2)
            self.assertEqual(npd[2], 3)
            self.assertEqual(npd[3], 4000)
            self.assertEqual(npd[4], 40000)
            self.assertEqual(npd[5], gxapi.iDUMMY)
            npd, fid = vv.get_data(np.int32)
            self.assertEqual(npd[5], gxapi.GS_S4DM)
            npd, fid = vv.get_data(np.int64)
            self.assertEqual(npd[5], gxapi.GS_S8DM)
            npd, fid = vv.get_data(np.float)
            self.assertTrue(np.isnan(npd[5]))
            npd, fid = vv.get_data(np.float32)
            self.assertTrue(np.isnan(npd[5]))
            npd, fid = vv.get_data(np.float64)
            self.assertTrue(np.isnan(npd[5]))

        with gxvv.GXvv(npdata, fid=fid, dtype=np.float32) as vv:
            npd, fid = vv.get_data(np.float)
            self.assertTrue(np.isnan(npd[5]))
            npd, fid = vv.get_data(np.float32)
            self.assertTrue(np.isnan(npd[5]))
            npd, fid = vv.get_data(np.float64)
            self.assertTrue(np.isnan(npd[5]))

        with gxvv.GXvv(npdata, fid=fid, dtype=np.int64) as vv:
            npd, fid = vv.get_data(np.float)
            self.assertTrue(np.isnan(npd[5]))

        npdata = np.array(["1", "2", "3", "4000", "40000", "*"])
        with gxvv.GXvv(npdata, fid=fid) as vv:
            npd, fid = vv.get_data(np.int, start=2, n=3)
            self.assertEqual(npd[0], 3)
            self.assertEqual(npd[1], 4000)
            self.assertEqual(npd[2], 40000)

        npdata = np.array(["make_it_big enough"])
        with gxvv.GXvv(npdata, fid=fid) as vv:
            npd, fid = vv.get_data(np.int, start=0, n=1)
            self.assertEqual(npd[0], gxapi.iDUMMY)

            npdata = np.array([1., 2., -30., -87.66662])
            vv.set_data(npdata)
            npd, fid = vv.get_data(start=0, n=4)
            self.assertEqual(npd[0], "1.0")
            self.assertEqual(npd[2], "-30.0")
            self.assertEqual(npd[3], "-87.66662")

        npdata = np.array([1, 2, 3])
        with gxvv.GXvv(npdata, fid=fid) as vv:
            npd = vv.np
            self.assertEqual(npd[1], 2)

            npdata = np.array([1., 2., -30., -87.66662])
            vv.set_data(npdata)
            npd, fid = vv.get_data(start=0, n=4)
            self.assertEqual(npd[0], 1)
            self.assertEqual(npd[2], -30)
            self.assertEqual(npd[3], -88)
Exemplo n.º 27
0
 def test_init_len(self):
     self.start()
     with gxvv.GXvv(dtype=np.float, len=10) as vv:
         self.assertEqual(vv.length, 10)
Exemplo n.º 28
0
    def test_np(self):
        self.start()

        fid = (99, 0.1)
        npdata = np.array([1, 2, 3, 4, 5, 6, 7])
        with gxvv.GXvv(npdata, fid=fid) as vv:
            self.assertEqual(vv.fid, fid)
            self.assertEqual(vv.length, len(npdata))

            np2 = vv.get_data(vv.dtype)
            self.assertEqual(np2[0].shape, (7, ))
            np2, fid2 = vv.get_data(vv.dtype, start=1)
            self.assertEqual(fid2, (99.1, .1))
            self.assertEqual(np2.shape, (6, ))
            self.assertEqual(vv.get_data(vv.dtype, start=6)[0].shape, (1, ))
            self.assertRaises(gxvv.VVException, vv.get_data, vv.dtype, start=7)

            np3, fid3 = vv.get_data(np.int)
            self.assertEqual(fid3, fid)
            self.assertEqual(np3[0], 1)
            self.assertEqual(np3[6], 7)

            self.assertEqual(float(vv.np[6]), 7.0)
            self.assertEqual(int(vv.np[6]), 7)
            self.assertEqual(str(vv.np[6]), "7")

        npdata = np.array([1, 2, 3, 4, 5, 6, 7], dtype=np.int)
        with gxvv.GXvv(npdata, fid=fid) as vv:
            np3 = vv.get_data(dtype=np.int64)
            self.assertEqual(np3[0][0], 1)
            self.assertEqual(np3[0][6], 7)
            np3 = vv.get_data(np.float)
            self.assertEqual(np3[0][0], 1.)
            self.assertEqual(np3[0][6], 7.)

            vv.set_data(np.array([4, 5, 6, 7], dtype=np.int))
            np3, fid = vv.get_data(dtype=np.int64)
            self.assertEqual(len(np3), 4)
            self.assertEqual(np3[0], 4)
            self.assertEqual(np3[3], 7)
            np3, fid = vv.get_data(np.float)
            self.assertEqual(np3[0], 4.)
            self.assertEqual(np3[3], 7.)

        npdata = np.array(['4', '5', '6', '7'])
        with gxvv.GXvv(npdata, fid=fid) as vv3:
            np3, fid = vv3.get_data()
            self.assertEqual(len(np3), 4)
            self.assertEqual(np3[0], '4')
            self.assertEqual(np3[3], '7')
            np3, fid = vv3.get_data(np.float)
            self.assertEqual(np3[0], 4.)
            self.assertEqual(np3[3], 7.)

        npdata = np.array(['4000', '50', '60', '-70'])
        with gxvv.GXvv(npdata, fid=fid) as vv3:
            self.assertTrue(vv3.is_string)
            self.assertFalse(vv3.is_int)
            self.assertFalse(vv3.is_float)
            npf = vv3.np
            self.assertEqual(len(npf), 4)
            self.assertEqual(npf[0], '4000')
            self.assertEqual(npf[3], '-70')
            npf, fid = vv3.get_data(np.float)
            self.assertEqual(npf[0], 4000.)
            self.assertEqual(npf[3], -70.)
            self.assertEqual(vv3.min_max(), (-70., 4000.))

        with gxvv.GXvv(['maki', 'bob']) as vv:
            self.assertEqual(vv.min_max(), (None, None))

        self.assertEqual(gxvv.GXvv(['*', 1]).min_max(), (1., 1.))