class_docstr: Bitmap Algorithm.
  This method breaks time series into chunks and uses the frequency of similar chunks
  to determine anomaly scores.
  The ideas are from this paper:
  Assumption-Free Anomaly Detection in Time Series(http://alumni.cs.ucr.edu/~ratana/SSDBM05.pdf).
class_docstr_tok: ["Bitmap","Algorithm",".","This","method","breaks","time","series","into","chunks","and","uses","the","frequency","of","similar","chunks","to","determine","anomaly","scores",".","The","ideas","are","from","this","paper",":","Assumption-Free","Anomaly","Detection","in","Time","Series","(","http",":","\/\/alumni.cs.ucr.edu\/~ratana\/SSDBM05.pdf",")","."]
docstr: Initializer
  :param TimeSeries time_series: a TimeSeries object.
  :param TimeSeries baseline_time_series: baseline TimeSeries.
  :param int precision: how many sections to categorize values.
  :param int lag_window_size: lagging window size.
  :param int future_window_size: future window size.
  :param int chunk_size: chunk size.
docstr_tok: ["Initializer",":","param","TimeSeries","time_series",":","a","TimeSeries","object",".",":","param","TimeSeries","baseline_time_series",":","baseline","TimeSeries",".",":","param","int","precision",":","how","many","sections","to","categorize","values",".",":","param","int","lag_window_size",":","lagging","window","size",".",":","param","int","future_window_size",":","future","window","size",".",":","param","int","chunk_size",":","chunk","size","."]
code: def __init__(
      self,
      time_series,
      baseline_time_series=None,
      precision=None,
      lag_window_size=None,
      future_window_size=None,
      chunk_size=None,
  ):
      """
      Initializer
      :param TimeSeries time_series: a TimeSeries object.
      :param TimeSeries baseline_time_series: baseline TimeSeries.
      :param int precision: how many sections to categorize values.
      :param int lag_window_size: lagging window size.
      :param int future_window_size: future window size.
      :param int chunk_size: chunk size.
      """
      super(BitmapDetector, self).__init__(
          self.__class__.__name__, time_series, baseline_time_series
      )
      self.precision = (
          precision
          if precision and precision > 0
          else DEFAULT_BITMAP_PRECISION
      )
      self.chunk_size = (
          chunk_size
          if chunk_size and chunk_size > 0
          else DEFAULT_BITMAP_CHUNK_SIZE
      )
      if lag_window_size:
          self.lag_window_size = lag_window_size
      else:
          self.lag_window_size = int(
              self.time_series_length
              * DEFAULT_BITMAP_LAGGING_WINDOW_SIZE_PCT
          )
      if future_window_size:
          self.future_window_size = future_window_size
      else:
          self.future_window_size = int(
              self.time_series_length
              * DEFAULT_BITMAP_LEADING_WINDOW_SIZE_PCT
          )
      self._sanity_check()
  
file_path: luminol/src/luminol/algorithms/anomaly_detector_algorithms/bitmap_detector.py
imports: from collections import defaultdict
  from copy import copy
  import math
  from luminol import exceptions
  from luminol.algorithms.anomaly_detector_algorithms import AnomalyDetectorAlgorithm
  from luminol.modules.time_series import TimeSeries
  from luminol.constants import DEFAULT_BITMAP_PRECISION, DEFAULT_BITMAP_CHUNK_SIZE, DEFAULT_BITMAP_LAGGING_WINDOW_SIZE_PCT, DEFAULT_BITMAP_LEADING_WINDOW_SIZE_PCT, DEFAULT_BITMAP_MINIMAL_POINTS_IN_WINDOWS, DEFAULT_BITMAP_MAXIMAL_POINTS_IN_WINDOWS
label_desc: Use image node_id 1 to create a new BitmapDetector object from inherited base classes: AnomalyDetectorAlgorithm with example: obj = BitmapDetector(time_series, baseline_time_series, precision, lag_window_size, future_window_size, chunk_size)