class_docstr: Adaptive histogram equalized DNB composite.
  
  The logic for this code was taken from Polar2Grid and was originally developed by Eva Schiffer (SSEC).
  
  This composite separates the DNB data in to 3 main regions: Day, Night, and Mixed. Each region is
  equalized separately to bring out the most information from the region due to the high dynamic range
  of the DNB data. Optionally, the mixed region can be separated in to multiple smaller regions by
  using the `mixed_degree_step` keyword.
class_docstr_tok: ["Adaptive","histogram","equalized","DNB","composite",".","The","logic","for","this","code","was","taken","from","Polar2Grid","and","was","originally","developed","by","Eva","Schiffer","(","SSEC",")",".","This","composite","separates","the","DNB","data","in","to","3","main","regions",":","Day",",","Night",",","and","Mixed",".","Each","region","is","equalized","separately","to","bring","out","the","most","information","from","the","region","due","to","the","high","dynamic","range","of","the","DNB","data",".","Optionally",",","the","mixed","region","can","be","separated","in","to","multiple","smaller","regions","by","using","the","`","mixed_degree_step","`","keyword","."]
docstr: Initialize the compositor with values from the user or from the configuration file.
  
  Adaptive histogram equalization and regular histogram equalization can be configured
  independently for each region: day, night, or mixed.
  A region can be set to use adaptive equalization "always", or "never", or only when
  there are multiple regions in a single scene "multiple" via the `adaptive_X` keyword
  arguments (see below).
  
  :param adaptive_day: one of ("always", "multiple", "never") meaning when adaptive equalization is used.
  :param adaptive_mixed: one of ("always", "multiple", "never") meaning when adaptive equalization is used.
  :param adaptive_night: one of ("always", "multiple", "never") meaning when adaptive equalization is used.
docstr_tok: ["Initialize","the","compositor","with","values","from","the","user","or","from","the","configuration","file",".","Adaptive","histogram","equalization","and","regular","histogram","equalization","can","be","configured","independently","for","each","region",":","day",",","night",",","or","mixed",".","A","region","can","be","set","to","use","adaptive","equalization","``","always","''",",","or","``","never","''",",","or","only","when","there","are","multiple","regions","in","a","single","scene","``","multiple","''","via","the","`","adaptive_X","`","keyword","arguments","(","see","below",")",".",":","param","adaptive_day",":","one","of","(","``","always","''",",","``","multiple","''",",","``","never","''",")","meaning","when","adaptive","equalization","is","used",".",":","param","adaptive_mixed",":","one","of","(","``","always","''",",","``","multiple","''",",","``","never","''",")","meaning","when","adaptive","equalization","is","used",".",":","param","adaptive_night",":","one","of","(","``","always","''",",","``","multiple","''",",","``","never","''",")","meaning","when","adaptive","equalization","is","used","."]
code: def __init__(self, *args, **kwargs):
      """Initialize the compositor with values from the user or from the configuration file.
  
      Adaptive histogram equalization and regular histogram equalization can be configured
      independently for each region: day, night, or mixed.
      A region can be set to use adaptive equalization "always", or "never", or only when
      there are multiple regions in a single scene "multiple" via the `adaptive_X` keyword
      arguments (see below).
  
      :param adaptive_day: one of ("always", "multiple", "never") meaning when adaptive equalization is used.
      :param adaptive_mixed: one of ("always", "multiple", "never") meaning when adaptive equalization is used.
      :param adaptive_night: one of ("always", "multiple", "never") meaning when adaptive equalization is used.
      """
      self.adaptive_day = kwargs.pop("adaptive_day", "always")
      self.adaptive_mixed = kwargs.pop("adaptive_mixed", "always")
      self.adaptive_night = kwargs.pop("adaptive_night", "always")
      self.day_radius_pixels = int(kwargs.pop("day_radius_pixels", 400))
      self.mixed_radius_pixels = int(
          kwargs.pop("mixed_radius_pixels", 100)
      )
      self.night_radius_pixels = int(
          kwargs.pop("night_radius_pixels", 400)
      )
  
      super(AdaptiveDNB, self).__init__(*args, **kwargs)
  
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 1 to create a new AdaptiveDNB object from inherited base classes: HistogramDNB with example: obj = AdaptiveDNB()