class_docstr: Main logger - the aim of this class is to store every log from training
  Log is a float value with corresponding training engine step
class_docstr_tok: ["Main","logger","-","the","aim","of","this","class","is","to","store","every","log","from","training","Log","is","a","float","value","with","corresponding","training","engine","step"]
docstr: Args:
      raw_names: flag, return raw names instead of transformed by metric to name (as in update() input dictionary)
      raw_group_names: flag, return group names without transforming them with COMMON_NAME_SHORTCUTS
  
  Returns:
      logs grouped by metric groups - groups are passed in the class constructor
  
  Notes:
      method use group patterns instead of groups if they are available
docstr_tok: ["Args",":","raw_names",":","flag",",","return","raw","names","instead","of","transformed","by","metric","to","name","(","as","in","update","(",")","input","dictionary",")","raw_group_names",":","flag",",","return","group","names","without","transforming","them","with","COMMON_NAME_SHORTCUTS","Returns",":","logs","grouped","by","metric","groups","-","groups","are","passed","in","the","class","constructor","Notes",":","method","use","group","patterns","instead","of","groups","if","they","are","available"]
code: def grouped_log_history(
      self, raw_names: bool = False, raw_group_names: bool = False
  ) -> Dict[str, Dict[str, List[LogItem]]]:
      """
      Args:
          raw_names: flag, return raw names instead of transformed by metric to name (as in update() input dictionary)
          raw_group_names: flag, return group names without transforming them with COMMON_NAME_SHORTCUTS
  
      Returns:
          logs grouped by metric groups - groups are passed in the class constructor
  
      Notes:
          method use group patterns instead of groups if they are available
      """
      if self.auto_generate_groups:
          self.groups = self._auto_generate_groups()
      ret = {}
      sorted_groups = OrderedDict(
          sorted(self.groups.items(), key=lambda t: t[0])
      )
      for group_name, names in sorted_groups.items():
          group_name = (
              group_name
              if raw_group_names
              else COMMON_NAME_SHORTCUTS.get(group_name, group_name)
          )
          ret[group_name] = {
              name
              if raw_names
              else self.metric_to_name.get(
                  name, name
              ): self.history_shorter(name)
              for name in names
          }
      return ret
  
file_path: livelossplot/livelossplot/main_logger.py
imports: import re
  from collections import OrderedDict, defaultdict
  from typing import NamedTuple, Dict, Iterable, List, Pattern, Tuple, Optional, Union
label_desc: Use image node_id 5 for calling the MainLogger obj's underlying member method code with example usage: obj.grouped_log_history(raw_names, raw_group_names) and returns: ret