Pytorch/Tensorflow package for generating saliency maps for time-series models using Cross-Domain Integrated Gradients.
Project description
Timeseries Saliency Maps: Explaining models across multiple domains
Official Pytorch/Captum/Tensorflow implementation of Cross-Domain Saliency Maps. The method does not require any model model retraining or modications.
Installation
Captum
Install using pip:
pip install cross-domain-saliency-maps[captum]
Torch
Install using pip:
pip install cross-domain-saliency-maps[torch]
Tensorflow
Install using pip:
pip install cross-domain-saliency-maps[tensorflow]
All
Install using pip:
pip install cross-domain-saliency-maps[all]
Examples
Get started with our PyTorch/TensorFlow examples (one-click run)
- Pytorch getting started
- Tensorflow getting started
- What does your model see in your EEG? (with MNE)
- Explaining time-series forecasts (with skforecast)
Usage
The library supports generating saliency maps for any domain which can be formulated as an invertible transformation with a differentiable inverse transformation.
To generate maps expressed in a domain, a corresponding Domain
object needs to be defined. This describes the operations performed
during the forward and inverse transformations.
Implementations for the Frequency and Independent Component Analysis (ICA) transformations are already implemented and can be directly deployed. Additionally, the libraryprovides the flexibility of defining new transformations.
Plug-and-play implemented domains
The following domains are already implemented and can be directly used to generate saliency maps:
-
Time Domain. This is the original Integrated Gradients, expressing saliency maps in the raw input domain (time). The corresponding
Domainobject isTimeDomain. The map can be directly generated:timeIG = TimeIG(model, n_iterations, output_channel = 0) -
Frequency Domain. Each point in the map corresponds to the importance of the corresponding frquency component. The Fourier transform is used to transform the time-domain to the frequency domain. The corresponding
Domainobject isFourierDomain. The map can be directly generated:fourierIG = FourierIG(model, n_iterations, output_channel = 0) -
Independent Component Domain. Each point in the map corresponds to an independent component (IC) of the ICA decomposition. Any ICA implementation can be used as long as it complies with
sklearn.decomposition.FastICA. The domain is defined byICADomain. Before generating the map aFastICAneeds to be fitted to the input sample (see example). The map can be directly generated:icaIG = ICAIG(model, fastICA, n_iterations, output_channel = 0) -
Short-Time Fouerier Transform (STFT) Domain. Each point in the saliency map corresponds to the importance of the corresponding time-frequency bin. The short-time fourier transform is used to transform the time-domain the time-frequency domain. The corresponding
DomainisSTFTDomain. The map can be directly generated:stftIG = STFTIG(model, n_iterations, n_fft, hop_length, win_length,output_channel = 0) -
Complex-Cepstrum Domain. Each point in the map corresponds to the importance of the corresponding Cepstrum bin. The Complex Cepstrum transform is formulated as
C = ifft(log(fft(X))). The correspondingDomainisComplexCepstrumDomain. The map can be directly generated:ccIG = ComplexCepstrumIG(model, n_iterations, output_channel = 0) -
Haar-DWT Domain. Each point in the map corresponds to the importance of a DWT decomposition level. We use the Haar decomposition. The
DomainisHaarDWTLevelsDomain. The map can be directly generated:dwtIG = DWTIG(model, n_iterations, output_channel = 0, levels = 6)
Saliency Maps in any domain
The library supports extending the Cross-domain Integrated Gradients for any invertible domain with a differentiable inverse transform. This requires:
-
Creating the propert
Domainobject describing the corresponding transform.Domainobjects need to inherit fromDomainBaseand implement the required functions. More details can be found in the implementation of theFourierDomainandICADomain( tensorflow, pytorch). -
Calling
CrossDomainIGwith the new domain as the input. This can be done either by creating aCrossDomainIG, initializing it with the new domain, or by implementing a new dedicated class inheritingCrossDomainIG. For more details check the implementations ofFourierIGandICAIG( tensorflow, pytorch).
Reference
BibTeX
@article{kechris2025time,
title={Time series saliency maps: Explaining models across multiple domains},
author={Kechris, Christodoulos and Dan, Jonathan and Atienza, David},
journal={arXiv preprint arXiv:2505.13100},
year={2025}
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cross_domain_saliency_maps-0.0.8.tar.gz.
File metadata
- Download URL: cross_domain_saliency_maps-0.0.8.tar.gz
- Upload date:
- Size: 2.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2cfcfacfbe16f912466f5a5e93d99fa68deca194c4d46fabc42ba7d20d7425d4
|
|
| MD5 |
22f3a264a95bb5e9069f2e49ff5baae3
|
|
| BLAKE2b-256 |
5d1e09a55948f7fd51adab46513db4bb85181620c78adb12014853e68abb1b59
|
Provenance
The following attestation bundles were made for cross_domain_saliency_maps-0.0.8.tar.gz:
Publisher:
python-publish.yml on esl-epfl/cross-domain-saliency-maps
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cross_domain_saliency_maps-0.0.8.tar.gz -
Subject digest:
2cfcfacfbe16f912466f5a5e93d99fa68deca194c4d46fabc42ba7d20d7425d4 - Sigstore transparency entry: 1438707988
- Sigstore integration time:
-
Permalink:
esl-epfl/cross-domain-saliency-maps@e4fee40c5a05601218a7268c9fb4ec27790dc760 -
Branch / Tag:
refs/tags/v0.0.8 - Owner: https://github.com/esl-epfl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@e4fee40c5a05601218a7268c9fb4ec27790dc760 -
Trigger Event:
release
-
Statement type:
File details
Details for the file cross_domain_saliency_maps-0.0.8-py3-none-any.whl.
File metadata
- Download URL: cross_domain_saliency_maps-0.0.8-py3-none-any.whl
- Upload date:
- Size: 32.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6923c297e5f2d4765bb48613ce6cb795660c34322a849caca92159d17c6e100
|
|
| MD5 |
1b056effc6d388fb5ebe9a9eb9f495ed
|
|
| BLAKE2b-256 |
8910bf387c6e9bbf25315fa333359b61605040ee8970856469abf24122bbf9b8
|
Provenance
The following attestation bundles were made for cross_domain_saliency_maps-0.0.8-py3-none-any.whl:
Publisher:
python-publish.yml on esl-epfl/cross-domain-saliency-maps
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cross_domain_saliency_maps-0.0.8-py3-none-any.whl -
Subject digest:
a6923c297e5f2d4765bb48613ce6cb795660c34322a849caca92159d17c6e100 - Sigstore transparency entry: 1438707992
- Sigstore integration time:
-
Permalink:
esl-epfl/cross-domain-saliency-maps@e4fee40c5a05601218a7268c9fb4ec27790dc760 -
Branch / Tag:
refs/tags/v0.0.8 - Owner: https://github.com/esl-epfl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@e4fee40c5a05601218a7268c9fb4ec27790dc760 -
Trigger Event:
release
-
Statement type: