class_docstr: Build graph, treat all nodes as the same type
  Parameters
  ----------
  x: edge weights of 8-node complete graph
      There are 1 x 64 edges
  y: labels (diseased/healthy)
  num_nodes: the number of nodes of the graph. In our case, it is 8.
  indices: Patient level indices. They are used to generate edge weights.
  
  Output
  ------
  a complete 8-node DGLGraph with node features and edge weights
code: def __init__(self, x, y, num_nodes, indices):
      # CAUTION - x and labels are memory-mapped, used as if they are in RAM.
      self.x = x
      self.labels = y
      self.indices = indices
      self.num_nodes = num_nodes
  
      # NOTE: this order decides the node index, keep consistent!
      self.ch_names = [
          "F7-F3",
          "F8-F4",
          "T7-C3",
          "T8-C4",
          "P7-P3",
          "P8-P4",
          "O1-P3",
          "O2-P4",
      ]
  
      # in the 10-10 system, in between the 2 10-20 electrodes in ch_names, used for calculating edge weights
      # Note: "01" is for "P03", and "02" is for "P04."
      self.ref_names = ["F5", "F6", "C5", "C6", "P5", "P6", "O1", "O2"]
  
      # edge indices source to target - 2 x E = 2 x 64
      # fully connected undirected graph so 8*8=64 edges
      self.node_ids = range(len(self.ch_names))
      self.edge_index = (
          torch.tensor(
              [
                  [a, b]
                  for a, b in product(self.node_ids, self.node_ids)
              ],
              dtype=torch.long,
          )
          .t()
          .contiguous()
      )
  
      # edge attributes - E x 1
      # only the spatial distance between electrodes for now - standardize between 0 and 1
      self.distances = self.get_sensor_distances()
      a = np.array(self.distances)
      self.distances = (a - np.min(a)) / (np.max(a) - np.min(a))
      self.spec_coh_values = np.load(
          "spec_coh_values.npy", allow_pickle=True
      )
  
file_path: dgl/examples/pytorch/eeg-gcnn/EEGGraphDataset.py
imports: import math
  from itertools import product
  import dgl
  import numpy
  import pandas
  import torch
  from dgl.data import DGLDataset
label_desc: Use image node_id 1 to create a new EEGGraphDataset object from inherited base classes: DGLDataset with example: obj = EEGGraphDataset(x, y, num_nodes, indices)