class_docstr: The QM7b dataset of molecules from the paper:
  
  > [MoleculeNet: A Benchmark for Molecular Machine Learning](https://arxiv.org/abs/1703.00564)<br>
  > Zhenqin Wu et al.
  
  The dataset has no node features.
  Edges and edge features are obtained from the Coulomb matrices of the
  molecules.
  
  Each graph has a 14-dimensional label for regression.
code: def read(self):
      print("Loading QM7 dataset.")
      mat_file = osp.join(self.path, "qm7b.mat")
      data = loadmat(mat_file)
  
      coulomb_matrices = data["X"]
      labels = data["T"]
  
      output = []
      for i in range(len(coulomb_matrices)):
          row, col, data = sp.find(coulomb_matrices[i])
          edge_index = np.array([row, col]).T
          a, e = sparse.edge_index_to_matrix(
              edge_index, np.ones_like(data), data
          )
          e = data[:, None]
          y = labels[i]
          output.append(Graph(a=a, e=e, y=y))
  
      return output
  
file_path: spektral/spektral/datasets/qm7.py
imports: import os.path
  import numpy
  import scipy.sparse
  from scipy.io import loadmat
  from tensorflow.keras.utils import get_file
  from spektral.data import Dataset, Graph
  from spektral.utils import sparse
label_desc: Use image node_id 3 for calling the QM7 obj's underlying member method code with example usage: obj.read() and returns: output