code: def run_models(
      model: SklearnModel, X_s: List[np.ndarray], y_s: List[np.ndarray]
  ) -> List[SklearnModel]:
      """
      Run an SklearnModel against a list of different data sets in parallel
      Useful coordination method when running permutation tests or cross validation
  
      Parameters
      ----------
      model: SklearnModel
          Base model containing parameters of the run
      X_s: List[np.ndarray]
          List of covariate matrices to run model on
      y_s: List[np.ndarray]
          List of target arrays to run model on
  
      Returns
      -------
      List[SklearnModel]
          List of trained SklearnModels for each of the input data sets
      """
      delayed_chains = []
      for X, y in zip(X_s, y_s):
          permuted_model = deepcopy(model)
          delayed_chains += permuted_model.f_delayed_chains(X, y)
  
      n_jobs = model.n_jobs
      chains = Parallel(n_jobs)(delayed_chains)
      return convert_chains_models(model, X_s, y_s, chains)
  
file_path: imodels/imodels/experimental/bartpy/runner.py
imports: from copy import deepcopy
  from typing import List
  import numpy
  from joblib import Parallel
  from .samplers.modelsampler import Chain
  from .sklearnmodel import SklearnModel
label_desc: Use image node_id 2 for calling a global function with example usage: run_models(model, X_s, y_s) and returns: convert_chains_models