[Paraview] Writing IntegrateAttributes to CSV using Python

Utkarsh Ayachit utkarsh.ayachit at kitware.com
Thu Apr 9 10:16:19 EDT 2009


If there's no Servers/Filters/vtkAttributeDataToTableFilter.h and
Servers/Filters/vtkAttributeDataToTableFilter.cxx then I am guessing
you are not updating correctly. There may be some sticky tags set with
your CVS checkout. Can you look at
ParaView3/VTK/Utilities/kwsys/kwsysDataStamp.cmake and verify that the
date mentioned is indeed today's?

Utkarsh

On Thu, Apr 9, 2009 at 9:39 AM,  <bart.boonacker at actiflow.com> wrote:
> Hello again,
>
> I did ran it from the python shell, so that problem is fixed.
> I just updated the CVS and built the update, but still not
> AttributeDataToTableFilter :(
> not in dir(servermanager.filters) nor in dir(servermanager)
>
> When looking for files I can find the vtkAttributeDataToTableFilter.cxx and
> .h but this is not available as well.
>
> Bart
>
>
> On Thu, 9 Apr 2009 09:21:14 -0400, Utkarsh Ayachit
> <utkarsh.ayachit at kitware.com> wrote:
>> Oh, are you running the script through the python shell in the
>> ParaView client? In that case, sorry, but you don't need the Connect()
>> :). I assumed you were using pvpython.
>>
>> Are you sure you built your paraview after updating? I just tried the
>> CVS and I indeed have the AttributeDataToTableFilter.
>>
>> Utkarsh
>>
>> On Thu, Apr 9, 2009 at 9:18 AM,  <bart.boonacker at actiflow.com> wrote:
>>> Ok, than that should be the problem I guess;
>>>
>>> Here's my "full" script, almost the same as provided before:
>>>
>>> from paraview import servermanager as sm
>>> sm.Connect()
>>>
>>>
> ###############################################################################################
>>> # create implicit device to populate Slice
>>> impPlane =
>>> sm.implicit_functions.Plane(registrationGroup='implicit_fuctions')
>>>
> ###############################################################################################
>>>
>>> caseName = 'Case'
>>> caseLocation = '/home/bart/Desktop/Test_Python/'
>>> showScalarBar = 2 #0=none, 1=vertical, 2=horizontal
>>>
>>> #read data
>>> VTKreader01 =
>>>
> sm.sources.LegacyVTKreader(FileNames='/home/bart/Desktop/Test_Python/1/VTK/1_1000.vtk',registrationGroup='sources',registrationName='RR')
>>>
>>> Slice_in =
>>>
> sm.filters.Slice(registrationGroup='sources',registrationName='slice02',Input=VTKreader01)
>>> Slice_inprop = Slice_in.GetProperty('CutFunction')
>>> domainSlice_in = Slice_inprop.GetDomain('proxy_list')
>>> domainSlice_in.AddProxy(impPlane.SMProxy)
>>>
>>> cutplane_in = impPlane
>>> cutplane_in.Normal = [0, 1, 0]
>>> cutplane_in.Offset = 0
>>> cutplane_in.Origin = [0, 0, 0]
>>> Slice_in.SliceType= cutplane_in
>>>
>>> Calculator01 =
>>>
> sm.filters.Calculator(registrationGroup='sources',registrationName='calculator',Input=Slice_in)
>>> Calculator01.ResultArrayName = 'Pt'
>>> Calculator01.Function = '1.225*p+0.5*1.225*mag(U)^2'
>>> Calculator01.AttributeMode = 1 # 1=pointdata,2=celldata
>>> Calculator01.VectorVariable = ['U','U','0','1','2']
>>> Calculator01.ScalarVariable =
>>> ['p','p','0','U_0','U','0','U_1','U','1','U_2','U','2']
>>>
>>> filter1 =
>>>
> sm.filters.IntegrateVariables(registrationGroup='sources',registrationName='Integrator',Input=Calculator01)
>>>
>>> ## AttributeDataToTableFilter converts any dataset to a vtkTable which
>>> can
>>> be
>>> ## written as a CSV file. One needs to choose which attribute to save as
>>> well.
>>> ## First save points.
>>> convertor =
>>>
> sm.filters.AttributeDataToTableFilter(Input=filter1,FieldAssociation="Points",AddMetaData=1)
>>> csvWriter = sm.writers.CSVWriter(Input=convertor)
>>> csvWriter.FileName = "/home/bart/Desktop/Test_Python/output.points.csv"
>>>
>>> ## this writes the output.
>>> csvWriter.UpdatePipeline()
>>>
>>> ### Now save cells.
>>> convertor.FieldAssociation="Cells"
>>> csvWriter = sm.writers.CSVWriter(Input=convertor)
>>> csvWriter.FileName = "/home/bart/Desktop/Test_Python/output.cells.csv"
>>>
>>> ### this writes the output.
>>> csvWriter.UpdatePipeline()
>>>
>>>
>>> when trying to Connect it gives:
>>> Traceback (most recent call last):
>>>  File "<string>", line 2, in <module>
>>>  File
>>>
> "/home/bart/ParaView3-bin/Utilities/VTKPythonWrapping/paraview/servermanager.py",
>>> line 1861, in Connect
>>>    raise RuntimeError, "Cannot create a connection through python. Use
>>> the
>>> GUI to setup the connection."
>>> RuntimeError: Cannot create a connection through python. Use the GUI to
>>> setup the connection.
>>>
>>> Bart
>>>
>>>
>>>
>>> On Thu, 9 Apr 2009 09:13:58 -0400, Utkarsh Ayachit
>>> <utkarsh.ayachit at kitware.com> wrote:
>>>> Can you give your full script? If you are not calling Connect() at
>>>> all, it won't work since Connect() is required.
>>>>
>>>> Utkarsh
>>>>
>>>> On Thu, Apr 9, 2009 at 9:08 AM,  <bart.boonacker at actiflow.com> wrote:
>>>>> Utkarsh,
>>>>>
>>>>> I used the CVS from yesterday but it returns :
>>>>>      Traceback (most recent call last):
>>>>>      File "<string>", line 41, in <module>
>>>>>      AttributeError: 'PVModule' object has no attribute
>>>>> 'AttributeDataToTableFilter'
>>>>>
>>>>> I have not used the following as the Connect part did not work,
> perhaps
>>>>> thats the cause?
>>>>> I replaced the sm by servermanager.
>>>>>       from paraview import servermanager as sm
>>>>>       sm.Connect()
>>>>>
>>>>> Bart
>>>>>
>>>>>
>>>>> On Thu, 9 Apr 2009 08:55:25 -0400, Utkarsh Ayachit
>>>>> <utkarsh.ayachit at kitware.com> wrote:
>>>>>> Bart,
>>>>>>
>>>>>> Please cc the mailing list as well so other can use this information
>>>>>> as well as respond.
>>>>>>
>>>>>> I think one dubious statement I see in your code is:
>>>>>> ## First save points.
>>>>>> convertor =
> sm.filters.AttributeDataToTableFilter(Input=filter1Output,
>>>>>>   FieldAssociation="Points",
>>>>>>   AddMetaData=1)
>>>>>>
>>>>>> You are setting the input to this filter be the data object returned
>>>>>> by using Fetch(). In ParaView python scripts the input to filters
>>>>>> cannot be other data objects, but filters or sources. So, the proper
>>>>>> usage would be:
>>>>>>
>>>>>> convertor = sm.filters.AttributeDataToTableFilter(Input=filter1,
>>>>>>   FieldAssociation="Points",
>>>>>>   AddMetaData=1)
>>>>>>
>>>>>> Does that solve the issue? Also creation of the representation is not
>>>>>> necessary unless you are rendering into a view, which doesn't seem to
>>>>>> be the case.
>>>>>>
>>>>>> Utkarsh
>>>>>>
>>>>>> On Thu, Apr 9, 2009 at 8:32 AM,  <bart.boonacker at actiflow.com> wrote:
>>>>>>> Dear Utkarsh,
>>>>>>>
>>>>>>> Thank you for your fast replies. I got the CVS version to work, but
> I
>>>>>>> am
>>>>>>> still having some trouble to rewrite all the filters and functions.
>>>>>>> When running my code, see below, Paraview crashes and gives a
>>>>>>> Segmentation
>>>>>>> Fault.
>>>>>>> I am not a real programming expert, so I tried to neglect the
>>>>>>> representations of all filters. This removes the crash, but still
>>>>>>> posses
>>>>>>> some problem with the code. The code was 1-to-1 copied from the 3.4
>>>>>>> version, which probably causes the errors.
>>>>>>> Is there a way or manual to see the new options and maybe
> conversions
>>>>>>> between 3.4 and the CVS version ?
>>>>>>>
>>>>>>> Thanks in advance,
>>>>>>>
>>>>>>> Bart
>>>>>>>
>>>>>>> Attached code ( I removed all representation code and view
> settings):
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>
> ###############################################################################################
>>>>>>> # create implicit device to populate Slice
>>>>>>> impPlane =
>>>>>>>
>>>>>
>>>
> servermanager.implicit_functions.Plane(registrationGroup='implicit_fuctions')
>>>>>>> impBox =
>>>>>>>
>>>>>
>>>
> servermanager.implicit_functions.Box(registrationGroup='implicit_fuctions')
>>>>>>> impSphere =
>>>>>>>
>>>>>
>>>
> servermanager.implicit_functions.Sphere(registrationGroup='implicit_fuctions')
>>>>>>>
>>>>>
>>>
> ###############################################################################################
>>>>>>>
>>>>>>> caseName = 'Case'
>>>>>>> caseLocation = '/home/bart/Desktop/Test_Python/'
>>>>>>> showScalarBar = 2 #0=none, 1=vertical, 2=horizontal
>>>>>>>
>>>>>>> #read data
>>>>>>> VTKreader01 =
>>>>>>>
>>>>>
>>>
> servermanager.sources.LegacyVTKreader(FileNames='/home/bart/Desktop/Test_Python/1/VTK/1_1000.vtk',registrationGroup='sources',registrationName='RR')
>>>>>>> #repVTKreader01 =
>>>>>>>
>>>>>
>>>
> servermanager.CreateRepresentation(VTKreader01,view,registrationGroup='representations')
>>>>>>> #repVTKreader01.Visibility = 0
>>>>>>> #repVTKreader01.Representation = 3
>>>>>>>
>>>>>>> Slice02 =
>>>>>>>
>>>>>
>>>
> servermanager.filters.Slice(registrationGroup='sources',registrationName='slice02',Input=VTKreader01)
>>>>>>> cfSlice02 = Slice02.GetProperty('CutFunction')
>>>>>>> domainSlice02 = cfSlice02.GetDomain('proxy_list')
>>>>>>> domainSlice02.AddProxy(impPlane.SMProxy)
>>>>>>> domainSlice02.AddProxy(impBox.SMProxy)
>>>>>>> domainSlice02.AddProxy(impSphere.SMProxy)
>>>>>>>
>>>>>>> cutplane02 = impPlane
>>>>>>> cutplane02.Normal = [0, 1, 0]
>>>>>>> cutplane02.Offset = 0
>>>>>>> cutplane02.Origin = [0, 0, 0]
>>>>>>>
>>>>>>> #set cutplane
>>>>>>> Slice02.CutFunction= cutplane02
>>>>>>>
>>>>>>> Calculator01 =
>>>>>>>
>>>>>
>>>
> servermanager.filters.Calculator(registrationGroup='sources',registrationName='calculator',Input=Slice02)
>>>>>>> Calculator01.ResultArrayName = 'Pt'
>>>>>>> Calculator01.Function = '1.225*p+0.5*1.225*mag(U)^2'
>>>>>>> Calculator01.AttributeMode = 1 # 1=pointdata,2=celldata
>>>>>>> Calculator01.AddVectorVariable = ['U','U','0','1','2']
>>>>>>> Calculator01.AddScalarVariable =
>>>>>>> ['p','p','0','U_0','U','0','U_1','U','1','U_2','U','2']
>>>>>>>
>>>>>>> filter1 =
>>>>>>>
>>>>>
>>>
> servermanager.filters.IntegrateAttributes(registrationGroup='sources',registrationName='Integrator',Input=Calculator01)
>>>>>>> filter1Output = servermanager.Fetch(filter1)
>>>>>>> #repfilter1 =
>>>>>>>
>>>>>
>>>
> servermanager.CreateRepresentation(filter1,view,registrationGroup='representations')
>>>>>>>
>>>>>>> # From Utkarsh Ayachit:
>>>>>>> from paraview import servermanager as sm
>>>>>>> sm.Connect()
>>>>>>>
>>>>>>> ## AttributeDataToTableFilter converts any dataset to a vtkTable
>>>>>>> which
>>>>>>> can
>>>>>>> be
>>>>>>> ## written as a CSV file. One needs to choose which attribute to
> save
>>>>>>> as
>>>>>>> well.
>>>>>>> ## First save points.
>>>>>>> convertor =
>>>>>>> sm.filters.AttributeDataToTableFilter(Input=filter1Output,
>>>>>>> FieldAssociation="Points",
>>>>>>> AddMetaData=1)
>>>>>>> csvWriter = sm.writers.CSVWriter(Input=convertor)
>>>>>>> csvWriter.FileName =
>>>>>>> "/home/bart/Afstuderen/Straight_Auto/output.points.csv"
>>>>>>>
>>>>>>> ## this writes the output.
>>>>>>> csvWriter.UpdatePipeline()
>>>>>>>
>>>>>>> ## Now save cells.
>>>>>>> convertor.FieldAssociation="Cells"
>>>>>>> csvWriter = sm.writers.CSVWriter(Input=convertor)
>>>>>>> csvWriter.FileName =
>>>>>>> "/home/bart/Afstuderen/Straight_Auto/output.cells.csv"
>>>>>>>
>>>>>>> ## this writes the output.
>>>>>>> csvWriter.UpdatePipeline()
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>
>>>
>


More information about the ParaView mailing list