Giter Club home page Giter Club logo

jlizier / jidt Goto Github PK

View Code? Open in Web Editor NEW
255.0 22.0 73.0 50.19 MB

JIDT: Java Information Dynamics Toolkit for studying information-theoretic measures of computation in complex systems

Home Page: http://jlizier.github.io/jidt/

License: GNU General Public License v3.0

Java 67.52% MATLAB 0.11% Makefile 0.26% Shell 0.01% C 0.85% Cuda 30.13% C++ 1.12%
information-theory transfer-entropy entropy mutual-information conditional-mutual-information conditional-transfer-entropy java python matlab octave

jidt's People

Contributors

dpshorten avatar jlizier avatar pmediano avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jidt's Issues

DetectingInteractionLags/transferWithSourceMemory.m is broken

Figure 2 plot -- the empirical results no longer match the analytic -- I seem 
to have broken something in the conditional TE discrete calculator.

Need to fix this before the v1.1 release.

Original issue reported on code.google.com by joseph.lizier on 20 Nov 2014 at 12:24

Kernel estimator to prob density function properly

the kernel estimator at the moment is effectively using a probability distribution function rather than density function. This is because it is not correcting for the kernel width. The probability value returned should be divided by the kernel width so that it properly represents a density, and the entropies calculated will then be differential entropies.

Replace org.octave.Matrix calls with our own class

Conversion between native octave types and java types is not always working 
correctly in octaveToJavaDoubleArray, octaveToJavaDoubleMatrix, 
octaveToJavaIntArray and octaveToJavaIntMatrix, as identified by Christoph 
Hartmann:

"The bug seems to be in the octaveToJavaDoubleMatrix.m. Whenever the Java 
Matrix is created there with javaObject('org.octave.Matrix',...), it sometimes 
returns an int matrix and sometimes a double matrix. Whenever an int-matrix is 
returned, the .asDoubleMatrix() returns null, which leads to the NullPointer 
Exception. I suspect that this happens because the int-constructor is called 
instead of the double-constructor [2], but different forms of casting the 
values to double or the dimensions to int did not help."

The issue appears to be that octave is somehow not identifying the correct 
method signature in org.octave.Matrix. This bug is repeatable in 
octave/example6, which should load an array of doubles from a file, but somehow 
these are read into octave as integers. It is unclear why.

Solution appears to be to make the typing explicit in the method signatures, 
rather than to let octave decide it for us,

Original issue reported on code.google.com by joseph.lizier on 29 Apr 2014 at 1:32

Add normalise option to MultiInfoCalculatorKraskov

The normalise option exists in MutualInfoCalculatorMultiVariateKraskov and 
others, but for some reason I didn't put it here.
It should be there for the Kraskov technique to work as documented.

Original issue reported on code.google.com by joseph.lizier on 20 Dec 2012 at 4:21

Add bias correction for local MI/TE values

Add these as an option that can be turned on in properties.

See description by Turney and Pantel (2010), which is cited in our 2014 
Frontiers paper on Local Active Info Storage


Original issue reported on code.google.com by joseph.lizier on 28 Jan 2014 at 5:02

Add a new demo with a GUI to take a data set and compute TE

Add a GUI -- possibly in python -- to take a data set, tell it which columns to 
compute TE between, select calculator, supply parameters, and compute TE or 
compute TE for a range of parameters and plot them

Original issue reported on code.google.com by joseph.lizier on 12 Feb 2015 at 5:32

Kraskov calculators to ensure they use actual k in joint space than assumed k

At the moment, our Kraskov calculators assume that they have k values within 
epsilon in the full joint space. Where the distribution is composed of delta 
functions (i.e. somewhat discretised) this won't be the case - there could be 
many more than k. As such, it may be more correct to use the actual k for each 
observation in contributing digamma(k) - 1/k, then averaging, rather than 
assume the parameter k.
This may add significantly to the runtime however so we could either:
- just issue a warning were this to occur, or
- track the actual k values in an array, then compute digamma(k) - 1/k once for 
each distinct value and add these in to the result.

Original issue reported on code.google.com by joseph.lizier on 7 Sep 2012 at 5:47

Switch kernel TE estimator to compute via a conditional MI

This will require constructing a kernel conditional MI calculator -- this 
should largely be done from the multivariate TE kernel.
This will allow other parameters to be set, e.g. source history length.

Original issue reported on code.google.com by joseph.lizier on 29 Sep 2014 at 5:18

Add random noise to data in Kraskov calculators

Large numbers of identical data cause problems for the Kraskov estimator (since 
they violate its underlying assumptions).
Kraskov's toolkit MILCA adds in a small amount of random noise to address this.

We should add a property to do this to all Kraskov calculators.
This has been done for the Kraskov MI calculator in r305, but we still need to 
add it to conditional MI calculators and check that it works ok for TE and AIS.

