[Paraview] Plot over line CSV export python script not working

Luca Giannelli bilogo at gmail.com
Sun Oct 2 23:46:08 EDT 2011


Thank you very much Andy,
with your precious help I have been able to find out a working solution for
what I need.

I foud out the the original script is completly functional without any
modification....
the only BIG ISSUE was the the Paraview binaries provided by the Ubuntu
Repositories
do not provide all the needed python scripts for the execution of a perfect
python environment
in Paraview. I would like to notify this to the mantainers of the repos.
So, the workaround was this easy! I just installed Paraview from the latest
source and got
the thing running.

However I found another problem relatet of course to the execution of the
pipeline due to
the missing active source, just as you suggested in you mail. That was
easier to solve.
So I ended up with a working script I want to share with all those people
that may need it.
I'll send an heavily commented version with a dedicated email. Here is a
snippet just to let you
see how i did.
Thank you very much for your time!

Luca

------------------ CODE-------------------

try: paraview.simple
except: from paraview.simple import *
paraview.simple._DisableFirstRenderCameraReset()

fotobioreattore_foam = FindSource("fotobioreattore.foam")
SetActiveSource(fotobioreattore_foam)

PlotOverLine2 = PlotOverLine( Source="High Resolution Line Source" )
DataRepresentation7 = Show()

PlotOverLine2.Source.Point1 = [0.0, 0.0, 0.0]
PlotOverLine2.Source.Point2 = [0.0, 0.0, 0.43]

Render()

source = PlotOverLine2
writer = CreateWriter("YOUR_FILE_NAME_GOES_HERE.csv", source)
writer.FieldAssociation = "Points" # or "Cells"
writer.UpdatePipeline()
del writer

-------------------------------------------

2011/9/30 Andy Bauer <andy.bauer at kitware.com>

