code: def _parse_values(ytrue, ypred, *args, missing=None):
      _ytrue = []
      _ypred = []
      _valid = []
      missing_count = 0
  
      for yt, yp in zip(ytrue, ypred):
          v = yt is not None and yp is not None
  
          if missing is None:
              _valid.append(v)
  
          if v:
              _ytrue.append(yt)
              _ypred.append(yp)
          else:
              missing_count += 1
              if missing is not None:
                  if yt is None:
                      yt = missing
  
                  if yp is None:
                      yp = missing
  
                  _ytrue.append(yt)
                  _ypred.append(yp)
  
      found_missing = missing_count > 0
  
      _ytrue = np.array(_ytrue)
      _ypred = np.array(_ypred)
  
      if found_missing and missing is None:
          logger.warning(
              "Ignoring %d examples with either missing ground truth or "
              "predictions",
              missing_count,
          )
  
          valid = np.array(_valid)
          args = [
              np.asarray(a)[valid] if a is not None else a for a in args
          ]
      else:
          args = [np.asarray(a) if a is not None else a for a in args]
  
      return (_ytrue, _ypred, *args)
  
imports: from copy import deepcopy
  import inspect
  import itertools
  import logging
  import numbers
  import numpy
  import sklearn.metrics
  from tabulate import tabulate
  import eta.core.utils
  import fiftyone
  import fiftyone.core.evaluation
  import fiftyone.core.fields
  import fiftyone.core.labels
  import fiftyone.core.plots
  import fiftyone.core.utils
  import fiftyone.core.validation
label_desc: Use image node_id 4 for calling a global function with example usage: _parse_values(ytrue, ypred) and returns: _ytrue,  _ypred,  unknown