code: def _dual_gap(emp_cov, precision_, alpha):
      """Expression of the dual gap convergence criterion
  
      The specific definition is given in Duchi "Projected Subgradient Methods
      for Learning Sparse Gaussians".
      """
      gap = np.sum(emp_cov * precision_)
      gap -= precision_.shape[0]
      gap += alpha * (
          np.abs(precision_).sum() - np.abs(np.diag(precision_)).sum()
      )
      return gap
  
imports: import warnings
  import operator
  import sys
  import time
  import numpy
  from scipy import linalg
  from .empirical_covariance_ import empirical_covariance, EmpiricalCovariance, log_likelihood
  from ..exceptions import ConvergenceWarning
  from ..utils.extmath import pinvh
  from ..utils.validation import check_random_state, check_array
  from ..linear_model import lars_path
  from ..linear_model import cd_fast
  from ..model_selection import check_cv, cross_val_score
  from ..externals.joblib import Parallel, delayed
  import collections
label_desc: Use image node_id 2 for calling a global function with example usage: _dual_gap(emp_cov, precision_, alpha) and returns: gap