Metadata-Version: 2.1
Name: TSInterpret
Version: 0.0.12
Summary: todo
Home-page: https://ipe-wim-gitlab.fzi.de/hoellig/interpretabilitytimeseries
Author: Jacqueline Hoellig
Author-email: hoellig@fzi.de
License: BSD-3
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.6.0
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: scikit-learn (==1.0.2)
Requires-Dist: torch (==1.11)
Requires-Dist: pandas (~=1.3.2)
Requires-Dist: numpy (>=1.21.6)
Requires-Dist: tqdm (~=4.61.2)
Requires-Dist: h5py
Requires-Dist: joblib (==1.0.1)
Requires-Dist: kaggle (==1.5.12)
Requires-Dist: lime (==0.2.0.1)
Requires-Dist: Markdown (==3.3.4)
Requires-Dist: matplotlib (==3.3.4)
Requires-Dist: partd (==1.2.0)
Requires-Dist: pytz (==2021.3)
Requires-Dist: shap (==0.39.0)
Requires-Dist: tensorflow
Requires-Dist: keras
Requires-Dist: tsfresh (==0.18.0)
Requires-Dist: tslearn
Requires-Dist: seaborn
Requires-Dist: scikit-optimize
Requires-Dist: mlrose
Requires-Dist: torchcam
Requires-Dist: tf-explain
Requires-Dist: opencv-python (==4.6.0.66)
Requires-Dist: captum
Requires-Dist: pyts
Requires-Dist: deprecated
Requires-Dist: dataclasses ; python_version == '3.6'
Provides-Extra: all
Requires-Dist: scikit-learn (==1.0.2) ; extra == 'all'
Requires-Dist: torch (==1.11) ; extra == 'all'
Requires-Dist: pandas (~=1.3.2) ; extra == 'all'
Requires-Dist: numpy (>=1.21.6) ; extra == 'all'
Requires-Dist: tqdm (~=4.61.2) ; extra == 'all'
Requires-Dist: h5py ; extra == 'all'
Requires-Dist: joblib (==1.0.1) ; extra == 'all'
Requires-Dist: kaggle (==1.5.12) ; extra == 'all'
Requires-Dist: lime (==0.2.0.1) ; extra == 'all'
Requires-Dist: Markdown (==3.3.4) ; extra == 'all'
Requires-Dist: matplotlib (==3.3.4) ; extra == 'all'
Requires-Dist: partd (==1.2.0) ; extra == 'all'
Requires-Dist: pytz (==2021.3) ; extra == 'all'
Requires-Dist: shap (==0.39.0) ; extra == 'all'
Requires-Dist: tensorflow ; extra == 'all'
Requires-Dist: keras ; extra == 'all'
Requires-Dist: tsfresh (==0.18.0) ; extra == 'all'
Requires-Dist: tslearn ; extra == 'all'
Requires-Dist: seaborn ; extra == 'all'
Requires-Dist: scikit-optimize ; extra == 'all'
Requires-Dist: mlrose ; extra == 'all'
Requires-Dist: torchcam ; extra == 'all'
Requires-Dist: tf-explain ; extra == 'all'
Requires-Dist: opencv-python (==4.6.0.66) ; extra == 'all'
Requires-Dist: captum ; extra == 'all'
Requires-Dist: pyts ; extra == 'all'
Requires-Dist: deprecated ; extra == 'all'
Requires-Dist: mypy (>=0.761) ; extra == 'all'
Requires-Dist: pre-commit (>=2.9.2) ; extra == 'all'
Requires-Dist: pytest (>=4.5.0) ; extra == 'all'
Requires-Dist: pytest-cov (>=2.6.1) ; extra == 'all'
Requires-Dist: flask (>=2.0.2) ; extra == 'all'
Requires-Dist: ipykernel (>=6.9.0) ; extra == 'all'
Requires-Dist: mike (>=0.5.3) ; extra == 'all'
Requires-Dist: mkdocs (>=1.2.3) ; extra == 'all'
Requires-Dist: mkdocs-awesome-pages-plugin (>=2.7.0) ; extra == 'all'
Requires-Dist: mkdocs-gen-files (>=0.3.5) ; extra == 'all'
Requires-Dist: mkdocs-literate-nav (>=0.4.1) ; extra == 'all'
Requires-Dist: mkdocs-material (>=8.1.11) ; extra == 'all'
Requires-Dist: mkdocstrings[python] (>=0.19.0) ; extra == 'all'
Requires-Dist: pytkdocs[numpy-style] (>=0.5.0) ; extra == 'all'
Requires-Dist: ipython-genutils (>=0.1.0) ; extra == 'all'
Requires-Dist: mkdocs-jupyter (>=0.20.0) ; extra == 'all'
Requires-Dist: mkdocs-bibtex (==2.8.1) ; extra == 'all'
Requires-Dist: nbconvert (==6.4.2) ; extra == 'all'
Requires-Dist: numpydoc (==1.2) ; extra == 'all'
Requires-Dist: spacy (==3.2.2) ; extra == 'all'
Requires-Dist: jinja2 (==3.0.3) ; extra == 'all'
Provides-Extra: dev
Requires-Dist: scikit-learn (==1.0.2) ; extra == 'dev'
Requires-Dist: torch (==1.11) ; extra == 'dev'
Requires-Dist: pandas (~=1.3.2) ; extra == 'dev'
Requires-Dist: numpy (>=1.21.6) ; extra == 'dev'
Requires-Dist: tqdm (~=4.61.2) ; extra == 'dev'
Requires-Dist: h5py ; extra == 'dev'
Requires-Dist: joblib (==1.0.1) ; extra == 'dev'
Requires-Dist: kaggle (==1.5.12) ; extra == 'dev'
Requires-Dist: lime (==0.2.0.1) ; extra == 'dev'
Requires-Dist: Markdown (==3.3.4) ; extra == 'dev'
Requires-Dist: matplotlib (==3.3.4) ; extra == 'dev'
Requires-Dist: partd (==1.2.0) ; extra == 'dev'
Requires-Dist: pytz (==2021.3) ; extra == 'dev'
Requires-Dist: shap (==0.39.0) ; extra == 'dev'
Requires-Dist: tensorflow ; extra == 'dev'
Requires-Dist: keras ; extra == 'dev'
Requires-Dist: tsfresh (==0.18.0) ; extra == 'dev'
Requires-Dist: tslearn ; extra == 'dev'
Requires-Dist: seaborn ; extra == 'dev'
Requires-Dist: scikit-optimize ; extra == 'dev'
Requires-Dist: mlrose ; extra == 'dev'
Requires-Dist: torchcam ; extra == 'dev'
Requires-Dist: tf-explain ; extra == 'dev'
Requires-Dist: opencv-python (==4.6.0.66) ; extra == 'dev'
Requires-Dist: captum ; extra == 'dev'
Requires-Dist: pyts ; extra == 'dev'
Requires-Dist: deprecated ; extra == 'dev'
Requires-Dist: mypy (>=0.761) ; extra == 'dev'
Requires-Dist: pre-commit (>=2.9.2) ; extra == 'dev'
Requires-Dist: pytest (>=4.5.0) ; extra == 'dev'
Requires-Dist: pytest-cov (>=2.6.1) ; extra == 'dev'
Provides-Extra: docs
Requires-Dist: flask (>=2.0.2) ; extra == 'docs'
Requires-Dist: ipykernel (>=6.9.0) ; extra == 'docs'
Requires-Dist: mike (>=0.5.3) ; extra == 'docs'
Requires-Dist: mkdocs (>=1.2.3) ; extra == 'docs'
Requires-Dist: mkdocs-awesome-pages-plugin (>=2.7.0) ; extra == 'docs'
Requires-Dist: mkdocs-gen-files (>=0.3.5) ; extra == 'docs'
Requires-Dist: mkdocs-literate-nav (>=0.4.1) ; extra == 'docs'
Requires-Dist: mkdocs-material (>=8.1.11) ; extra == 'docs'
Requires-Dist: mkdocstrings[python] (>=0.19.0) ; extra == 'docs'
Requires-Dist: pytkdocs[numpy-style] (>=0.5.0) ; extra == 'docs'
Requires-Dist: ipython-genutils (>=0.1.0) ; extra == 'docs'
Requires-Dist: mkdocs-jupyter (>=0.20.0) ; extra == 'docs'
Requires-Dist: mkdocs-bibtex (==2.8.1) ; extra == 'docs'
Requires-Dist: nbconvert (==6.4.2) ; extra == 'docs'
Requires-Dist: numpydoc (==1.2) ; extra == 'docs'
Requires-Dist: spacy (==3.2.2) ; extra == 'docs'
Requires-Dist: jinja2 (==3.0.3) ; extra == 'docs'
Provides-Extra: test
Requires-Dist: scikit-learn (==1.0.2) ; extra == 'test'
Requires-Dist: torch (==1.11) ; extra == 'test'
Requires-Dist: pandas (~=1.3.2) ; extra == 'test'
Requires-Dist: numpy (>=1.21.6) ; extra == 'test'
Requires-Dist: tqdm (~=4.61.2) ; extra == 'test'
Requires-Dist: h5py ; extra == 'test'
Requires-Dist: joblib (==1.0.1) ; extra == 'test'
Requires-Dist: kaggle (==1.5.12) ; extra == 'test'
Requires-Dist: lime (==0.2.0.1) ; extra == 'test'
Requires-Dist: Markdown (==3.3.4) ; extra == 'test'
Requires-Dist: matplotlib (==3.3.4) ; extra == 'test'
Requires-Dist: partd (==1.2.0) ; extra == 'test'
Requires-Dist: pytz (==2021.3) ; extra == 'test'
Requires-Dist: shap (==0.39.0) ; extra == 'test'
Requires-Dist: tensorflow ; extra == 'test'
Requires-Dist: keras ; extra == 'test'
Requires-Dist: tsfresh (==0.18.0) ; extra == 'test'
Requires-Dist: tslearn ; extra == 'test'
Requires-Dist: seaborn ; extra == 'test'
Requires-Dist: scikit-optimize ; extra == 'test'
Requires-Dist: mlrose ; extra == 'test'
Requires-Dist: torchcam ; extra == 'test'
Requires-Dist: tf-explain ; extra == 'test'
Requires-Dist: opencv-python (==4.6.0.66) ; extra == 'test'
Requires-Dist: captum ; extra == 'test'
Requires-Dist: pyts ; extra == 'test'
Requires-Dist: deprecated ; extra == 'test'
Requires-Dist: mypy (>=0.761) ; extra == 'test'
Requires-Dist: pre-commit (>=2.9.2) ; extra == 'test'
Requires-Dist: pytest (>=4.5.0) ; extra == 'test'
Requires-Dist: pytest-cov (>=2.6.1) ; extra == 'test'


