code: def get_summary(self, name: str, ignore_first: int, ignore_last: int):
      times = self.times[name]
      times = [(int(idx), v) for idx, v in times.items()]
      times.sort()
      times = [td for _, td in times]
      if ignore_first:
          times = times[ignore_first:]
      if ignore_last:
          times = times[:-ignore_last]
  
      time_values = [td for td in times if isinstance(td, float)]
      ongoing = [td for td in times if isinstance(td, Timer)]
  
      time_values = np.array(time_values)
  
      if len(time_values) == 0:
          return Summary(
              events=len(time_values),
              mean=0,
              std=0,
              min=0,
              max=0,
              ongoing=len(ongoing),
          )
  
      return Summary(
          events=len(time_values),
          mean=time_values.mean(),
          std=time_values.std(),
          min=time_values.min(),
          max=time_values.max(),
          ongoing=len(ongoing),
      )
  
file_path: labml/client/labml/internal/monitor/time_recorder.py
imports: import time
  from typing import NamedTuple
  import numpy
label_desc: Use image node_id 4 for calling the TimeRecorder obj's underlying member method code with example usage: obj.get_summary(name, ignore_first, ignore_last) and returns: Summary, Summary