code: def test_infomax_blowup():
      """Test the infomax algorithm blowup condition."""
      # scipy.stats uses the global RNG:
      np.random.seed(0)
      n_samples = 100
      # 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
      )
      m = np.dot(mixing, s)
  
      center_and_norm(m)
  
      X = _get_pca().fit_transform(m.T)
      k_ = infomax(X, extended=True, l_rate=0.1)
      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
      assert_almost_equal(np.dot(s1_, s1) / n_samples, 1, decimal=2)
      assert_almost_equal(np.dot(s2_, s2) / n_samples, 1, decimal=2)
  
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 2 for calling a global function with example usage: test_infomax_blowup() without return types