code: def get_stats(self):
      stats = Munch()
      self._check_results()
      n_run = n = len(self.data)
      if self.run_idxs is not None:
          n_run = len(self.run_idxs)
      fails = self.fail_idxs().shape[0]
      filtered = self.filtered_idxs().shape[0]
      nonfiltered = n_run - filtered
      stats.testcases = n
      if n_run != n:
          stats.testcases_run = n_run
      if filtered:
          stats.after_filtering = nonfiltered
          stats.after_filtering_rate = 100 * nonfiltered / n_run
      if nonfiltered != 0:
          stats.fails = fails
          stats.fail_rate = 100 * fails / nonfiltered
      return stats
  
imports: from abc import ABC, abstractmethod
  import dill
  from munch import Munch
  import numpy
  import inspect
  from .expect import iter_with_optional, Expect
  from .viewer.test_summarizer import TestSummarizer
label_desc: Use image node_id 21 for calling the AbstractTest obj's underlying member method code with example usage: obj.get_stats() and returns: stats