phistogram.py
33 lines
| 985 B
| text/x-python
|
PythonLexer
Brian E Granger
|
r1337 | """Parallel histogram function""" | ||
import numpy | ||||
def phistogram(rc, a, bins=10, rng=None, normed=False): | ||||
"""Compute the histogram of a remote array a. | ||||
:Parameters: | ||||
rc | ||||
IPython RemoteController instance | ||||
a : str | ||||
String name of the remote array | ||||
bins : int | ||||
Number of histogram bins | ||||
rng : (float, float) | ||||
Tuple of min, max of the range to histogram | ||||
normed : boolean | ||||
Should the histogram counts be normalized to 1 | ||||
""" | ||||
nengines = len(rc) | ||||
rc.push(dict(bins=bins, rng=rng)) | ||||
rc.execute('import numpy') | ||||
rc.execute('hist, lower_edges = numpy.histogram(%s, bins, rng)' % a) | ||||
lower_edges = rc.pull('lower_edges', targets=0) | ||||
hist_array = rc.gather('hist') | ||||
hist_array.shape = (nengines,-1) | ||||
total_hist = numpy.sum(hist_array, 0) | ||||
if normed: | ||||
total_hist = total_hist/numpy.sum(total_hist,dtype=float) | ||||
return total_hist, lower_edges | ||||