I just ran this with a 500^3 wavelet on my machine without any problems. The whole thing (including a slice filter) takes 20-30 seconds but the programmable filter is actually pretty much instantaneous (&lt;0.1 seconds) using a debug build from Git master. Is there any way you can attach to the stuck ParaView with a debugger and look at the stack trace?<br>
<br><div class="gmail_quote">On Wed, Sep 5, 2012 at 9:13 PM, Frank Horowitz <span dir="ltr">&lt;<a href="mailto:frank.horowitz@cornell.edu" target="_blank">frank.horowitz@cornell.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Still more checking things out. A problem (THE problem???) can be demonstrated with your code snippet from a few messages back if you construct the Wavelet like so rather than using the default constructor:<br>
<br>
Wavelet(WholeExtent=(-100,100,-100,100,-100,100))<br>
<br>
N.B. this is on a different machine, with a stock Mac OSX  binary version 3.14.1 installed.<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
On 05/09/2012, at 5:49 PM, Frank Horowitz wrote:<br>
<br>
&gt; OK, more tracking the problem:<br>
&gt;<br>
&gt; The assumption underlying my &quot;close up&quot; description below is not correct.  The problem appears to be the actual _size_ of the dataset I&#39;m feeding in. Even a single time step fed in to the filter (with some 866,000 points) hangs at the x*x computation, even though that appeared to work perfectly fine with your 3D Wavelet as a source (only some 9,000 points).<br>

&gt;<br>
&gt; I&#39;m guessing a memory leak somewhere?  When was the last time paraview was run through valgrind?<br>
&gt;<br>
&gt; Cheers (and sorry about the red herring earlier),<br>
&gt;       Frank<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On 05/09/2012, at 4:42 PM, Frank Horowitz wrote:<br>
&gt;<br>
&gt;&gt; OK, the 30,000 foot view:<br>
&gt;&gt;<br>
&gt;&gt; I have a time series of about 20 slices (currently) of values of each component (3 components total) of a vector displacement 3d spatial field from an elastic wave propagation simulation. At the moment, I&#39;m simply trying to visualise the vector length to see the propagating phases of the wavefield. Because my upstream codes and scripts only write individual components of the vector field, I need to combine the components and then calculate the vector lengths *somewhere*.  The programmable filter seemed like a good place to try that, since once I am past the learning curve for it, I&#39;ll have the full flexibilty of numpy for doing almost anything else I want with these and similar data from my upstream simulation codes.<br>

&gt;&gt;<br>
&gt;&gt; Now the 10,000 foot view:<br>
&gt;&gt; I&#39;ve been trying to simply calculate the sqrt(x*x + y*y + z*z) scalar field (where x, y, and z are the respective components as a function of position)  and let that flow on down the pipeline as a new spatial field to be visualised. I assumed (correctly if I&#39;m interpreting your answer correctly) that if I built the filter to deal with the spatial aspects of the calculation, the time series would be taken care of by paraview iterating over all files pointed to by inputs[0] (a set of files containing timesteps of the x components), inputs[1] (ditto for the y components), and inputs[2] (ditto for the z components).  The set of *.vtu files for each component have filenames specifying component and time step (e.g.: x001, x002, x003, etc., y001, y002, y003, etc., and z001, z002, z003 etc.).<br>

