code: def fit(self, X, y):
      self.model.fit(X, y)
      self.X, self.y = X, y
      self.null_distribution = (
          null_feature_split_proportions_distribution(
              self.model, X, y, self.n_permutations
          )
      )
      self.thresholds = self.method(
          self.null_distribution, self.percentile
      )
      self.feature_proportions = feature_split_proportions(self.model)
      return self
  
file_path: imodels/imodels/experimental/bartpy/features/featureselection.py
imports: from copy import deepcopy
  import numpy
  from matplotlib import pyplot
  from sklearn.base import BaseEstimator
  from ..diagnostics.features import null_feature_split_proportions_distribution, local_thresholds, global_thresholds, is_kept, feature_split_proportions, plot_feature_proportions_against_thresholds, plot_null_feature_importance_distributions, plot_feature_split_proportions
  from ..sklearnmodel import SklearnModel
label_desc: Use image node_id 2 for calling the SelectNullDistributionThreshold obj's underlying member method code with example usage: obj.fit(X, y) and returns: self