code: def test_time_delaying_fast_calc(n_jobs):
      """Test time delaying and fast calculations."""
      X = np.array([[1, 2, 3], [5, 7, 11]]).T
      # all negative
      smin, smax = 1, 2
      X_del = _delay_time_series(X, smin, smax, 1.0)
      # (n_times, n_features, n_delays) -> (n_times, n_features * n_delays)
      X_del.shape = (X.shape[0], -1)
      expected = np.array(
          [[0, 1, 2], [0, 0, 1], [0, 5, 7], [0, 0, 5]]
      ).T
      assert_allclose(X_del, expected)
      Xt_X = np.dot(X_del.T, X_del)
      expected = [
          [5, 2, 19, 10],
          [2, 1, 7, 5],
          [19, 7, 74, 35],
          [10, 5, 35, 25],
      ]
      assert_allclose(Xt_X, expected)
      x_xt = _compute_corrs(
          X, np.zeros((X.shape[0], 1)), smin, smax + 1
      )[0]
      assert_allclose(x_xt, expected)
      # all positive
      smin, smax = -2, -1
      X_del = _delay_time_series(X, smin, smax, 1.0)
      X_del.shape = (X.shape[0], -1)
      expected = np.array(
          [[3, 0, 0], [2, 3, 0], [11, 0, 0], [7, 11, 0]]
      ).T
      assert_allclose(X_del, expected)
      Xt_X = np.dot(X_del.T, X_del)
      expected = [
          [9, 6, 33, 21],
          [6, 13, 22, 47],
          [33, 22, 121, 77],
          [21, 47, 77, 170],
      ]
      assert_allclose(Xt_X, expected)
      x_xt = _compute_corrs(
          X, np.zeros((X.shape[0], 1)), smin, smax + 1
      )[0]
      assert_allclose(x_xt, expected)
      # both sides
      smin, smax = -1, 1
      X_del = _delay_time_series(X, smin, smax, 1.0)
      X_del.shape = (X.shape[0], -1)
      expected = np.array(
          [
              [2, 3, 0],
              [1, 2, 3],
              [0, 1, 2],
              [7, 11, 0],
              [5, 7, 11],
              [0, 5, 7],
          ]
      ).T
      assert_allclose(X_del, expected)
      Xt_X = np.dot(X_del.T, X_del)
      expected = [
          [13, 8, 3, 47, 31, 15],
          [8, 14, 8, 29, 52, 31],
          [3, 8, 5, 11, 29, 19],
          [47, 29, 11, 170, 112, 55],
          [31, 52, 29, 112, 195, 112],
          [15, 31, 19, 55, 112, 74],
      ]
      assert_allclose(Xt_X, expected)
      x_xt = _compute_corrs(
          X, np.zeros((X.shape[0], 1)), smin, smax + 1
      )[0]
      assert_allclose(x_xt, expected)
  
      # slightly harder to get the non-Toeplitz correction correct
      X = np.array([[1, 2, 3, 5]]).T
      smin, smax = 0, 3
      X_del = _delay_time_series(X, smin, smax, 1.0)
      X_del.shape = (X.shape[0], -1)
      expected = np.array(
          [[1, 2, 3, 5], [0, 1, 2, 3], [0, 0, 1, 2], [0, 0, 0, 1]]
      ).T
      assert_allclose(X_del, expected)
      Xt_X = np.dot(X_del.T, X_del)
      expected = [
          [39, 23, 13, 5],
          [23, 14, 8, 3],
          [13, 8, 5, 2],
          [5, 3, 2, 1],
      ]
      assert_allclose(Xt_X, expected)
      x_xt = _compute_corrs(
          X, np.zeros((X.shape[0], 1)), smin, smax + 1
      )[0]
      assert_allclose(x_xt, expected)
  
      # even worse
      X = np.array([[1, 2, 3], [5, 7, 11]]).T
      smin, smax = 0, 2
      X_del = _delay_time_series(X, smin, smax, 1.0)
      X_del.shape = (X.shape[0], -1)
      expected = np.array(
          [
              [1, 2, 3],
              [0, 1, 2],
              [0, 0, 1],
              [5, 7, 11],
              [0, 5, 7],
              [0, 0, 5],
          ]
      ).T
      assert_allclose(X_del, expected)
      Xt_X = np.dot(X_del.T, X_del)
      expected = np.array(
          [
              [14, 8, 3, 52, 31, 15],
              [8, 5, 2, 29, 19, 10],
              [3, 2, 1, 11, 7, 5],
              [52, 29, 11, 195, 112, 55],
              [31, 19, 7, 112, 74, 35],
              [15, 10, 5, 55, 35, 25],
          ]
      )
      assert_allclose(Xt_X, expected)
      x_xt = _compute_corrs(
          X, np.zeros((X.shape[0], 1)), smin, smax + 1
      )[0]
      assert_allclose(x_xt, expected)
  
      # And a bunch of random ones for good measure
      rng = np.random.RandomState(0)
      X = rng.randn(25, 3)
      y = np.empty((25, 2))
      vals = (0, -1, 1, -2, 2, -11, 11)
      for smax in vals:
          for smin in vals:
              if smin > smax:
                  continue
              for ii in range(X.shape[1]):
                  kernel = rng.randn(smax - smin + 1)
                  kernel -= np.mean(kernel)
                  y[:, ii % y.shape[-1]] = np.convolve(
                      X[:, ii], kernel, "same"
                  )
              x_xt, x_yt, n_ch_x, _, _ = _compute_corrs(
                  X, y, smin, smax + 1
              )
              X_del = _delay_time_series(
                  X, smin, smax, 1.0, fill_mean=False
              )
              x_yt_true = einsum("tfd,to->ofd", X_del, y)
              x_yt_true = np.reshape(
                  x_yt_true, (x_yt_true.shape[0], -1)
              ).T
              assert_allclose(
                  x_yt, x_yt_true, atol=1e-7, err_msg=(smin, smax)
              )
              X_del.shape = (X.shape[0], -1)
              x_xt_true = np.dot(X_del.T, X_del).T
              assert_allclose(
                  x_xt, x_xt_true, atol=1e-7, err_msg=(smin, smax)
              )
  
imports: from pathlib import Path
  import numpy
  import pytest
  from numpy import einsum
  from numpy.fft import irfft, rfft
  from numpy.testing import assert_allclose, assert_array_equal, assert_equal
  from mne.decoding import ReceptiveField, TimeDelayingRidge
  from mne.decoding.receptive_field import _SCORERS, _delay_time_series, _delays_to_slice, _times_to_delays
  from mne.decoding.time_delaying_ridge import _compute_corrs, _compute_reg_neighbors
label_desc: Use image node_id 5 for calling a global function with example usage: test_time_delaying_fast_calc(n_jobs) without return types