class_docstr: Base class for reading JPSS VIIRS & ATMS SDR HDF5 Files.
code: def _map_and_apply_factors(data, factors, rows_per_gran):
      # The user may have requested a different chunking scheme, but we need
      # per granule chunking right now so factor chunks map 1:1 to data chunks
      old_chunks = data.chunks
      dask_data = data.data.rechunk(
          (tuple(rows_per_gran), data.data.chunks[1])
      )
      dask_data = da.map_blocks(
          _apply_factors,
          dask_data,
          factors,
          chunks=dask_data.chunks,
          dtype=data.dtype,
          meta=np.array([[]], dtype=data.dtype),
      )
      data = xr.DataArray(
          dask_data.rechunk(old_chunks),
          dims=data.dims,
          coords=data.coords,
          attrs=data.attrs,
      )
      return data
  
imports: import logging
  from datetime import datetime, timedelta
  import dask.array
  import numpy
  import xarray
  from satpy.readers.hdf5_utils import HDF5FileHandler
label_desc: Use image node_id 13 for calling the JPSS_SDR_FileHandler obj's underlying member method code with example usage: obj._map_and_apply_factors(data, factors, rows_per_gran) and returns: data