Dennis, First, do you mean numpy.arctan2? I don't see that numpy.atan2 exists,but math.atan2 exists.
Second, I suspect you are looping over millions of points in Python and are calling numpy.arctan2 on single X, Y values. Looping in Python like that will be very slow. Instead, you can get all your X values into one numpy array and do the same with your Y values, then make a single call to numpy.atan2. Here's an example: >>> from paraview.simple import * >>> import numpy >>> x = [1, 2, 3, 4] >>> y = [5, 6, 7, 8] >>> numpy.arctan2(y, x) array([ 1.37340077, 1.24904577, 1.16590454, 1.10714872]) To get the X and Y arrays, you can use the numpy adapter: >>> from vtk.numpy_interface import dataset_adapter as dsa >>> wrappedData = dsa.WrapDataObject(polydata) >>> X = wrappedData.Points[:,0] >>> Y = wrappedData.Points[:,1] >>> result = numpy.arctan2(Y, X) Hope that helps, Cory On Sat, Apr 28, 2018 at 1:25 AM, kenichiro yoshimi <[email protected]> wrote: > Hi Dennis, > > You can calculate cylindrical coordinates by utilizing > vtkCylindricalTransform within the python programmable filter. It is > something like below and faster than numpy. > > --- > import vtk > > input = self.GetInput() > output = self.GetOutput() > > transform = vtk.vtkCylindricalTransform() > > transformFilter = vtk.vtkTransformFilter() > transformFilter.SetInputData(input) > transformFilter.SetTransform(transform.GetInverse()) > transformFilter.Update() > > output.ShallowCopy(transformFilter.GetOutput()) > --- > > This converts (x,y,z) coordinates to (r,theta,z) coordinates by GetInverse > method, > where the angles are calculated by the following equation to change range > to [0, 2*pi]: > theta = pi + atan2(-y, -x). > > Regards > > 2018-04-28 5:25 GMT+09:00 Dennis Conklin <[email protected]>: > >> Alan, >> >> >> >> Yes, I am calling it many times at the same angular location, but it’s >> tough to know you’re at the same angular location without calculating the >> angle. >> >> >> >> Also, C++ is definitely orders of magnitude quicker, but once I have to >> compile routines into Paravew life gets very complicated. We barely >> survived compiling for cluster use and I haven’t written C++ for at least >> 20 years. >> >> >> >> So, if possible, I would like a clever external add-on that wouldn’t >> require us to re-compile PV everytime we update our version. I have >> visions of library errors in my nightmares! >> >> >> >> Dennis >> >> >> >> *From:* Scott, W Alan [mailto:[email protected]] >> *Sent:* Friday, April 27, 2018 4:00 PM >> *To:* Dennis Conklin <[email protected]>; Paraview ( >> [email protected]) <[email protected]> >> *Subject:* [EXT] RE: [EXTERNAL] [Paraview] Calculating cylindrical >> coordinates >> >> >> >> *CAUTION: *EXTERNAL email. Please think before clicking on any links or >> attachments. >> >> >> >> Are there places on the cylinder you are calling atan2 with the same >> inputs, returning the same data, lots of times? Alternatively, could you >> calculate this in the simulation, and just add it to the simulation >> output? I am speculating that a C++ call to atan2 may be faster than numpy? >> >> >> >> Alan >> >> >> >> *From:* ParaView [mailto:[email protected] >> <[email protected]>] *On Behalf Of *Dennis Conklin >> *Sent:* Friday, April 27, 2018 1:39 PM >> *To:* Paraview ([email protected]) <[email protected]> >> *Subject:* [EXTERNAL] [Paraview] Calculating cylindrical coordinates >> >> >> >> All, >> >> >> >> If I wanted to run atan2(X,Y) on millions and millions of nodes to >> calculate cylindrical coordinates, but found that numpy.atan2 in a >> Programmable Filter was taking 45 minutes to run, what should I do to >> make it much faster? >> >> >> >> Thanks for any hints >> >> >> >> Dennis >> >> _______________________________________________ >> 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: >> https://public.kitware.com/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 > > Search the list archives at: http://markmail.org/search/?q=ParaView > > Follow this link to subscribe/unsubscribe: > https://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: https://public.kitware.com/mailman/listinfo/paraview
