def test_slices_are_associated_single_index(): dataset = examples.load_structured() points = pyvista_ndarray(dataset.GetPoints().GetData(), dataset=dataset) assert points[1, 1].VTKObject == points.VTKObject assert points[1, 1].dataset.Get() == points.dataset.Get() assert points[1, 1].association == points.association
def datasets(): return [ examples.load_uniform(), # UniformGrid examples.load_rectilinear(), # RectilinearGrid examples.load_hexbeam(), # UnstructuredGrid examples.load_airplane(), # PolyData examples.load_structured(), # StructuredGrid ]
def test_slices_are_associated(): dataset = examples.load_structured() points = pyvista_ndarray(dataset.GetPoints().GetData(), dataset=dataset) # check that slices of pyvista_ndarray are associated correctly assert points[1, :].VTKObject == points.VTKObject assert points[1, :].dataset.Get() == points.dataset.Get() assert points[1, :].association == points.association
def test_struct_example(): # create and plot structured grid grid = examples.load_structured() cpos = grid.plot(off_screen=True) # basic plot assert isinstance(cpos, list) # Plot mean curvature cpos_curv = grid.plot_curvature(off_screen=True) assert isinstance(cpos_curv, list)
def test_copies_are_not_associated(): dataset = examples.load_structured() points = pyvista_ndarray(dataset.GetPoints().GetData(), dataset=dataset) points_2 = points.copy() # check that copies of pyvista_ndarray are dissociated from the original dataset assert points_2.VTKObject is None assert points_2.dataset is None assert points_2.association.name == 'NONE' assert not np.shares_memory(points, points_2)
def structured_grids_split_disconnected(): """Two structured grids which are disconnected.""" structured = examples.load_structured() point_data = (np.ones((80, 80)) * np.arange(0, 80)).ravel(order='F') cell_data = (np.ones((79, 79)) * np.arange(0, 79)).T.ravel(order='F') structured.point_arrays['point_data'] = point_data structured.cell_arrays['cell_data'] = cell_data voi_1 = structured.extract_subset([0, 80, 0, 40, 0, 1]) voi_2 = structured.extract_subset([0, 80, 45, 80, 0, 1]) return voi_1, voi_2
def structured_grids_split_coincident(): """Two structured grids which are coincident along second axis (axis=1), and the grid from which they were extracted.""" structured = examples.load_structured() point_data = (np.ones((80, 80)) * np.arange(0, 80)).ravel(order='F') cell_data = (np.ones((79, 79)) * np.arange(0, 79)).T.ravel(order='F') structured.point_arrays['point_data'] = point_data structured.cell_arrays['cell_data'] = cell_data voi_1 = structured.extract_subset([0, 80, 0, 40, 0, 1]) voi_2 = structured.extract_subset([0, 80, 40, 80, 0, 1]) return voi_1, voi_2, structured
def test_modifying_modifies_dataset(): dataset = examples.load_structured() points = pyvista_ndarray(dataset.GetPoints().GetData(), dataset=dataset) dataset_modified = mock.Mock() array_modified = mock.Mock() dataset.AddObserver(_vtk.vtkCommand.ModifiedEvent, dataset_modified) points.AddObserver(_vtk.vtkCommand.ModifiedEvent, array_modified) # __setitem__ calls dataset.Modified() and points.Modified() points[:] *= 0.5 assert dataset_modified.call_count == 1 assert array_modified.call_count == 1 # __setitem__ with single-indices works does same points[0, 0] = 0.5 assert dataset_modified.call_count == 2 assert array_modified.call_count == 2 # setting all new points calls dataset.Modified() dataset.points = points.copy() assert dataset_modified.call_count == 3 assert array_modified.call_count == 2
import os import sys import platform import numpy as np import pytest import pyvista from pyvista import examples DATASETS = [ examples.load_uniform(), # UniformGrid examples.load_rectilinear(), # RectilinearGrid examples.load_hexbeam(), # UnstructuredGrid examples.load_airplane(), # PolyData examples.load_structured(), # StructuredGrid ] normals = ['x', 'y', '-z', (1, 1, 1), (3.3, 5.4, 0.8)] COMPOSITE = pyvista.MultiBlock(DATASETS, deep=True) skip_py2_nobind = pytest.mark.skipif( int(sys.version[0]) < 3, reason="Python 2 doesn't support binding methods") skip_windows = pytest.mark.skipif(os.name == 'nt', reason="Flaky Windows tests") skip_mac = pytest.mark.skipif(platform.system() == 'Darwin', reason="Flaky Mac tests") @pytest.fixture(scope='module')
mesh.dimensions = [29, 32, 1] # and then inspect it! mesh.plot(show_edges=True, show_grid=True, cpos="xy") ############################################################################### # Extending a 2D StructuredGrid to 3D # +++++++++++++++++++++++++++++++++++ # # A 2D :class:`pyvista.StructuredGrid` mesh can be extended into a 3D mesh. # This is highly applicable when wanting to create a terrain following mesh # in earth science research applications. # # For example, we could have a :class:`pyvista.StructuredGrid` of a topography # surface and extend that surface to a few different levels and connect each # "level" to create the 3D terrain following mesh. # # Let's start with a simple example by extending the wave mesh to 3D struct = examples.load_structured() struct.plot(show_edges=True) ############################################################################### top = struct.points.copy() bottom = struct.points.copy() bottom[:, -1] = -10.0 # Wherever you want the plane vol = pv.StructuredGrid() vol.points = np.vstack((top, bottom)) vol.dimensions = [*struct.dimensions[0:2], 2] vol.plot(show_edges=True)
def test_structured_add_non_grid(): grid = examples.load_structured() merged = grid + examples.load_hexbeam() assert isinstance(merged, pyvista.UnstructuredGrid)
def test_extract_subset_structured(): structured = examples.load_structured() voi = structured.extract_subset([0, 3, 1, 4, 0, 1]) assert isinstance(voi, pyvista.StructuredGrid) assert voi.dimensions == [4, 4, 1]
def test_struct_example(): # create and plot structured grid grid = examples.load_structured() grid.plot(off_screen=True) # basic plot grid.plot_curvature(off_screen=True)