diff --git a/pts/__init__.py b/pts/__init__.py index 3f9ca5d..a6c8795 100644 --- a/pts/__init__.py +++ b/pts/__init__.py @@ -1,2 +1,2 @@ from .exception import assert_pts -from .trainer import Trainer \ No newline at end of file +from .trainer import Trainer diff --git a/pts/dataset/__init__.py b/pts/dataset/__init__.py index 3a0dcb9..228b905 100644 --- a/pts/dataset/__init__.py +++ b/pts/dataset/__init__.py @@ -1,11 +1,7 @@ from pts.dataset.common import DataEntry, FieldName from pts.dataset.list_dataset import ListDataset -from pts.dataset.sampler import ( - UniformSplitSampler, - TestSplitSampler, - ExpectedNumInstanceSampler, - BucketInstanceSampler, -) -from pts.dataset.sampler import InstanceSampler, UniformSplitSampler, TestSplitSampler, ExpectedNumInstanceSampler, BucketInstanceSampler -from pts.dataset.loader import DataLoader, TrainDataLoader, InferenceDataLoader -from pts.dataset.utils import to_pandas \ No newline at end of file +from pts.dataset.loader import DataLoader, InferenceDataLoader, TrainDataLoader +from pts.dataset.sampler import (BucketInstanceSampler, + ExpectedNumInstanceSampler, InstanceSampler, + TestSplitSampler, UniformSplitSampler) +from pts.dataset.utils import to_pandas diff --git a/pts/dataset/common.py b/pts/dataset/common.py index b2d6a1d..8207ee6 100644 --- a/pts/dataset/common.py +++ b/pts/dataset/common.py @@ -1,6 +1,5 @@ from abc import ABC, abstractmethod - -from typing import Any, Dict, Sized, Iterable, NamedTuple +from typing import Any, Dict, Iterable, NamedTuple, Sized DataEntry = Dict[str, Any] diff --git a/pts/dataset/list_dataset.py b/pts/dataset/list_dataset.py index 0c878c7..28b5386 100644 --- a/pts/dataset/list_dataset.py +++ b/pts/dataset/list_dataset.py @@ -1,6 +1,6 @@ from typing import Iterable -from .common import Dataset, DataEntry, SourceContext +from .common import DataEntry, Dataset, SourceContext from .process import ProcessDataEntry diff --git a/pts/dataset/loader.py b/pts/dataset/loader.py index b32827f..f1b02b6 100644 --- a/pts/dataset/loader.py +++ b/pts/dataset/loader.py @@ -2,13 +2,14 @@ import itertools from collections import defaultdict from typing import Any, Dict, Iterable, Iterator, List, Optional # noqa: F401 +import numpy as np # Third-party imports import torch -import numpy as np + +from pts.feature.transform import Transformation # First-party imports from .common import DataEntry, Dataset -from pts.feature.transform import Transformation DataBatch = Dict[str, Any] diff --git a/pts/dataset/sampler.py b/pts/dataset/sampler.py index b713b45..0f84c9c 100644 --- a/pts/dataset/sampler.py +++ b/pts/dataset/sampler.py @@ -1,5 +1,5 @@ from abc import ABC, abstractmethod -from typing import Union, List +from typing import List, Union import numpy as np diff --git a/pts/dataset/stat.py b/pts/dataset/stat.py index 1bdcf9d..ecb9e0e 100644 --- a/pts/dataset/stat.py +++ b/pts/dataset/stat.py @@ -1,7 +1,6 @@ +import math from collections import defaultdict from typing import Optional -import math - import numpy as np diff --git a/pts/dataset/transformed_dataset.py b/pts/dataset/transformed_dataset.py index 0fc20d5..be064ed 100644 --- a/pts/dataset/transformed_dataset.py +++ b/pts/dataset/transformed_dataset.py @@ -1,7 +1,8 @@ -from typing import List, Iterator +from typing import Iterator, List -from .common import Dataset, DataEntry -from pts.feature import Transformation, Chain +from pts.feature import Chain, Transformation + +from .common import DataEntry, Dataset class TransformedDataset(Dataset): diff --git a/pts/dataset/utils.py b/pts/dataset/utils.py index 90bea31..79e9949 100644 --- a/pts/dataset/utils.py +++ b/pts/dataset/utils.py @@ -23,4 +23,4 @@ def to_pandas(instance: dict, freq: str = None) -> pd.Series: if not freq: freq = start.freqstr index = pd.date_range(start=start, periods=len(target), freq=freq) - return pd.Series(target, index=index) \ No newline at end of file + return pd.Series(target, index=index) diff --git a/pts/feature/__init__.py b/pts/feature/__init__.py index c2d7397..ad4b80d 100644 --- a/pts/feature/__init__.py +++ b/pts/feature/__init__.py @@ -1,40 +1,16 @@ -from pts.feature.time_feature import ( - TimeFeature, - MinuteOfHour, - HourOfDay, - DayOfWeek, - DayOfMonth, - DayOfYear, - MonthOfYear, - WeekOfYear, - time_features_from_frequency_str, -) - -from pts.feature.transform import ( - Transformation, - Chain, - IdentityTransformation, - MapTransformation, - SimpleTransformation, - AdhocTransform, - FlatMapTransformation, - FilterTransformation, - RemoveFields, - SetField, - AsNumpyArray, - ExpandDimArray, - VstackFeatures, - ConcatFeatures, - SwapAxes, - ListFeatures, - AddObservedValuesIndicator, - RenameFields, - AddConstFeature, - AddTimeFeatures, - AddAgeFeature, - InstanceSplitter, - CanonicalInstanceSplitter, - SelectFields, -) - from pts.feature.lag import get_lags_for_frequency +from pts.feature.time_feature import (DayOfMonth, DayOfWeek, DayOfYear, + HourOfDay, MinuteOfHour, MonthOfYear, + TimeFeature, WeekOfYear, + time_features_from_frequency_str) +from pts.feature.transform import (AddAgeFeature, AddConstFeature, + AddObservedValuesIndicator, AddTimeFeatures, + AdhocTransform, AsNumpyArray, + CanonicalInstanceSplitter, Chain, + ConcatFeatures, ExpandDimArray, + FilterTransformation, FlatMapTransformation, + IdentityTransformation, InstanceSplitter, + ListFeatures, MapTransformation, + RemoveFields, RenameFields, SelectFields, + SetField, SimpleTransformation, SwapAxes, + Transformation, VstackFeatures) diff --git a/pts/feature/lag.py b/pts/feature/lag.py index 4a95a0a..2bf88ce 100644 --- a/pts/feature/lag.py +++ b/pts/feature/lag.py @@ -12,7 +12,7 @@ # permissions and limitations under the License. # Standard library imports -from typing import List, Tuple, Optional +from typing import List, Optional, Tuple # Third-party imports import numpy as np @@ -122,4 +122,4 @@ def get_lags_for_frequency(freq_str: str, ] lags = [1, 2, 3, 4, 5, 6, 7] + sorted(list(set(lags))) - return lags[:num_lags] \ No newline at end of file + return lags[:num_lags] diff --git a/pts/feature/time_feature.py b/pts/feature/time_feature.py index a4a621c..e15b342 100644 --- a/pts/feature/time_feature.py +++ b/pts/feature/time_feature.py @@ -6,6 +6,7 @@ import pandas as pd from .utils import get_granularity + class TimeFeature(ABC): def __init__(self, normalized: bool = True): self.normalized = normalized diff --git a/pts/feature/transform.py b/pts/feature/transform.py index 3dbf41b..1f69a68 100644 --- a/pts/feature/transform.py +++ b/pts/feature/transform.py @@ -1,13 +1,14 @@ from abc import ABC, abstractmethod from collections import Counter from functools import lru_cache, reduce -from typing import Iterator, List, Callable, Any, Optional, Dict, Tuple +from typing import Any, Callable, Dict, Iterator, List, Optional, Tuple import numpy as np import pandas as pd -from pts.dataset import DataEntry, InstanceSampler from pts import assert_pts +from pts.dataset import DataEntry, InstanceSampler + from .time_feature import TimeFeature MAX_IDLE_TRANSFORMS = 100 diff --git a/pts/feature/utils.py b/pts/feature/utils.py index b8dd299..7b7a316 100644 --- a/pts/feature/utils.py +++ b/pts/feature/utils.py @@ -1,5 +1,6 @@ -from typing import Tuple import re +from typing import Tuple + def get_granularity(freq_str: str) -> Tuple[int, str]: """ @@ -18,4 +19,4 @@ def get_granularity(freq_str: str) -> Tuple[int, str]: groups = m.groups() multiple = int(groups[1]) if groups[1] is not None else 1 granularity = groups[2] - return multiple, granularity \ No newline at end of file + return multiple, granularity diff --git a/pts/model/__init__.py b/pts/model/__init__.py index d33a170..67ebdcf 100644 --- a/pts/model/__init__.py +++ b/pts/model/__init__.py @@ -1,4 +1,4 @@ from pts.model.estimator import Estimator, PTSEstimator -from pts.model.predictor import Predictor from pts.model.forecast import Forecast +from pts.model.predictor import Predictor from pts.model.quantile import Quantile diff --git a/pts/model/deepar/__init__.py b/pts/model/deepar/__init__.py index 0c5d1b8..b82e94e 100644 --- a/pts/model/deepar/__init__.py +++ b/pts/model/deepar/__init__.py @@ -1 +1 @@ -from .deepar_estimator import DeepAREstimator \ No newline at end of file +from .deepar_estimator import DeepAREstimator diff --git a/pts/model/deepar/deepar_estimator.py b/pts/model/deepar/deepar_estimator.py index 59f3136..b27fa53 100644 --- a/pts/model/deepar/deepar_estimator.py +++ b/pts/model/deepar/deepar_estimator.py @@ -2,9 +2,11 @@ from typing import List, Optional import numpy as np -from pts.model import PTSEstimator -from pts.feature import TimeFeature, get_lags_for_frequency, time_features_from_frequency_str from pts import Trainer +from pts.feature import (TimeFeature, get_lags_for_frequency, + time_features_from_frequency_str) +from pts.model import PTSEstimator + class DeepAREstimator(PTSEstimator): def __init__(self, @@ -67,4 +69,4 @@ class DeepAREstimator(PTSEstimator): self.history_length = self.context_length + max(self.lags_seq) - self.num_parallel_samples = num_parallel_samples \ No newline at end of file + self.num_parallel_samples = num_parallel_samples diff --git a/pts/model/deepar/deepar_network.py b/pts/model/deepar/deepar_network.py index e31ae7b..f8f60ee 100644 --- a/pts/model/deepar/deepar_network.py +++ b/pts/model/deepar/deepar_network.py @@ -1,5 +1,6 @@ import torch import torch.nn as nn + class DeepARNetwork(nn.Module): - pass \ No newline at end of file + pass diff --git a/pts/model/estimator.py b/pts/model/estimator.py index d4e88e9..83169a7 100644 --- a/pts/model/estimator.py +++ b/pts/model/estimator.py @@ -1,14 +1,13 @@ from abc import ABC, abstractmethod import numpy as np - -from pts.dataset.common import Dataset -from pts.dataset import TrainDataLoader -from pts.feature import Transformation - import torch import torch.nn as nn +from pts.dataset import TrainDataLoader +from pts.dataset.common import Dataset +from pts.feature import Transformation + from .predictor import Predictor from .utils import get_module_forward_input_names diff --git a/pts/model/forecast.py b/pts/model/forecast.py index 4f41f0a..f37808e 100644 --- a/pts/model/forecast.py +++ b/pts/model/forecast.py @@ -1,9 +1,8 @@ from abc import ABC, abstractmethod -from typing import Optional, Dict, Enum, Set, List +from typing import Dict, Enum, List, Optional, Set import numpy as np import pandas as pd - import torch from torch.distributions.distribution import Distributions @@ -393,4 +392,4 @@ class QuantileForecast(Forecast): # freq=self.freq, # item_id=self.item_id, # info=self.info, -# ) \ No newline at end of file +# ) diff --git a/pts/model/predictor.py b/pts/model/predictor.py index 6cb2d7c..cb08438 100644 --- a/pts/model/predictor.py +++ b/pts/model/predictor.py @@ -2,9 +2,11 @@ from abc import ABC, abstractmethod from typing import Iterator from pts.dataset.common import Dataset + from .forecast import Forecast from .predictor import Predictor + class Predictor(ABC): def __init__(self, prediction_length: int, freq: str) -> None: self.prediction_length = prediction_length @@ -13,4 +15,3 @@ class Predictor(ABC): @abstractmethod def predict(self, dataset: Dataset, **kwargs) -> Iterator[Forecast]: pass - diff --git a/pts/model/quantile.py b/pts/model/quantile.py index e89d6ce..9411ff4 100644 --- a/pts/model/quantile.py +++ b/pts/model/quantile.py @@ -1,5 +1,5 @@ -from typing import NamedTuple, Union import re +from typing import NamedTuple, Union class Quantile(NamedTuple): diff --git a/pts/modules/__init__.py b/pts/modules/__init__.py index e69de29..aac0cad 100644 --- a/pts/modules/__init__.py +++ b/pts/modules/__init__.py @@ -0,0 +1,2 @@ +from pts.modules.distribution_output import ArgProj +from pts.modules.lambda_layer import LambdaLayer diff --git a/pts/modules/distribution_output.py b/pts/modules/distribution_output.py index 031c528..5db192c 100644 --- a/pts/modules/distribution_output.py +++ b/pts/modules/distribution_output.py @@ -1,4 +1,5 @@ from typing import Callable, Dict, Optional, Tuple +from abc import ABC, abstractmethod import numpy as np @@ -8,25 +9,26 @@ import torch.nn as nn class ArgProj(nn.Module): def __init__( - self, - in_features, - args_dim: Dict[str, int], - domain_map: Callable[..., Tuple[torch.Tensor]], - dtype: np.dtype = np.float32, - prefix: Optional[str] = None, - **kwargs, + self, + in_features, + args_dim: Dict[str, int], + domain_map: Callable[..., Tuple[torch.Tensor]], + dtype: np.dtype = np.float32, + prefix: Optional[str] = None, + **kwargs, ): super().__init__(**kwargs) self.args_dim = args_dim self.dtype = dtype - self.proj = nn.ModuleList([ - nn.Linear(in_features, dim) - for dim in args_dim.values()]) + self.proj = nn.ModuleList( + [nn.Linear(in_features, dim) for dim in args_dim.values()] + ) self.domain_map = domain_map - + def forward(self, x: torch.Tensor) -> Tuple[torch.Tensor]: params_unbounded = [proj(x) for proj in self.proj] return self.domain_map(*params_unbounded) - +class Output(ABC): + \ No newline at end of file diff --git a/pts/modules/lambda.py b/pts/modules/lambda_layer.py similarity index 85% rename from pts/modules/lambda.py rename to pts/modules/lambda_layer.py index bbb3360..65df82f 100644 --- a/pts/modules/lambda.py +++ b/pts/modules/lambda_layer.py @@ -1,10 +1,11 @@ import torch import torch.nn as nn -class Lambda(nn.Module): + +class LambdaLayer(nn.Module): def __init__(self, function): super().__init__() self._func = function - + def forward(self, x, *args): return self._func(x, *args)