Interface

The interface module provides functions to convert/cast between common VTK and NumPy/Pandas data types. These methods provide a simple to use interface for VTK data types so that users can make changes to VTK data structures via Python data structures that are easier to perform numerical operations on.

add_arrays_from_data_frame

PVGeo.interface.add_arrays_from_data_frame(pdo, field, df)[source]

Add all of the arrays from a given dataframe to an output’s data

convert_array

PVGeo.interface.convert_array(arr, name='Data', deep=0, array_type=None, pdf=False)[source]

A helper to convert a NumPy array to a vtkDataArray or vice versa

Parameters:
  • arr (ndarray or vtkDataArry) – A numpy array or vtkDataArry to convert

  • name (str) – the name of the data array for VTK

  • deep (bool, int) – if input is numpy array then deep copy values

  • pdf (bool) – if input is vtkDataArry, make a pandas DataFrame of the array

Returns:

the converted array (if input is a NumPy ndaray then returns vtkDataArray or is input is vtkDataArray then returns NumPy ndarray). If pdf==True and the input is vtkDataArry, return a pandas DataFrame.

Return type:

vtkDataArray, ndarray, or DataFrame

convert_cell_conn

PVGeo.interface.convert_cell_conn(cell_connectivity)[source]

Converts cell connectivity arrays to a cell matrix array that makes sense for VTK cell arrays.

convert_string_array

PVGeo.interface.convert_string_array(arr, name=None)[source]

Convert a numpy array of strings to a vtkStringArray or vice versa.

Parameters:
  • arr (numpy.ndarray) – Numpy string array to convert.

  • name (str, optional) – Name to set the vtkStringArray to.

Returns:

VTK string array.

Return type:

vtkStringArray

Notes

Note that this is terribly inefficient. If you have ideas on how to make this faster, please consider opening a pull request.

data_frame_to_table

PVGeo.interface.data_frame_to_table(df, pdo=None)[source]

Converts a pandas DataFrame to a vtkTable

get_array

PVGeo.interface.get_array(dataset, name, vtk_object=False)[source]

Given an input dataset, this will return the named array as a NumPy array or a vtkDataArray if specified

get_data_dict

PVGeo.interface.get_data_dict(dataset, field='cell')[source]

Given an input dataset, this will return all the arrays in that object’s cell/point/field/row data as named NumPy arrays in a dictionary.

get_dtypes

PVGeo.interface.get_dtypes(dtype='', endian=None)[source]

This converts char dtypes and an endian to a numpy and VTK data type.

Returns:

the numpy data type and the integer type id specified in vtkType.h for VTK data types

Return type:

tuple (numpy.dtype, int)

get_vtk_type

PVGeo.interface.get_vtk_type(typ)[source]

Look up the VTK type for a given numpy data type.

Corrects for string type mapping issues.

Parameters:

typ (numpy.dtype) – Numpy data type.

Returns:

Integer type id specified in vtkType.h.

Return type:

int

place_array_in_table

PVGeo.interface.place_array_in_table(ndarr, titles, pdo)[source]

Takes a 1D/2D numpy array and makes a vtkTable of it

Parameters:
  • ndarr (numpy.ndarray) – The 1D/2D array to be converted to a table

  • titles (list or tuple) – The titles for the arrays in the table. Must have same number of elements as columns in input ndarray

  • pdo (vtkTable) – The output data object pointer

Returns:

returns the same input pdo table

Return type:

vtkTable

points_to_poly_data

PVGeo.interface.points_to_poly_data(points, copy_z=False)[source]

Create vtkPolyData from a numpy array of XYZ points. If the points have more than 3 dimensions, then all dimensions after the third will be added as attributes. Assume the first three dimensions are the XYZ coordinates.

Parameters:
  • points (np.ndarray or pandas.DataFrame) – The points and pointdata

  • copy_z (bool) – A flag on whether to append the z values as a PointData array

Returns:

points with point-vertex cells

Return type:

vtkPolyData

table_to_data_frame

PVGeo.interface.table_to_data_frame(table)[source]

Converts a vtkTable to a pandas DataFrame