class_docstr: Equalized DNB composite using the Zinke algorithm [#ncc1]_.
  
  References:
      .. [#ncc1] Stephan Zinke (2017),
  
             A simplified high and near-constant contrast approach for the
             display of VIIRS day/night band imagery
             :doi:`10.1080/01431161.2017.1338838`
class_docstr_tok: ["Equalized","DNB","composite","using","the","Zinke","algorithm","[","#","ncc1","]","_.","References",":","..","[","#","ncc1","]","Stephan","Zinke","(","2017",")",",","A","simplified","high","and","near-constant","contrast","approach","for","the","display","of","VIIRS","day\/night","band","imagery",":","doi",":","`","10.1080\/01431161.2017.1338838","`"]
docstr: Compute gain factor in a dask-friendly manner.
docstr_tok: ["Compute","gain","factor","in","a","dask-friendly","manner","."]
code: def gain_factor(self, theta):
      """Compute gain factor in a dask-friendly manner."""
      return theta.map_blocks(self._gain_factor, dtype=theta.dtype)
  
imports: from __future__ import annotations
  import logging
  import math
  from datetime import datetime
  import dask
  import dask.array
  import numpy
  import xarray
  from satpy.composites import CompositeBase, GenericCompositor
  from satpy.dataset import combine_metadata
label_desc: Use image node_id 2 for calling the NCCZinke obj's underlying member method code with example usage: obj.gain_factor(theta) and returns: theta