code: def _sparse_and_dense(X):
      if sparse.issparse(X):
          X_dense = np.empty([1, 1], order="F", dtype=X.data.dtype)
          X_data = X.data
          X_indptr = X.indptr
          X_indices = X.indices
      else:
          X_dense = X
          X_data = np.empty([1], dtype=X.dtype)
          X_indices = np.empty([1], dtype=np.int32)
          X_indptr = np.empty([1], dtype=np.int32)
      return X_dense, X_data, X_indices, X_indptr
  
file_path: celer/celer/homotopy.py
imports: import numpy
  from scipy import sparse
  from numpy.linalg import norm
  from sklearn.utils import check_array
  from sklearn.linear_model._base import _preprocess_data
  from .lasso_fast import celer
  from .group_fast import celer_grp, dnorm_grp
  from .cython_utils import compute_norms_X_col, compute_Xw
  from .cython_utils import dnorm_enet
  from .multitask_fast import celer_mtl
  from .PN_logreg import newton_celer
label_desc: Use image node_id 3 for calling a global function with example usage: _sparse_and_dense(X) and returns: X_dense,  X_data,  X_indices,  X_indptr