Example #1
0
 def test_writer(self):
     """`WriteImageDataToSGeMS`: check data integrity across I/O"""
     writer = WriteImageDataToSGeMS()
     filename = os.path.join(self.test_dir, 'test-writer.dat')
     writer.SetFileName(filename)
     writer.Write(self.GRID)
     # Now read that data and compare
     reader = SGeMSGridReader()
     read = reader.apply(filename)
     # Compare data
     truedata = self.GRID.GetCellData()
     testdata = read.GetCellData()
     self.assertEqual(truedata.GetNumberOfArrays(),
                      testdata.GetNumberOfArrays())
     wtbl = dsa.WrapDataObject(self.GRID)
     wrd = dsa.WrapDataObject(read)
     self.assertEqual(self.GRID.GetDimensions(), wrd.GetDimensions())
     self.assertEqual(self.GRID.GetOrigin(), wrd.GetOrigin())
     self.assertEqual(self.GRID.GetSpacing(), wrd.GetSpacing())
     for i in range(truedata.GetNumberOfArrays()):
         self.assertIsNotNone(wtbl.CellData[i])
         self.assertIsNotNone(wrd.CellData[i])
         self.assertTrue(np.allclose(wtbl.CellData[i], wrd.CellData[i]))
     for i in range(self.GRID.GetCellData().GetNumberOfArrays()):
         self.assertIsNotNone(wtbl.CellData[i])
         self.assertIsNotNone(wrd.CellData[i])
         self.assertTrue(np.allclose(wtbl.CellData[i], wrd.CellData[i]))
Example #2
0
 def test_bad_file(self):
     """`SGeMSGridReader`: check handling of bad input file"""
     filename = os.path.join(self.test_dir, 'test_bad.dat')
     header = ['Bad header', '%d' % len(self.titles)]
     for ln in self.titles:
         header.append(ln + '\n')
     header = '\n'.join(header)
     np.savetxt(filename,
                self.data,
                delimiter=' ',
                header=header,
                comments='')
     # Set up the reader
     reader = SGeMSGridReader()
     reader.AddFileName(filename)
     # Perform the read
     reader.Update()
     self.assertTrue(reader.error_occurred())
Example #3
0
 def setUp(self):
     TestBase.setUp(self)
     # Create a temporary directory
     self.test_dir = tempfile.mkdtemp()
     self.n = 100
     self.shape = (150, 200, 20)
     self.extent = (0, self.shape[0], 0, self.shape[1], 0, self.shape[2])
     self.titles = ['Array 1', 'Array 2', 'Array 3']
     ##### Now generate output for testing ####
     filename = os.path.join(self.test_dir, 'test.dat')
     self.data = np.random.random((self.n, len(self.titles)))
     header = ['%d %d %d' % self.shape, '%d' % len(self.titles)]
     for ln in self.titles:
         header.append(ln + '\n')
     header = '\n'.join(header)
     np.savetxt(filename,
                self.data,
                delimiter=' ',
                header=header,
                comments='')
     # Set up the reader
     self.GRID = SGeMSGridReader().apply(filename)
Example #4
0
 def set_time_delta(self, dt):
     SGeMSGridReader.set_time_delta(self, dt)
Example #5
0
 def set_comments(self, identifier):
     SGeMSGridReader.set_comments(self, identifier)
Example #6
0
 def set_skip_rows(self, skip):
     SGeMSGridReader.set_skip_rows(self, skip)
Example #7
0
 def SetSkipRows(self, skip):
     SGeMSGridReader.SetSkipRows(self, skip)
Example #8
0
 def set_origin(self, ox, oy, oz):
     SGeMSGridReader.set_origin(self, ox, oy, oz)
Example #9
0
 def SetDelimiter(self, deli):
     SGeMSGridReader.SetDelimiter(self, deli)
Example #10
0
 def SetOrigin(self, ox, oy, oz):
     SGeMSGridReader.SetOrigin(self, ox, oy, oz)
Example #11
0
 def SetSpacing(self, dx, dy, dz):
     SGeMSGridReader.SetSpacing(self, dx, dy, dz)
Example #12
0
 def GetTimestepValues(self):
     """This is critical for registering the timesteps"""
     return SGeMSGridReader.GetTimestepValues(self)
Example #13
0
 def SetTimeDelta(self, dt):
     SGeMSGridReader.SetTimeDelta(self, dt)
Example #14
0
 def SetComments(self, identifier):
     SGeMSGridReader.SetComments(self, identifier)
Example #15
0
 def get_time_step_values(self):
     """This is critical for registering the timesteps"""
     return SGeMSGridReader.get_time_step_values(self)
Example #16
0
 def set_spacing(self, dx, dy, dz):
     SGeMSGridReader.set_spacing(self, dx, dy, dz)
Example #17
0
 def __init__(self):
     SGeMSGridReader.__init__(self)
