code: def _mixed_norm_solver_cd(
      M,
      G,
      alpha,
      lipschitz_constant,
      maxit=10000,
      tol=1e-8,
      verbose=None,
      init=None,
      n_orient=1,
      dgap_freq=10,
  ):
      """Solve L21 inverse problem with coordinate descent."""
      from sklearn.linear_model import MultiTaskLasso
  
      assert M.ndim == G.ndim and M.shape[0] == G.shape[0]
  
      clf = MultiTaskLasso(
          alpha=alpha / len(M),
          tol=tol / sum_squared(M),
          fit_intercept=False,
          max_iter=maxit,
          warm_start=True,
      )
      if init is not None:
          clf.coef_ = init.T
      else:
          clf.coef_ = np.zeros((G.shape[1], M.shape[1])).T
      clf.fit(G, M)
  
      X = clf.coef_.T
      active_set = np.any(X, axis=1)
      X = X[active_set]
      gap, p_obj, d_obj, _ = dgap_l21(
          M, G, X, active_set, alpha, n_orient
      )
      return X, active_set, p_obj
  
imports: import functools
  from math import sqrt
  import numpy
  from ..time_frequency._stft import istft, stft, stft_norm1, stft_norm2
  from ..utils import _check_option, _get_blas_funcs, _validate_type, logger, sum_squared, verbose, warn
  from .mxne_debiasing import compute_bias
label_desc: Use image node_id 7 for calling a global function with example usage: _mixed_norm_solver_cd(M, G, alpha, lipschitz_constant, maxit, tol, verbose, init, n_orient, dgap_freq) and returns: X,  active_set,  p_obj