code: def get_synthetic_data_sin(
      model_name=None, num_groups=32, mean_boundary=1, num_duplicates=50
  ):
      assert num_groups > 1
      num_time_steps = 100
  
      dataset_group = []
      whole_data_list = []
      no_duplicate_whole_data_list = []
      start = pd.Timestamp("01-01-2019", freq="1D")
      for gid in range(num_groups):
          mean = (gid + 1) * mean_boundary
          base = np.linspace(0, mean, num_time_steps)
          pattern_group = []
          ts = (gid + 1) * torch.sin(torch.FloatTensor(base)).view(
              1, num_time_steps
          )
          ts += torch.FloatTensor((gid + 1) * base).view(
              1, num_time_steps
          )
          no_duplicate_whole_data_list.append(
              {
                  "target": ts.view(
                      len(ts[0]),
                  ),
                  "start": start,
              }
          )
          for j in range(num_duplicates):
              ts += torch.normal(0, 0.1, size=ts.shape)
              whole_data_list.append(
                  {
                      "target": ts.view(
                          len(ts[0]),
                      ),
                      "start": start,
                  }
              )
              pattern_group.append(
                  {
                      "target": ts.view(
                          len(ts[0]),
                      ),
                      "start": start,
                  }
              )
          dataset_group.append(ListDataset(pattern_group, freq="1D"))
  
      random.shuffle(whole_data_list)
      random.shuffle(no_duplicate_whole_data_list)
      ret_whole_dataset = []
      dataset = ListDataset(whole_data_list, freq="1D")
      no_duplicate_dataset = ListDataset(
          no_duplicate_whole_data_list, freq="1D"
      )
      ret_whole_dataset.append(dataset)
      ret_whole_dataset.append(dataset)
      dataset_group = [dataset] + dataset_group
      dataset_group = [dataset] + dataset_group
  
      # save to files
      with open("synthetic_complexsin_whole_data.csv", "wb") as output:
          pickle.dump(ret_whole_dataset, output)
  
      with open("synthetic_complexsin_group_data.csv", "wb") as output:
          pickle.dump(dataset_group, output)
      return True
  
imports: from pts.dataset.repository.datasets import get_dataset, dataset_recipes
  from pts.dataset.utils import to_pandas
  import numpy
  import pandas
  from pts.dataset import ListDataset
  import torch
  from pts.model.simple_feedforward import SimpleFeedForwardEstimator
  import pickle
  import json
  import random
label_desc: Use image node_id 14 for calling a global function with example usage: get_synthetic_data_sin(model_name, num_groups, mean_boundary, num_duplicates) and returns: True