code: def append_new_y(self, Ymat_new, covariates_new=None, dti_new=None):
      # update Yseq
      # normalize the incremented Ymat if needed
      if self.normalize:
          Ymat_new = (Ymat_new - self.m[:, None]) / self.s[:, None]
          Ymat_new = Ymat_new + self.mini
  
      # append the new Ymat onto the original, note that self.end_index equals to the no.of time
      # steps of the original.
      n, T_added = Ymat_new.shape
      self.Ymat = np.concatenate(
          (self.Ymat[:, : self.end_index], Ymat_new), axis=1
      )
      self.end_index = self.end_index + T_added
  
      n, T = self.Ymat.shape
      t0 = self.end_index + 1
      if t0 > T:
          self.Ymat = np.hstack(
              [self.Ymat, self.Ymat[:, -1].reshape(-1, 1)]
          )
  
      # update Yseq.covariates
      last_step = self.end_index - T_added
      new_covariates = self.get_future_time_covs(
          T_added,
          last_step,
          future_covariates=covariates_new,
          future_dti=dti_new,
      )
      self.Yseq.covariates = np.hstack(
          [self.Yseq.covariates[:, :last_step], new_covariates]
      )
  
imports: from __future__ import print_function
  import torch
  import numpy
  import pandas
  import torch.nn
  import torch.optim
  from torch.autograd import Variable
  from zoo.chronos.model.tcmf.data_loader import TCMFDataLoader
  from zoo.chronos.model.tcmf.local_model import TemporalConvNet, LocalModel
  from zoo.chronos.model.tcmf.time import TimeCovariates
  import copy
  import pickle
  import logging
label_desc: Use image node_id 17 for calling the DeepGLO obj's underlying member method code with example usage: obj.append_new_y(Ymat_new, covariates_new, dti_new) without return types