class_docstr: The QM9 chemical data set of small molecules.
  
  In this dataset, nodes represent atoms and edges represent chemical bonds.
  There are 5 possible atom types (H, C, N, O, F) and 4 bond types (single,
  double, triple, aromatic).
  
  Node features represent the chemical properties of each atom and include:
  
  - The atomic number, one-hot encoded;
  - The atom's position in the X, Y, and Z dimensions;
  - The atomic charge;
  - The mass difference from the monoisotope;
  
  The edge features represent the type of chemical bond between two atoms,
  one-hot encoded.
  
  Each graph has an 19-dimensional label for regression.
  
  **Arguments**
  
  - `amount`: int, load this many molecules instead of the full dataset
  (useful for debugging).
  - `n_jobs`: number of CPU cores to use for reading the data (-1, to use all
  available cores).
code: def download(self):
      get_file(
          "qm9.tar.gz",
          self.url,
          extract=True,
          cache_dir=self.path,
          cache_subdir=self.path,
      )
      os.remove(osp.join(self.path, "qm9.tar.gz"))
  
file_path: spektral/spektral/datasets/qm9.py
imports: import os
  import os.path
  import numpy
  from joblib import Parallel, delayed
  from tensorflow.keras.utils import get_file
  from tqdm import tqdm
  from spektral.data import Dataset, Graph
  from spektral.utils import label_to_one_hot, sparse
  from spektral.utils.io import load_csv, load_sdf
label_desc: Use image node_id 2 for calling the QM9 obj's underlying member method code with example usage: obj.download() without return types