code: def _unzip_dataset(remote, source, destination, check_md5hash=False):
      """Unzip a file from a source location to a destination.
  
      Parameters
      ----------
  
      source: str
          The path to the zipped file
      destination: str
          The destination directory to unzip the files to.
  
      """
  
      # TODO - add error checking
      with zipfile.ZipFile(source, "r") as zip_ref:
          logger.debug("Unzipping {} to {}".format(source, destination))
          zip_ref.extractall(destination)
      if check_md5hash:
          for file_name, remote_checksum in [
              [remote.train_name, remote.train_checksum],
              [remote.valid_name, remote.valid_checksum],
              [remote.test_name, remote.test_checksum],
              [remote.test_human_name, remote.test_human_checksum],
              [
                  remote.test_human_ids_name,
                  remote.test_human_ids_checksum,
              ],
              [remote.mapper_name, remote.mapper_checksum],
              [
                  remote.valid_negatives_name,
                  remote.valid_negatives_checksum,
              ],
              [
                  remote.test_negatives_name,
                  remote.test_negatives_checksum,
              ],
          ]:
              file_path = os.path.join(
                  destination, remote.dataset_name, file_name
              )
              checksum = _md5(file_path)
              if checksum != remote_checksum:
                  os.remove(source)
                  msg = (
                      "{} has an md5 checksum of ({}) which is different from the expected ({}), "
                      "the file may be corrupted.".format(
                          file_path, checksum, remote_checksum
                      )
                  )
                  logger.error(msg)
                  raise IOError(msg)
      os.remove(source)
  
imports: import hashlib
  import json
  import logging
  import os
  import urllib
  import zipfile
  from collections import namedtuple
  from pathlib import Path
  import numpy
  import pandas
label_desc: Use image node_id 4 for calling a global function with example usage: _unzip_dataset(remote, source, destination, check_md5hash) without return types