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_table_row_arrays(): nr, nc = 50, 3 arrays = np.random.rand(nr, nc) table = pyvista.Table() for i in range(nc): table['foo{}'.format(i)] = arrays[:, i] assert table.n_columns == nc assert table.n_rows == nr for i in range(nc): assert np.allclose(table['foo{}'.format(i)], arrays[:, i]) _ = table._row_array() # Multi component table = pyvista.Table() table['multi'] = arrays assert table.n_columns == 1 assert table.n_rows == nr assert np.allclose(table[0], arrays) assert np.allclose(table['multi'], arrays) del table['multi'] assert table.n_columns == 0 dataset = examples.load_hexbeam() array_dict = dataset.point_arrays # Test dict methods table = pyvista.Table() table.update(array_dict) assert table.n_rows == dataset.n_points assert table.n_columns == len(array_dict) assert len(table.row_arrays) == len(array_dict) for name in table.keys(): assert np.allclose(dataset[name], table[name]) for i, array in enumerate(table.values()): name = table.keys()[i] assert np.allclose(dataset[name], array) for name, array in table.items(): assert np.allclose(dataset[name], array) n = table.n_arrays array = table.pop(table.keys()[0]) assert isinstance(array, np.ndarray) assert table.n_arrays == n - 1 array = table.get(table.keys()[0]) assert isinstance(array, np.ndarray) assert table.n_arrays == n - 1 del table[table.keys()[0]] assert table.n_arrays == n - 2 return
def test_warp_by_scalar(): data = examples.load_uniform() warped = data.warp_by_scalar() assert data.n_points == warped.n_points warped = data.warp_by_scalar(scale_factor=3) assert data.n_points == warped.n_points warped = data.warp_by_scalar(normal=[1, 1, 3]) assert data.n_points == warped.n_points # Test in place! foo = examples.load_hexbeam() warped = foo.warp_by_scalar() foo.warp_by_scalar(inplace=True) assert np.allclose(foo.points, warped.points)
def plot_beam(notebook=None): """Plot a beam with displacement. Parameters ---------- notebook : bool, optional When ``True``, the resulting plot is placed inline a jupyter notebook. Assumes a jupyter console is active. Examples -------- >>> from pyvista import demos >>> demos.plot_beam() """ # Create fiticious displacements as a function of Z location grid = examples.load_hexbeam() d = grid.points[:, 2]**3/250 grid.points[:, 1] += d # Camera position cpos = [(11.915126303095157, 6.11392754955802, 3.6124956735471914), (0.0, 0.375, 2.0), (-0.42546442225230097, 0.9024244135964158, -0.06789847673314177)] try: import matplotlib cmap = 'bwr' except ImportError: # pragma: no cover cmap = None # plot this displaced beam plotter = pv.Plotter(notebook=notebook) plotter.add_mesh(grid, scalars=d, scalar_bar_args={'title': 'Y Displacement'}, rng=[-d.max(), d.max()], cmap=cmap) plotter.camera_position = cpos plotter.add_text('Static Beam Example') plotter.show()
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')
def test_destructor(): ugrid = examples.load_hexbeam() ref = weakref.ref(ugrid) del ugrid assert ref() is None
def hexbeam(): return examples.load_hexbeam()
def test_table_init(tmpdir): """Save some delimited text to a file and read it""" filename = str(tmpdir.mkdir("tmpdir").join('tmp.%s' % 'csv')) nr, nc = 50, 3 arrays = np.random.rand(nr, nc) # Create from 2D array table = pyvista.Table(arrays) assert table.n_rows == nr assert table.n_columns == nc assert table.n_arrays == nc assert len(table.row_arrays) == nc for i in range(nc): assert np.allclose(arrays[:, i], table[i]) with pytest.raises(AssertionError): pyvista.Table(np.random.rand(100)) with pytest.raises(AssertionError): pyvista.Table(np.random.rand(100, 2, 3)) # create from dictionary array_dict = {} for i in range(nc): array_dict['foo{}'.format(i)] = arrays[:, i].copy() table = pyvista.Table(array_dict) assert table.n_rows == nr assert table.n_columns == nc assert len(table.row_arrays) == nc for i in range(nc): assert np.allclose(arrays[:, i], table['foo{}'.format(i)]) dataset = examples.load_hexbeam() array_dict = dataset.point_arrays table = pyvista.Table(array_dict) assert table.n_rows == dataset.n_points assert table.n_columns == len(array_dict) assert len(table.row_arrays) == len(array_dict) for name in table.keys(): assert np.allclose(dataset[name], table[name]) # Create from vtkTable object h = '\t'.join(['a{}'.format(i) for i in range(nc)]) np.savetxt(filename, arrays, delimiter='\t', header=h, comments='') reader = vtk.vtkDelimitedTextReader() reader.SetFileName(filename) reader.DetectNumericColumnsOn() reader.SetFieldDelimiterCharacters('\t') reader.SetHaveHeaders(True) reader.Update() # Test init table = pyvista.Table(reader.GetOutput(), deep=True) assert isinstance(table, vtk.vtkTable) assert isinstance(table, pyvista.Table) table = pyvista.Table(reader.GetOutput(), deep=False) assert isinstance(table, vtk.vtkTable) assert isinstance(table, pyvista.Table) # Test wrap table = pyvista.wrap(reader.GetOutput()) assert isinstance(table, vtk.vtkTable) assert isinstance(table, pyvista.Table) assert table.n_rows == nr assert table.n_columns == nc assert len(table.row_arrays) == nc for i in range(nc): assert np.allclose(arrays[:, i], table[i]) with pytest.raises(TypeError): pyvista.Table("foo") return
def test_structured_add_non_grid(): grid = examples.load_structured() merged = grid + examples.load_hexbeam() assert isinstance(merged, pyvista.UnstructuredGrid)
import numpy as np import pyvista as pv from pyvista import examples mesh = examples.load_hexbeam() print(mesh) bcpos = [(6.20, 3.00, 7.50), (0.16, 0.13, 2.65), (-0.28, 0.94, -0.21)] p = pv.Plotter() p.add_mesh(mesh, show_edges=True, color='red') # p.add_mesh(pv.PolyData(mesh.points), color='red', # point_size=10, render_points_as_spheres=True) p.camera_position = [(6.20, 3.00, 7.50), (0.16, 0.13, 2.65), (-0.28, 0.94, -0.21)] p.show(screenshot='beam_nodes.png')