code: def test_infomax_simple():
      """Test the infomax algorithm on very simple data."""
      rng = np.random.RandomState(0)
      # scipy.stats uses the global RNG:
      np.random.seed(0)
      n_samples = 500
      # Generate two sources:
      s1 = (2 * np.sin(np.linspace(0, 100, n_samples)) > 0) - 1
      s2 = stats.t.rvs(1, size=n_samples)
      s = np.c_[s1, s2].T
      center_and_norm(s)
      s1, s2 = s
  
      # Mixing angle
      phi = 0.6
      mixing = np.array(
          [
              [np.cos(phi), np.sin(phi)],
              [np.sin(phi), -np.cos(phi)],
          ]  # noqa: E241
      )
      for add_noise in (False, True):
          m = np.dot(mixing, s)
          if add_noise:
              m += 0.1 * rng.randn(2, n_samples)
          center_and_norm(m)
  
          algos = [True, False]
          for algo in algos:
              X = _get_pca().fit_transform(m.T)
              k_ = infomax(X, extended=algo)
              s_ = np.dot(k_, X.T)
  
              center_and_norm(s_)
              s1_, s2_ = s_
              # Check to see if the sources have been estimated
              # in the wrong order
              if abs(np.dot(s1_, s2)) > abs(np.dot(s1_, s1)):
                  s2_, s1_ = s_
              s1_ *= np.sign(np.dot(s1_, s1))
              s2_ *= np.sign(np.dot(s2_, s2))
  
              # Check that we have estimated the original sources
              if not add_noise:
                  assert_almost_equal(
                      np.dot(s1_, s1) / n_samples, 1, decimal=2
                  )
                  assert_almost_equal(
                      np.dot(s2_, s2) / n_samples, 1, decimal=2
                  )
              else:
                  assert_almost_equal(
                      np.dot(s1_, s1) / n_samples, 1, decimal=1
                  )
                  assert_almost_equal(
                      np.dot(s2_, s2) / n_samples, 1, decimal=1
                  )
  
file_path: mne-python/mne/preprocessing/tests/test_infomax.py
imports: import numpy
  import pytest
  from numpy.testing import assert_almost_equal
  from scipy import linalg, stats
  from mne.preprocessing.infomax_ import infomax
label_desc: Use image node_id 3 for calling a global function with example usage: test_infomax_simple() without return types