Skip to content
Merged
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
2 changes: 1 addition & 1 deletion .github/workflows/greetings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Auto reply to new issues and PR
on:
issues:
types: [opened]
pull_request:
pull_request_target:
branches: [main, dev]
types: [opened]

Expand Down
31 changes: 0 additions & 31 deletions .github/workflows/issue_manager.yml

This file was deleted.

36 changes: 23 additions & 13 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,32 @@
name: "Close stale issues and PRs"
name: "Stale Manager"

on:
push:
branches:
- test_stale_manager
schedule:
- cron: "0 0 * * *"
- cron: "0 8 * * *"

permissions:
actions: write
contents: write # only for delete-branch option
issues: write
pull-requests: write

jobs:
stale:
issue-manager:
runs-on: ubuntu-latest

steps:
- uses: actions/stale@v10
with:
stale-issue-message: 'This issue had no activity for **14 days**. It will be closed in **1 week** unless there is some new activity. Is this issue already resolved?'
stale-issue-label: 'stale'
exempt-issue-labels: bug, potential bug, enhancement, new feature, new algo, good first issue, keep, refactoring, completed, docker
exempt-pr-labels: bug, potential bug, enhancement, new feature, new algo, keep, refactoring, docker
stale-pr-message: 'This pull request had no activity for **14 days**. It will be closed in **1 week** unless there is some new activity.'
stale-pr-label: 'stale'
days-before-stale: 14
days-before-close: 7
operations-per-run: 200
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 10 days.'
close-issue-message: 'This issue was closed because it has been stalled for 10 days with no activity.'
days-before-issue-stale: 30
days-before-issue-close: 10
exempt-issue-labels: 'keep,awaiting-approval,work-in-progress'

stale-pr-message: 'This PR is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 10 days.'
close-pr-message: 'This PR was closed because it has been stalled for 10 days with no activity.'
days-before-pr-stale: 30
days-before-pr-close: 10
exempt-pr-labels: 'keep,awaiting-approval,work-in-progress'
1 change: 1 addition & 0 deletions .github/workflows/testing_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ jobs:
run: |
which python
which pip
pip install --upgrade setuptools pip
pip install torch==${{ matrix.pytorch-version }} -f https://download.pytorch.org/whl/cpu
python -c "import torch; print('PyTorch:', torch.__version__)"

Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,15 +113,15 @@ embedding strategy and training approach (ORT+MIT) the same as we did in
[the SAITS paper](https://arxiv.org/pdf/2202.08516)[^1].**

The task types are abbreviated as follows:
**`IMPU`**: Imputation;
**`FORE`**: Forecasting;
**`CLAS`**: Classification;
**`IMPT`**: Imputation;
**`FCST`**: Forecasting;
**`CLAF`**: Classification;
**`CLUS`**: Clustering;
**`ANOD`**: Anomaly Detection.
In addition to the 5 tasks, PyPOTS also provides TS2Vec[^48] for time series representation learning and vectorization.
The paper references and links are all listed at the bottom of this file.

| **Type** | **Algo** | **IMPU** | **FORE** | **CLAS** | **CLUS** | **ANOD** | **Year - Venue** |
| **Type** | **Algo** | **IMPT** | **FCST** | **CLAF** | **CLUS** | **ANOD** | **Year - Venue** |
|:--------------|:------------------------------------------------------------------------------------------------------------------------------------------------|:--------:|:--------:|:--------:|:--------:|:--------:|:---------------------------------------------------------------------------------------------------------|
| LLM&TSFM | <a href="https://time-series.ai"><img src="https://pypots.com/figs/timeseriesai/logo.png" width="26px" align="center">Time-Series.AI</a> [^36] | ✅ | ✅ | ✅ | ✅ | ✅ | <a href="https://docs.google.com/forms/d/1Ff2ndYUFQEL3tIcwtcR8lWeopQ2vTXX6D_x8WGFKH6E">Join waitlist</a> |
| Neural Net | MixLinear🧑‍🔧[^52] | | ✅ | | | | `2026 - ICLR` |
Expand Down Expand Up @@ -347,7 +347,7 @@ Here is [an incomplete list of them](https://scholar.google.com/scholar?as_ylo=2
@article{du2023pypots,
title = {{PyPOTS: A Python Toolkit for Data Mining on Partially-Observed Time Series}},
author = {Wenjie Du},
journal = {KDD 2023 MiLeTS},
journal = {SIGKDD MiLeTS Workshop},
year = {2023},
}
```
Expand Down
10 changes: 8 additions & 2 deletions README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,10 +105,16 @@ PyPOTS当前支持多变量POTS数据的插补, 预测, 分类, 聚类以及异
**为了使上述模型能够适用于POTS数据, 我们采用了与[SAITS论文](https://arxiv.org/pdf/2202.08516)[^1]
中相同的embedding策略和训练方法(ORT+MIT)对它们进行改进**.

任务类型缩写如下:
**`IMPT`**: Imputation, 插补;
**`FCST`**: Forecasting, 预测;
**`CLAF`**: Classification, 分类;
**`CLUS`**: Clustering, 聚类;
**`ANOD`**: Anomaly Detection, 异常检测.
除了下表中列出的5种任务(插补, 预测, 分类, 聚类和异常检测)的算法外, PyPOTS还包括了用于时序表征学习和向量化的TS2Vec[^48].
所有算法的论文引用和链接可以在本文件的底部找到.

| **Type** | **Algo** | **IMPU** | **FORE** | **CLAS** | **CLUS** | **ANOD** | **Year - Venue** |
| **Type** | **Algo** | **IMPT** | **FCST** | **CLAF** | **CLUS** | **ANOD** | **Year - Venue** |
|:--------------|:------------------------------------------------------------------------------------------------------------------------------------------------|:--------:|:--------:|:--------:|:--------:|:--------:|:---------------------------------------------------------------------------------------------------------|
| LLM&TSFM | <a href="https://time-series.ai"><img src="https://pypots.com/figs/timeseriesai/logo.png" width="26px" align="center">Time-Series.AI</a> [^36] | ✅ | ✅ | ✅ | ✅ | ✅ | <a href="https://docs.google.com/forms/d/1Ff2ndYUFQEL3tIcwtcR8lWeopQ2vTXX6D_x8WGFKH6E">Join waitlist</a> |
| Neural Net | MixLinear🧑‍🔧[^52] | | ✅ | | | | `2026 - ICLR` |
Expand Down Expand Up @@ -326,7 +332,7 @@ PyPOTS也已被纳入[PyTorch Ecosystem](https://landscape.pytorch.org/?item=mod
@article{du2023pypots,
title = {{PyPOTS: A Python Toolkit for Data Mining on Partially-Observed Time Series}},
author = {Wenjie Du},
journal = {KDD 2023 MiLeTS},
journal = {SIGKDD MiLeTS Workshop},
year = {2023},
}
```
Expand Down
6 changes: 3 additions & 3 deletions docs/algo_table.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@

* - Type
- Algorithm
- IMPU
- FORE
- CLAS
- IMPT
- FCST
- CLAF
- CLUS
- ANOD
- Year - Venue
Expand Down
11 changes: 5 additions & 6 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,8 @@ proposed as algorithms for POTS data in their papers, and they cannot directly a
To make them applicable to POTS data, we specifically apply the embedding strategy and training approach (ORT+MIT)
the same as we did in `the SAITS paper <https://arxiv.org/pdf/2202.08516)>`_ :cite:`du2023SAITS`.

The task types are abbreviated as follows: **IMPU**: Imputation; **FORE**: Forecasting;
**CLAS**: Classification; **CLUS**: Clustering; **ANOD**: Anomaly Detection.
The task types are abbreviated as follows: **IMPT**: Imputation; **FCST**: Forecasting;
**CLAF**: Classification; **CLUS**: Clustering; **ANOD**: Anomaly Detection.
In addition to the 5 tasks, PyPOTS also provides TS2Vec :cite:`yue2022ts2vec` for time series representation learning and vectorization.
The paper references are all listed at the bottom of this readme file.

Expand Down Expand Up @@ -244,7 +244,7 @@ please cite it as below and 🌟star `PyPOTS repository <https://github.com/Wenj
@article{du2023pypots,
title = {{PyPOTS: A Python Toolkit for Data Mining on Partially-Observed Time Series}},
author = {Wenjie Du},
journal = {KDD 2023 MiLeTS},
journal = {SIGKDD MiLeTS Workshop},
year = {2023},
}

Expand Down Expand Up @@ -304,12 +304,12 @@ PyPOTS community is open, transparent, and surely friendly. Let's work together
:caption: Getting Started

install
examples
tutorials

.. toctree::
:maxdepth: 4
:hidden:
:caption: Docs of PyPOTS Ecosystem
:caption: User Docs of PyPOTS

model_api
pypots
Expand All @@ -324,5 +324,4 @@ PyPOTS community is open, transparent, and surely friendly. Let's work together

faq
milestones
about_us
references
18 changes: 9 additions & 9 deletions docs/milestones.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,17 @@ please cite it as below and 🌟star `PyPOTS repository <https://github.com/Wenj
:linenos:

@article{du2023pypots,
title={{PyPOTS: a Python toolbox for data mining on Partially-Observed Time Series}},
author={Wenjie Du},
journal={arXiv preprint arXiv:2305.18811},
year={2023},
title = {{PyPOTS: A Python Toolkit for Data Mining on Partially-Observed Time Series}},
author = {Wenjie Du},
journal = {SIGKDD MiLeTS Workshop},
year = {2023},
}

or

Wenjie Du. (2023).
PyPOTS: A Python Toolbox for Data Mining on Partially-Observed Time Series.
arXiv, abs/2305.18811. https://doi.org/10.48550/arXiv.2305.18811
@article{du2025pypots,
title = {{PyPOTS v1: A Python Toolkit for Machine Learning on Partially-Observed Time Series}},
author = {Wenjie Du, Yiyuan Yang, Linglong Qian, Jun Wang, and Qingsong Wen},
year = {2025},
}


Research Projects Using PyPOTS
Expand Down
4 changes: 2 additions & 2 deletions docs/model_api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,10 @@ pypots.clustering.base
:show-inheritance:
:inherited-members:

pypots.vec.base
pypots.representation.base
------------------------------

.. automodule:: pypots.vec.base
.. automodule:: pypots.representation.base
:members:
:undoc-members:
:show-inheritance:
Expand Down
2 changes: 1 addition & 1 deletion docs/pypots.anomaly_detection.rst
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ pypots.anomaly_detection.timemixer
:inherited-members:

pypots.anomaly_detection.nonstationary_transformer
-----------------------------------------------
--------------------------------------------------

.. automodule:: pypots.anomaly_detection.nonstationary_transformer
:members:
Expand Down
14 changes: 2 additions & 12 deletions docs/pypots.data.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,10 @@ pypots.data.saving
:show-inheritance:
:inherited-members:

pypots.data.generating
pypots.data.checking
-----------------------------

.. automodule:: pypots.data.generating
:members:
:undoc-members:
:show-inheritance:
:inherited-members:


pypots.data.load\_specific\_datasets
-------------------------------------------

.. automodule:: pypots.data.load_specific_datasets
.. automodule:: pypots.data.checking
:members:
:undoc-members:
:show-inheritance:
Expand Down
2 changes: 1 addition & 1 deletion docs/pypots.imputation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ pypots.imputation.scinet
:inherited-members:

pypots.imputation.nonstationary_transformer
------------------------------
---------------------------------------------

.. automodule:: pypots.imputation.nonstationary_transformer
:members:
Expand Down
8 changes: 0 additions & 8 deletions docs/pypots.nn.rst
Original file line number Diff line number Diff line change
Expand Up @@ -177,14 +177,6 @@ pypots.nn.modules.informer



pypots.nn.modules.timemoe
-------------------------------------------------

.. automodule:: pypots.nn.modules.timemoe
:members:



pypots.nn.modules.dlinear
-------------------------------------------------

Expand Down
24 changes: 13 additions & 11 deletions docs/references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -147,17 +147,19 @@ @inproceedings{fortuin2020gpvae
organization={PMLR}
}

@article{horn2020seft,
title = {Set {{Functions}} for {{Time Series}}},
author = {Horn, Max and Moor, Michael and Bock, Christian and Rieck, Bastian and Borgwardt, Karsten},
booktitle = {Proceedings of the 37th International Conference on Machine Learning},
pages = {4353--4363},
year = {2020},
editor = {Hal Daumé III and Aarti Singh},
volume = {119},
series = {Proceedings of Machine Learning Research},
month = {13--18 Jul},
publisher = {PMLR},
@InProceedings{horn2020seft,
title = {Set Functions for Time Series},
author = {Horn, Max and Moor, Michael and Bock, Christian and Rieck, Bastian and Borgwardt, Karsten},
booktitle = {Proceedings of the 37th International Conference on Machine Learning},
pages = {4353--4363},
year = {2020},
editor = {III, Hal Daumé and Singh, Aarti},
volume = {119},
series = {Proceedings of Machine Learning Research},
month = {13--18 Jul},
publisher = {PMLR},
pdf = {http://proceedings.mlr.press/v119/horn20a/horn20a.pdf},
url = {https://proceedings.mlr.press/v119/horn20a.html},
}

@article{hubert1985AdjustedRI,
Expand Down
8 changes: 4 additions & 4 deletions docs/examples.rst → docs/tutorials.rst
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
Quick-start Examples
====================
Quick-Start Tutorials
================================

.. image:: https://pypots.com/figs/pypots_logos/BrewPOTS/logo_FFBG.svg
:width: 160
:alt: BrewPOTS logo
:align: right
:target: https://github.com/WenjieDu/BrewPOTS

We put some examples here to help our users to get started quickly.

Please refer to `BrewPOTS <https://github.com/WenjieDu/BrewPOTS>`_ for detailed PyPOTS tutorials.
You can also find a simple and quick-start tutorial notebook on Google Colab
You can also find a simple and quick-start tutorial notebook on Google Colab by clicking the badge below

.. raw:: html

<a href="https://colab.research.google.com/drive/1HEFjylEy05-r47jRy0H9jiS_WhD0UWmQ" target="_blank"><img src="https://img.shields.io/badge/GoogleColab-PyPOTS_Tutorials-F9AB00?logo=googlecolab&logoColor=white"></a>
<br clear="right">

We put some examples here to help our users to get started quickly.

.. code-block:: python

Expand Down
2 changes: 1 addition & 1 deletion pypots/classification/seft/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@


class SeFT(BaseNNClassifier):
"""The PyTorch implementation of the SeFT model :cite:`horn2020SeFT`.
"""The PyTorch implementation of the SeFT model :cite:`horn2020seft`.

Parameters
----------
Expand Down
6 changes: 4 additions & 2 deletions pypots/forecasting/moderntcn/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,11 @@ class ModernTCN(BaseNNForecaster):

downsampling_ratio :
The downsampling ratio for the downsampling mechanism.
Must be int, because it is also used as kernel size and stride of convolution modules in ModernTCN.

ffn_ratio :
The ratio for the feed-forward neural network in the model.
Must be int.

num_blocks :
The number of blocks for the model. It should be a list of integers.
Expand Down Expand Up @@ -135,8 +137,8 @@ def __init__(
n_pred_features: int,
patch_size: int,
patch_stride: int,
downsampling_ratio: float,
ffn_ratio: float,
downsampling_ratio: int,
ffn_ratio: int,
num_blocks: list,
large_size: list,
small_size: list,
Expand Down
Loading