class_docstr: Base reader for AMI L1B NetCDF4 files.
  
  AMI data contains GSICS adjustment factors for the IR bands.
  By default, these are not applied. If you wish to apply them then you must
  set the calibration mode appropriately::
  
      import satpy
      import glob
  
      filenames = glob.glob('*FLDK*.dat')
      scene = satpy.Scene(filenames,
                          reader='ahi_hsd',
                          reader_kwargs={'calib_mode': 'gsics'})
      scene.load(['B13'])
  
  In addition, the GSICS website (and other sources) also supply radiance
  correction coefficients like so::
  
      radiance_corr = (radiance_orig - corr_offset) / corr_slope
  
  If you wish to supply such coefficients, pass 'user_calibration' and a
  dictionary containing per-channel slopes and offsets as a reader_kwarg::
  
     user_calibration={'chan': {'slope': slope, 'offset': offset}}
  
  If you do not have coefficients for a particular band, then by default the
  slope will be set to 1 .and the offset to 0.::
  
      import satpy
      import glob
  
      # Load bands 7, 14 and 15, but we only have coefs for 7+14
      calib_dict = {'WV063': {'slope': 0.99, 'offset': 0.002},
                    'IR087': {'slope': 1.02, 'offset': -0.18}}
  
      filenames = glob.glob('*.nc')
      scene = satpy.Scene(filenames,
                          reader='ami_l1b',
                          reader_kwargs={'user_calibration': calib_dict,
                                         'calib_mode': 'file')
      # IR133 will not have radiance correction applied.
      scene.load(['WV063', 'IR087', 'IR133'])
  
  By default these updated coefficients are not used. In most cases, setting
  `calib_mode` to `file` is required in order to use external coefficients.
docstr: Retrieve user-supplied radiance correction and apply.
docstr_tok: ["Retrieve","user-supplied","radiance","correction","and","apply","."]
code: def _apply_user_rad_correction(self, data):
      """Retrieve user-supplied radiance correction and apply."""
      rad_slope, rad_offset = get_user_calibration_factors(
          self.band_name, self.user_calibration
      )
      data = apply_rad_correction(data, rad_slope, rad_offset)
      return data
  
imports: import logging
  from datetime import datetime, timedelta
  import dask.array
  import numpy
  import pyproj
  import xarray
  from pyspectral.blackbody import blackbody_wn_rad2temp
  from satpy.readers import open_file_or_filename
  from satpy.readers._geos_area import get_area_definition, get_area_extent
  from satpy.readers.file_handlers import BaseFileHandler
  from satpy.readers.utils import apply_rad_correction, get_user_calibration_factors
  from satpy.utils import get_legacy_chunk_size
label_desc: Use image node_id 9 for calling the AMIL1bNetCDF obj's underlying member method code with example usage: obj._apply_user_rad_correction(data) and returns: data