Source code for torch_timeseries.dataset.SimFreq



from dataclasses import dataclass
import numpy as np
import pandas as pd
from typing import Any, Callable, Generic, NewType, Optional, Sequence, TypeVar, Union
from torch import Tensor
import torch.utils.data
import os
from .utils import download_url, download_and_extract_archive, check_integrity
from abc import ABC, abstractmethod



from enum import Enum, unique

from torch_timeseries.core import TimeSeriesDataset, BaseIrrelevant, BaseRelevant

[docs]class SimFreq(TimeSeriesDataset): name: str = 'SimFreq' num_features:int = 1 sample_rate:int = 1 length : int= 10000 freq: str = 't' def download(self): pass def _load(self): # n = 400 # Generating date series dates = pd.date_range(start='2022-01-01', periods=self.length, freq='t') # Creating a data matrix data = np.zeros((len(dates), self.num_features)) freqs_mag = ([(1, 2)]) # freqs = (12,48,64) T = [(64, 200)] Periods = np.linspace(T[0][0], T[0][1], len(dates)) mags = np.linspace(freqs_mag[0][0], freqs_mag[0][1], len(dates)) # freqs_continue = [] # for i in range(self.num_features): # freqs_ = [] # freqs_.append(np.linspace(freqs1[i][0],freqs1[i][1], num=int(self.length*0.7))) # freqs_.append(np.linspace(freqs1[i][1], freqs1[i][2], num=int(self.length*0.2))) # freqs_.append(np.linspace(freqs1[i][2], freqs1[i][3] , num=int(self.length) - int(self.length*0.7) - int(self.length*0.2) ) ) # freqs_continue.append(np.concatenate(freqs_)) # seqs = [] # for i in range(self.num_features): # seqs_ = [] # seqs_.append(np.linspace(freqs_mag[i][0],freqs_mag[i][1], num=int(self.length*0.7))) # seqs_.append(np.linspace(freqs_mag[i][1], freqs_mag[i][2], num=int(self.length*0.2))) # seqs_.append(np.linspace(freqs_mag[i][2], freqs_mag[i][3] , num=int(self.length) - int(self.length*0.7) - int(self.length*0.2) ) ) # seqs.append( np.concatenate(seqs_)) # seq1 = np.linspace(1, 3, num=int(self.length*0.7)) # seq2 = np.linspace(3, 2.5, num=int(self.length*0.2)) # seq3 = np.linspace(2.5, 4 , num=int(self.length) - len(seq2) - len(seq1) ) # combined_seq = np.concatenate((seq1, seq2, seq3)) # Ts = 10 t = np.arange(0, len(dates)) for i in range(0, self.num_features): x = 0 freq_signals = 0 # for j in range(0, i+1): w = 2*np.pi / Periods freq_signals += np.sin(w * t) x = mags*freq_signals # x += + (t // n) data[:, i] = x self.wt = w * t self.t = t self.w = w self.Periods = Periods # Creating DataFrame with specified column names self.df = pd.DataFrame(data, columns=[ f"data{i}" for i in range(self.num_features)]) self.df['date'] = dates self.dates = pd.DataFrame({'date': dates}) self.data = self.df.drop('date', axis=1).values return self.data