code: def spe_seq_cell(self, input):
      batch_size, k, input_channel, node_cnt, time_step = input.size()
      input = input.view(batch_size, -1, node_cnt, time_step)
      ffted = torch.view_as_real(torch.fft.fft(input, dim=1))
      real = (
          ffted[..., 0]
          .permute(0, 2, 1, 3)
          .contiguous()
          .reshape(batch_size, node_cnt, -1)
      )
      img = (
          ffted[..., 1]
          .permute(0, 2, 1, 3)
          .contiguous()
          .reshape(batch_size, node_cnt, -1)
      )
      for i in range(3):
          real = self.GLUs[i * 2](real)
          img = self.GLUs[2 * i + 1](img)
      real = (
          real.reshape(batch_size, node_cnt, 4, -1)
          .permute(0, 2, 1, 3)
          .contiguous()
      )
      img = (
          img.reshape(batch_size, node_cnt, 4, -1)
          .permute(0, 2, 1, 3)
          .contiguous()
      )
      time_step_as_inner = torch.cat(
          [real.unsqueeze(-1), img.unsqueeze(-1)], dim=-1
      )
      iffted = torch.fft.irfft(
          torch.view_as_complex(time_step_as_inner),
          n=time_step_as_inner.shape[1],
          dim=1,
      )
      return iffted
  
imports: import torch
  import torch.nn
  import torch.nn.functional
  from ..losses.pytorch import MAE
  from ..common._base_multivariate import BaseMultivariate
label_desc: Use image node_id 2 for calling the StockBlockLayer obj's underlying member method code with example usage: obj.spe_seq_cell(input) and returns: iffted