[Paraview] Writing IntegrateAttributes to CSV using Python
Utkarsh Ayachit
utkarsh.ayachit at kitware.com
Thu Apr 9 09:21:14 EDT 2009
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