code: def filter_curve(self, func_params):
      standard = self.step * np.mean(self.interm_res) ** 2
      predict_data = []
      funcs = {}
      for func_name, func in CURVE_FIT_FUNCS.items():
          if func_name not in func_params:
              continue
          var = 0
          for idx in range(1, self.step + 1):
              y = func(idx, *func_params[func_name])
              var += (y - self.interm_res[idx - 1]) ** 2
          if var < standard:
              predict_data += [y]
              funcs[func_name] = func
      final_funcs = {}
      median = np.median(predict_data)
      stddev = np.std(predict_data)
      for func_name, func in funcs.items():
          y = func(self.iterations, *func_params[func_name])
          epsilon = self.step / 10 * stddev
          if y < median + epsilon and y > median - epsilon:
              final_funcs[func_name] = func
      return final_funcs
  
imports: import scipy
  import logging
  import numpy
  import time
  from scipy import optimize
label_desc: Use image node_id 3 for calling the CurveModel obj's underlying member method code with example usage: obj.filter_curve(func_params) and returns: final_funcs