plotting_frontend.py
59 lines
| 1.5 KiB
| text/x-python
|
PythonLexer
MinRK
|
r3670 | """An example of how to use IPython1 for plotting remote parallel data | |
MinRK
|
r3675 | The two files plotting_frontend.py and plotting_backend.py go together. | |
MinRK
|
r3670 | ||
To run this example, first start the IPython controller and 4 | |||
engines:: | |||
MinRK
|
r3675 | ipclusterz start -n 4 | |
MinRK
|
r3670 | ||
Then start ipython in pylab mode:: | |||
ipython -pylab | |||
MinRK
|
r3675 | Then a simple "run plotting_frontend.py" in IPython will run the | |
MinRK
|
r3670 | 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 * | |||
MinRK
|
r3675 | from IPython.parallel import Client | |
MinRK
|
r3670 | ||
MinRK
|
r3675 | # Connect to the cluster | |
rc = Client() | |||
view = rc[:] | |||
MinRK
|
r3670 | ||
# Run the simulation on all the engines | |||
MinRK
|
r3675 | view.run('plotting_backend.py') | |
MinRK
|
r3670 | ||
MinRK
|
r3675 | # Bring back the data. These are all AsyncResult objects | |
number = view.pull('number') | |||
d_number = view.pull('d_number') | |||
downx = view.gather('downx') | |||
downy = view.gather('downy') | |||
downpx = view.gather('downpx') | |||
downpy = view.gather('downpy') | |||
MinRK
|
r3670 | ||
MinRK
|
r3675 | # but we can still iterate through AsyncResults before they are done | |
MinRK
|
r3670 | print "number: ", sum(number) | |
print "downsampled number: ", sum(d_number) | |||
MinRK
|
r3675 | ||
MinRK
|
r3670 | # 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) | |||
MinRK
|
r3675 | # wait for downx/y | |
downx = downx.get() | |||
downy = downy.get() | |||
MinRK
|
r3670 | scatter(downx, downy) | |
xlabel('x') | |||
ylabel('y') | |||
figure(2) | |||
MinRK
|
r3675 | # wait for downpx/y | |
downpx = downpx.get() | |||
downpy = downpy.get() | |||
MinRK
|
r3670 | scatter(downpx, downpy) | |
xlabel('px') | |||
ylabel('py') | |||
show() |