code: def create_from_hdu(cls, hdu, ebins):
          
          hpx = HPX.create_from_hdu(hdu, ebins)
          colnames = hdu.columns.names
          cnames = []
          if hpx.conv.convname == 'FGST_SRCMAP_SPARSE':
              pixs = hdu.data.field('PIX')
              chans = hdu.data.field('CHANNEL')
              keys = chans * hpx.npix + pixs
              vals = hdu.data.field('VALUE')
              nebin = len(ebins)
              data = np.zeros((nebin, hpx.npix))
              data.flat[keys] = vals
          else:
              for c in colnames:
                  if c.find(hpx.conv.colstring) == 0:
                      cnames.append(c)
              nebin = len(cnames)
              data = np.ndarray((nebin, hpx.npix))
              for i, cname in enumerate(cnames):
                  data[i, 0:] = hdu.data.field(cname)
  
          return cls(data, hpx)
docs: Creates and returns an HpxMap object from a FITS HDU.
  
          hdu    : The FITS
          ebins  : Energy bin edges [optional]