{"id":13687004,"url":"https://github.com/jlizier/jidt","last_synced_at":"2025-05-16T13:07:58.832Z","repository":{"id":35333250,"uuid":"39595340","full_name":"jlizier/jidt","owner":"jlizier","description":"JIDT: Java Information Dynamics Toolkit for studying information-theoretic measures of computation in complex systems","archived":false,"fork":false,"pushed_at":"2025-04-01T12:09:46.000Z","size":53081,"stargazers_count":267,"open_issues_count":30,"forks_count":75,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-04-03T09:11:11.600Z","etag":null,"topics":["conditional-mutual-information","conditional-transfer-entropy","entropy","information-theory","java","matlab","mutual-information","octave","python","transfer-entropy"],"latest_commit_sha":null,"homepage":"http://jlizier.github.io/jidt/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jlizier.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license-gplv3.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-07-23T21:54:50.000Z","updated_at":"2025-04-02T13:43:15.000Z","dependencies_parsed_at":"2023-01-15T18:45:19.171Z","dependency_job_id":"91ad27c3-5085-4111-a42b-a0117e3a862f","html_url":"https://github.com/jlizier/jidt","commit_stats":{"total_commits":891,"total_committers":4,"mean_commits":222.75,"dds":"0.26374859708193044","last_synced_commit":"912bdf94e18da5ae01a52bbbdcffb2844c16f1f0"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlizier%2Fjidt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlizier%2Fjidt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlizier%2Fjidt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jlizier%2Fjidt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jlizier","download_url":"https://codeload.github.com/jlizier/jidt/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248545008,"owners_count":21122064,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["conditional-mutual-information","conditional-transfer-entropy","entropy","information-theory","java","matlab","mutual-information","octave","python","transfer-entropy"],"created_at":"2024-08-02T15:00:46.119Z","updated_at":"2025-04-12T09:24:58.886Z","avatar_url":"https://github.com/jlizier.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"# Java Information Dynamics Toolkit (JIDT)\n\nCopyright (C) 2012- [Joseph T. Lizier](http://lizier.me/joseph/); 2014- Ipek Özdemir; 2017- [Pedro Mediano](https://www.doc.ic.ac.uk/~pam213/); 2019- Emanuele Crosato, Sooraj Sekhar, Oscar Huaigu Xu; 2022- [David Shorten](https://scholar.google.com/citations?user=ggF3Lt4AAAAJ\u0026hl=en)\n\n*JIDT* provides a stand-alone, open-source code Java implementation (also usable in [Matlab, Octave](../../wiki/UseInOctaveMatlab), [Python](../../wiki/UseInPython), [R](../../wiki/UseInR), [Julia](../../wiki/UseInJulia) and [Clojure](../../wiki/UseInClojure)) of information-theoretic measures of distributed computation in complex systems: i.e. information storage, transfer and modification.\n\nJIDT includes implementations:\n * principally for the measures **transfer entropy**, **mutual information**, and their conditional variants, as well as **active information storage**, entropy, etc;\n * for both _discrete_ and _continuous_-valued data;\n * using various types of estimators (e.g. _Kraskov-Stögbauer-Grassberger estimators_, _box-kernel estimation_, _linear-Gaussian_),\nas described in full at [ImplementedMeasures](../../wiki/ImplementedMeasures).\n\nJIDT is easy to use:\n * It ships with a **GUI application** -- the [AutoAnalyser](../../wiki/AutoAnalyser), see picture below -- to facilitate point-and-click analysis, as well as code template generation for more complex analysis.\n * We provide **short video lectures** and corresponding slides in a (beta) [Course](../../wiki/Course) on how to understand using information-theoretic tools to analyse complex systems, and to implement such analysis with JIDT.\n\nJIDT is distributed under the [GNU GPL v3 license](http://www.gnu.org/licenses/gpl.html) (or later).\n\n# Getting started\n\n1. [Download](../../wiki/Downloads) and [Installation](../../wiki/Installation) is very easy!\n    1. _Quick start_: take a `git clone` (then build via [AntScripts](../../wiki/AntScripts)) OR download the latest [v1.6.1 full distribution](https://lizier.me/joseph/software/jidt/download.php?file=infodynamics-dist-1.6.1.zip) (suitable for all platforms) and see the readme.txt file therein.\n1. [Documentation](../../wiki/Documentation) including: the paper describing JIDT at [arXiv:1408.3270](http://arxiv.org/abs/1408.3270) (distributed with the toolkit), a (beta) [Course](../../wiki/Course) including short video lectures and a shorter [Tutorial](../../wiki/Tutorial), and [Javadocs (v1.6.1 here)](https://lizier.me/joseph/software/jidt/javadocs/v1.6.1/);\n1. [Demos](../../wiki/Demos) are included with the full distribution, including a [GUI app](../../wiki/AutoAnalyser) for automatic analysis and code generation (see picture below), [simple java demos](../../wiki/SimpleJavaExamples) and [cellular automata (CA) demos](../../wiki/CellularAutomataDemos).\n    1. These Java tools can easily be used in [Matlab/Octave](../../wiki/OctaveMatlabExamples), [Python](../../wiki/PythonExamples), [R](../../wiki/R_Examples), [Julia](../../wiki/JuliaExamples) and [Clojure](../../wiki/Clojure_Examples)! (click on each language here for examples)\n\n[![Computing in the GUI app image](https://raw.githubusercontent.com/jlizier/jidt/master/web/AutoAnalyserGUI-2-Compute.png)](../../wiki/AutoAnalyser)\n\n[![Course and video lectures](https://raw.githubusercontent.com/jlizier/jidt/master/web/YouTubePlaylist.png)](../../wiki/Course)\n\nFor further information or announcements:\n * Join our discussion group: http://groups.google.com/d/forum/jidt-discuss\n * See also the [FAQs](../../wiki/FAQs)\n * Follow [@infodynamicstkt](http://twitter.com/infodynamicstkt) on twitter\n\n# Citation\n\nPlease **cite** your use of this toolkit as:\n\nJoseph T. Lizier, \"JIDT: An information-theoretic toolkit for studying the dynamics of complex systems\", _Frontiers in Robotics and AI_ 1:11, 2014; doi:[10.3389/frobt.2014.00011](http://dx.doi.org/10.3389/frobt.2014.00011) (pre-print: [arXiv:1408.3270](http://arxiv.org/abs/1408.3270))\n\nAnd please [let me know](mailto:joseph.lizier_AT_gmail.com) about any publications resulting from its use!\n\nSee other [PublicationsUsingThisToolkit](../../wiki/PublicationsUsingThisToolkit).\n\n# News\n\n_22/08/2023_ - New full distribution files available for **release v1.6.1**; Changes for v1.6.1 include:\nMinor updates to supporting use in Python, including virtual environments;\nMinor tweaks to fish schooling examples (mostly comments).\n\n_5/09/2022_ - New full distribution files available for **release v1.6**; Changes for v1.6 include:\nAdding Flocking/Schooling/Swarming demo;\nIncluded Pedro's code on IIT and O-/S-Information measures;\nSpiking TE estimator added from David;\nFixed up AutoAnalyser to work well for Python3 and numpy;\nLinks to lecture videos included in the beta wiki for the course;\nAdded rudimentary effective network inference (simplified version of the IDTxl full algorithm) in demos/octave/EffectiveNetworkInference;\n\n_26/11/2018_ - New jar and full distribution files available for **release v1.5**; Changes for v1.5 include:\nAdded GPU (cuda) capability for KSG Conditional Mutual Information calculator (proper documentation to come), brief [wiki page](../../wiki/GPU) and unit tests included;\nAdded auto-embedding for TE/AIS with multivariate KSG, and univariate and multivariate Gaussian estimator (plus unit tests), for Ragwitz criteria and Maximum bias-corrected AIS, and also added Maximum bias corrected AIS and TE to handle source embedding as well;\nKozachenko entropy estimator adds noise to data by default;\nAdded bias-correction property to Gaussian and Kernel estimators for MI and conditional MI, including with surrogates (only option for kernel);\nEnabled use of different bases for different variables in MI discrete estimator;\nAll new above features enabled in AutoAnalyser;\nAdded drop-down menus for parameters in AutoAnalyser;\nIncluded long-form lecture slides in course folder;\n\n_26/11/2017_ - New jar and full distribution files available for **release v1.4**; Changes for v1.4 include:\nMajor expansion of functionality for AutoAnalysers: adding Launcher applet and capability to double click jar to launch, added Entropy, CMI, CTE and AIS AutoAnalysers, also added binned estimator type, added all variables/pairs analysis, added statistical significance analysis, and ensured functionality of generated Python code with Python3;\nAdded GPU (cuda) capability for KSG Mutual Information calculator (proper documentation and wiki page to come), including unit tests;\nAdded fast neighbour search implementations for mixed discrete-continuous KSG MI estimators;\nExpanded Gaussian estimator for multi-information (integration);\nMade all demo/data files readable by Matlab.\n\n_17/12/2016_ - New book out from J. Lizier et al., [\"An Introduction to Transfer Entropy: Information Flow in Complex Systems\"](http://bit.ly/te-book-2016) published by Springer, which contains various examples using JIDT (distributed in our releases)\n\n_21/10/2016_ - New jar and full distribution files available for **release v1.3.1**; Changes for v1.3.1 include:\nMajor update to TransferEntropyCalculatorDiscrete so as to implement arbitrary source and dest embeddings and source-dest delay;\nConditional TE calculators (continuous) handle empty conditional variables;\nAdded new auto-embedding method for AIS and TE which maximises bias corrected AIS;\nAdded getNumSeparateObservations() method to TE calculators to make reconstructing/separating local values easier after multiple addObservations() calls;\nFixed kernel estimator classes to return proper densities, not probabilities;\nBug fix in mixed discrete-continuous MI (Kraskov) implementation;\nAdded simple interface for adding joint observations for MultiInfoCalculatorDiscrete\nIncluding compiled class files for the AutoAnalyser demo in distribution;\nUpdated Python demo 1 to show use of numpy arrays with ints;\nAdded Python demo 7 and 9 for TE Kraskov with ensemble method and auto-embedding respectively;\nAdded Matlab/Octave example 10 for conditional TE via Kraskov (KSG) algorithm;\nAdded utilities to prepare for enhancing surrogate calculations with fast nearest neighbour search;\nMinor bug patch to Python readFloatsFile utility.\n\n_19/7/2015_ - New jar and full distribution files available for **release v1.3**; Changes for v1.3 include:\nAdded AutoAnalyser (Code Generator) GUI demo for MI and TE;\nAdded auto-embedding capability via Ragwitz criteria for AIS and TE calculators (KSG estimators);\nAdded Java demo 9 for showcasing use of Ragwitz auto-embedding;\nAdding small amount of noise to data in all KSG estimators now by default (may be disabled via setProperty());\nAdded getProperty() methods for all conditional MI and TE calculators;\nUpgraded Python demos for Python 3 compatibility;\nFixed bias correction on mixed discrete-continuous KSG calculators;\nUpdated the tutorial slides to those in use for ECAL 2015 JIDT tutorial.\n\n_12/2/2015_ - New jar and full distribution files available for **release v1.2.1**; Changes for v1.2.1 include:\nAdded tutorial slides, description of exercises and sample exercise solutions;\nMade jar target Java 1.6;\nAdded Schreiber TE heart-breath rate with KSG estimator demo code for Python.\n\n_28/1/2015_ - New jar and full distribution files available for **release v1.2**; Changes for v1.2 include:\nDynamic correlation exclusion, or Theiler window, added to all Kraskov estimators;\nAdded univariate MI calculation to simple demo 6;\nAdded Java code for Schreiber TE heart-breath rate with KSG estimator, ready for use as a template in Tutorial;\nPatch for crashes in KSG conditional MI algorithm 2.\n\n_20/11/2014_ - New jar and full distribution files available for **release v1.1**; Changes for v1.1 include:\nImplemented Fast Nearest Neighbour Search for Kraskov-Stögbauer-Grassberger (KSG) estimators for MI, conditional MI, TE, conditional TE, AIS, Predictive info, and multi-information. This includes a general (multivariate) k-d tree implementation;\nAdded multi-threading (using all available processors by default) for the KSG estimators -- code contributed by Ipek Özdemir;\nAdded Predictive information / Excess entropy implementations for KSG, kernel and Gaussian estimators;\nAdded R, Julia, and Clojure demos;\nAdded Windows batch files for the Simple Java Demos;\nAdded property for adding a small amount of noise to data in all KSG estimators;\n\n_15/8/2014_ JIDT paper finalised and uploaded to the website and [arXiv:1408.3270](http://arxiv.org/abs/1408.3270)\n\n_14/8/2014_ - New jar and full distribution files available for our **first official release, v1.0**; Changes for v1.0 include: Added the draft of the paper on the toolkit to the release;\nJavadocs made ready for release;\nSwitched source-\u003edestination arguments for discrete TE calculators to be with source first in line with continuous calculators;\nRenamed all discrete calculators to have Discrete suffix -- TE and conditional TE calculators also renamed to remove \"Apparent\" prefix and change \"Complete\" to \"Conditional\";\nKraskov estimators now using 4 nearest neighbours by default;\nUnit test for Gaussian TE against ChaLearn Granger causality measurement;\nAdded Schreiber TE demos; Interregional transfer demos; documentation for Interaction lag demos; added examples 7 and 8 to Simple Java demos;\nAdded property to add noise to data for Kraskov MI;\nAdded derivation of Apache Commons Math code for chi square distribution, and included relevant notices in our release;\nInserted translation class for arrays between Octave and Java;\nAdded analytic statistical significance calculation to Gaussian calculators and discrete TE;\nCorrected Kraskov algorithm 2 for conditional MI to follow equation in Wibral et al. 2014.\n\n_20/4/2014_ - New jar and full distribution files available for v0.2.0; Moved downloads to http://lizier.me/joseph/ since google code has stopped the download facility here :(. Changes for v0.2.0 include: Rearchitected (most) Transfer Entropy and Multivariate TE calculators to use an underlying conditional mutual information calculator, and have arbitrary embedding delay, source-dest delay; this includes moving Kraskov-Grassberger Transfer Entropy calculator to use a single conditional mutual information estimator instead of two mutual information estimators; Rearchitected (most) Active Information Storage calculators to use an underlying mutual information calculator; Added Conditional Transfer Entropy calculators using underlying conditional mutual information calculators; Moved mixed discrete-continuous calculators to a new \"mixed\" package; bug fixes.\n\n_11/9/2013_ - New jar and full distribution files available for v0.1.4; added scripts to generate CA figures for 2013 book chapters; added general Java demo code; added Python demo code; made Octave/Matlab demos and CA demos properly compatible for Matlab; added extra Octave/Matlab general demos; added more unit tests for MI and conditional MI calculators, including against results from Wibral's TRENTOOL; bug fixes.\n\n_11/9/2013_ - New CA demo scripts for several review book chapters we're preparing in 2013 have been uploaded - see [CellularAutomataDemos](../../wiki/CellularAutomataDemos).\n\n_4/6/2013_ - Added instructions on how to [use in python](../../wiki/UseInPython) and several [PythonExamples](../../wiki/PythonExamples).\n\n_13/01/2013_ - New jar and full distribution files available for v0.1.3; existing Octave/Matlab demo code made compatible with Matlab; several bug fixes, including using max norm by default in Kraskov calculator (instead of requiring this to be set explicitly); more unit tests (including against results from Kraskov's own MI implementation)\n\n_19/11/2012_ - New jar and full distribution files available for v0.1.2, including demo code for two newly submitted papers\n\n_31/10/2012_ - Jar and full distribution files available for v0.1.1 (first distribution)\n\n_7/5/2012_ - JIDT project created and code uploaded\n\n# Acknowledgements\n\nThis project has been supported by funding through:\n* Australian Research Council Discovery Early Career Researcher Award (DECRA) \"Relating function of complex networks to structure using information theory\", J.T. Lizier, 2016-19 DE160100630\n* Universities Australia - Deutscher Akademischer Austauschdienst (German Academic Exchange Service) UA-DAAD Australia-Germany Joint Research Co-operation grant \"Measuring neural information synthesis and its impairment\", Wibral, Lizier, Priesemann, Wollstadt, Finn, 2016-17\n* University of Sydney Research Accelerator (SOAR) Fellowship 2019 Scheme, J.T. Lizier (CI), 2019-2020\n* Australian Research Council Discovery Project \"Large-scale computational modelling of epidemics in Australia: analysis, prediction and mitigation\", M. Prokopenko, P. Pattison, M. Gambhir, J.T. Lizier, M. Piraveenan, 2016-19 DP160102742\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjlizier%2Fjidt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjlizier%2Fjidt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjlizier%2Fjidt/lists"}