Original issue reported on code.google.com by joseph.lizier on 30 Apr 2014 at 2:16

Delete kraskov.TransferEntropyCalculatorKraskovByMulti

Can only do this once the multivariate TE classes have been replaced by one 
directly using a conditional TE calculator (since they depend on this class at 
the moment).

Original issue reported on code.google.com by joseph.lizier on 7 Apr 2014 at 4:12

Add NetLogo example

Add an example which calls the jar from NetLogo (I think this is possible)

Original issue reported on code.google.com by joseph.lizier on 16 Apr 2014 at 12:54

KSG calculators to add noise in by default

I had left noise addition out by default so that results were repeatable. But 
with a small value of noise this should still be ok. Adding noise will stop us 
from getting crazy errors when systems converge to fixed attractors and we get 
lots of the same data points coming in. This has happened with Rose I think in 
2014, and on email to Sussex in 2015.
Consider this to make sure I'm not missing any good reason not to do it; then 
do it.

Original issue reported on code.google.com by joseph.lizier on 14 Apr 2015 at 4:10

Kraskov Mutual info multivariate local MI did not average to MI for large time series

Reported by Ipek Özdemir in distribution 0.1.3 for 
infodynamics.measures.continuous.kraskov.MutualInfoCalculatorMultiVariateKraskov
 identified in unit test 
infodynamics.measures.continuous.kraskov.MutualInfoMultiVariateTester.testLocals
AverageCorrectly with a different number of time steps (10000).

This has been already fixed in later releases.


Original issue reported on code.google.com by joseph.lizier on 31 Jan 2014 at 10:57

Add dynamic exclusion time / Theiler window to Kraskov calculators

This can easily be done for single-time series estimations, by changing the 
code which avoids the same time step to avoid multiple time steps around that.
Presumably we should actually alter the psi(N) here too I think, since we don't 
have a full set of N points going into every neighbourhood count then.

To implement this for the ensemble method would be tricky, and I don't think we 
should try this in the first pass.

Original issue reported on code.google.com by joseph.lizier on 31 Oct 2014 at 3:54

Implement GPU code for Kraskov nearest neighbour search

Some tips on using aparapi for java here (suggested by Michael Wibral):

http://blogs.amd.com/developer/2011/09/14/i-dont-always-write-gpu-code-in-java-b
ut-when-i-do-i-like-to-use-aparapi/

Original issue reported on code.google.com by joseph.lizier on 7 Apr 2013 at 11:08

Alter MutualInfoCalculatorMultiVariate significance calculations to specify which variable should be reordered

The ChannelCalculators talk about reordering the source variable to evaluate 
the statistical significance, but the 
MutualInfoCalculatorMultiVariate.computeAverageLocalOfObservations(int[] 
newOrdering) method reorders the second variable (which is now the 
destination). This is because it used to have source variable as the second 
argument.

Should reorganise this code so that it follows a consistent interpretation 
(reordering the source variable - the first variable). This will necessitate 
shuffling the arguments around in the Kraskov calculators. They are currently 
consistent (MI gives right result, TE calculator uses the variables in the 
correct order) but I want this finalised.



Original issue reported on code.google.com by joseph.lizier on 6 Aug 2012 at 6:38

Think harder about the Exception handling design

Currently we just throw vanilla Exceptions for everything.
1. Should we have specific Exception types?
2. Should we think about whether just throwing them or doing something 
different is the best strategy?

Original issue reported on code.google.com by joseph.lizier on 17 Aug 2012 at 6:21

Linear Gaussian TE estimator should probe Exception from CholeskyDecomposition

Following discussion between Wibral, Priesemann and Lizier today, we realised 
that it would be more appropriate for the TE calculator to return specific 
results in different cases where an exception is raised by the Cholesky 
Decomposition (non-positive definite matrices).
These cases are:
1. Non-positive definite covariance matrix between dest past and source -> 
return zero
2. Non-positive definite covariance matrix between dest past and next value -> 
return zero
3. Non-positive definite between all values: a. if others were positive 
definite -> return infinity, else should not come to this point.



Original issue reported on code.google.com by [email protected] on 5 Jul 2013 at 5:31

KSG TE calculator should work as MI for history k = 0

What steps will reproduce the problem?
1. Set k_HISTORY property to 0.
2. Compute

This should function but instead crashes.

Can be fixed by implementing an underlying MI calculation if k = 0 is to be 
used. Could change this in the underlying conditional MI calculator in fact.

Original issue reported on code.google.com by joseph.lizier on 9 Jul 2015 at 12:40

Analytic Chi Square distribution have wrong "actual value"

The actualValue field is populated by the computed info theoretic value * 
observations, which is fine for a chiSquare distribution, but is not correct 
for TE or MI clients. (Should be just the computed info theoretic value)

Original issue reported on code.google.com by joseph.lizier on 28 Apr 2014 at 6:43

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.