code: def __init__(
      self, c, T, n, Lk, p, num_layers, device, control_str="TNTSTNTST"
  ):
      super(STGCN_WAVE, self).__init__()
      self.control_str = control_str  # model structure controller
      self.num_layers = len(control_str)
      self.layers = nn.ModuleList([])
      cnt = 0
      diapower = 0
      for i in range(self.num_layers):
          i_layer = control_str[i]
          if i_layer == "T":  # Temporal Layer
              self.layers.append(
                  TemporalConvLayer(
                      c[cnt], c[cnt + 1], dia=2**diapower
                  )
              )
              diapower += 1
              cnt += 1
          if i_layer == "S":  # Spatio Layer
              self.layers.append(SpatioConvLayer(c[cnt], Lk))
          if i_layer == "N":  # Norm Layer
              self.layers.append(nn.LayerNorm([n, c[cnt]]))
      self.output = OutputLayer(c[cnt], T + 1 - 2 ** (diapower), n)
      for layer in self.layers:
          layer = layer.to(device)
  
imports: import math
  import torch
  import torch.nn
  import torch.nn.functional
  import torch.nn.init
  from dgl.nn.pytorch import GraphConv
  from dgl.nn.pytorch.conv import ChebConv
label_desc: Use image node_id 1 to create a new STGCN_WAVE object from inherited base classes: nn with example: obj = STGCN_WAVE(c, T, n, Lk, p, num_layers, device, control_str)