Example #18
0
class TestSGeMSGridReader(TestBase):
    """
    Test the `SGeMSGridReader` and `WriteImageDataToSGeMS`
    """
    def setUp(self):
        TestBase.setUp(self)
        # Create a temporary directory
        self.test_dir = tempfile.mkdtemp()
        self.n = 100
        self.shape = (150, 200, 20)
        self.extent = (0, self.shape[0], 0, self.shape[1], 0, self.shape[2])
        self.titles = ['Array 1', 'Array 2', 'Array 3']
        ##### Now generate output for testing ####
        filename = os.path.join(self.test_dir, 'test.dat')
        self.data = np.random.random((self.n, len(self.titles)))
        header = ['%d %d %d' % self.shape, '%d' % len(self.titles)]
        for ln in self.titles:
            header.append(ln + '\n')
        header = '\n'.join(header)
        np.savetxt(filename,
                   self.data,
                   delimiter=' ',
                   header=header,
                   comments='')
        # Set up the reader
        self.GRID = SGeMSGridReader().apply(filename)

    def tearDown(self):
        # Remove the test data directory after the test
        shutil.rmtree(self.test_dir)
        TestBase.tearDown(self)

    ###########################################

    def test_data_array_titles(self):
        """`SGeMSGridReader`: data array titles"""
        for i, title in enumerate(self.titles):
            self.assertEqual(self.GRID.GetCellData().GetArrayName(i), title)
        return

    def test_shape(self):
        """`SGeMSGridReader`: check output grid shape"""
        self.assertEqual(self.GRID.GetExtent(), self.extent)
        self.assertEqual(self.GRID.GetNumberOfCells(),
                         self.extent[1] * self.extent[3] * self.extent[5])
        return

    def test_data(self, ):
        """`SGeMSGridReader`: data fidelity"""
        for i, title in enumerate(self.titles):
            arr = nps.vtk_to_numpy(self.GRID.GetCellData().GetArray(i))
            self.assertTrue(np.allclose(self.data[:, i], arr, rtol=RTOL))
        return

    def test_bad_file(self):
        """`SGeMSGridReader`: check handling of bad input file"""
        filename = os.path.join(self.test_dir, 'test_bad.dat')
        header = ['Bad header', '%d' % len(self.titles)]
        for ln in self.titles:
            header.append(ln + '\n')
        header = '\n'.join(header)
        np.savetxt(filename,
                   self.data,
                   delimiter=' ',
                   header=header,
                   comments='')
        # Set up the reader
        reader = SGeMSGridReader()
        reader.AddFileName(filename)
        # Perform the read
        reader.Update()
        self.assertTrue(reader.error_occurred())

    def test_writer(self):
        """`WriteImageDataToSGeMS`: check data integrity across I/O"""
        writer = WriteImageDataToSGeMS()
        filename = os.path.join(self.test_dir, 'test-writer.dat')
        writer.SetFileName(filename)
        writer.Write(self.GRID)
        # Now read that data and compare
        reader = SGeMSGridReader()
        read = reader.apply(filename)
        # Compare data
        truedata = self.GRID.GetCellData()
        testdata = read.GetCellData()
        self.assertEqual(truedata.GetNumberOfArrays(),
                         testdata.GetNumberOfArrays())
        wtbl = dsa.WrapDataObject(self.GRID)
        wrd = dsa.WrapDataObject(read)
        self.assertEqual(self.GRID.GetDimensions(), wrd.GetDimensions())
        self.assertEqual(self.GRID.GetOrigin(), wrd.GetOrigin())
        self.assertEqual(self.GRID.GetSpacing(), wrd.GetSpacing())
        for i in range(truedata.GetNumberOfArrays()):
            self.assertIsNotNone(wtbl.CellData[i])
            self.assertIsNotNone(wrd.CellData[i])
            self.assertTrue(np.allclose(wtbl.CellData[i], wrd.CellData[i]))
        for i in range(self.GRID.GetCellData().GetNumberOfArrays()):
            self.assertIsNotNone(wtbl.CellData[i])
            self.assertIsNotNone(wrd.CellData[i])
            self.assertTrue(np.allclose(wtbl.CellData[i], wrd.CellData[i]))

    def test_sgems_grid_writer_no_data(self):
        grid = pyvista.UniformGrid((10, 10, 10), (2, 2, 2))
        writer = WriteImageDataToSGeMS()
        filename = os.path.join(self.test_dir, 'test-writer-no-data.dat')
        writer.SetFileName(filename)
        writer.Write(grid)
        return
Example #19
0
 def AddFileName(self, filename):
     SGeMSGridReader.AddFileName(self, filename)
Example #20
0
 def set_delimiter(self, deli):
     SGeMSGridReader.set_delimiter(self, deli)
Example #21
0
 def set_split_on_white_space(self, flag):
     SGeMSGridReader.set_split_on_white_space(self, flag)
Example #22
0
~~~~~~~~~~~~~~~

Read SGeMS Grid file formats. The examples shown here are downloaded from
`Multiple-point Geostatistics stochastic modeling with training images <http://www.trainingimages.org/training-images-library.html>`_ website.
"""
# sphinx_gallery_thumbnail_number = 2
import pyvista
from pyvista import examples
from PVGeo.gslib import SGeMSGridReader

################################################################################
grid_url = 'http://www.trainingimages.org/uploads/3/4/7/0/34703305/a_wlreferencecat.zip'
filename, _ = examples.downloads._retrieve_file(grid_url,
                                                'A_WLreferenceCAT.sgems.zip')

grid = SGeMSGridReader().apply(filename)
print(grid)

################################################################################
warped = grid.cell_data_to_point_data().warp_by_scalar(scale_factor=5)
warped.plot()

################################################################################
grid_url = 'http://www.trainingimages.org/uploads/3/4/7/0/34703305/maules_creek_3d.zip'
filename, _ = examples.downloads._retrieve_file(grid_url,
                                                'Maules_Creek_3D.SGEMS.zip')

grid = SGeMSGridReader().apply(filename)
grid.plot(categories=True)

################################################################################
Example #23
0
 def SetUseTab(self, flag):
     SGeMSGridReader.SetUseTab(self, flag)