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: Generate SAX representation(Symbolic Aggregate approXimation) for a single data point.
  Read more about it here: Assumption-Free Anomaly Detection in Time Series(http://alumni.cs.ucr.edu/~ratana/SSDBM05.pdf).
  :param dict sections: value sections.
  :param float value: value to be categorized.
  :return str: a SAX representation.
docstr_tok: ["Generate","SAX","representation","(","Symbolic","Aggregate","approXimation",")","for","a","single","data","point",".","Read","more","about","it","here",":","Assumption-Free","Anomaly","Detection","in","Time","Series","(","http",":","\/\/alumni.cs.ucr.edu\/~ratana\/SSDBM05.pdf",")",".",":","param","dict","sections",":","value","sections",".",":","param","float","value",":","value","to","be","categorized",".",":","return","str",":","a","SAX","representation","."]
code: def _generate_SAX_single(self, sections, value):
      """
      Generate SAX representation(Symbolic Aggregate approXimation) for a single data point.
      Read more about it here: Assumption-Free Anomaly Detection in Time Series(http://alumni.cs.ucr.edu/~ratana/SSDBM05.pdf).
      :param dict sections: value sections.
      :param float value: value to be categorized.
      :return str: a SAX representation.
      """
      sax = 0
      for section_number in sections.keys():
          section_lower_bound = sections[section_number]
          if value >= section_lower_bound:
              sax = section_number
          else:
              break
      return str(sax)
  
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 3 for calling the BitmapDetector obj's underlying member method code with example usage: obj._generate_SAX_single(sections, value) and returns: str