docs: def write(self, outfile):
          """
          Save the likelihood results as a sparse HEALPix map.
          """
          data = odict()
          data['PIXEL']=self.roi.pixels_target
          # Full data output (too large for survey)
          if self.config['scan']['full_pdf']:
              data['LOG_LIKELIHOOD']=self.log_likelihood_sparse_array.T
              data['RICHNESS']=self.richness_sparse_array.T
              data['RICHNESS_LOWER']=self.richness_lower_sparse_array.T
              data['RICHNESS_UPPER']=self.richness_upper_sparse_array.T
              data['RICHNESS_LIMIT']=self.richness_upper_limit_sparse_array.T
              #data['STELLAR_MASS']=self.stellar_mass_sparse_array.T
              data['FRACTION_OBSERVABLE']=self.fraction_observable_sparse_array.T
          else:
              data['LOG_LIKELIHOOD']=self.log_likelihood_sparse_array.T
              data['RICHNESS']=self.richness_sparse_array.T
              data['FRACTION_OBSERVABLE']=self.fraction_observable_sparse_array.T
  
          # Convert to 32bit float
          for k in list(data.keys())[1:]:
              data[k] = data[k].astype('f4',copy=False)
              
          # Stellar mass can be calculated from STELLAR * RICHNESS
          header = odict()
          header['STELLAR']=round(self.stellar_mass_conversion,8)
          header['LKDNSIDE']=self.config['coords']['nside_likelihood']
          header['LKDPIX']=ang2pix(self.config['coords']['nside_likelihood'],
                                   self.roi.lon,self.roi.lat)
          header['NROI']=self.roi.inROI(self.loglike.catalog_roi.lon,
                                        self.loglike.catalog_roi.lat).sum()
          header['NANNULUS']=self.roi.inAnnulus(self.loglike.catalog_roi.lon,
                                                self.loglike.catalog_roi.lat).sum()
          header['NINSIDE']=self.roi.inInterior(self.loglike.catalog_roi.lon,
                                                self.loglike.catalog_roi.lat).sum()
          header['NTARGET']=self.roi.inTarget(self.loglike.catalog_roi.lon,
                                              self.loglike.catalog_roi.lat).sum()
  
          # Flatten if there is only a single distance modulus
          # ADW: Is this really what we want to do?
          if len(self.distance_modulus_array) == 1:
              for key in data:
                  data[key] = data[key].flatten()
  
          logger.info("Writing %s..."%outfile)
          write_partial_map(outfile,data,
                            nside=self.config['coords']['nside_pixel'],
                            header=header,
                            clobber=True
                            )
          
          fitsio.write(outfile,
                       dict(DISTANCE_MODULUS=self.distance_modulus_array.astype('f4',copy=False)),
                       extname='DISTANCE_MODULUS',
                       clobber=False)