[Paraview] Can I generate a single file that contains data and filter settings?

Cory Quammen cory.quammen at kitware.com
Thu Feb 1 10:04:38 EST 2018


On Wed, Jan 31, 2018 at 4:51 PM, Wyatt Spear <wspear at cs.uoregon.edu> wrote:
> The data that I'm generating has a set of scalar values for every point in
> the 2D matrix, so a single data row looks like
> xcoord, ycoord, zcord(probably superfluous), scalar1, scalar2,...scalarN
> Since the data in your example is being rendered as an image directly I'm
> not sure how I could incorporate different scalar data which can be selected
> from the UI, as I can when running the table-to-points filter on a loaded
> CSV file.

Ah, I assumed your data was on a regular grid. I've modified the
example to set up a vtkPolyData instead to hold an unstructured set of
points. I have also shown how to add multiple arrays to the data set.
Just treat each scalar column you have as an array.

#### import the simple module from the paraview
from paraview.simple import *
#### disable automatic camera reset on 'Show'
paraview.simple._DisableFirstRenderCameraReset()

# Create a 2D image data object
from paraview import vtk
vtk_poly_data = vtk.vtkPolyData()
points = vtk.vtkPoints()
points.SetNumberOfPoints(200)
vtk_poly_data.SetPoints(points)

# Wrap data in numpy interface
from vtk.numpy_interface import dataset_adapter as dsa
poly_data = dsa.WrapDataObject(vtk_poly_data)

# Create numpy array. Set your data here
import numpy as np
x_coords = np.zeros(200) # zeros is just a stand-in for your actual data
y_coords = np.ones(200)
z_coords = np.zeros(200)

poly_data.Points[:,0] = x_coords
poly_data.Points[:,1] = y_coords
poly_data.Points[:,2] = z_coords

# Set the data in the image object
scalar1 = np.random.rand(200)
poly_data.PointData.append(scalar1, 'scalar1')
scalar2 = np.random.rand(200)
poly_data.PointData.append(scalar2, 'scalar2')

# Now set up a ParaView proxy for the image data
tp = PVTrivialProducer()
tp.GetClientSideObject().SetOutput(vtk_poly_data)
Show(tp)


# Set up filters, display options, etc. below


> Is there a way to have a python macro cause ParaView to request a file
> selection through the UI? Then I could have this single macro loaded and it
> could process any CSV file I select.

No, there is no ParaView-provided way to do that. Maybe there is some
other way you can do that with a different Python module. Note,
though, that ParaView does not provide a Python module manager a la
pip, so consider doing that experimental.

Cheers,
Cory

> Thanks,
> Wyatt
>
> On Wed, Jan 31, 2018 at 8:23 AM, Cory Quammen <cory.quammen at kitware.com>
> wrote:
>>
>> Wyatt,
>>
>> Here's a simple script that sets up a 200 x 200 image data object like
>> you might use for displaying a heat map.
>>
>> #### import the simple module from the paraview
>> from paraview.simple import *
>> #### disable automatic camera reset on 'Show'
>> paraview.simple._DisableFirstRenderCameraReset()
>>
>> # Create a 2D image data object
>> from paraview import vtk
>> vtk_image = vtk.vtkImageData()
>> vtk_image.SetDimensions(200, 200, 1) # Your size may vary
>>
>> # Wrap data in numpy interface
>> from vtk.numpy_interface import dataset_adapter as dsa
>> image = dsa.WrapDataObject(vtk_image)
>>
>> # Create numpy array. Set your data here
>> import numpy as np
>> arr = np.zeros(200*200)
>>
>> # Set the data in the image object
>> image.PointData.append(arr, 'myarray')
>>
>> # Now set up a ParaView proxy for the image data
>> tp = PVTrivialProducer()
>> tp.GetClientSideObject().SetOutput(vtk_image)
>> Show(tp)
>>
>>
>> # Set up filters, display options, etc. below
>>
>>
>> You can modify it as needed to set up your data array as a numpy array.
>>
>> Hope that helps,
>> Cory
>>
>> On Mon, Jan 29, 2018 at 3:27 PM, Wyatt Spear <wspear at cs.uoregon.edu>
>> wrote:
>> > I think the python scripting with embedded data is worth a try. I'm not
>> > familiar with the built-in vs other server modes so I'm not sure what
>> > kind
>> > of restrictions that entails.  Probably my ultimate goal is to build a
>> > reader plugin that will parse the data out of my application's native
>> > format
>> > but generating a script seems like a decent interim solution.
>> >
>> > Thanks,
>> > Wyatt
>> >
>> > On Mon, Jan 29, 2018 at 5:57 AM, Cory Quammen <cory.quammen at kitware.com>
>> > wrote:
>> >>
>> >> Wyatt,
>> >>
>> >> ParaView provides extensive Python scriptability. One solution is to
>> >> write out a Python script from your program. Within the Pythons
>> >> script, you set up the data, set up filters and modify visualization
>> >> settings just as you wish. Once it is loaded, you can continue to
>> >> explore your data by creating new filters, changing visualization
>> >> parameters, and so on.
>> >>
>> >> Creating example Python scripts is easy using the Trace functionality
>> >> (Tools menu -> Start Trace) - you just interact with the UI and the
>> >> equivalent Python operations will be written to the trace file. Use
>> >> such a trace as a basis for what is written from your program.
>> >>
>> >> To save the data to the Python script and then load it is a different
>> >> use case from what we typical support, but I think it is doable. It
>> >> would just look a little ugly (and it would only work in built-in
>> >> server mode). Basically, you could write out your data in a NumPy
>> >> array within the script, as if you were entering the array information
>> >> by hand, then provide that data to what's called a TrivialProducer
>> >> source. This source would stand in place of a reader. There is a
>> >> little bit of code required to do that that isn't super obvious -
>> >> before sketching it out, would this approach work for your needs?
>> >>
>> >> Thanks,
>> >> Cory
>> >>
>> >>
>> >>
>> >> On Sun, Jan 28, 2018 at 10:10 PM, Wyatt Spear <wspear at cs.uoregon.edu>
>> >> wrote:
>> >> > Thanks, I'll take a look at this. My use case is pretty severely
>> >> > underutilizing ParaView's capabilities though. I'm rendering very
>> >> > large
>> >> > multi-variable heat maps. So color mapped 2d points are all I need
>> >> > rendered,
>> >> > (until I can figure out how to map glyph height to another variable).
>> >> >
>> >> > =Wyatt
>> >> >
>> >> >
>> >> > On Sat, Jan 27, 2018 at 8:52 AM Samuel Key <samuelkey at bresnan.net>
>> >> > wrote:
>> >> >>
>> >> >> Wyatt--
>> >> >>
>> >> >> While ParaView can read CSV files and subsequently generate images,
>> >> >> the
>> >> >> CSV format for simulation results limits the functionality available
>> >> >> to
>> >> >> you
>> >> >> in ParaView. My suggestion is that you write your simulation results
>> >> >> in
>> >> >> a
>> >> >> format that contains geometry information, as well as, Point and
>> >> >> Cell
>> >> >> centered values like displacement, velocity, acceleration,
>> >> >> temperature,
>> >> >> concentrations, volume fractions, et cetera.
>> >> >>
>> >> >> The attached document is a good place to start. (This document is
>> >> >> very
>> >> >> concise and very complete, but the information is only written down
>> >> >> once. As
>> >> >> a result, the format information is sometimes not located where you
>> >> >> need
>> >> >> it.)
>> >> >>
>> >> >> If your simulations are concerned with the deformation of 3-D solids
>> >> >> and
>> >> >> structures, I can provide you with FORTRAN95 routines that you can
>> >> >> use
>> >> >> to
>> >> >> write VTK-formatted simulation results.
>> >> >>
>> >> >> Once you can generate VTK-formatted datum sets, The File > Save
>> >> >> State
>> >> >> command will generate *.pvsm files that will let you "recreate" a
>> >> >> previously
>> >> >> constructed Browser Pipeline. (The PV *.pvsm reader gives you the
>> >> >> opportunity to select a different datum set.)
>> >> >>
>> >> >> There is a small two-cell mesh file attached that might be helpful
>> >> >> to
>> >> >> you
>> >> >> when constructing a VTK-formatted file writer in your application.
>> >> >>
>> >> >> --Sam
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >> On 1/27/2018 8:46 AM, Wyatt Spear wrote:
>> >> >>
>> >> >> Greetings,
>> >> >>
>> >> >> Currently I am using my own application to generate a simple CSV
>> >> >> file
>> >> >> which can be loaded up in ParaView. I then create the visualization
>> >> >> I
>> >> >> want
>> >> >> with a few manual filter operations.
>> >> >>
>> >> >> What I would like is to generate a file, preferably still with a
>> >> >> field
>> >> >> for
>> >> >> CSV-like raw data, that tells ParaView to load the data and then
>> >> >> apply
>> >> >> the
>> >> >> filters I want, so the view I want is immediately available upon
>> >> >> loading the
>> >> >> file and the raw data is available if I want to try other filters.
>> >> >>
>> >> >> I've taken a look at vpt and pvd files saved from my intended view
>> >> >> but
>> >> >> I'm
>> >> >> not seeing much correspondence between the CSV data I generate, the
>> >> >> filters
>> >> >> I apply and the data fields in there. I'm also pondering the
>> >> >> save-state
>> >> >> and
>> >> >> trace/macro features of ParaView but I suspect those won't quite
>> >> >> square
>> >> >> with
>> >> >> my aim of generating a file in an external application which
>> >> >> includes
>> >> >> data.
>> >> >>
>> >> >> Could someone point me toward a proper way to do this? If it comes
>> >> >> down
>> >> >> to
>> >> >> plugin development I'm willing to take a look at that.
>> >> >>
>> >> >> Thanks,
>> >> >> Wyatt Spear
>> >> >>
>> >> >>
>> >> >> _______________________________________________
>> >> >> Powered by www.kitware.com
>> >> >>
>> >> >> Visit other Kitware open-source projects at
>> >> >> http://www.kitware.com/opensource/opensource.html
>> >> >>
>> >> >> Please keep messages on-topic and check the ParaView Wiki at:
>> >> >> http://paraview.org/Wiki/ParaView
>> >> >>
>> >> >> Search the list archives at: http://markmail.org/search/?q=ParaView
>> >> >>
>> >> >> Follow this link to subscribe/unsubscribe:
>> >> >> https://paraview.org/mailman/listinfo/paraview
>> >> >>
>> >> >>
>> >> >> _______________________________________________
>> >> >> Powered by www.kitware.com
>> >> >>
>> >> >> Visit other Kitware open-source projects at
>> >> >> http://www.kitware.com/opensource/opensource.html
>> >> >>
>> >> >> Please keep messages on-topic and check the ParaView Wiki at:
>> >> >> http://paraview.org/Wiki/ParaView
>> >> >>
>> >> >> Search the list archives at: http://markmail.org/search/?q=ParaView
>> >> >>
>> >> >> Follow this link to subscribe/unsubscribe:
>> >> >> https://paraview.org/mailman/listinfo/paraview
>> >> >
>> >> >
>> >> > _______________________________________________
>> >> > Powered by www.kitware.com
>> >> >
>> >> > Visit other Kitware open-source projects at
>> >> > http://www.kitware.com/opensource/opensource.html
>> >> >
>> >> > Please keep messages on-topic and check the ParaView Wiki at:
>> >> > http://paraview.org/Wiki/ParaView
>> >> >
>> >> > Search the list archives at: http://markmail.org/search/?q=ParaView
>> >> >
>> >> > Follow this link to subscribe/unsubscribe:
>> >> > https://paraview.org/mailman/listinfo/paraview
>> >> >
>> >>
>> >>
>> >>
>> >> --
>> >> Cory Quammen
>> >> Staff R&D Engineer
>> >> Kitware, Inc.
>> >>
>> >
>>
>>
>>
>> --
>> Cory Quammen
>> Staff R&D Engineer
>> Kitware, Inc.
>>
>



-- 
Cory Quammen
Staff R&D Engineer
Kitware, Inc.


More information about the ParaView mailing list