code: def _fit_models(options, core_results):
      
  
      logging.info("Fitting models")
      models = options['models'].replace(' ', '').split(';')
  
      # TODO: Make work for 2D results, i.e., curves, comm_sep, o_ring
      # TODO: Make work for curves in general (check if 'x' present in core_res)
      fit_results = []
      for core_result in core_results:  # Each subset
          fit_result = {}
          for model in models:
              fits = _get_fits(core_result, model, options)
              values = _get_values(core_result, model, fits)
              stat_names, stats = _get_comparison_stat(core_result, values,
                                                       model, fits)
              fit_result[model] = [fits, values, stat_names, stats]
          fit_results.append(fit_result)
  
      return fit_results
docs: Fit models to empirical result from a function in emp module
  
      Parameters
      ----------
      options : dict
          Option names and values for analysis
      core_results : list of tuples
          Output of function in emp
  
      Returns
      -------
      list of dicts
          Each element in list corresponds to a subset. The dict has a key for
          each model given in options, and the value is a list of fitted
          parameters (tuple), values (array), comparison statistic names (list),
          and comparison statistic values (list).
  
      Notes
      -----
      To determine if the empirical result refers to a curve or a distribution,
      the result dataframe is inspected for a column 'x', which indicates a
      curve.