code: def test_fista_regression_trace():
      rng = np.random.RandomState(0)
  
      def _make_data(n_samples, n_features, n_tasks, n_components):
          W = rng.rand(n_tasks, n_features) - 0.5
          U, S, V = svd(W, full_matrices=True)
          S[n_components:] = 0
          S = diagsvd(S, U.shape[0], V.shape[0])
          W = np.dot(np.dot(U, S), V)
          X = rng.rand(n_samples, n_features) - 0.5
          Y = np.dot(X, W.T)
          return X, Y, W
  
      X, Y, W = _make_data(200, 50, 30, 5)
      reg = FistaRegressor(max_iter=15, verbose=0)
      reg.fit(X, Y)
      Y_pred = reg.predict(X)
      error = (Y_pred - Y).ravel()
      error = np.dot(error, error)
      np.testing.assert_almost_equal(error, 77.44, 2)
  
imports: import numpy
  import pytest
  from scipy.linalg import svd, diagsvd
  from lightning.classification import FistaClassifier
  from lightning.regression import FistaRegressor
  from lightning.impl.penalty import project_simplex, L1Penalty
label_desc: Use image node_id 16 for calling a global function with example usage: test_fista_regression_trace() and returns: X,  Y,  W