code: def read_atms_limb_correction_coefficients(fn):
      """Read the limb correction files."""
      coeff_str = read_atms_coeff_to_string(fn)
      n_chn = 22
      n_fov = 96
      # make the string a generator
      coeff_lines = (line.strip() for line in coeff_str)
  
      all_coeffs = np.zeros((n_chn, n_fov, n_chn), dtype=np.float32)
      all_amean = np.zeros((n_chn, n_fov, n_chn), dtype=np.float32)
      all_dmean = np.zeros(n_chn, dtype=np.float32)
      all_nchx = np.zeros(n_chn, dtype=np.int32)
      all_nchanx = np.zeros((n_chn, n_chn), dtype=np.int32)
      all_nchanx[:] = 9999
      # There should be 22 sections
      for chan_idx in range(n_chn):
          # blank line at the start of each section
          _ = next(coeff_lines)
          # section header
          next_line = next(coeff_lines)
  
          _nx, nchx, dmean = [
              x.strip() for x in next_line.split(" ") if x
          ]
          all_nchx[chan_idx] = nchx = int(nchx)
          all_dmean[chan_idx] = float(dmean)
  
          # coeff locations (indexes to put the future coefficients in)
          next_line = next(coeff_lines)
          locations = [
              int(x.strip()) for x in next_line.split(" ") if x
          ]
          if len(locations) != nchx:
              raise RuntimeError
          for x in range(nchx):
              all_nchanx[chan_idx, x] = locations[x] - 1
  
          # Read 'nchx' coefficients for each of 96 FOV
          for fov_idx in range(n_fov):
              # chan_num, fov_num, *coefficients, error
              coeff_line_parts = [
                  x.strip() for x in next(coeff_lines).split(" ") if x
              ][2:]
              coeffs = [float(x) for x in coeff_line_parts[:nchx]]
              ameans = [float(x) for x in coeff_line_parts[nchx:-1]]
              # not used but nice to know the purpose of the last column.
              # _error_val = float(coeff_line_parts[-1])
              for x in range(nchx):
                  all_coeffs[
                      chan_idx, fov_idx, all_nchanx[chan_idx, x]
                  ] = coeffs[x]
                  all_amean[
                      all_nchanx[chan_idx, x], fov_idx, chan_idx
                  ] = ameans[x]
  
      return all_dmean, all_coeffs, all_amean, all_nchx, all_nchanx
  
imports: import datetime
  import importlib
  import logging
  import os
  from collections import Counter
  import dask.array
  import numpy
  import xarray
  from satpy.aux_download import retrieve
  from satpy.readers.file_handlers import BaseFileHandler
  from satpy.utils import get_legacy_chunk_size
label_desc: Use image node_id 3 for calling a global function with example usage: read_atms_limb_correction_coefficients(fn) and returns: all_dmean,  all_coeffs,  all_amean,  all_nchx,  all_nchanx