Changed my mind and pulled EmpiricalNullDistributionComputer in as being extended/implemented by ChannelCalculatorDiscrete. (This does make sense, since "extend" for an interface really means implements, it's not so much a child class). This necessitated removing the interface from explicitly being named in the definitions of the discrete MI and TE calculators since it's there implicitly.

This commit is contained in:
jlizier 2017-08-18 15:40:00 +10:00
parent 3e64fd28bd
commit 04351498aa
3 changed files with 6 additions and 9 deletions

View File

@ -18,6 +18,8 @@
package infodynamics.measures.discrete;
import infodynamics.utils.EmpiricalNullDistributionComputer;
/**
* A basic interface for calculators computing measures on a univariate <i>channel</i>
* for discrete (ie int[]) data from a
@ -40,8 +42,7 @@ package infodynamics.measures.discrete;
* <li>the average channel measure: {@link #computeAverageLocalOfObservations()};</li>
* <li>the distribution of channel measure values under the null hypothesis
* of no relationship between source and
* destination values (where the calculator also
* implements EmpiricalNullDistributionComputer</li>
* destination values: {@link #computeSignificance(int)};</li>
* <li>or other quantities as defined by child classes.</li>
* </ul>
* </li>
@ -53,7 +54,7 @@ package infodynamics.measures.discrete;
* @author Joseph Lizier (<a href="joseph.lizier at gmail.com">email</a>,
* <a href="http://lizier.me/joseph/">www</a>)
*/
public interface ChannelCalculatorDiscrete {
public interface ChannelCalculatorDiscrete extends EmpiricalNullDistributionComputer {
/**
* Initialise the calculator for (re-)use, with the existing

View File

@ -21,7 +21,6 @@ package infodynamics.measures.discrete;
import infodynamics.utils.AnalyticMeasurementDistribution;
import infodynamics.utils.AnalyticNullDistributionComputer;
import infodynamics.utils.ChiSquareMeasurementDistribution;
import infodynamics.utils.EmpiricalNullDistributionComputer;
import infodynamics.utils.MatrixUtils;
import infodynamics.utils.EmpiricalMeasurementDistribution;
import infodynamics.utils.RandomGenerator;
@ -65,8 +64,7 @@ Theory' (John Wiley & Sons, New York, 1991).</li>
* <a href="http://lizier.me/joseph/">www</a>)
*/
public class MutualInformationCalculatorDiscrete extends InfoMeasureCalculatorDiscrete
implements ChannelCalculatorDiscrete,
EmpiricalNullDistributionComputer, AnalyticNullDistributionComputer {
implements ChannelCalculatorDiscrete, AnalyticNullDistributionComputer {
private int timeDiff = 0;
private int[][] jointCount = null; // Count for (i[t-timeDiff], j[t]) tuples

View File

@ -21,7 +21,6 @@ package infodynamics.measures.discrete;
import infodynamics.utils.AnalyticMeasurementDistribution;
import infodynamics.utils.AnalyticNullDistributionComputer;
import infodynamics.utils.ChiSquareMeasurementDistribution;
import infodynamics.utils.EmpiricalNullDistributionComputer;
import infodynamics.utils.MathsUtils;
import infodynamics.utils.MatrixUtils;
import infodynamics.utils.EmpiricalMeasurementDistribution;
@ -88,8 +87,7 @@ import infodynamics.utils.RandomGenerator;
* <a href="http://lizier.me/joseph/">www</a>
*/
public class TransferEntropyCalculatorDiscrete extends ContextOfPastMeasureCalculatorDiscrete
implements ChannelCalculatorDiscrete,
EmpiricalNullDistributionComputer, AnalyticNullDistributionComputer {
implements ChannelCalculatorDiscrete, AnalyticNullDistributionComputer {
/**
* Counts of (source,dest_next,dest_embedded_past) tuples