code: def __init__(
      self,
      mask_type,
      sort_order,
      masker,
      model,
      *model_args,
      batch_size=500,
  ):
      for arg in model_args:
          if isinstance(arg, pd.DataFrame):
              raise TypeError(
                  "DataFrame arguments dont iterate correctly, pass numpy arrays instead!"
              )
  
      # convert any DataFrames to numpy arrays
      # self.model_arg_cols = []
      # self.model_args = []
      # self.has_df = False
      # for arg in model_args:
      #     if isinstance(arg, pd.DataFrame):
      #         self.model_arg_cols.append(arg.columns)
      #         self.model_args.append(arg.values)
      #         self.has_df = True
      #     else:
      #         self.model_arg_cols.append(None)
      #         self.model_args.append(arg)
  
      # if self.has_df:
      #     given_model = model
      #     def new_model(*args):
      #         df_args = []
      #         for i, arg in enumerate(args):
      #             if self.model_arg_cols[i] is not None:
      #                 df_args.append(pd.DataFrame(arg, columns=self.model_arg_cols[i]))
      #             else:
      #                 df_args.append(arg)
      #         return given_model(*df_args)
      #     model = new_model
  
      self.inner = SequentialPerturbation(
          model, masker, sort_order, mask_type
      )
      self.model_args = model_args
      self.batch_size = batch_size
  
file_path: shap/shap/benchmark/_sequential.py
imports: import time
  import matplotlib.pyplot
  import numpy
  import pandas
  import sklearn
  from tqdm.auto import tqdm
  from shap import Explanation, links
  from shap.maskers import FixedComposite, Image, Text
  from shap.utils import MaskedModel
  from ._result import BenchmarkResult
label_desc: Use image node_id 1 to create a new SequentialMasker object  with example: obj = SequentialMasker(mask_type, sort_order, masker, model)