mirror of https://github.com/jlizier/jidt
Appending suffix "Discrete" to all discrete calculators. Step 5 -- refactoring within demos, and updating PDFs for demos
This commit is contained in:
parent
14645d0621
commit
091d66a4f9
Binary file not shown.
|
|
@ -19,7 +19,7 @@
|
|||
package infodynamics.demos;
|
||||
|
||||
import infodynamics.utils.RandomGenerator;
|
||||
import infodynamics.measures.discrete.TransferEntropyCalculator;
|
||||
import infodynamics.measures.discrete.TransferEntropyCalculatorDiscrete;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -48,8 +48,8 @@ public class Example1TeBinaryData {
|
|||
int[] sourceArray2 = rg.generateRandomInts(arrayLengths, 2);
|
||||
|
||||
// Create a TE calculator and run it:
|
||||
TransferEntropyCalculator teCalc=
|
||||
new TransferEntropyCalculator(2, 1);
|
||||
TransferEntropyCalculatorDiscrete teCalc=
|
||||
new TransferEntropyCalculatorDiscrete(2, 1);
|
||||
teCalc.initialise();
|
||||
teCalc.addObservations(sourceArray, destArray);
|
||||
double result = teCalc.computeAverageLocalOfObservations();
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
package infodynamics.demos;
|
||||
|
||||
import infodynamics.utils.RandomGenerator;
|
||||
import infodynamics.measures.discrete.TransferEntropyCalculator;
|
||||
import infodynamics.measures.discrete.TransferEntropyCalculatorDiscrete;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -54,8 +54,8 @@ public class Example2TeMultidimBinaryData {
|
|||
System.arraycopy(twoDTimeSeries[0], 0, twoDTimeSeries[1], 1, variables - 1);
|
||||
|
||||
// Create a TE calculator and run it:
|
||||
TransferEntropyCalculator teCalc=
|
||||
new TransferEntropyCalculator(2, 1);
|
||||
TransferEntropyCalculatorDiscrete teCalc=
|
||||
new TransferEntropyCalculatorDiscrete(2, 1);
|
||||
teCalc.initialise();
|
||||
// Add observations of transfer across one cell to the right (j=1)
|
||||
// per time step:
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ package infodynamics.demos;
|
|||
|
||||
import infodynamics.utils.MatrixUtils;
|
||||
import infodynamics.utils.RandomGenerator;
|
||||
import infodynamics.measures.discrete.TransferEntropyCalculator;
|
||||
import infodynamics.measures.discrete.TransferEntropyCalculatorDiscrete;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -56,8 +56,8 @@ public class Example5TeBinaryMultivarTransfer {
|
|||
|
||||
// Create a TE calculator and run it.
|
||||
// Need to represent 4-state variables for the joint destination variable
|
||||
TransferEntropyCalculator teCalc=
|
||||
new TransferEntropyCalculator(4, 1);
|
||||
TransferEntropyCalculatorDiscrete teCalc=
|
||||
new TransferEntropyCalculatorDiscrete(4, 1);
|
||||
teCalc.initialise();
|
||||
|
||||
// We need to construct the joint values of the dest and source before we pass them in:
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ package infodynamics.demos;
|
|||
|
||||
import infodynamics.utils.MatrixUtils;
|
||||
import infodynamics.utils.RandomGenerator;
|
||||
import infodynamics.measures.discrete.TransferEntropyCalculator;
|
||||
import infodynamics.measures.discrete.TransferEntropyCalculatorDiscrete;
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
@ -58,8 +58,8 @@ public class Example8TeContinuousDataByBinning {
|
|||
int[] binnedDest = MatrixUtils.discretise(destArray, numDiscreteLevels);
|
||||
|
||||
// Create a TE calculator and run it:
|
||||
TransferEntropyCalculator teCalc=
|
||||
new TransferEntropyCalculator(numDiscreteLevels, 1);
|
||||
TransferEntropyCalculatorDiscrete teCalc=
|
||||
new TransferEntropyCalculatorDiscrete(numDiscreteLevels, 1);
|
||||
teCalc.initialise();
|
||||
teCalc.addObservations(binnedSource, binnedDest);
|
||||
double result = teCalc.computeAverageLocalOfObservations();
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ function [caStates, localValues] = plotLocalInfoMeasureForCA(neighbourhood, base
|
|||
if ((ischar(measureId) && (strcmpi('active', measureId) || strcmpi('all', measureId))) || ...
|
||||
(not(ischar(measureId)) && ((measureId == 0) || (measureId == -1))))
|
||||
% Compute active information storage
|
||||
activeCalc = javaObject('infodynamics.measures.discrete.ActiveInformationCalculator', base, measureParams.k);
|
||||
activeCalc = javaObject('infodynamics.measures.discrete.ActiveInformationCalculatorDiscrete', base, measureParams.k);
|
||||
activeCalc.initialise();
|
||||
activeCalc.addObservations(caStatesJInts);
|
||||
avActive = activeCalc.computeAverageLocalOfObservations();
|
||||
|
|
@ -172,7 +172,7 @@ function [caStates, localValues] = plotLocalInfoMeasureForCA(neighbourhood, base
|
|||
if (measureParams.j == 0)
|
||||
error('Cannot compute transfer entropy from a cell to itself (setting measureParams.j == 0)');
|
||||
end
|
||||
transferCalc = javaObject('infodynamics.measures.discrete.TransferEntropyCalculator', base, measureParams.k);
|
||||
transferCalc = javaObject('infodynamics.measures.discrete.TransferEntropyCalculatorDiscrete', base, measureParams.k);
|
||||
transferCalc.initialise();
|
||||
transferCalc.addObservations(caStatesJInts, measureParams.j);
|
||||
avTransfer = transferCalc.computeAverageLocalOfObservations();
|
||||
|
|
@ -205,7 +205,7 @@ function [caStates, localValues] = plotLocalInfoMeasureForCA(neighbourhood, base
|
|||
if (measureParams.j == 0)
|
||||
error('Cannot compute transfer entropy from a cell to itself (setting measureParams.j == 0)');
|
||||
end
|
||||
transferCalc = javaObject('infodynamics.measures.discrete.ConditionalTransferEntropyCalculator', ...
|
||||
transferCalc = javaObject('infodynamics.measures.discrete.ConditionalTransferEntropyCalculatorDiscrete', ...
|
||||
base, measureParams.k, neighbourhood - 2);
|
||||
transferCalc.initialise();
|
||||
% Offsets of all parents can be included here - even 0 and j, these will be eliminated internally:
|
||||
|
|
@ -238,7 +238,7 @@ function [caStates, localValues] = plotLocalInfoMeasureForCA(neighbourhood, base
|
|||
if ((ischar(measureId) && (strcmpi('separable', measureId) || strcmpi('all', measureId))) || ...
|
||||
(not(ischar(measureId)) && ((measureId == 3) || (measureId == -1))))
|
||||
% Compute separable information
|
||||
separableCalc = javaObject('infodynamics.measures.discrete.SeparableInfoCalculator', ...
|
||||
separableCalc = javaObject('infodynamics.measures.discrete.SeparableInfoCalculatorDiscrete', ...
|
||||
base, measureParams.k, neighbourhood - 1);
|
||||
separableCalc.initialise();
|
||||
% Offsets of all parents can be included here - even 0 and j, these will be eliminated internally:
|
||||
|
|
@ -271,7 +271,7 @@ function [caStates, localValues] = plotLocalInfoMeasureForCA(neighbourhood, base
|
|||
if ((ischar(measureId) && (strcmpi('entropy', measureId) || strcmpi('all', measureId))) || ...
|
||||
(not(ischar(measureId)) && ((measureId == 4) || (measureId == -1))))
|
||||
% Compute entropy
|
||||
entropyCalc = javaObject('infodynamics.measures.discrete.EntropyCalculator', ...
|
||||
entropyCalc = javaObject('infodynamics.measures.discrete.EntropyCalculatorDiscrete', ...
|
||||
base);
|
||||
entropyCalc.initialise();
|
||||
entropyCalc.addObservations(caStatesJInts);
|
||||
|
|
@ -303,7 +303,7 @@ function [caStates, localValues] = plotLocalInfoMeasureForCA(neighbourhood, base
|
|||
if ((ischar(measureId) && (strcmpi('entropyrate', measureId) || strcmpi('all', measureId))) || ...
|
||||
(not(ischar(measureId)) && ((measureId == 5) || (measureId == -1))))
|
||||
% Compute entropy rate
|
||||
entRateCalc = javaObject('infodynamics.measures.discrete.EntropyRateCalculator', base, measureParams.k);
|
||||
entRateCalc = javaObject('infodynamics.measures.discrete.EntropyRateCalculatorDiscrete', base, measureParams.k);
|
||||
entRateCalc.initialise();
|
||||
entRateCalc.addObservations(caStatesJInts);
|
||||
avEntRate = entRateCalc.computeAverageLocalOfObservations();
|
||||
|
|
@ -333,7 +333,7 @@ function [caStates, localValues] = plotLocalInfoMeasureForCA(neighbourhood, base
|
|||
if ((ischar(measureId) && (strcmpi('excess', measureId) || strcmpi('all', measureId))) || ...
|
||||
(not(ischar(measureId)) && ((measureId == 6) || (measureId == -1))))
|
||||
% Compute excess entropy
|
||||
excessEntropyCalc = javaObject('infodynamics.measures.discrete.PredictiveInformationCalculator', base, measureParams.k);
|
||||
excessEntropyCalc = javaObject('infodynamics.measures.discrete.PredictiveInformationCalculatorDiscrete', base, measureParams.k);
|
||||
excessEntropyCalc.initialise();
|
||||
excessEntropyCalc.addObservations(caStatesJInts);
|
||||
avExcessEnt = excessEntropyCalc.computeAverageLocalOfObservations();
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -95,7 +95,7 @@ function transferWithSourceMemory(savePlot)
|
|||
y = [rand() < 0.5; x1(1:N)];
|
||||
|
||||
% Compute TEs
|
||||
teCalc = javaObject('infodynamics.measures.discrete.TransferEntropyCalculator', 4, 1);
|
||||
teCalc = javaObject('infodynamics.measures.discrete.TransferEntropyCalculatorDiscrete', 4, 1);
|
||||
teCalc.initialise();
|
||||
teCalc.addObservations(x, y);
|
||||
teXnToYnplus1(deltaIndex) = teCalc.computeAverageLocalOfObservations();
|
||||
|
|
@ -104,7 +104,7 @@ function transferWithSourceMemory(savePlot)
|
|||
teXnminus1ToYnplus1(deltaIndex) = teCalc.computeAverageLocalOfObservations();
|
||||
|
||||
% Compute MITs using a conditional TE calculator, adding the past of the source to the conditionals
|
||||
compTeCalc = javaObject('infodynamics.measures.discrete.ConditionalTransferEntropyCalculator', 4, 1, 1);
|
||||
compTeCalc = javaObject('infodynamics.measures.discrete.ConditionalTransferEntropyCalculatorDiscrete', 4, 1, 1);
|
||||
compTeCalc.initialise();
|
||||
% We need to additionally condition on the past of X:
|
||||
compTeCalc.addObservations(octaveToJavaIntArray(x(2:length(x))), ...
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -41,7 +41,7 @@ function [mis] = checkMiDiscreteNullDistribution(repeats, observations, bias1, b
|
|||
% 1. We can let the toolkit compute the distribution of MIs for us,
|
||||
% by first supplying the variables with the correct bias.
|
||||
% It is NOT recommended to use this approach however, as described in the header comments.
|
||||
miCalc=javaObject('infodynamics.measures.discrete.MutualInformationCalculator', 2);
|
||||
miCalc=javaObject('infodynamics.measures.discrete.MutualInformationCalculatorDiscrete', 2);
|
||||
x = [zeros(1,observations*bias1) ones(1,observations*(1-bias1))]; % Create data with exact bias
|
||||
y = [zeros(1,observations*bias2) ones(1,observations*(1-bias2))]; % Create data with exact bias
|
||||
fprintf('Creating surrogates from x and y of lengths %d and %d with biases %.3f and %.3f \n', length(x), length(y), sum(x == 0)/length(x), sum(y == 0)/length(y));
|
||||
|
|
@ -53,7 +53,7 @@ function [mis] = checkMiDiscreteNullDistribution(repeats, observations, bias1, b
|
|||
% OR
|
||||
% 2. We could compute the bootstrapped distribution of MIs by bootstrapping ourselves:
|
||||
mis = zeros(1, repeats);
|
||||
miCalc=javaObject('infodynamics.measures.discrete.MutualInformationCalculator', 2);
|
||||
miCalc=javaObject('infodynamics.measures.discrete.MutualInformationCalculatorDiscrete', 2);
|
||||
for s = 1 : repeats
|
||||
x = (rand(1,observations) < bias1)*1; % Create data with sampled bias
|
||||
y = (rand(1,observations) < bias2)*1; % Create data with sampled bias
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -46,7 +46,7 @@ function teValues = runTentMap()
|
|||
tic;
|
||||
|
||||
% Construct for binary values, k=1 history length
|
||||
teCalc=javaObject('infodynamics.measures.discrete.TransferEntropyCalculator', 2, 1);
|
||||
teCalc=javaObject('infodynamics.measures.discrete.TransferEntropyCalculatorDiscrete', 2, 1);
|
||||
|
||||
teValues = zeros(numberOfRuns, length(couplings));
|
||||
for couplingIndex = 1:length(couplings)
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ sourceArray=(rand(100,1)>0.5)*1;
|
|||
destArray = [0; sourceArray(1:99)];
|
||||
sourceArray2=(rand(100,1)>0.5)*1;
|
||||
% Create a TE calculator and run it:
|
||||
teCalc=javaObject('infodynamics.measures.discrete.TransferEntropyCalculator', 2, 1);
|
||||
teCalc=javaObject('infodynamics.measures.discrete.TransferEntropyCalculatorDiscrete', 2, 1);
|
||||
teCalc.initialise();
|
||||
% Since we have simple arrays of ints, we can directly pass these in:
|
||||
teCalc.addObservations(sourceArray, destArray);
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ twoDTimeSeriesOctave(2, :) = [twoDTimeSeriesOctave(1,100), twoDTimeSeriesOctave(
|
|||
twoDTimeSeriesJavaInt = octaveToJavaIntMatrix(twoDTimeSeriesOctave);
|
||||
|
||||
% Create a TE calculator and run it:
|
||||
teCalc=javaObject('infodynamics.measures.discrete.TransferEntropyCalculator', 2, 1);
|
||||
teCalc=javaObject('infodynamics.measures.discrete.TransferEntropyCalculatorDiscrete', 2, 1);
|
||||
teCalc.initialise();
|
||||
% Add observations of transfer across one cell to the right per time step:
|
||||
teCalc.addObservations(twoDTimeSeriesJavaInt, 1);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ sourceArray2=(rand(numObservations,2)>0.5)*1;
|
|||
% and an XOR of the two bits of the source in bit 2:
|
||||
destArray = [0, 0; sourceArray(1:numObservations-1, 1), xor(sourceArray(1:numObservations-1, 1), sourceArray(1:numObservations-1, 2))];
|
||||
% Create a TE calculator and run it:
|
||||
teCalc=javaObject('infodynamics.measures.discrete.TransferEntropyCalculator', 4, 1);
|
||||
teCalc=javaObject('infodynamics.measures.discrete.TransferEntropyCalculatorDiscrete', 4, 1);
|
||||
teCalc.initialise();
|
||||
% We need to construct the joint values of the dest and source before we pass them in,
|
||||
% and need to use the matrix conversion routine when calling from Matlab/Octave:
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -34,7 +34,7 @@ destArray = [0] + sourceArray[0:99];
|
|||
sourceArray2 = [random.randint(0,1) for r in xrange(100)]
|
||||
|
||||
# Create a TE calculator and run it:
|
||||
teCalcClass = JPackage("infodynamics.measures.discrete").TransferEntropyCalculator
|
||||
teCalcClass = JPackage("infodynamics.measures.discrete").TransferEntropyCalculatorDiscrete
|
||||
teCalc = teCalcClass(2,1)
|
||||
teCalc.initialise()
|
||||
# Since we have simple arrays of ints, we can directly pass these in:
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ twoDTimeSeriesPython.append(row2)
|
|||
twoDTimeSeriesJavaInt = JArray(JInt, 2)(twoDTimeSeriesPython); # 2 indicating 2D array
|
||||
|
||||
# Create a TE calculator and run it:
|
||||
teCalcClass = JPackage("infodynamics.measures.discrete").TransferEntropyCalculator
|
||||
teCalcClass = JPackage("infodynamics.measures.discrete").TransferEntropyCalculatorDiscrete
|
||||
teCalc = teCalcClass(2,1)
|
||||
teCalc.initialise()
|
||||
# Add observations of transfer across one cell to the right per time step:
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ for j in range(1,numObservations):
|
|||
destArray.append([sourceArray[j-1][0], xor(sourceArray[j-1][0], sourceArray[j-1][1])])
|
||||
|
||||
# Create a TE calculator and run it:
|
||||
teCalcClass = JPackage("infodynamics.measures.discrete").TransferEntropyCalculator
|
||||
teCalcClass = JPackage("infodynamics.measures.discrete").TransferEntropyCalculatorDiscrete
|
||||
teCalc = teCalcClass(4,1)
|
||||
teCalc.initialise()
|
||||
# We need to construct the joint values of the dest and source before we pass them in,
|
||||
|
|
|
|||
Loading…
Reference in New Issue