code: def sequence_data_preparation(
      self, seq_len, pre_len, train_data, test_data
  ):
      trainX, trainY, testX, testY = [], [], [], []
  
      for i in range(len(train_data) - int(seq_len + pre_len - 1)):
          a = train_data[i : i + seq_len + pre_len,]
          trainX.append(a[:seq_len])
          trainY.append(a[-1])
  
      for i in range(len(test_data) - int(seq_len + pre_len - 1)):
          b = test_data[i : i + seq_len + pre_len,]
          testX.append(b[:seq_len,])
          testY.append(b[-1])
  
      trainX = np.array(trainX)
      trainY = np.array(trainY)
      testX = np.array(testX)
      testY = np.array(testY)
  
      return trainX, trainY, testX, testY
  
imports: from .dataset_loader import DatasetLoader
  from ..core.graph import StellarGraph, StellarDiGraph
  import itertools
  import logging
  import os
  import pandas
  import numpy
  from sklearn import preprocessing
  from ..core.experimental import experimental
label_desc: Use image node_id 4 for calling the METR_LA obj's underlying member method code with example usage: obj.sequence_data_preparation(seq_len, pre_len, train_data, test_data) and returns: trainX,  trainY,  testX,  testY