X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src2%2Ffr%2Forsay%2Flri%2Fvarna%2Fmodels%2Ftreealign%2FExampleDistance2.java;fp=src2%2Ffr%2Forsay%2Flri%2Fvarna%2Fmodels%2Ftreealign%2FExampleDistance2.java;h=f58bcbb6b22bf1aa2f872119238545e83b99ae98;hb=9f55415c9f8005e9dcd8243453883ff853fd5b76;hp=0000000000000000000000000000000000000000;hpb=d8e8c742b864e58406d13e21d124699a26b6492f;p=jalview.git diff --git a/src2/fr/orsay/lri/varna/models/treealign/ExampleDistance2.java b/src2/fr/orsay/lri/varna/models/treealign/ExampleDistance2.java new file mode 100644 index 0000000..f58bcbb --- /dev/null +++ b/src2/fr/orsay/lri/varna/models/treealign/ExampleDistance2.java @@ -0,0 +1,39 @@ +package fr.orsay.lri.varna.models.treealign; + + +/** + * This distance is such that a substitution costs nothing. + * + * @author Raphael Champeimont + * + */ +public class ExampleDistance2 implements TreeAlignLabelDistanceSymmetric { + public double f(RNANodeValue2 v1, RNANodeValue2 v2) { + if (v1 == null) { + if (v2 == null) { + return 0; + } else if (!v2.isSingleNode()) { // v2 is a list of bases + return v2.getNodes().size(); + } else { // v2 is a single node + return 2; + } + } else if (!v1.isSingleNode()) { // v1 is a list of bases + if (v2 == null) { + return v1.getNodes().size(); + } else if (!v2.isSingleNode()) { // v2 is a list of bases + return Math.abs(v2.getNodes().size() - v1.getNodes().size()); + } else { // v2 is a single node + return 2 + v1.getNodes().size(); + } + } else { // v1 is a single node + // all the same as when v1 == null + if (v2 == null) { + return 2; + } else if (!v2.isSingleNode()) { // v2 is a list of bases + return 2 + v2.getNodes().size(); + } else { // v2 is a single node + return 0; + } + } + } +}