That is what I was assuming, but it still seems a little odd that  
matplotlib generates
that large of a memory footprint. Loading the fits file into the  
program using pyfits,
with the code only uses 19MB of real memory and 600MB of virtual  
memory (strangly
adding the line img = hdu[1].data, increases this to 208MB/800MB).

Displaying images of various sizes I get these
numbers from Activity Monitor

Size                 Real Mem      Virtual
3k x 3k           0.68GB            1.57GB
4k x 4k         0.92GB            1.80GB
5k x 5k         1.20GB            2.10GB
5.5k x 5.5k     1.38GB            2.28GB

And the limit seems to be somewhere just above 5.5k by 5.5k (darn :( )

Cheers
   Tommy

On Jun 30, 2009, at 7:27 PM, Perry Greenfield wrote:

> 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