code: def _check_filterable(x, kind="filtered", alternative="filter"):
      # Let's be fairly strict about this -- users can easily coerce to ndarray
      # at their end, and we already should do it internally any time we are
      # using these low-level functions. At the same time, let's
      # help people who might accidentally use low-level functions that they
      # shouldn't use by pushing them in the right direction
      from .epochs import BaseEpochs
      from .evoked import Evoked
      from .io import BaseRaw
  
      if isinstance(x, (BaseRaw, BaseEpochs, Evoked)):
          try:
              name = x.__class__.__name__
          except Exception:
              pass
          else:
              raise TypeError(
                  "This low-level function only operates on np.ndarray instances. To get "
                  f"a {kind} {name} instance, use a method like `inst_new = inst.copy()."
                  f"{alternative}(...)` instead."
              )
      _validate_type(x, (np.ndarray, list, tuple), f"Data to be {kind}")
      x = np.asanyarray(x)
      if x.dtype != np.float64:
          raise ValueError(
              f"Data to be {kind} must be real floating, got {x.dtype}"
          )
      return x
  
imports: from collections import Counter
  from copy import deepcopy
  from functools import partial
  from math import gcd
  import numpy
  from scipy import fft, signal
  from scipy.stats import f
  from ._fiff.pick import _picks_to_idx
  from ._ola import _COLA
  from .cuda import _fft_multiply_repeated, _fft_resample, _setup_cuda_fft_multiply_repeated, _setup_cuda_fft_resample, _smart_pad
  from .parallel import parallel_func
  from .utils import _check_option, _check_preload, _ensure_int, _pl, _validate_type, logger, sum_squared, verbose, warn
label_desc: Use image node_id 22 for calling a global function with example usage: _check_filterable(x, kind, alternative) and returns: x