Hi Guillaume, Thanks for the report.
As a workaround, you can still use the builtin min() function with from __builtin__ import min as min, max as max HTH, Cory On Thu, Nov 17, 2016 at 6:22 AM, Guillaume Jacquenot <[email protected]> wrote: > Dear all, > > I have just tested the new paraview 5.2 with a python script. > > With versions 4.4.0 and 5.1.2, this script worked fine. > > In this script, I have a ProgrammableSource where I compute the maximum > values of two scalars with max function. > > The code looks like this in the Script of the ProgrammableSource > > maxValue = max(1,2) > > This instruction creates an error: instead of using built-in max function, > ParaView5.2 uses a max function defined with vtk and numpy: > > ParaView-5.2.0-Qt4-OpenGL2-Windows-64bit\bin\Lib\site-packages\vtk\numpy_interface\algorithms.py > line 315 > > And apparently, it does not work (whereas in 4.4.0 and 5.1.2 it worked, > maybe these versions did not use this function). > > For the time being, I have created a dirty workaround where I have defined > new min / max functions > > fmin = lambda x,y:x if x<y else y > fmax = lambda x,y:x if x>y else y > > > > Below are the message error and a python script that reproduces the bug > > > Traceback (most recent call last): > File "<string>", line 20, in <module> > File "<string>", line 326, in RequestData > File > "D:\ParaView-5.2.0-Qt4-OpenGL2-Windows-64bit\bin\lib\site-packages\vtk\numpy_interface\algorithms.py", > line 354, in max > return _global_func(MaxImpl(), array, axis, controller) > File > "D:\ParaView-5.2.0-Qt4-OpenGL2-Windows-64bit\bin\lib\site-packages\vtk\numpy_interface\algorithms.py", > line 182, in _global_func > res = impl.op()(array, axis) > File > "D:\ParaView-5.2.0-Qt4-OpenGL2-Windows-64bit\bin\lib\site-packages\vtk\numpy_interface\internal_algorithms.py", > line 363, in max > ans = numpy.max(narray, axis) > File > "D:\ParaView-5.2.0-Qt4-OpenGL2-Windows-64bit\bin\lib\site-packages\numpy\core\fromnumeric.py", > line 2125, in amax > out=out, keepdims=keepdims) > File > "D:\ParaView-5.2.0-Qt4-OpenGL2-Windows-64bit\bin\lib\site-packages\numpy\core\_methods.py", > line 17, in _amax > out=out, keepdims=keepdims) > > > > > Test case reproducing the bug: > > > > from paraview.simple import * > paraview.simple._DisableFirstRenderCameraReset() > programmableSource1 = ProgrammableSource() > programmableSource1.Script = \ > """gg=max(5.0,6.0) > #This script generates a helix curve. > #This is intended as the script of a 'Programmable Source' > import math > > numPts = 80 # Points along Helix > length = 8.0 # Length of Helix > rounds = 3.0 # Number of times around > > #Get a vtk.PolyData object for the output > pdo = self.GetPolyDataOutput() > > #This will store the points for the Helix > newPts = vtk.vtkPoints() > for i in range(0, numPts): > #Generate the Points along the Helix > x = i*length/numPts > y = math.sin(i*rounds*2*math.pi/numPts) > z = math.cos(i*rounds*2*math.pi/numPts) > #Insert the Points into the vtkPoints object > #The first parameter indicates the reference. > #value for the point. Here we add them sequentially. > #Note that the first point is at index 0 (not 1). > newPts.InsertPoint(i, x,y,z) > > #Add the points to the vtkPolyData object > #Right now the points are not associated with a line - > #it is just a set of unconnected points. We need to > #create a 'cell' object that ties points together > #to make a curve (in this case). This is done below. > #A 'cell' is just an object that tells how points are > #connected to make a 1D, 2D, or 3D object. > pdo.SetPoints(newPts) > > #Make a vtkPolyLine which holds the info necessary > #to create a curve composed of line segments. This > #really just hold constructor data that will be passed > #to vtkPolyData to add a new line. > aPolyLine = vtk.vtkPolyLine() > > #Indicate the number of points along the line > aPolyLine.GetPointIds().SetNumberOfIds(numPts) > for i in range(0,numPts): > #Add the points to the line. The first value indicates > #the order of the point on the line. The second value > #is a reference to a point in a vtkPoints object. Depends > #on the order that Points were added to vtkPoints object. > #Note that this will not be associated with actual points > #until it is added to a vtkPolyData object which holds a > #vtkPoints object. > aPolyLine.GetPointIds().SetId(i, i) > > #Allocate the number of 'cells' that will be added. We are just > #adding one vtkPolyLine 'cell' to the vtkPolyData object. > pdo.Allocate(1, 1) > > #Add the poly line 'cell' to the vtkPolyData object. > pdo.InsertNextCell(aPolyLine.GetCellType(), aPolyLine.GetPointIds()) > > #The Helix is ready to plot! Click 'Apply'. > """ > renderView1 = GetActiveViewOrCreate('RenderView') > programmableSource1Display = Show(programmableSource1, renderView1) > renderView1.ResetCamera() > Render() > > > > Guillaume Jacquenot > > _______________________________________________ > 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 > > Search the list archives at: http://markmail.org/search/?q=ParaView > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/paraview > -- Cory Quammen Staff R&D Engineer Kitware, Inc. _______________________________________________ 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 Search the list archives at: http://markmail.org/search/?q=ParaView Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/paraview