<p align="center">
    <img src="./docs/img/logo.png" alt="TSInterpret Logo" height="300"/>
</p>

TSInterpret is a Python library for interpreting time series classification.
The ambition is to faciliate the usage of times series interpretability methods. The Framework supports Sklearn, Tensorflow, Torch and in some cases predict functions. A listing of implemented algorithms and supported frameworks can be found in our <a href="https://jhoelli.github.io/TSInterpret/AlgorithmOverview/">Documentation</a>.

## 💈 Installation
```shell
pip install TSInterpret
```
You can install the latest development version from GitHub as so:
```shell
pip install https://github.com/jhoelli/TSInterpret.git --upgrade
```

Or, through SSH:
```shell
pip install git@github.com:jhoelli/TSInterpret.git --upgrade
```


## 🍫 Quickstart
The following example creates a simple Neural Network based on tensorflow and interprets the Classfier with Integrated Gradients and Temporal Saliency Rescaling [1].
For further examples check out the <a href="https://jhoelli.github.io/TSInterpret/">Documentation</a>.

[1] Ismail, Aya Abdelsalam, et al. "Benchmarking deep learning interpretability in time series predictions." Advances in neural information processing systems 33 (2020): 6441-6452.

### Import
```python
import pickle
import numpy as np 
import matplotlib.pyplot as plt
import seaborn as snst
from tslearn.datasets import UCR_UEA_datasets
import tensorflow as tf 

```
### Create Classifcation Model
```python

dataset='BasicMotions'
train_x,train_y, test_x, test_y=UCR_UEA_datasets().load_dataset(dataset)
enc1=pickle.load(open(f'../../ClassificationModels/models/{dataset}/OneHotEncoder.pkl','rb'))
train_y=enc1.transform(train_y.reshape(-1,1))
test_y=enc1.transform(test_y.reshape(-1,1))
model_to_explain = tf.keras.models.load_model(f'../../ClassificationModels/models/{dataset}/cnn/{dataset}best_model.hdf5')
```
Explain & Visualize Model
```python
from TSInterpret.InterpretabilityModels.Saliency.TSR import TSR
int_mod=TSR(model_to_explain, train_x.shape[-2],train_x.shape[-1], method='IG',mode='time')
item= np.array([test_x[0,:,:]])
label=int(np.argmax(test_y[0]))

exp=int_mod.explain(item,labels=label,TSR =True)

%matplotlib inline  
int_mod.plot(np.array([test_x[0,:,:]]),exp)

```
<p align="center">
    <img src="./docs/img/ReadMe.png" alt="Algorithm Results" height="200"/>
</p>

## 🏫 Affiliations
<p align="center">
    <img src="https://upload.wikimedia.org/wikipedia/de/thumb/4/44/Fzi_logo.svg/1200px-Fzi_logo.svg.png?raw=true" alt="FZI Logo" height="200"/>
</p>

## Aknowledgement
