plotting_frontend.py
60 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:: | ||||
Thomas Kluyver
|
r6457 | ipcluster start -n 4 | ||
MinRK
|
r3670 | |||
MinRK
|
r15185 | Then start ipython with matplotlib integration:: | ||
MinRK
|
r3670 | |||
MinRK
|
r15185 | ipython --matplotlib | ||
MinRK
|
r3670 | |||
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. | ||||
""" | ||||
Thomas Kluyver
|
r6455 | from __future__ import print_function | ||
MinRK
|
r3670 | |||
MinRK
|
r15185 | import matplotlib.pyplot as plt | ||
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 | ||
Thomas Kluyver
|
r6455 | print("number: ", sum(number)) | ||
print("downsampled number: ", sum(d_number)) | ||||
MinRK
|
r3670 | |||
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. | ||||
MinRK
|
r15185 | plt.figure(1) | ||
MinRK
|
r3675 | # wait for downx/y | ||
downx = downx.get() | ||||
downy = downy.get() | ||||
MinRK
|
r15185 | plt.scatter(downx, downy) | ||
plt.xlabel('x') | ||||
plt.ylabel('y') | ||||
plt.figure(2) | ||||
MinRK
|
r3675 | # wait for downpx/y | ||
downpx = downpx.get() | ||||
downpy = downpy.get() | ||||
MinRK
|
r15185 | plt.scatter(downpx, downpy) | ||
plt.xlabel('px') | ||||
plt.ylabel('py') | ||||
plt.show() | ||||