Because the image is so large, and matplotlib carries out various  
operations on the image (scaling, resampling, etc), it uses a lot of  
memory. This is one area where a specialized display program will be  
more efficient. If you need to use matplotlib, decide whether you  
really only want to display a subsection, or only need a lower  
resolution version (e.g., boxcar smooth and subsample) before  
displaying. I've found that image sizes well over 1kx1k can take some  
time to display, and those that are much larger can cause you to run  
out of memory. At least, that's what I think is happening.

Perry

On Jun 30, 2009, at 7:20 PM, Tommy Grav wrote:

> I am trying to use  imshow to plot some semi-large fits images.
> Here is the code:
>
> from math import *
> import numpy as np
> from matplotlib import pyplot as plt
> from matplotlib import cm as cm
> import pyfits
>
> cat = "/Volumes/Sweden/PS1SC/Data/PS20090603-3/MD09/skycell.092/"
> fname = "o4985g0263o.warp.MD09.skycell.092"
>
> hdu = pyfits.open(cat+fname+".fits")
> print hdu.info()
> img = hdu[1].data.astype("int")
>
> plt.figure(figsize=[12,12])
> plt.imshow(img,cmap=cm.cool)
> plt.savefig("test.png")
>
> Which gives the result:
>
> Filename: /Volumes/Sweden/PS1SC/Data/PS20090603-3/MD09/skycell.092/
> o4985g0263o.warp.MD09.skycell.092.fits
> No.    Name         Type      Cards   Dimensions   Format
> 0    PRIMARY     PrimaryHDU       6  ()            int16
> 1                CompImageHDU   101  (6000, 6000)  float32
> None
> Python(23117,0xa04f2720) malloc: *** mmap(size=1152000000) failed
> (error code=12)
> *** error: can't allocate region
> *** set a breakpoint in malloc_error_break to debug
> Traceback (most recent call last):
>   File "quick_look.py", line 16, in <module>
>     plt.savefig("test.png")
>   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/site-packages/matplotlib/pyplot.py", line 345, in savefig
>     return fig.savefig(*args, **kwargs)
>   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/site-packages/matplotlib/figure.py", line 990, in savefig
>     self.canvas.print_figure(*args, **kwargs)
>   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/site-packages/matplotlib/backend_bases.py", line 1419, in
> print_figure
>     **kwargs)
>   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/site-packages/matplotlib/backends/backend_agg.py", line 323,
> in print_png
>     FigureCanvasAgg.draw(self)
>   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/site-packages/matplotlib/backends/backend_agg.py", line 279,
> in draw
>     self.figure.draw(self.renderer)
>   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/site-packages/matplotlib/figure.py", line 772, in draw
>     for a in self.axes: a.draw(renderer)
>   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/site-packages/matplotlib/axes.py", line 1545, in draw
>     im.draw(renderer)
>   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/site-packages/matplotlib/image.py", line 233, in draw
>     im = self.make_image(renderer.get_image_magnification())
>   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/site-packages/matplotlib/image.py", line 180, in make_image
>     x = self.to_rgba(self._A, self._alpha)
>   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/site-packages/matplotlib/cm.py", line 79, in to_rgba
>     x = self.cmap(x, alpha=alpha, bytes=bytes)
>   File "/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/site-packages/matplotlib/colors.py", line 501, in __call__
>     rgba = np.empty(shape=xa.shape+(4,), dtype=lut.dtype)
> MemoryError
>
> I found the earlier thread of 
> http://www.mail-archive.com/matplotlib-users@lists.sourceforge.net/msg11216.html
> but that didn't seem to produce any fixes or good explanations.
>
> I am on a Mac Pro Intel machine running 10.5.7 and
> [Heimdall:tgrav ~/Work/myCode/Python/pyPS1SC]> python
> ActivePython 2.5.4.3 (ActiveState Software Inc.) based on
> Python 2.5.4 (r254:67916, Jan 20 2009, 14:11:42)
> [GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import numpy
>>>> numpy.__version__
> '1.3.0rc2'
>>>> import pyfits
>>>> pyfits.__version__
> '2.1.1dev462'
>>>> import matplotlib
>>>> matplotlib.__version__
> '0.98.5.2'
>>>>
>
> Cheers
> Tommy
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users


------------------------------------------------------------------------------
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to