[Paraview] Combining vtk and paraview python scripts
Jeff Becker
jeffrey.c.becker at nasa.gov
Tue Jul 21 12:14:06 EDT 2015
On 07/20/2015 05:43 PM, Berk Geveci wrote:
> You probably need to update vtkImageExport and shallow copy its output
> to the programmable source's output. You also need to add something to
> the RequestInformation setting the whole extent. You need something like:
>
> from paraview import util
> util.SetOutputWholeExtent(self, [0,nx-1,0,ny-1,0,nz-1])
>
> By the way, there are better ways of getting numpy arrays into VTK
> than the image import stuff. See some of the earlier blogs here:
Right. I found the RequestInformation info above from searching the web.
Then I was able to follow the instructions in the ParaView Guide section
13.2.4 Reading binary 2D image. I basically replaced the image import
stuff with code analogous to the output assignment,
Thanks for your help.
-jeff
>
> http://www.kitware.com/blog/home/user/53/2
>
> Best,
> -berk
>
> On Mon, Jul 20, 2015 at 2:08 PM, Jeff Becker
> <jeffrey.c.becker at nasa.gov <mailto:jeffrey.c.becker at nasa.gov>> wrote:
>
> Hi,
>
> On 07/18/2015 05:17 PM, Berk Geveci wrote:
>> To elaborate on what Andy said, you can stick your entire VTK
>> script in side the programmable source. Which you can use in
>> batch mode as well. If you want to keep your VTK script as a
>> reusable code, I recommend making it a module that you import
>> from the programmable source.
>
> So if the last thing my VTK script does is set up a vtkImageImport
> object should that work as a programmable source (I tried but
> ParaView didn't get any bounds or scalar field name even though I
> set them up)? If not, what else do I need to do? Thanks.
>
> -jeff
>
>
>>
>> Best,
>> -berk
>>
>> On Tue, Jul 14, 2015 at 3:43 PM, Jeff Becker
>> <jeffrey.c.becker at nasa.gov <mailto:jeffrey.c.becker at nasa.gov>> wrote:
>>
>> On 07/14/2015 12:20 PM, Andy Bauer wrote:
>>> ParaView's Python Programmable Filter and Python
>>> Programmable Source use VTK Python wrapping to do the work
>>> while making it available in Paraview. Check out
>>> http://www.paraview.org/Wiki/Python_Programmable_Filter.
>>
>> Thanks. That's pretty neat, but what I'd really like is a
>> standalone script I can run in batch mode (no interaction) to
>> generate one png file per timestep for all the timesteps in
>> the data set. Essentially I'd like a way to construct a
>> pipeline between the vtk.vtkImageImport() object and the
>> ParaView renderView1.
>>
>> -jeff
>>
>>>
>>> On Tue, Jul 14, 2015 at 2:59 PM, Jeff Becker
>>> <jeffrey.c.becker at nasa.gov
>>> <mailto:jeffrey.c.becker at nasa.gov>> wrote:
>>>
>>> Hi.
>>>
>>> As a proof of concept, I have a vtk script that reads
>>> some binary data, and produces a vti file. I then have a
>>> second script that I generated using ParaView's tracing
>>> facility while viewing the data. Now I'd like to combine
>>> them, so as to eliminate the intermediate file, i.e., go
>>> from binary data directly to rendering. To be specific,
>>> my vtk script ends like this:
>>>
>>> steinbmag = steinbmag.reshape(nx,ny,nz).T
>>>
>>> vtkImporter = vtk.vtkImageImport()
>>> vtkImporter.CopyImportVoidPointer(steinbmag,
>>> steinbmag.nbytes)
>>>
>>> vtkImporter.SetDataScalarTypeToFloat()
>>> vtkImporter.SetNumberOfScalarComponents(1)
>>> vtkImporter.SetDataExtent(0, nx-1, 0, ny-1, 0, nz-1)
>>> vtkImporter.SetWholeExtent(0, nx-1, 0, ny-1, 0, nz-1)
>>> vtkImporter.SetScalarArrayName('B field magnitude')
>>>
>>> writer=vtk.vtkXMLImageDataWriter()
>>> writer.SetFileName(out_fname)
>>> writer.SetInputConnection(vtkImporter.GetOutputPort())
>>> writer.Write()
>>>
>>> and the ParaView script starts like this:
>>>
>>> from paraview.simple import *
>>>
>>> paraview.simple._DisableFirstRenderCameraReset()
>>>
>>> filepfx = '/nobackup/jcbecker/steinBmag_0'
>>> infile = filepfx+'.vti'
>>> # create a new 'XML Image Data Reader'
>>> steinBmag_ = XMLImageDataReader(FileName=infile)
>>> steinBmag_.CellArrayStatus = []
>>> steinBmag_.PointArrayStatus = ['B field magnitude']
>>>
>>> # get animation scene
>>> animationScene1 = GetAnimationScene()
>>>
>>> # update animation scene based on data timesteps
>>> animationScene1.UpdateAnimationUsingDataTimeSteps()
>>>
>>> # get active view
>>> renderView1 = GetActiveViewOrCreate('RenderView')
>>> # uncomment following to set a specific view size
>>> renderView1.ViewSize = [1090, 761]
>>>
>>> I'm looking at the VTK examples and pvpython
>>> documentation, but any help is appreciated.
>>>
>>> Thanks.
>>>
>>> -jeff
>>> _______________________________________________
>>> Powered by www.kitware.com <http://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:
>>> http://public.kitware.com/mailman/listinfo/paraview
>>>
>>>
>>
>>
>> _______________________________________________
>> Powered by www.kitware.com <http://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:
>> http://public.kitware.com/mailman/listinfo/paraview
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview/attachments/20150721/f7b5be0f/attachment.html>
More information about the ParaView
mailing list