Okay, for everyone interested: I think I got it to work, somehow, with the help of <http://www.itk.org/Wiki/ParaView/Users_Guide/Calculator>.
The atan2() function can be imitated in ParaView's calculator filter by ================== *snip* ================== calc2 = pv.Calculator( ResultArrayName = 'arg(psi)' ) calc2.AttributeMode = 'point_data' from math import pi pi2 = str( pi/2 ) calc2.Function = 'if( psi__X>0, atan(psi__Y/psi__X),' + \ 'if( psi__X<0,' + \ 'if ( psi__Y<0, -%s + atan(psi__Y/psi__X), %s + atan(psi__Y/psi__X) ),' % ( pi2, pi2 ) + \ 'if ( psi__Y>0, %s, if( psi__Y<0, -%s, 0.0 ) )' % ( pi2, pi2 ) + \ '))' ================== *snap* ================== Here, psi is an array with two components which are addressed by psi__X, psi__Y, respectively (double underscore!). The logic is taken from <http://en.wikipedia.org/wiki/Atan2#Definition>. Cheers, Nico On Thu, Jun 16, 2011 at 4:19 PM, Nico Schlömer <nico.schloe...@gmail.com> wrote: > Progress! > Thanks to the incredibly helpful Trance functionality, I understand > now that something like > > =================== *snip* =================== > calc1 = pv.Calculator( ResultArrayName = '|psi|^2' ) > calc1.AttributeMode = 'point_data' > calc1.Function = 'psi__X^2 + psi__Y^2' > > [...] > psi_lookup_table = pv.GetLookupTableForArray( '|psi|^2', 1 ) > ) > data_representation.ColorArrayName = '|psi|^2' > =================== *snap* =================== > > will get me pretty close to where I want to be; except that Function() > is limited to whatever help( calc1 ) just told me. -- Conditionals / > atan2()? > > --Nico > > > > > On Thu, Jun 16, 2011 at 3:45 PM, Nico Schlömer <nico.schloe...@gmail.com> > wrote: >> Also, when >> >> ======================== *snip* ======================== >>>>> >>>>> import paraview.simple >> paraview version 3.10.1, Date: 2011-01-28 >>>>> calc1 = paraview.simple.servermanager.filters.Calculator() >>>>> help( calc1 ) >>>>> >> ======================== *snip* ======================== >> >> I don't see how to apply math.atan2() to two components of an input >> vector: Exactly those functions appear to be documented which are >> available in the GUI. Hmm... >> >> --Nico >> >> >> >> On Thu, Jun 16, 2011 at 3:24 PM, Nico Schlömer <nico.schloe...@gmail.com> >> wrote: >>>> See the manual for the syntax. >>> >>> Where can I find that? The ParaView User's Guide >>> <www.paraview.org/files/v1.6/ParaViewUsersGuide.PDF> isn't too verbose >>> on any of that. >>> The Wiki, on the other hand, seems to contain a fair amount of >>> examples. Specifically, I've looked at >>> <http://www.paraview.org/Wiki/Python_Programmable_Filter> to see about >>> programmable filters. >>> >>> Unfortunately, this hasn't gotten me very far, as I'm lacking >>> understanding of the entities used in the examples. >>> Questions I asked myself were: >>> * What do I need to do to fetch my point data: >>> self.GetPolyDataInput()? self.GetInputDataObject(0, 0)? Or simply >>> self.GetInput()? >>> * How do I access point data then? >>> * Do I have to create a new vector and feed this into some sort of >>> output thing? >>> >>> Is there a documentation as to what methods are available for those types? >>> >>> The input file is Exodus, if that makes any difference. >>> >>> If there's a tutorial for this kind of stuff, I'll be happy to go >>> through it; otherwise I'd appreciate your help here. >>> >>> Cheers, >>> Nico >>> >>> >>> >>> >>> >>> >>> On Wed, Jun 8, 2011 at 6:17 PM, David E DeMarle >>> <dave.dema...@kitware.com> wrote: >>>> Also the standard calculator does have conditionals, there just isn't a >>>> button corresponding to them on the UI. See the manual for the syntax. >>>> David E DeMarle >>>> Kitware, Inc. >>>> R&D Engineer >>>> 28 Corporate Drive >>>> Clifton Park, NY 12065-8662 >>>> Phone: 518-371-3971 x109 >>>> >>>> >>>> On Wed, Jun 8, 2011 at 12:16 PM, David E DeMarle <dave.dema...@kitware.com> >>>> wrote: >>>>> >>>>> The python programmable filter (and the easier to use python programmable >>>>> calculator variant of that) will get you beyond all of those limitations. >>>>> David E DeMarle >>>>> Kitware, Inc. >>>>> R&D Engineer >>>>> 28 Corporate Drive >>>>> Clifton Park, NY 12065-8662 >>>>> Phone: 518-371-3971 x109 >>>>> >>>>> >>>>> On Wed, Jun 8, 2011 at 12:11 PM, Nico Schlömer <nico.schloe...@gmail.com> >>>>> wrote: >>>>>> >>>>>> > If you want to do arbitrary arithmetic, you will have to first >>>>>> > generate the array using something like a "Calculator" filter and then >>>>>> > color using the generated array. >>>>>> >>>>>> Oh, if I remember correctly I did look into this before, and found the >>>>>> calculator filter too limited on the arithmetics that you could >>>>>> perform. Is it still the case that you have a set of like ten >>>>>> functions (add, multiply, sine, cosine,...) to mix and match? I need >>>>>> to to something like >>>>>> >>>>>> for x in data_values: >>>>>> if x[0] > 0 and x[1] > 0 >>>>>> return bla >>>>>> elseif ... >>>>>> >>>>>> -- atan2() that is. >>>>>> >>>>>> >>>>>> > Yes, RGBPoints defines the mapping between scalar and color. It's a >>>>>> > list of 4 tuples (scalar, r, g, b), repeated sequentially. >>>>>> >>>>>> Hm, I'll look into it. Where's the proper spot for documentation of this? >>>>>> >>>>>> Cheers, >>>>>> Nico >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Wed, Jun 8, 2011 at 5:25 PM, Utkarsh Ayachit >>>>>> <utkarsh.ayac...@kitware.com> wrote: >>>>>> > Magnitude corresponds to the magnitude of a vector, so yes, it takes >>>>>> > the square root. >>>>>> > >>>>>> > If you want to do arbitrary arithmetic, you will have to first >>>>>> > generate the array using something like a "Calculator" filter and then >>>>>> > color using the generated array. >>>>>> > >>>>>> > Yes, RGBPoints defines the mapping between scalar and color. It's a >>>>>> > list of 4 tuples (scalar, r, g, b), repeated sequentially. >>>>>> > >>>>>> > Utkarsh >>>>>> > >>>>>> > On Wed, Jun 8, 2011 at 11:19 AM, Nico Schlömer >>>>>> > <nico.schloe...@gmail.com> wrote: >>>>>> >> Thanks for the hints. >>>>>> >> >>>>>> >> The Trace function in indeed quite useful in that it get you where you >>>>>> >> want to be. When looking at the code there's still a lot of me to >>>>>> >> understand though, the GetLookupTableForArray() call seems to be >>>>>> >> crucial for example. >>>>>> >> >>>>>> >> * The VectorMode='Magnitude' parameter seems to be responsible for >>>>>> >> merging the two components into one scalar, but I'm not quite sure how >>>>>> >> this is done: with a sqrt() or without? Is is possible to customize >>>>>> >> this? I'd like to have something like ATAN2 there as well. >>>>>> >> >>>>>> >> * Is the RGBPoints=[0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0], >>>>>> >> parameter responsible for the colormap? >>>>>> >> >>>>>> >> Cheers, >>>>>> >> Nico >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >> On Wed, Jun 8, 2011 at 3:13 PM, Utkarsh Ayachit >>>>>> >> <utkarsh.ayac...@kitware.com> wrote: >>>>>> >>> The following wiki page talks about how to color using arrays: >>>>>> >>> >>>>>> >>> http://www.paraview.org/Wiki/ParaView/Python_Scripting#Representations_and_Views >>>>>> >>> >>>>>> >>> The easiest way to figure out Python code equivalents is to use the >>>>>> >>> Trace functionality to generate python trace files for actions >>>>>> >>> performed in the GUI (accessible from Tools menu). You "Start Trace", >>>>>> >>> do a set of actions and then "Stop Trace" and you should be able to >>>>>> >>> view the resulting Python code. >>>>>> >>> >>>>>> >>> Utkarsh >>>>>> >>> >>>>>> >>> >>>>>> >>> >>>>>> >>> On Wed, Jun 8, 2011 at 9:05 AM, Nico Schlömer >>>>>> >>> <nico.schloe...@gmail.com> wrote: >>>>>> >>>> Hi, >>>>>> >>>> >>>>>> >>>> I'm just taking first steps with ParaView's Python interface and >>>>>> >>>> figured out so far that >>>>>> >>>> >>>>>> >>>> ================ *snip* ================ >>>>>> >>>> exodusReader = ExodusIIReader( FileName="solution.e" ) >>>>>> >>>> Show( exodusReader ) >>>>>> >>>> Render() >>>>>> >>>> ================ *snap* ================ >>>>>> >>>> >>>>>> >>>> would plot the mesh that is stored in the ExodusII file solution.e, >>>>>> >>>> and that can play around with GetActiveView() to adjust camera >>>>>> >>>> angles >>>>>> >>>> and such. >>>>>> >>>> >>>>>> >>>> What I haven't found out though is how to plot actual point data. I >>>>>> >>>> get >>>>>> >>>> >>>>>> >>>> >>>>>> >>>>>>> exodusReader.PointData[:] >>>>>> >>>> [Array: GlobalNodeId, Array: PedigreeNodeId, Array: A, Array: psi, >>>>>> >>>> Array: thickness] >>>>>> >>>> >>>>>> >>>> and l'm looking at the 2-component array "psi". For example, I'd >>>>>> >>>> like >>>>>> >>>> to do something like >>>>>> >>>> >>>>>> >>>> res = sqrt( component1**2 + component2**2 ) >>>>>> >>>> >>>>>> >>>> and have res[:] rendered on the mesh with a certain color map. >>>>>> >>>> >>>>>> >>>> Any hints? >>>>>> >>>> >>>>>> >>>> Cheers, >>>>>> >>>> Nico >>>>>> >>>> _______________________________________________ >>>>>> >>>> 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 >>>>>> >>>> >>>>>> >>> >>>>>> >> >>>>>> > >>>>>> _______________________________________________ >>>>>> 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 >>>>> >>>> >>>> >>> >> > _______________________________________________ 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