<div dir="ltr">Hey Jeff,<div><br></div><div>Can you clarify a bit? What kind of wrong is the output?</div><div><br></div><div>Also, I would probably do this a bit differently, assuming you use a newer ParaView (>= 4.2). The issue is that <span style="font-size:12.8000001907349px">vtkTransmitImageDataPiece is not a "CAN_PRODUCE_SUB_EXTENT()" filter. Rather it is a "CAN_HANDLE_PIECE_REQUEST()" filter. Meaning that it wants to determine the extents of the output based on the piece request it receives. So some changes:</span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">* Swap </span><span style="font-size:12.8000001907349px">CAN_PRODUCE_SUB_EXTENT() with </span><span style="font-size:12.8000001907349px">CAN_HANDLE_PIECE_REQUEST() in request info.</span></div><div><span style="font-size:12.8000001907349px">* In the main script, do something like this:</span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">executive = self.GetExecutive()</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">outInfo = executive.GetOutputInformation</span><span style="font-size:12.8000001907349px">(0)</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">#updateExtent = [executive.UPDATE_EXTENT().Get</span><span style="font-size:12.8000001907349px">(outInfo, i) for i in xrange(6)]</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">#imageData = self.GetOutput()</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">#imageData.SetExtent(updateExte</span><span style="font-size:12.8000001907349px">nt)</span></div><div># >> this probably needs to happen on rank 0 only<br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">myout = ns.numpy_to_vtk(bmag.ravel(),1</span><span style="font-size:12.8000001907349px">,vtk.VTK_FLOAT)</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">myout.SetName("B field magnitude")</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">imageData.GetPointData().SetSc</span><span style="font-size:12.8000001907349px">alars(myout)</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">tp = vtk.vtkTrivialProducer()</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">tp.SetOutput(imageData)</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">tp.SetWholeExtent(0, mesh.MX-1, 0, mesh.MY-1, 0, mesh.MZ-1)</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">xmit = vtk.vtkTransmitImageDataPiece(</span><span style="font-size:12.8000001907349px">)</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">xmit.SetInputConnection(tp.Get</span><span style="font-size:12.8000001907349px">OutputPort())</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">xmit.UpdateInformation()</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">xmit.SetUpdateExtent(rank, nranks, 0)</span><br style="font-size:12.8000001907349px"><span style="font-size:12.8000001907349px">xmit.Update()</span><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">self.GetOutput().ShallowCopy(xmit,GetOutput())</span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">I didn't verify the code so it may need tweaking.</span></div><div><span style="font-size:12.8000001907349px"><br></span></div><div><span style="font-size:12.8000001907349px">Best,</span></div><div><span style="font-size:12.8000001907349px">-berk</span></div><div><span style="font-size:12.8000001907349px"><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 4, 2015 at 2:14 PM, Jeff Becker <span dir="ltr"><<a href="mailto:jeffrey.c.becker@nasa.gov" target="_blank">jeffrey.c.becker@nasa.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi. I'm trying to run a Python Programmable source across four nodes (started with mpirun -np 4 pvserver). My script contains the following code, but the output looks wrong, so I'm not sure if the extents are right.  The partitioning among nodes is correct (using processId filter). Also I'm careful to set Output Data Set Type to vtkImageData.<br>
<br>
import vtk<br>
import vtk.util.numpy_support as ns<br>
contr = vtk.vtkMultiProcessController.GetGlobalController()<br>
nranks = contr.GetNumberOfProcesses()<br>
rank = contr.GetLocalProcessId()<br>
<br>
...<br>
executive = self.GetExecutive()<br>
outInfo = executive.GetOutputInformation(0)<br>
updateExtent = [executive.UPDATE_EXTENT().Get(outInfo, i) for i in xrange(6)]<br>
imageData = self.GetOutput()<br>
imageData.SetExtent(updateExtent)<br>
myout = ns.numpy_to_vtk(bmag.ravel(),1,vtk.VTK_FLOAT)<br>
myout.SetName("B field magnitude")<br>
imageData.GetPointData().SetScalars(myout)<br>
tp = vtk.vtkTrivialProducer()<br>
tp.SetOutput(imageData)<br>
tp.SetWholeExtent(0, mesh.MX-1, 0, mesh.MY-1, 0, mesh.MZ-1)<br>
xmit = vtk.vtkTransmitImageDataPiece()<br>
xmit.SetInputConnection(tp.GetOutputPort())<br>
xmit.UpdateInformation()<br>
xmit.SetUpdateExtent(rank, nranks, 0)<br>
xmit.Update()<br>
<br>
For completeness, here is my requestInformation script (mesh has dimensions, and coordinate arrays for each of X,Y,Z)<br>
<br>
executive = self.GetExecutive()<br>
outInfo = executive.GetOutputInformation(0)<br>
outInfo.Set(vtk.vtkAlgorithm.CAN_PRODUCE_SUB_EXTENT(), 1)<br>
outInfo.Set(executive.WHOLE_EXTENT(), 0, mesh.MX-1, 0, mesh.MY-1, 0, mesh.MZ-1)<br>
xspacing = (mesh.xcoords[-1] - mesh.xcoords[0])/mesh.MX<br>
yspacing = (mesh.ycoords[-1] - mesh.ycoords[0])/mesh.MY<br>
zspacing = (mesh.zcoords[-1] - mesh.zcoords[0])/mesh.MZ<br>
outInfo.Set(vtk.vtkDataObject.SPACING(), xspacing, yspacing, zspacing)<br>
<br>
This is what I've been able to come up with after spending much time reading documentation and examples, but I've obviously missed something. Please advise. Thanks.<br>
<br>
-jeff<br>
<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" 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" rel="noreferrer" target="_blank">http://paraview.org/Wiki/ParaView</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=ParaView" rel="noreferrer" target="_blank">http://markmail.org/search/?q=ParaView</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/paraview" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/paraview</a><br>
</blockquote></div><br></div>