Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 57 additions & 1 deletion pytorch_forecasting/models/dlinear/_dlinear_pkg_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,63 @@


class DLinear_pkg_v2(Base_pkg):
"""DLinear package container."""
"""DLinear package container.

Examples
--------
>>> # Package-level usage for DLinear
>>> import pandas as pd
>>> import numpy as np
>>> from pytorch_forecasting.data import TimeSeries
>>> from pytorch_forecasting.data.data_module import TslibDataModule
>>> from pytorch_forecasting.models.dlinear import DLinear_pkg_v2
>>> from pytorch_forecasting.metrics import SMAPE
>>>
>>> # Create minimal synthetic time series
>>> rng = np.random.default_rng(42)
>>> rows = []
>>> for group in range(2):
... for t in range(20):
... rows.append({
... "group": f"series_{group}",
... "time_idx": int(t),
... "target": float(rng.normal() + t * 0.1),
... })
>>> df = pd.DataFrame(rows)
>>>
>>> # Create TimeSeries object
>>> ts = TimeSeries(
... data=df,
... time="time_idx",
... target="target",
... group=["group"],
... known=["time_idx"],
... )
>>>
>>> # Create data module with tslib-specific settings
>>> dm = TslibDataModule(
... time_series_dataset=ts,
... context_length=8,
... prediction_length=2,
... batch_size=4,
... )
>>> dm.setup("fit")
>>>
>>> # Create DLinear model via package interface
>>> pkg = DLinear_pkg_v2(
... model_cfg={
... "moving_avg": 5,
... "individual": False,
... "loss": SMAPE(),
... },
... trainer_cfg={"max_epochs": 1, "accelerator": "cpu"},
... datamodule_cfg={"context_length": 8, "prediction_length": 2},
... )
>>> # Training requires Lightning - skip in doctest
>>> # pkg.fit(dm) # doctest: +SKIP
>>> # Predictions also skipped for doctest safety
>>> # preds = pkg.predict(dm) # doctest: +SKIP
"""

