code: def test_tree_mdi_plus(self):
      tree_transformer = MDIPlusDefaultTransformer(
          tree_model=self.tree_model
      )
      blocked_data = tree_transformer.fit_transform(self.X)
      ridge_ppm = RidgeRegressorPPM(
          loo=True, alpha_grid=np.logspace(-4, 3, 100)
      )
      ridge_ppm.fit(blocked_data.get_all_data(), self.y)
      scoring_fns = r2_score
      tree_mdi = TreeMDIPlus(
          ridge_ppm,
          tree_transformer,
          scoring_fns,
          tree_random_state=self.tree_model.random_state,
      )
      scores = tree_mdi.get_scores(self.X, self.y).values.ravel()
      true_scores = np.array(
          [
              0.43619799667263814,
              0,
              0,
              0,
              0.041935066728947756,
              0,
              0,
              -0.0073188385516917975,
              0,
              0,
          ]
      )
      assert_array_equal(scores, true_scores)
  
imports: import copy
  import numpy
  import random
  import scipy
  from sklearn.linear_model import Ridge, LinearRegression
  from sklearn.tree import DecisionTreeRegressor
  from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier
  from sklearn.metrics import r2_score, log_loss, roc_auc_score, mean_squared_error
  from imodels.importance.block_transformers import IdentityTransformer, TreeTransformer, CompositeTransformer, MDIPlusDefaultTransformer
  from imodels.importance.ppms import RidgeRegressorPPM, LogisticClassifierPPM, RobustRegressorPPM
  from imodels.importance.mdi_plus import TreeMDIPlus, ForestMDIPlus
  from imodels.importance.rf_plus import RandomForestPlusClassifier
label_desc: Use image node_id 2 for calling the TestMDIPlus obj's underlying member method code with example usage: obj.test_tree_mdi_plus() without return types