code: def _get_indicator_string(self, indicators: Dict[str, Indicator]):
      parts = []
  
      for ind in indicators.values():
          if not isinstance(ind, numeric.NumericIndicator):
              continue
          if not ind.is_print:
              continue
  
          parts.append((f" {ind.name}: ", None))
  
          if not ind.is_empty():
              v = ind.get_mean()
              self.update_estimate(ind.name, v)
              value = self.get_value_string(ind.name, v)
              self._last_printed_value[ind.name] = value
              parts.append((value, Text.value))
          elif ind.name in self._last_printed_value:
              value = self._last_printed_value[ind.name]
              parts.append((value, Text.subtle))
          else:
              value = self.get_value_string(ind.name, None)
              parts.append((value, Text.subtle))
  
      return parts
  
file_path: labml/client/labml/internal/tracker/writers/screen.py
imports: from typing import Dict
  import numpy
  from labml.logger import Text
  from ..None import Writer, Indicator
  from ..indicators import numeric
label_desc: Use image node_id 5 for calling the ScreenWriter obj's underlying member method code with example usage: obj._get_indicator_string(indicators) and returns: parts