code: def step(self, g):
      """
      Updates states of the scheme given a new statistic/subgradient ``g``.
  
      :param float g: A statistic calculated during an MCMC trajectory or subgradient.
      """
      self._t += 1
      # g_avg = (g_1 + ... + g_t) / t
      self._g_avg = (1 - 1 / (self._t + self.t0)) * self._g_avg + g / (
          self._t + self.t0
      )
      # According to formula (3.4) of [1], we have
      #     x_t = argmin{ g_avg . x + loc_t . |x - x0|^2 },
      # where loc_t := beta_t / t, beta_t := (gamma/2) * sqrt(t)
      self._x_t = (
          self.prox_center - (self._t**0.5) / self.gamma * self._g_avg
      )
      # weight for the new x_t
      weight_t = self._t ** (-self.kappa)
      self._x_avg = (1 - weight_t) * self._x_avg + weight_t * self._x_t
  
label_desc: Use image node_id 3 for calling the DualAveraging obj's underlying member method code with example usage: obj.step(g) without return types