knowit

A codebase to build and interpret ANNs performing time series modeling.

https://github.com/must-deep-learning/knowit

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.8%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

A codebase to build and interpret ANNs performing time series modeling.

Basic Info
  • Host: GitHub
  • Owner: MUST-Deep-Learning
  • License: apache-2.0
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 33.7 MB
Statistics
  • Stars: 9
  • Watchers: 3
  • Forks: 0
  • Open Issues: 23
  • Releases: 0
Created almost 3 years ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

Knowledge discovery in time series data

KI_logo.png


KnowIt (Knowledge discovery In Time series data) is an extendable toolkit to build and interpret deep time series models. It is developed in Python and uses PyTorch Lightning for model building and Captum for model interpreting.

Installation

  • Clone the KnowIt directory locally
  • Create a conda environment with the provided KnowIt/environment.yml file
  • Installation package TBD

Usage overview

```python

Import the KnowIt module

from knowit import KnowIt

Instantiate a KnowIt object linked to an output directory

KI = KnowIt(customexpdir='myoutputpath')

Define your dataset

dataargs = {'name': 'synth2', 'task': 'regression', 'incomponents': ['x1', 'x2', 'x3', 'x4'], 'outcomponents': ['x5'], 'inchunk': [-32, 0], 'outchunk': [0, 0], 'splitportions': [0.6, 0.2, 0.2], 'batchsize': 64}

Define your architecture

arch_args = {'task': 'regression', 'name': 'MLP'}

Define your trainer

trainerargs = {'lossfn': 'mseloss', 'optim': 'Adam', 'maxepochs': 10, 'learning_rate': 0.01, 'task': 'regression'}

Train your model

KI.trainmodel(modelname='mynewmodelname', kwargs={'data': dataargs, 'arch': archargs, 'trainer': trainerargs})

Generate model predictions

KI.generatepredictions(modelname='mynewmodelname', kwargs={'predictor': {'predictionset': 'valid'}})

Interpret model predictions

KI.interpretmodel(modelname='mynewmodelname', kwargs={'interpreter': {'interpretationmethod': 'DeepLift', 'interpretation_set': 'valid', 'selection': 'random', 'size': 100}}) ```

Current Features

  • Flexible problem class definition allows facilitating various time series modeling tasks, including: uni- and multivariate, single- and multistep, time series regression, classification, forecasting, and detection.
  • A growing list of default deep time series architectures. Currently includes: MLP, CNN, TCN, and LSTM.
  • Convenient entry points to import custom architectures (PyTorch based) and custom dataset (Pandas based).
  • Automated data management (storing, splitting, scaling, sampling, loading, padding etc.) of complex time series data.
  • Convenient feature attribution extraction and storage.
  • Hyperparameter tuning through Pytorch Lightning and Weights and Biases API.
  • Extendable design for additional future training and interpretability paradigms.

Current Limitations

  • Data is assumed to be equidistantly sampled and time-indexed time series data. Gaps are removed during preprocessing to construct contiguous blocks of data for model training.
  • Data is stored on and loaded from disk in contiguous slices. These slices have to fit into memory.

Coming soon

  • Adding Transformer-based models to default architectures
  • Package installation options
  • Testbench for synthetic data experimentation
  • Additional feature attribution visualizations

We are open to any suggestions.

Citation

If you make use of KnowIt, we kindly request that you cite it with the provided citation file.

Acknowledgements

This project is made possible due to funding and support from: - MUST Deep Learning - North-West University (NWU), South Africa - National Institute for Theoretical & Computational Sciences (NITheCS), South Africa - Centre for Artificial Intelligence Research (CAIR), South Africa - National Research Foundation (NRF), South Africa

Contributors: - Marthinus Wilhelmus Theunissen (tiantheunissen@gmail.com) - Randle Rabe (randlerabe@gmail.com) - Harmen Potgieter (potgieterharmen@gmail.com)

