code: def sample(self, data, feature_names, feature_types):
      # data, feature_names, and feature_types are materialized after unify_data has been called
  
      from SALib.sample import morris as morris_sampler
  
      problem = _gen_problem_from_data(data, feature_names)
      return morris_sampler.sample(
          problem, N=self.N, num_levels=self.num_levels, **self.kwargs
      )
  
imports: from ..api.base import ExplainerMixin
  from ..api.templates import FeatureValueExplanation
  from ..utils._explanation import gen_name_from_class, gen_global_selector
  from abc import ABC, abstractmethod
  import numpy
  from ..utils._clean_x import preclean_X
  from ..utils._unify_predict import determine_classes, unify_predict_fn
  from ..utils._unify_data import unify_data
label_desc: Use image node_id 2 for calling the MorrisSampler obj's underlying member method code with example usage: obj.sample(data, feature_names, feature_types) and returns: morris_sampler