def load_data(self, data, freq=None):
     self.data = data
     if type(data) is h5py.Dataset:
         self.channels = data.attrs["channels"]
         self.duration = data.attrs["duration"]
         self.freq = data.attrs["freq"]
         self.dataproxy = H5DataProxy(data)
     else:
         self.channels = data.shape[1]
         self.duration = (data.shape[0] - 1) / float(freq)
         self.freq = freq
         self.dataproxy = DataProxy(data, freq)
     
     self.dynamicviewport = DynamicViewport(self.duration)
     
     # max translation, used for the slider
     self.nav.xmin = self.dynamicviewport.xmin
     self.nav.xmax = self.dynamicviewport.xmax
     self.nav.txmax = self.duration - self.dynamicviewport.viewportsize
     
     # get the first view port and data buffer to load the data at first
     viewport = self.dynamicviewport.get_viewport(0)
     data = self.update_data(self.dynamicviewport.get_databuffer(viewport),\
                             viewport)
     
     # reload if already initialized
     if self.isInitialized:
         self.dataDisplay.bind_data_buffer()
         self.updateGL()