_tags = {
"info:name": "DLinear",
Expand Down
61 changes: 60 additions & 1 deletion pytorch_forecasting/models/frets/_frets_pkg_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,66 @@


class FreTS_pkg_v2(Base_pkg):
"""FreTS v2 package container."""
"""FreTS v2 package container.

Examples
--------
>>> # Package-level usage for FreTS
>>> import pandas as pd
>>> import numpy as np
>>> from pytorch_forecasting.data import TimeSeries
>>> from pytorch_forecasting.data.data_module import (
... EncoderDecoderTimeSeriesDataModule,
... )
>>> from pytorch_forecasting.models.frets import FreTS_pkg_v2
>>> from pytorch_forecasting.metrics import MAE
>>>
>>> # Create minimal synthetic time series
>>> rng = np.random.default_rng(42)
>>> rows = []
>>> for group in range(2):
... for t in range(20):
... rows.append({
... "group": f"series_{group}",
... "time_idx": int(t),
... "target": float(rng.normal() + t * 0.05),
... })
>>> df = pd.DataFrame(rows)
>>>
>>> # Create TimeSeries object
>>> ts = TimeSeries(
... data=df,
... time="time_idx",
... target="target",
... group=["group"],
... known=["time_idx"],
... )
>>>
>>> # Create data module
>>> dm = EncoderDecoderTimeSeriesDataModule(
... time_series_dataset=ts,
... max_encoder_length=6,
... max_prediction_length=3,
... batch_size=4,
... )
>>> dm.setup("fit")
>>>
>>> # Create FreTS model via package interface
>>> pkg = FreTS_pkg_v2(
... model_cfg={
... "embed_size": 16,
... "hidden_size": 32,
... "channel_independence": True,
... "loss": MAE(),
... },
... trainer_cfg={"max_epochs": 1, "accelerator": "cpu"},
... datamodule_cfg={"max_encoder_length": 6, "max_prediction_length": 3},
... )
>>> # Training requires Lightning - skip in doctest
>>> # pkg.fit(dm) # doctest: +SKIP
>>> # Predictions also skipped for doctest safety
>>> # preds = pkg.predict(dm) # doctest: +SKIP
"""

_tags = {
"info:name": "FreTS",
Expand Down
62 changes: 61 additions & 1 deletion pytorch_forecasting/models/patch_tst/_patch_tst_pkg_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,67 @@


class PatchTST_pkg_v2(Base_pkg):
"""PatchTST package container for V2."""
"""PatchTST package container for V2.

Examples
--------
>>> # Package-level usage for PatchTST
>>> import pandas as pd
>>> import numpy as np
>>> from pytorch_forecasting.data import TimeSeries
>>> from pytorch_forecasting.data.data_module import (
... EncoderDecoderTimeSeriesDataModule,
... )
>>> from pytorch_forecasting.models.patch_tst import PatchTST_pkg_v2
>>> from pytorch_forecasting.metrics import MAE
>>>
>>> # Create minimal synthetic time series
>>> rng = np.random.default_rng(42)
>>> rows = []
>>> for group in range(2):
... for t in range(24):
... rows.append({
... "group": f"series_{group}",
... "time_idx": int(t),
... "target": float(rng.normal() + t * 0.05),
... })
>>> df = pd.DataFrame(rows)
>>>
>>> # Create TimeSeries object
>>> ts = TimeSeries(
... data=df,
... time="time_idx",
... target="target",
... group=["group"],
... known=["time_idx"],
... )
>>>
>>> # Create data module with patch-compatible settings
>>> dm = EncoderDecoderTimeSeriesDataModule(
... time_series_dataset=ts,
... max_encoder_length=16,
... max_prediction_length=3,
... batch_size=4,
... )
>>> dm.setup("fit")
>>>
>>> # Create PatchTST model via package interface
>>> pkg = PatchTST_pkg_v2(
... model_cfg={
... "hidden_size": 16,
... "n_heads": 2,
... "patch_len": 4,
... "stride": 4,
... "loss": MAE(),
... },
... trainer_cfg={"max_epochs": 1, "accelerator": "cpu"},
... datamodule_cfg={"max_encoder_length": 16, "max_prediction_length": 3},
... )
>>> # Training requires Lightning - skip in doctest
>>> # pkg.fit(dm) # doctest: +SKIP
>>> # Predictions also skipped for doctest safety
>>> # preds = pkg.predict(dm) # doctest: +SKIP
"""

_tags = {
"info:name": "PatchTST_v2",
Expand Down
61 changes: 60 additions & 1 deletion pytorch_forecasting/models/scinet/_scinet_pkg_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,66 @@


class SCINet_pkg_v2(Base_pkg):
"""SCINet v2 package container."""
"""SCINet v2 package container.

Examples
--------
>>> # Package-level usage for SCINet
>>> import pandas as pd
>>> import numpy as np
>>> from pytorch_forecasting.data import TimeSeries
>>> from pytorch_forecasting.data.data_module import (
... EncoderDecoderTimeSeriesDataModule,
... )
>>> from pytorch_forecasting.models.scinet import SCINet_pkg_v2
>>> from pytorch_forecasting.metrics import MAE
>>>
>>> # Create minimal synthetic time series
>>> rng = np.random.default_rng(42)
>>> rows = []
>>> for group in range(2):
... for t in range(20):
... rows.append({
... "group": f"series_{group}",
... "time_idx": int(t),
... "target": float(rng.normal() + t * 0.05),
... })
>>> df = pd.DataFrame(rows)
>>>
>>> # Create TimeSeries object
>>> ts = TimeSeries(
... data=df,
... time="time_idx",
... target="target",
... group=["group"],
... known=["time_idx"],
... )
>>>
>>> # Create data module
>>> dm = EncoderDecoderTimeSeriesDataModule(
... time_series_dataset=ts,
... max_encoder_length=8,
... max_prediction_length=4,
... batch_size=4,
... )
>>> dm.setup("fit")
>>>
>>> # Create SCINet model via package interface
>>> pkg = SCINet_pkg_v2(
... model_cfg={
... "num_stacks": 2,
... "num_levels": 2,
... "hid_size": 2,
... "loss": MAE(),
... },
... trainer_cfg={"max_epochs": 1, "accelerator": "cpu"},
... datamodule_cfg={"max_encoder_length": 8, "max_prediction_length": 4},
... )
>>> # Training requires Lightning - skip in doctest
>>> # pkg.fit(dm) # doctest: +SKIP
>>> # Predictions also skipped for doctest safety
>>> # preds = pkg.predict(dm) # doctest: +SKIP
"""

_tags = {
"info:name": "SCINet_v2",
Expand Down
57 changes: 57 additions & 0 deletions pytorch_forecasting/models/softs/_softs_pkg_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,63 @@ class SOFTS_pkg_v2(Base_pkg):
"""
SOFTS package container.
Reference : https://arxiv.org/abs/2404.14197

Examples
--------
>>> # Package-level usage for SOFTS
>>> import pandas as pd
>>> import numpy as np
>>> from pytorch_forecasting.data import TimeSeries
>>> from pytorch_forecasting.data.data_module import (
... EncoderDecoderTimeSeriesDataModule,
... )
>>> from pytorch_forecasting.models.softs import SOFTS_pkg_v2
>>> from pytorch_forecasting.metrics import MAE
>>>
>>> # Create minimal synthetic time series
>>> rng = np.random.default_rng(42)
>>> rows = []
>>> for group in range(2):
... for t in range(20):
... rows.append({
... "group": f"series_{group}",
... "time_idx": int(t),
... "target": float(rng.normal() + t * 0.05),
... })
>>> df = pd.DataFrame(rows)
>>>
>>> # Create TimeSeries object
>>> ts = TimeSeries(
... data=df,
... time="time_idx",
... target="target",
... group=["group"],
... known=["time_idx"],
... )
>>>
>>> # Create data module
>>> dm = EncoderDecoderTimeSeriesDataModule(
... time_series_dataset=ts,
... max_encoder_length=8,
... max_prediction_length=2,
... batch_size=4,
... )
>>> dm.setup("fit")
>>>
>>> # Create SOFTS model via package interface
>>> pkg = SOFTS_pkg_v2(
... model_cfg={
... "hidden_size": 64,
... "n_layers": 1,
... "loss": MAE(),
... },
... trainer_cfg={"max_epochs": 1, "accelerator": "cpu"},
... datamodule_cfg={"max_encoder_length": 8, "max_prediction_length": 2},
... )
>>> # Training requires Lightning - skip in doctest
>>> # pkg.fit(dm) # doctest: +SKIP
>>> # Predictions also skipped for doctest safety
>>> # preds = pkg.predict(dm) # doctest: +SKIP
"""

_tags = {
Expand Down
Loading
Loading