&gt;&gt;<br>
&gt;&gt; Now the close-up:<br>
&gt;&gt; As far as I can tell, after compiling from source from the git &quot;release&quot; branch (on an up-to-date Linux Mint distro -- which tracks Ubuntu Precise), my approach will work for a set of 3 single timestep arrays fed into the &quot;ports&quot; (or whatever paraview&#39;s terminology is for the inputs to a filter in the pipeline). In other words, a single timeslice (x001,y001,z001) appears on inputs[0:3] (numpy slice notation) and is processed correctly. (I&#39;ll go away and verify that shortly.)  I *think* the &quot;hangs/race-conditions/whatever&quot; start when there are multiple timesteps presented to each input port.  I was unsure whether the &#39;inputs[0], inputs[1], inputs[2]&#39; syntax needed to be extended to deal with time series as above, and could not find documentation on the inputs[] array after extensive searching -- just a few snippets of example code that were all consistent with paraview dealing with the time series on its own.<br>

&gt;&gt;<br>
&gt;&gt; I&#39;m inexperienced enough with paraview to not know if I have a conceptual error with the way I&#39;m approaching this problem, or if I have simply stumbled over a bug. That&#39;s why I&#39;ve posted to the mailing list!<br>

&gt;&gt;<br>
&gt;&gt; As always, your (and the rest of the list&#39;s) help is greatly appreciated!<br>
&gt;&gt;<br>
&gt;&gt; Cheers,<br>
&gt;&gt;      Frank<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; On 05/09/2012, at 4:01 PM, Andy Bauer wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; I&#39;m not sure I completely understand about your inputs[0]. As for iterating<br>
&gt;&gt;&gt; over time with the python programmable filter, inside the filter it will<br>
&gt;&gt;&gt; only have access to values from a single time step at each invocation of<br>
&gt;&gt;&gt; RequestData(). You can think of the order of operations if you have 5 time<br>
&gt;&gt;&gt; steps as:<br>
&gt;&gt;&gt; 1) iterate over each of the 5 time steps (i.e. load a file and update the<br>
&gt;&gt;&gt; pipeline with that data set)<br>
&gt;&gt;&gt; 2) update the python programmable filter output for the current data set<br>
&gt;&gt;&gt; resulting from the loaded file<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; If you want time statistics for your variables I think you probably want to<br>
&gt;&gt;&gt; use the calculator filter to square the value at each point and then use<br>
&gt;&gt;&gt; the temporal statistics filter to get an average of those values. After<br>
&gt;&gt;&gt; that you can just multiply the results by the number of time steps.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; If I&#39;m misunderstanding what you&#39;re trying to do, I&#39;d suggest giving a<br>
&gt;&gt;&gt; description of what you&#39;re trying to do and maybe there&#39;s a simpler way of<br>
&gt;&gt;&gt; doing it.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Andy<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On Wed, Sep 5, 2012 at 2:56 PM, Frank Horowitz<br>
&gt;&gt;&gt; &lt;<a href="mailto:frank.horowitz@cornell.edu">frank.horowitz@cornell.edu</a>&gt;wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; OK Andy,<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Thanks for that!<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I&#39;ve compiled and installed Paraview from git&#39;s release branch, and (a<br>
&gt;&gt;&gt;&gt; slight modification) of your code runs correctly. I think that means that<br>
&gt;&gt;&gt;&gt; my paraview/python integration is semi-sane.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; However, my problem still occurs. Recall that I have a time series of .vtu<br>
&gt;&gt;&gt;&gt; files (indexed by integers built-in to their filenames) being fed into<br>
&gt;&gt;&gt;&gt; inputs[0] (at least as I understand it).<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; In my original code snippet, I assumed that the &quot;m = x*x&quot; statement would<br>
&gt;&gt;&gt;&gt; iterate not only over the point values of the spatial array, but also over<br>
&gt;&gt;&gt;&gt; all timeslices.  Is that a correct assumption? Is that the source of my<br>
&gt;&gt;&gt;&gt; problems???<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Thanks again for your help,<br>
&gt;&gt;&gt;&gt;  Frank Horowitz<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; ------------------------------<br>
&gt;&gt;&gt;&gt; *From:* Andy Bauer [<a href="mailto:andy.bauer@kitware.com">andy.bauer@kitware.com</a>]<br>
&gt;&gt;&gt;&gt; *Sent:* Tuesday, September 04, 2012 7:57 PM<br>
&gt;&gt;&gt;&gt; *To:* Frank Horowitz<br>
&gt;&gt;&gt;&gt; *Cc:* <a href="mailto:paraview@paraview.org">paraview@paraview.org</a><br>
&gt;&gt;&gt;&gt; *Subject:* Re: [Paraview] Newbie question on Python Programmable Filters<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Hi Frank,<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; I didn&#39;t have a problem with the following on my windows machine using the<br>
&gt;&gt;&gt;&gt; ParaView 3.14.1 installer.<br>
&gt;&gt;&gt;&gt; =======<br>
&gt;&gt;&gt;&gt; try: paraview.simple<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; except: from paraview.simple import *<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; paraview.simple._DisableFirstRenderCameraReset()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Wavelet1 = Wavelet()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; RenderView1 = GetRenderView()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; ProgrammableFilter1 = ProgrammableFilter()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; ProgrammableFilter1.PythonPath = &#39;&#39;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; ProgrammableFilter1.RequestInformationScript = &#39;&#39;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; ProgrammableFilter1.Script = &#39;x = inputs[0].PointData[\&#39;RTData\&#39;]\nprint<br>
&gt;&gt;&gt;&gt; &quot;x shape =&quot;,x.shape\n\nm = x*x # I _thought_ this should run at numpy<br>
&gt;&gt;&gt;&gt; speeds?\nprint &quot;m shape=&quot;,m.shape\n\n# more debugging code to finish<br>
&gt;&gt;&gt;&gt; computation of the norm omitted\n\noutput.PointData.append(m,&quot;Displacement<br>
&gt;&gt;&gt;&gt; Norm&quot;)&#39;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Show()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Render()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; =============<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Does this work for you?  If it doesn&#39;t, I wonder if it&#39;s an issue with<br>
&gt;&gt;&gt;&gt; having multiple pythons and numpy or system environments causing problems.<br>
&gt;&gt;&gt;&gt; What version of paraview are you using and how did you get it<br>
&gt;&gt;&gt;&gt; built/installed on your machine?<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Andy<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Tue, Sep 4, 2012 at 6:04 PM, Frank Horowitz &lt;<a href="mailto:frank.horowitz@cornell.edu">frank.horowitz@cornell.edu</a><br>
&gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Hal Canary wrote on Tue Sep 4 15:22:01 EDT 2012:<br>
&gt;&gt;&gt;&gt;&gt;&gt; On 09/04/2012 02:20 PM, Frank Horowitz wrote:<br>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; x = inputs[0].PointData[&#39;Scalars_&#39;]<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; I thought one needs to convert a vtkarray to a numpy array with<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt;    x = numpy.array(inputs[0].PointData[&#39;Scalars_&#39;])<br>
&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;&gt; before doing anything with it.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Computations after that style of construction hang too.  To my eye, the<br>
&gt;&gt;&gt;&gt;&gt; results of such an expression should be 100% standard numpy, obeying 100%<br>
&gt;&gt;&gt;&gt;&gt; standard numpy semantics.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; It appears that there is a bug in numpy integration to the Python<br>
&gt;&gt;&gt;&gt;&gt; Programmable Filter.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; I&#39;ll re-compile from source and report back on the results.  Is the bug<br>
&gt;&gt;&gt;&gt;&gt; tracking system evident from the homepage?<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Cheers,<br>
&gt;&gt;&gt;&gt;&gt;      Frank Horowitz<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt;&gt; Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Visit other Kitware open-source projects at<br>
&gt;&gt;&gt;&gt;&gt; <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Please keep messages on-topic and check the ParaView Wiki at:<br>
&gt;&gt;&gt;&gt;&gt; <a href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Follow this link to subscribe/unsubscribe:<br>
&gt;&gt;&gt;&gt;&gt; <a href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a><br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;<br>
<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the ParaView Wiki at: <a href="http://paraview.org/Wiki/ParaView" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.paraview.org/mailman/listinfo/paraview" target="_blank">http://www.paraview.org/mailman/listinfo/paraview</a><br>
</div></div></blockquote></div><br>