Owner

  • Name: MUST
  • Login: MUST-Deep-Learning
  • Kind: user

Previous account https://github.com/NWU-MuST

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use KnowIt in your work, we kindly request that your cite it as below."
authors:
- family-names: "Theunissen"
  given-names: "Marthinus Wilhelmus"
  scholar: "https://scholar.google.com/citations?user=p3bOWQEAAAAJ&hl=en"
- family-names: "Rabe"
  given-names: "Randle"
  scholar: "https://scholar.google.com/citations?user=BgW4AvsAAAAJ&hl=en&oi=ao"
- family-names: "Davel"
  given-names: "Marelie"
  scholar: "https://scholar.google.com/citations?user=Xz-fi1cAAAAJ&hl=en"
title: "KnowIt: Deep Time Series Modeling and Interpretation"
version: 1.0.0
doi: "https://doi.org/10.48550/arXiv.2507.06009"
date-released: 2025-07-09
url: "https://github.com/MUST-Deep-Learning/KnowIt"

GitHub Events

Total
  • Create event: 4
  • Issues event: 12
  • Watch event: 4
  • Delete event: 3
  • Issue comment event: 24
  • Public event: 1
  • Push event: 69
  • Pull request review comment event: 16
  • Pull request review event: 18
  • Pull request event: 31
Last Year
  • Create event: 4
  • Issues event: 12
  • Watch event: 4
  • Delete event: 3
  • Issue comment event: 24
  • Public event: 1
  • Push event: 69
  • Pull request review comment event: 16
  • Pull request review event: 18
  • Pull request event: 31

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 10
  • Total pull requests: 17
  • Average time to close issues: 9 months
  • Average time to close pull requests: 2 days
  • Total issue authors: 4
  • Total pull request authors: 4
  • Average comments per issue: 1.2
  • Average comments per pull request: 0.18
  • Merged pull requests: 10
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 8
  • Pull requests: 17
  • Average time to close issues: 5 months
  • Average time to close pull requests: 2 days
  • Issue authors: 4
  • Pull request authors: 4
  • Average comments per issue: 0.88
  • Average comments per pull request: 0.18
  • Merged pull requests: 10
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • tiantheunissen (5)
  • MUST-Deep-Learning (3)
  • Null-Quark (1)
  • Kgopolang (1)
Pull Request Authors
  • tiantheunissen (9)
  • MUST-Deep-Learning (3)
  • potgieterharmen (3)
  • Kgopolang (1)
Top Labels
Issue Labels
bug (5) enhancement (3) question (2) documentation (2)
Pull Request Labels
enhancement (3)

Dependencies

.github/workflows/deploy-docs.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • peaceiris/actions-gh-pages v4 composite
docs/requirements.txt pypi
  • myst_parser *
  • pydata-sphinx-theme *
  • sphinx *
  • sphinx-autoapi *
environment.yml pypi
  • accessible-pygments ==0.0.4
  • beautifulsoup4 ==4.12.3
  • cloudpickle ==2.0.0
  • configspace ==0.5.0
  • cython ==0.29.28
  • dask ==2022.5.0
  • distributed ==2022.5.0
  • emcee ==3.1.1
  • fsspec ==2022.3.0
  • heapdict ==1.0.1
  • locket ==1.0.0
  • markdown-it-py ==3.0.0
  • mdit-py-plugins ==0.4.1
  • mdurl ==0.1.2
  • msgpack ==1.0.3
  • myst-parser ==3.0.1
  • partd ==1.2.0
  • pyarrow ==17.0.0
  • pydata-sphinx-theme ==0.14.4
  • pynisher ==0.6.4
  • pyrfr ==0.8.2
  • smac ==1.3.1
  • sortedcontainers ==2.4.0
  • soupsieve ==2.5
  • sphinx ==7.1.2
  • sphinx-autoapi ==3.1.1
  • tblib ==1.7.0
  • toolz ==0.11.2
  • torchmetrics ==1.5.2
  • zict ==2.2.0