"""An example of how to use IPython1 for plotting remote parallel data The two files plotting_frontend.ipy and plotting_backend.py go together. To run this example, first start the IPython controller and 4 engines:: ipcluster -n 4 Then start ipython in pylab mode:: ipython -pylab Then a simple "run plotting_frontend.ipy" in IPython will run the example. When this is done, all the variables (such as number, downx, etc.) are available in IPython, so for example you can make additional plots. """ import numpy as N from pylab import * from IPython.kernel import client # Get an IPython1 client rc = client.MultiEngineClient() rc.get_ids() # Run the simulation on all the engines rc.run('plotting_backend.py') # Bring back the data number = rc.pull('number') d_number = rc.pull('d_number') downx = rc.gather('downx') downy = rc.gather('downy') downpx = rc.gather('downpx') downpy = rc.gather('downpy') print "number: ", sum(number) print "downsampled number: ", sum(d_number) # Make a scatter plot of the gathered data # These calls to matplotlib could be replaced by calls to pygist or # another plotting package. figure(1) scatter(downx, downy) xlabel('x') ylabel('y') figure(2) scatter(downpx, downpy) xlabel('px') ylabel('py') show()