code: def get_task_dataset_minus_support(dataset, support, task):
      """Gets data for specified task, minus support points.
  
      Useful for evaluating model performance once trained (so that
      test compounds can be ensured distinct from support.)
  
      Parameters
      ----------
      dataset: dc.data.Dataset
          Source dataset.
      support: dc.data.Dataset
          The support dataset
      task: int
          Task number of task to select.
      """
      support_ids = set(support.ids)
      non_support_inds = [
          ind
          for ind in range(len(dataset))
          if dataset.ids[ind] not in support_ids
      ]
  
      # Remove support indices
      X = dataset.X[non_support_inds]
      y = dataset.y[non_support_inds]
      w = dataset.w[non_support_inds]
      ids = dataset.ids[non_support_inds]
  
      # Get task specific entries
      w_task = w[:, task]
      X_task = X[w_task != 0]
      y_task = np.expand_dims(y[w_task != 0, task], 1)
      ids_task = ids[w_task != 0]
      # Now just get weights for this task
      w_task = np.expand_dims(w[w_task != 0, task], 1)
  
      return NumpyDataset(X_task, y_task, w_task, ids_task)
  
imports: import logging
  import time
  import numpy
  from deepchem.data import NumpyDataset
label_desc: Use image node_id 3 for calling a global function with example usage: get_task_dataset_minus_support(dataset, support, task) and returns: NumpyDataset