code: def _solve_lsqr(X, y, alpha, max_iter=None, tol=1e-3):
      n_samples, n_features = X.shape
      coefs = np.empty((y.shape[1], n_features))
      n_iter = np.empty(y.shape[1], dtype=np.int32)
  
      # According to the lsqr documentation, alpha = damp^2.
      sqrt_alpha = np.sqrt(alpha)
  
      for i in range(y.shape[1]):
          y_column = y[:, i]
          info = sp_linalg.lsqr(
              X,
              y_column,
              damp=sqrt_alpha[i],
              atol=tol,
              btol=tol,
              iter_lim=max_iter,
          )
          coefs[i] = info[0]
          n_iter[i] = info[2]
  
      return coefs, n_iter
  
imports: from abc import ABCMeta, abstractmethod
  import warnings
  import numpy
  from scipy import linalg
  from scipy import sparse
  from scipy.sparse import linalg
  from .base import LinearClassifierMixin, LinearModel, _rescale_data
  from .sag import sag_solver
  from ..base import RegressorMixin
  from ..utils.extmath import safe_sparse_dot
  from ..utils.extmath import row_norms
  from ..utils import check_X_y
  from ..utils import check_array
  from ..utils import check_consistent_length
  from ..utils import compute_sample_weight
  from ..utils import column_or_1d
  from ..preprocessing import LabelBinarizer
  from ..model_selection import GridSearchCV
  from ..externals import six
  from ..metrics.scorer import check_scoring
label_desc: Use image node_id 2 for calling a global function with example usage: _solve_lsqr(X, y, alpha, max_iter, tol) and returns: coefs,  n_iter