matplotlib is breaking numpy

Here is sample code demonstrating the problem I’m having with pyhd5/numpy/matplotlib

import h5py

import numpy
import re

import sys

import os
import gtk
import pdb

import gc

from matplotlib.figure import Figure

from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as FigureCanvas

def doplot(widget,box1):
id=h5py.h5f.open(“MLS-Aura_L1BRADD_v02-23-c01_2009d001.h5”)

data_id = h5py.h5d.open(id,"R1A:118.B22D:PT.S0.DACS-4")
dataspaceID = h5py.h5d.DatasetID.get_space(data_id)

noDims = h5py.h5s.SpaceID.get_simple_extent_ndims(dataspaceID)
dims  = h5py.h5s.SpaceID.get_simple_extent_dims(dataspaceID)

start=tuple([0]*noDims)
h5py.h5s.SpaceID.select_hyperslab(dataspaceID,start,dims,None,None,

                                h5py.h5s.SELECT_SET)
memory_space_id = h5py.h5s.create_simple(dims)

data=numpy.memmap('tmpdat',dtype=numpy.float64,mode='w+',shape=dims)
h5py.h5d.DatasetID.read(data_id,memory_space_id,dataspaceID,data)

del data
data=numpy.memmap('tmpdat',dtype=numpy.float64,mode='r',shape=dims)

fig = Figure(figsize=(5,5), dpi=100)
ax = fig.add_subplot(111)

plot_data=data[0,0:,0]
mif=numpy.arange(plot_data.shape[0])
#if the next line is commented out, all is good

ax.plot(plot_data,mif)
canvas = FigureCanvas(fig)
box1.pack_start(canvas, True, True, 0)

canvas.show()
id.close()
del data

del fig
del ax
del plot_data

del canvas
gc.collect()
#the following line fails

os.remove('tmpdat')

def delete_event(widget, event, data=None):

return False

window = gtk.Window(gtk.WINDOW_TOPLEVEL)

window.connect(“destroy”, lambda x: gtk.main_quit())
box1 = gtk.HBox(False, 0)

window.add(box1)

button = gtk.Button(“Hello World”)

box1.pack_start(button, True, True, 0)
#window.add(box1)
button.show()

button.connect(“clicked”, doplot, box1)
box1.show()
window.set_default_size(500,400)

window.show()
gtk.main()