/// <summary> /// Calculation method. /// </summary> /// <param name="manager"> /// Intervals manager. /// </param> /// <param name="link"> /// Link of intervals in chain. /// </param> /// <returns> /// Normalized partial dependence coefficient. /// </returns> public override double Calculate(BinaryIntervalsManager manager, Link link) { if (manager.FirstElement.Equals(manager.SecondElement)) { return 0; } var partialDependenceCoefficient = new PartialDependenceCoefficient(); double k1 = partialDependenceCoefficient.Calculate(manager, link); return k1 * 2 * manager.PairsCount / manager.FirstChain.GetLength(); }
/// <summary> /// Calculation method for two congeneric chains. /// </summary> /// <param name="manager"> /// Intervals manager. /// </param> /// <param name="link"> /// Link of intervals in chain. /// </param> /// <returns> /// Characteristic value. /// </returns> public abstract double Calculate(BinaryIntervalsManager manager, Link link);
/// <summary> /// The get relation interval manager. /// </summary> /// <param name="first"> /// The first. /// </param> /// <param name="second"> /// The second. /// </param> /// <returns> /// The <see cref="BinaryIntervalsManager"/>. /// </returns> public BinaryIntervalsManager GetRelationIntervalsManager(int first, int second) { if (relationIntervalsManagers == null) { relationIntervalsManagers = new BinaryIntervalsManager[alphabet.Cardinality - 1, alphabet.Cardinality - 1]; } var intervalsManager = relationIntervalsManagers[first - 1, second - 1]; if (intervalsManager == null) { intervalsManager = new BinaryIntervalsManager(CongenericChain(first - 1), CongenericChain(second - 1)); relationIntervalsManagers[first - 1, second - 1] = intervalsManager; } return intervalsManager; }