code: def residmap(self, prefix='', **kwargs):
          
          timer = Timer.create(start=True)
          self.logger.info('Generating residual maps')
  
          schema = ConfigSchema(self.defaults['residmap'])
  
          config = schema.create_config(self.config['residmap'], **kwargs)
  
          # Defining default properties of test source model
          config['model'].setdefault('Index', 2.0)
          config['model'].setdefault('SpectrumType', 'PowerLaw')
          config['model'].setdefault('SpatialModel', 'PointSource')
          config['model'].setdefault('Prefactor', 1E-13)
  
          o = self._make_residual_map(prefix, **config)
  
          if config['make_plots']:
              plotter = plotting.AnalysisPlotter(self.config['plotting'],
                                                 fileio=self.config['fileio'],
                                                 logging=self.config['logging'])
  
              plotter.make_residmap_plots(o, self.roi)
  
          self.logger.info('Finished residual maps')
  
          outfile = utils.format_filename(self.workdir, 'residmap',
                                          prefix=[o['name']])
  
          if config['write_fits']:
              o['file'] = os.path.basename(outfile) + '.fits'
              self._make_residmap_fits(o, outfile + '.fits')
  
          if config['write_npy']:
              np.save(outfile + '.npy', o)
  
          self.logger.info('Execution time: %.2f s', timer.elapsed_time)
          return o
docs: Generate 2-D spatial residual maps using the current ROI
          model and the convolution kernel defined with the `model`
          argument.
  
          Parameters
          ----------
          prefix : str
              String that will be prefixed to the output residual map files.
  
          {options}
  
          Returns
          -------
          maps : dict
             A dictionary containing the `~fermipy.utils.Map` objects
             for the residual significance and amplitude.