Appending suffix "Discrete" to all discrete calculators. Step 5 -- refactoring within demos, and updating PDFs for demos

This commit is contained in:
joseph.lizier 2014-08-14 04:02:51 +00:00
parent 14645d0621
commit 091d66a4f9
19 changed files with 30 additions and 30 deletions

View File

@ -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();

View File

@ -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:

View File

@ -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:

View File

@ -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();

View File

@ -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();

View File

@ -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))), ...

View File

@ -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

View File

@ -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)

View File

@ -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);

View File

@ -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);

View File

@ -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.

View File

@ -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:

View File

@ -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:

View File

@ -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,