> I think the first problem is that there isn't an active source.  The
> GetActiveSource() is returning None and when you create subsequent filters
> that automatically connect to the active source it causes problems when you
> try to execute the pipeline.  Something along the lines of below should get
> you closer:
> =========
>
> try: paraview.simple
> except: from paraview.simple import *
> paraview.simple._DisableFirstRenderCameraReset()
>
> Wavelet()
> p = PlotOverLine()
> p.Source.Point1 = [-.5, -5., -5.]
> p.Source.Point2 = [.5, 5., 5.]
> w = CSVWriter()
> w.FileName = "/home/piota/csv.csv"
> w.UpdatePipeline()
> =========
>
> The problem here is that the output of PlotOverLine is a polydata and the
> writer is expecting a vtkTable.  I'm not sure how to convert between the
> two.  Maybe someone else can help you with that.
>
> The 2 things I'd try at this point are either creating my own writer using
> the python programmable filter or writing out a polydata file and parsing
> that for the information that you need.  The first one is probably the
> better choice of the two.
>
> Andy
>
>
>
> On Fri, Sep 30, 2011 at 12:47 AM, Luca Giannelli <bilogo at gmail.com> wrote:
>
>> Ok,
>>
>> I moved on a little..... Reading the output of the error reported in the
>> previous mail, it says that it cannot find "XArrayName". Looking the
>> original script you can see that it is needed for the definition of the plot
>> area properties in the GUI.... I don't need it as I only want a csv file, so
>> I commented out everything in that section. Running the script again it now
>> complains about being unable to find "CreateWriter". I need this to write
>> the csv file so this error becomes fatal.
>> As this function should be included in the paraview.simple that I load at
>> the beginning of the script (like explained in the manual), what I did was
>> to go through all the functions in the simple.py file to locate it. Without
>> any succes..... Then I went on with the brute-force approach and lauched:
>>
>> grep -H -r "CreateWriter" /usr
>>
>> Binary file /usr/lib/paraview/libvtkPVFilters.so matches
>>
>> Binary file /usr/lib/paraview/libvtkPVServerManager.so matches
>>
>> Binary file /usr/lib/paraview/libvtkIO.so.pv3.8 matches
>>
>> Binary file /usr/lib/paraview/libvtkPVServerManagerPythonD.so matches
>>
>> Binary file /usr/lib/paraview/libpqApplicationComponents.so matches
>>
>> Binary file /usr/lib/paraview/libvtkIO.so matches
>>
>>
>> Unfortunately they are all bin files and not py...
>>
>> I'm starting to believe that I'm really missing something here.....
>>
>> Any idea?
>>
>>
>> Thx!!!
>>
>>
>> Luca
>>
>>
>> 2011/9/30 Luca Giannelli <bilogo at gmail.com>
>>
>>> Andy,
>>>
>>> thank you for your quick reply.
>>>
>>> I am using Paraview 3.8.0 which is the latest binary in the Ubuntu repos.
>>> I chose to install that without compiling from source as I was rushing (I
>>> know, it sounds weird... but). Do you believe that the problem is
>>> build-related?
>>>
>>> However, reading the errors that you get I don't see anything that I can
>>> visualize in my output which is as follows (Python shell)
>>>
>>> Traceback (most recent call last):
>>>
>>> File "/usr/lib/paraview/site-packages/paraview/servermanager.py", line
>>> 2922, in _proxyDefinitionsUpdated
>>>
>>> if vtkSMObject.GetProxyManager().GetProxyDefinitionsUpdated():
>>>
>>> AttributeError: GetProxyDefinitionsUpdated
>>>
>>> Traceback (most recent call last):
>>>
>>> File "/usr/lib/paraview/site-packages/paraview/servermanager.py", line
>>> 2922, in _proxyDefinitionsUpdated
>>>
>>> if vtkSMObject.GetProxyManager().GetProxyDefinitionsUpdated():
>>>
>>> AttributeError: GetProxyDefinitionsUpdated
>>>
>>> Traceback (most recent call last):
>>>
>>> File "/usr/lib/paraview/site-packages/paraview/servermanager.py", line
>>> 2922, in _proxyDefinitionsUpdated
>>>
>>> if vtkSMObject.GetProxyManager().GetProxyDefinitionsUpdated():
>>>
>>> AttributeError: GetProxyDefinitionsUpdated
>>>
>>> Traceback (most recent call last):
>>>
>>> File "/usr/lib/paraview/site-packages/paraview/servermanager.py", line
>>> 2922, in _proxyDefinitionsUpdated
>>>
>>> if vtkSMObject.GetProxyManager().GetProxyDefinitionsUpdated():
>>>
>>> AttributeError: GetProxyDefinitionsUpdated
>>>
>>> Traceback (most recent call last):
>>>
>>> File "<string>", line 17, in <module>
>>>
>>> File "/usr/lib/paraview/site-packages/paraview/servermanager.py", line
>>> 201, in __setattr__
>>>
>>> "to add this attribute.")
>>>
>>> AttributeError: Attribute XArrayName does not exist. This class does not
>>> allow addition of new attributes to avoid mistakes due to typos. Use
>>> add_attribute() if you really want to add this attribute.
>>>
>>>
>>> It looks like a complain about the server, not about my script though....
>>> in fact, if comment out the writer part, leaving only the "trace" recorded
>>> set of operations, it spits out the very same error. Moreover, the Paraview
>>> output doesn't show any output at all (except for the usual a complain about
>>> the qt4 that is not related).
>>>
>>> Do you see any evident problem in the script syntax in the writer
>>> section? For example references to the wrong source, etc?
>>>
>>> Or do you believe that it is a problem related to the Paraview/Python
>>> installation (or whatever..).
>>>
>>>
>>> Another point.... does the "PlotOverLine2" influence the results? I
>>> recorded the trace making a second POL that automatically got labeled as
>>> #2... if I run it at startup it executes perfectly fine so I don't think
>>> that the problem is here too.
>>>
>>>
>>> I'm sorry for my pretty low level in Python as I am an absolute beginner
>>>
>>>
>>> Thanks again
>>>
>>>
>>> Luca
>>>
>>> 2011/9/29 Andy Bauer <andy.bauer at kitware.com>
>>>
>>>> If you're running the python script in the paraview gui sometimes the
>>>> messages are printed out to the python shell.  What version of paraview are
>>>> you using?
>>>>
>>>> I'm running paraview from the head of the repo.  The output I get from
>>>> the OutputMessages window is:
>>>> ================
>>>>
>>>> ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  ERROR: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDemandDrivenPipeline.cxx,
>>>> line 727
>>>>
>>>> vtkPVCompositeDataPipeline (0x493bbd0): Input port 1 of algorithm
>>>> vtkPProbeFilter(0x493dab0) has 0 connections but is not optional.
>>>>
>>>>  Warning: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDataObject.cxx, line
>>>> 920
>>>>
>>>> vtkMultiBlockDataSet (0x4da0e00): Attempted to ShallowCopy from null.
>>>>
>>>>  Warning: In
>>>> /home/acbauer/CODE/ParaView/ParaView/VTK/Filtering/vtkDataObject.cxx, line
>>>> 920
>>>>
>>>> vtkMultiBlockDataSet (0x4da3af0): Attempted to ShallowCopy from null.
>>>>
>>>>  ================
>>>>
>>>> The output I get from the python shell is:
>>>> ===============
>>>>
>>>> Traceback (most recent call last):
>>>>
>>>> File "<string>", line 17, in <module>
>>>>
>>>> File
>>>> "/media/ssddrive/BUILDS/ParaView/release-parallel/Utilities/VTKPythonWrapping/site-packages/paraview/servermanager.py",
>>>> line 209, in __setattr__
>>>>
>>>> "to add this attribute.")
>>>>
>>>> AttributeError: Attribute XArrayName does not exist. This class does not
>>>> allow addition of new attributes to avoid mistakes due to typos. Use
>>>> add_attribute() if you really want to add this attribute.
>>>>
>>>> ======================
>>>>
>>>>  On Thu, Sep 29, 2011 at 5:57 AM, Luca Giannelli <bilogo at gmail.com>wrote:
>>>>
>>>>>  Hello everybody,
>>>>>
>>>>> I've been using Paraview for quite a long time but I didn't need the
>>>>> python scripting up to now.
>>>>> I want to execute a series of plot over line in numerous points and
>>>>> different time steps so it is nothing
>>>>> I can afford to do manually.
>>>>> Looking on the net I was able to find out how to record a macro and how
>>>>> to create a writer so I
>>>>> ended up with this script:
>>>>>
>>>>> --------------------------------------------------------------------
>>>>> try: paraview.simple
>>>>> except: from paraview.simple import *
>>>>> paraview.simple._DisableFirstRenderCameraReset()
>>>>>
>>>>> fotobioreattore_foam = GetActiveSource()
>>>>> PlotOverLine2 = PlotOverLine( Source="High Resolution Line Source" )
>>>>>
>>>>> PlotOverLine2.Source.Point1 = [-0.035100001841783524,
>>>>> -0.03509980067610741, 0.0]
>>>>> PlotOverLine2.Source.Point2 = [0.035100001841783524,
>>>>> 0.035100001841783524, 0.4300000071525574]
>>>>>
>>>>>  DataRepresentation7 = Show()
>>>>>
>>>>> PlotOverLine2.Source.Point1 = [-0.0, 0.0, 0.0]
>>>>> PlotOverLine2.Source.Point2 = [0.0, 0.0, 0.4300000071525574]
>>>>>
>>>>> XYChartView4 = GetRenderView()
>>>>> DataRepresentation7.XArrayName = 'arc_length'
>>>>> DataRepresentation7.SeriesVisibility = ['U (0)', '0', 'U (1)', '0', 'U
>>>>> (2)', '0', 'vtkValidPointMask', '0', 'arc_length', '0', 'Points (0)', '0',
>>>>> 'Points (1)', '0', 'Points (2)', '0', 'Points (Magnitude)', '0']
>>>>> DataRepresentation7.UseIndexForXAxis = 0
>>>>>
>>>>> Render()
>>>>>
>>>>> #= create writer
>>>>> source = PlotOverLine2 #PlotOverLine2.Source
>>>>> writer = CreateWriter("/home/piota/csv.csv", source)
>>>>> #writer = CreateWriter("/home/piota/csv.csv")
>>>>> writer.FieldAssociation = "Points" # or "Cells"
>>>>> writer.UpdatePipeline()
>>>>> del writer
>>>>>
>>>>> --------------------------------------------------------------------------
>>>>>
>>>>> If I'm not mistaken, this should write a csv.csv file in my home folder
>>>>> but it doesn't write anything. No error is reported when I run the script
>>>>> but still I get no output.
>>>>> I'm still a bit confused on which source I should specify, so I'm
>>>>> pretty sure that the writer part is incorrect.
>>>>>
>>>>> Can somebody help me filling it out properly?
>>>>>
>>>>> Thx in advance.
>>>>>
>>>>> Luca
>>>>>
>>>>> _______________________________________________
>>>>> 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
>>>>>
>>>>> Follow this link to subscribe/unsubscribe:
>>>>> http://www.paraview.org/mailman/listinfo/paraview
>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20111003/d61f605e/attachment-0001.htm>


More information about the ParaView mailing list