code: def featurize_pdbbind_pockets(data_dir=None, subset="core"):
      """Featurizes pdbbind according to provided featurization"""
      tasks = ["active-site"]
      current_dir = os.path.dirname(os.path.realpath(__file__))
      data_dir = os.path.join(current_dir, "%s_pockets" % (subset))
      if os.path.exists(data_dir):
          return dc.data.DiskDataset(data_dir), tasks
      pdbbind_dir = os.path.join(current_dir, "../pdbbind/v2015")
  
      # Load PDBBind dataset
      if subset == "core":
          labels_file = os.path.join(
              pdbbind_dir, "INDEX_core_data.2013"
          )
      elif subset == "refined":
          labels_file = os.path.join(
              pdbbind_dir, "INDEX_refined_data.2015"
          )
      elif subset == "full":
          labels_file = os.path.join(
              pdbbind_dir, "INDEX_general_PL_data.2015"
          )
      else:
          raise ValueError(
              "Only core, refined, and full subsets supported."
          )
      print("About to load contents.")
      if not os.path.exists(labels_file):
          raise ValueError(
              "Run ../pdbbind/get_pdbbind.sh to download dataset."
          )
      contents_df = load_pdbbind_labels(labels_file)
      ids = contents_df["PDB code"].values
      y = np.array(
          [float(val) for val in contents_df["-logKd/Ki"].values]
      )
  
      # Define featurizers
      pocket_featurizer = dc.feat.BindingPocketFeaturizer()
      ligand_featurizer = dc.feat.CircularFingerprint(size=1024)
  
      # Featurize Dataset
      all_features = []
      all_labels = []
      missing_pdbs = []
      all_ids = []
      time1 = time.time()
      for ind, pdb_code in enumerate(ids):
          print("Processing complex %d, %s" % (ind, str(pdb_code)))
          pdb_subdir = os.path.join(pdbbind_dir, pdb_code)
          if not os.path.exists(pdb_subdir):
              print("%s is missing!" % pdb_subdir)
              missing_pdbs.append(pdb_subdir)
              continue
          features, labels = compute_binding_pocket_features(
              pocket_featurizer, ligand_featurizer, pdb_subdir, pdb_code
          )
          if features is None:
              print("Featurization failed!")
              continue
          all_features.append(features)
          all_labels.append(labels)
          ids = np.array(
              ["%s%d" % (pdb_code, i) for i in range(len(labels))]
          )
          all_ids.append(ids)
      time2 = time.time()
      print(
          "TIMING: PDBBind Pocket Featurization took %0.3f s"
          % (time2 - time1)
      )
      X = np.vstack(all_features)
      y = np.concatenate(all_labels)
      w = np.ones_like(y)
      ids = np.concatenate(all_ids)
  
      dataset = dc.data.DiskDataset.from_numpy(
          X, y, w, ids, data_dir=data_dir
      )
      return dataset, tasks
  
file_path: deepchem/examples/binding_pockets/binding_pocket_datasets.py
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import unicode_literals
  import os
  import numpy
  import pandas
  import shutil
  import time
  import re
  from rdkit import Chem
  import deepchem
label_desc: Use image node_id 3 for calling a global function with example usage: featurize_pdbbind_pockets(data_dir, subset) and returns: dataset,  tasks, dc,  tasks