On Mon, Mar 8, 2010 at 6:52 AM, Bruce Southey <bsout...@gmail.com> wrote:
> On 03/08/2010 01:30 AM, David Goldsmith wrote: > > On Sun, Mar 7, 2010 at 4:41 AM, Friedrich Romstedt < > friedrichromst...@gmail.com> wrote: > >> I would like to stress the fact that imo this is maybe not ticket and not >> a bug. >> >> The issue arises when calling a.max() or similar of empty arrays a, i.e., >> with: >> >> >>> 0 in a.shape >> True >> >> Opposed to the .prod() of an empty array, such a .max() or .min() >> cannot be defined, because the set is empty. So it's fully correct to >> let such calls fail. Just the failure is a bit deep in numpy, and >> only the traceback gives some hint what went wrong. >> >> I posted something similar also on the matplotlib-users list, sorry >> for cross-posting thus. >> > > Any suggestions, then, how to go about figuring out what's happening in my > code that's causing this "feature" to manifest itself? > > DG > > Perhaps providing the code with specific versions of Python, numpy etc. > would help. > > I would guess that aquarius_test.py has not correctly setup the necessary > inputs (or has invalid inputs) required by matplotlib (which I have no > knowledge about). Really you have to find if the _A in cmp.py used by > 'self.norm.autoscale_None(self._A)' is valid. You may be missing a valid > initialization step because the TypeError exception in autoscale_None ('You > must first set_array for mappable') implies something need to be done first. > > > Bruce > Python 2.5.4, Numpy 1.4.0, Matplotlib 0.99.0, Windows 32bit Vista Home Premium SP2 # Code copyright 2010 by David Goldsmith # Comments and unnecessaries edited for brevity import numpy as N import matplotlib as MPL from matplotlib import pylab from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas from matplotlib.figure import Figure import matplotlib.cm as cm J = complex(0,1); tol = 1e-6; maxiter = 20; roots = (-2 + J/2, -1 + J, -0.5 + J/2, 0.5 + J, 1 + J/2, 2 + J, 2.5 + J/2, -2 - J, -1 - J/2, -0.5 - J, 0.5 - J/2, 1 - J, 2 - J/2, 2.5 - J) def ffp(z): w, wp = (0J, 0J) for root in roots: z0 = z - root w += N.sin(1/z0) wp -= N.cos(1/z0)/(z0*z0) return (w, wp) def iter(z): w, wp = ffp(z) return z - w/wp def find_root(z0):#, k, j): count = 0 z1 = iter(z0) if N.isnan(z1): return N.complex64(N.inf) while (N.abs(z1 - z0) > tol) and \ (count < maxiter): count += 1 z0 = z1 z1 = iter(z0) if N.abs(z1 - z0) > tol: result = 0 else: result = z1 return N.complex64(result) w, h, DPI = (3.2, 2.0, 100) fig = Figure(figsize=(w, h), dpi=DPI, frameon=False) ax = fig.add_subplot(1,1,1) canvas = FigureCanvas(fig) nx, xmin, xmax = (int(w*DPI), -0.5, 0.5) ny, ymin, ymax = (int(h*DPI), 0.6, 1.2) X, xincr = N.linspace(xmin,xmax,nx,retstep=True) Y, yincr = N.linspace(ymin,ymax,ny,retstep=True) W = N.zeros((ny,nx), dtype=N.complex64) for j in N.arange(nx): if not (j%100): # report progress print j for k in N.arange(ny): x, y = (X[j], Y[k]) z0 = x + J*y W[k,j] = find_root(z0)#,k,j) print N.argwhere(N.logical_not(N.isfinite(W.real))) print N.argwhere(N.logical_not(N.isfinite(W.imag))) W = W.T argW = N.angle(W) print N.argwhere(N.logical_not(N.isfinite(argW))) cms = ("Blues",)# "Blues_r", "cool", "cool_r", def all_ticks_off(ax): ax.xaxis.set_major_locator(pylab.NullLocator()) ax.yaxis.set_major_locator(pylab.NullLocator()) for cmap_name in cms: all_ticks_off(ax) ax.hold(True) for i in range(4): for j in range(4): part2plot = argW[j*ny/4:(j+1)*ny/4, i*nx/4:(i+1)*nx/4] if N.any(N.logical_not(N.isfinite(part2plot))): print i, j, print N.argwhere(N.logical_not(N.isfinite(part2plot))) extent = (i*nx/4, (i+1)*nx/4, (j+1)*ny/4, j*ny/4) ax.imshow(part2plot, cmap_name, extent = extent) ax.set_xlim(0, nx) ax.set_ylim(0, ny) canvas.print_figure('../../Data-Figures/Zodiac/Aquarius/'+ cmap_name + 'Aquarius_test.png', dpi=DPI) # End Aquarius_test.png DG
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion