Metadata-Version: 2.1
Name: pypots
Version: 0.0.5
Summary: A Python Toolbox for Data Mining on Partially-Observed Time Series
Home-page: https://github.com/WenjieDu/PyPOTS
Author: Wenjie Du
Author-email: wenjay.du@gmail.com
License: GPL-3.0
Download-URL: https://github.com/WenjieDu/PyPOTS/archive/master.zip
Keywords: data mining,neural networks,machine learning,deep learning,partially observed,time series,missing data,missing values
Platform: UNKNOWN
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: matplotlib
Requires-Dist: numpy
Requires-Dist: scikit-learn
Requires-Dist: scipy
Requires-Dist: torch (>=1.10)
Requires-Dist: torch-sparse (==0.6.13)
Requires-Dist: torch-scatter
Requires-Dist: torch-geometric
Requires-Dist: tensorboard
Requires-Dist: pandas
Requires-Dist: pycorruptor
Requires-Dist: tsdb

<a href='https://github.com/WenjieDu/PyPOTS'><img src='https://raw.githubusercontent.com/WenjieDu/PyPOTS/main/docs/figs/PyPOTS%20logo.svg?sanitize=true' width='190' align='right' /></a>

# <p align='center'>Welcome to PyPOTS</p>
**<p align='center'>A Python Toolbox for Data Mining on Partially-Observed Time Series</p>**

<p align='center'>
    <!-- Python version -->
    <img src='https://img.shields.io/badge/python-v3-yellowgreen'>
    <!-- PyPI version -->
    <img alt="PyPI" src="https://img.shields.io/pypi/v/pypots?color=green&label=PyPI">
    <!-- License -->
    <img src='https://img.shields.io/badge/License-GPL--v3-green?color=79C641'>
    <!-- GitHub Testing -->
    <a alt='GitHub Testing' href='https://github.com/WenjieDu/PyPOTS/actions/workflows/testing.yml'> 
        <img src='https://github.com/WenjieDu/PyPOTS/actions/workflows/testing.yml/badge.svg'>
    </a>
    <!-- Coveralls report -->
    <a alt='Coveralls report' href='https://coveralls.io/github/WenjieDu/PyPOTS'> 
        <img src='https://coveralls.io/repos/github/WenjieDu/PyPOTS/badge.svg'>
    </a>
    <!-- PyPI download number -->
    <a alt='PyPI download number' href='https://pypi.org/project/pypots'>
        <img src='https://static.pepy.tech/personalized-badge/pypots?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Total Downloads'>
    </a>
    <!-- Visit number -->
    <img src='https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com%2FPyPOTS%2FPyPOTS&count_bg=%23009A0A&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=Visits&edge_flat=false'>
    <!-- Chat in Discussions -->
    <a alt='GitHub Discussions' href='https://github.com/WenjieDu/PyPOTS/discussions'>
        <img src='https://img.shields.io/badge/Chat-in_Discussions-green?logo=github&color=60A98D'>
    </a>
    <!-- Code of Conduct -->
    <a alt='CODE_OF_CONDUCT' href='CODE_OF_CONDUCT.md'> 
        <img src='https://img.shields.io/badge/Contributor%20Covenant-v2.1-4baaaa.svg'>
    </a>
</p>

⦿ `Motivation`: Due to all kinds of reasons like failure of collection sensors, communication error, and unexpected malfunction, missing values are common to see in time series from the real-world environment. This makes partially-observed time series (POTS) a pervasive problem in open-world modeling and prevents advanced data analysis. Although this problem is important, the area of data mining on POTS still lacks a dedicated toolkit. PyPOTS is created to fill in this blank.

⦿ `Mission`: PyPOTS is born to become a handy toolbox that is going to make data mining on POTS easy rather than tedious, to help engineers and researchers focus more on the core problems in their hands rather than on how to deal with the missing parts in their data. PyPOTS will keep integrating classical and the latest state-of-the-art data mining algorithms for partially-observed multivariate time series. For sure, besides various algorithms, PyPOTS is going to have unified APIs together with detailed documentation and interactive examples across algorithms as tutorials.

## ❖ Installation
Install the latest release from PyPI: 
> pip install pypots

Install with the latest code on GitHub: 
> pip install `https://github.com/WenjieDu/PyPOTS/archive/main.zip`

## ❖ Available Algorithms
| Task                          | Type           | Algorithm                                                                | Year | Reference |        
|-------------------------------|----------------|--------------------------------------------------------------------------|------|-----------|
| Imputation                    | Neural Network | SAITS: Self-Attention-based Imputation for Time Series                   | 2022 | [^1]      |
| Imputation                    | Neural Network | Transformer                                                              | 2017 | [^2] [^1] |
| Imputation,<br>Classification | Neural Network | BRITS (Bidirectional Recurrent Imputation for Time Series)               | 2018 | [^3]      |
| Imputation                    | Naive          | LOCF (Last Observation Carried Forward)                                  | -    | -         |
| Classification                | Neural Network | GRU-D                                                                    | 2018 | [^4]      |
| Classification                | Neural Network | Raindrop                                                                 | 2022 | [^5]      |
| Clustering                    | Neural Network | CRLI (Clustering Representation Learning on Incomplete time-series data) | 2021 | [^6]      |
| Clustering                    | Neural Network | VaDER (Variational Deep Embedding with Recurrence)                       | 2019 | [^7]      |

---
‼️ PyPOTS is currently under developing. If you like it and look forward to its growth, <ins>please give PyPOTS a star and watch it to keep you posted on its progress and to let me know that its development is meaningful</ins>. If you have any feedback, or want to contribute ideas/suggestions or share time-series related algorithms/papers, please join PyPOTS community and <a alt='GitHub Discussions' href='https://github.com/WenjieDu/PyPOTS/discussions'><img align='center' src='https://img.shields.io/badge/Chat-in_Discussions-green?logo=github&color=60A98D'></a>, or [drop me an email](mailto:wenjay.du@gmail.com).

Thank you all for your attention! 😃

[^1]: Du, W., Cote, D., & Liu, Y. (2022). SAITS: Self-Attention-based Imputation for Time Series. ArXiv, abs/2202.08516.
[^2]: Vaswani, A., Shazeer, N.M., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A.N., Kaiser, L., & Polosukhin, I. (2017). Attention is All you Need. NeurIPS 2017.
[^3]: Cao, W., Wang, D., Li, J., Zhou, H., Li, L., & Li, Y. (2018). BRITS: Bidirectional Recurrent Imputation for Time Series. NeurIPS 2018.
[^4]: Che, Z., Purushotham, S., Cho, K., Sontag, D.A., & Liu, Y. (2018). Recurrent Neural Networks for Multivariate Time Series with Missing Values. Scientific Reports, 8.
[^5]: Zhang, X., Zeman, M., Tsiligkaridis, T., & Zitnik, M. (2022). Graph-Guided Network for Irregularly Sampled Multivariate Time Series. ICLR 2022.
[^6]: Ma, Q., Chen, C., Li, S., & Cottrell, G. W. (2021). Learning Representations for Incomplete Time Series Clustering. AAAI 2021.
[^7]: Jong, J.D., Emon, M.A., Wu, P., Karki, R., Sood, M., Godard, P., Ahmad, A., Vrooman, H.A., Hofmann-Apitius, M., & Fröhlich, H. (2019). Deep learning for clustering of multivariate clinical patient trajectories with missing values. GigaScience, 8.

