code: def _get_clusters_st(x_in, neighbors, max_step=1):
      """Choose the most efficient version."""
      n_src = len(neighbors)
      n_times = x_in.size // n_src
      cl_goods = np.where(x_in)[0]
      if len(cl_goods) > 0:
          keepers = [np.array([], dtype=int)] * n_times
          row, col = np.unravel_index(cl_goods, (n_times, n_src))
          lims = [0]
          if isinstance(row, int):
              row = [row]
              col = [col]
          else:
              order = np.argsort(row)
              row = row[order]
              col = col[order]
              lims += (np.where(np.diff(row) > 0)[0] + 1).tolist()
              lims.append(len(row))
  
          for start, end in zip(lims[:-1], lims[1:]):
              keepers[row[start]] = np.sort(col[start:end])
          if max_step == 1:
              return _get_clusters_st_1step(keepers, neighbors)
          else:
              return _get_clusters_st_multistep(
                  keepers, neighbors, max_step
              )
      else:
          return []
  
imports: import numpy
  from scipy import ndimage, sparse
  from scipy.sparse.csgraph import connected_components
  from scipy.stats import f
  from scipy.stats import t
  from ..fixes import has_numba, jit
  from ..parallel import parallel_func
  from ..source_estimate import MixedSourceEstimate, SourceEstimate, VolSourceEstimate
  from ..source_space import SourceSpaces
  from ..utils import ProgressBar, _check_option, _pl, _validate_type, check_random_state, logger, split_list, verbose, warn
  from .parametric import f_oneway, ttest_1samp_no_p
label_desc: Use image node_id 11 for calling a global function with example usage: _get_clusters_st(x_in, neighbors, max_step) and returns: list, _get_clusters_st_1step, _get_clusters_st_multistep