class_docstr: 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: ["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.
  
  :param high_angle_cutoff: solar zenith angle threshold in degrees, values above this are considered "night"
  :param low_angle_cutoff: solar zenith angle threshold in degrees, values below this are considered "day"
  :param mixed_degree_step: Step interval to separate "mixed" region in to multiple parts
                            by default does whole mixed region
docstr_tok: ["Initialize","the","compositor","with","values","from","the","user","or","from","the","configuration","file",".",":","param","high_angle_cutoff",":","solar","zenith","angle","threshold","in","degrees",",","values","above","this","are","considered","``","night","''",":","param","low_angle_cutoff",":","solar","zenith","angle","threshold","in","degrees",",","values","below","this","are","considered","``","day","''",":","param","mixed_degree_step",":","Step","interval","to","separate","``","mixed","''","region","in","to","multiple","parts","by","default","does","whole","mixed","region"]
code: def __init__(self, *args, **kwargs):
      """Initialize the compositor with values from the user or from the configuration file.
  
      :param high_angle_cutoff: solar zenith angle threshold in degrees, values above this are considered "night"
      :param low_angle_cutoff: solar zenith angle threshold in degrees, values below this are considered "day"
      :param mixed_degree_step: Step interval to separate "mixed" region in to multiple parts
                                by default does whole mixed region
      """
      self.high_angle_cutoff = int(kwargs.pop("high_angle_cutoff", 100))
      self.low_angle_cutoff = int(kwargs.pop("low_angle_cutoff", 88))
      self.mixed_degree_step = (
          int(kwargs.pop("mixed_degree_step"))
          if "mixed_degree_step" in kwargs
          else None
      )
      super(HistogramDNB, 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 HistogramDNB object from inherited base classes: CompositeBase with example: obj = HistogramDNB()