class_docstr: Calculate dynamic traffic light bounds based on pull thresholds and dynamic mean and std.deviation.
docstr: Initialize an instance of DynamicTrafficLightBounds.
  
  :param str read_key: key of input data to read from data store, only used to extract feature list.
  :param dict rules: dict of traffic light bounds => key is feature:metric and value is bounds
  :param str store_key: key of dynamic traffic light boundaries to store in data store, e.g. used for plotting.
  :param str suffix_mean: suffix of mean. mean column = metric + suffix_mean
  :param str suffix_std: suffix of std. std column = metric + suffix_std
docstr_tok: ["Initialize","an","instance","of","DynamicTrafficLightBounds",".",":","param","str","read_key",":","key","of","input","data","to","read","from","data","store",",","only","used","to","extract","feature","list",".",":","param","dict","rules",":","dict","of","traffic","light","bounds","=",">","key","is","feature",":","metric","and","value","is","bounds",":","param","str","store_key",":","key","of","dynamic","traffic","light","boundaries","to","store","in","data","store",",","e.g",".","used","for","plotting",".",":","param","str","suffix_mean",":","suffix","of","mean",".","mean","column","=","metric","+","suffix_mean",":","param","str","suffix_std",":","suffix","of","std",".","std","column","=","metric","+","suffix_std"]
code: def __init__(
      self,
      read_key,
      rules,
      store_key: str = "",
      suffix_mean: str = "_mean",
      suffix_std: str = "_std",
  ) -> None:
      """Initialize an instance of DynamicTrafficLightBounds.
  
      :param str read_key: key of input data to read from data store, only used to extract feature list.
      :param dict rules: dict of traffic light bounds => key is feature:metric and value is bounds
      :param str store_key: key of dynamic traffic light boundaries to store in data store, e.g. used for plotting.
      :param str suffix_mean: suffix of mean. mean column = metric + suffix_mean
      :param str suffix_std: suffix of std. std column = metric + suffix_std
      """
      self.read_key = read_key
      apply_funcs_key = f"{read_key}__{store_key}"
  
      expand_bounds = ComputeTLBounds(
          read_key=read_key,
          monitoring_rules=rules,
          apply_funcs_key=apply_funcs_key,
          func=pull_bounds,
          metrics_wide=True,
          axis=1,
          suffix_std=suffix_std,
          suffix_mean=suffix_mean,
      )
      calc_bounds = ApplyFunc(
          apply_to_key=read_key,
          assign_to_key=store_key,
          apply_funcs_key=apply_funcs_key,
      )
      super().__init__(modules=[expand_bounds, calc_bounds])
  
imports: from __future__ import annotations
  import copy
  import fnmatch
  from collections import defaultdict
  from typing import Any
  import numpy
  import pandas
  from popmon.analysis.apply_func import ApplyFunc
  from popmon.base import Module, Pipeline
label_desc: Use image node_id 1 to create a new DynamicBounds object from inherited base classes: Pipeline with example: obj = DynamicBounds(read_key, rules, store_key, suffix_mean, suffix_std)