X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2Fmodels%2Ftreealign%2FExampleDistance2.java;fp=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2Fmodels%2Ftreealign%2FExampleDistance2.java;h=f58bcbb6b22bf1aa2f872119238545e83b99ae98;hb=65740880573a48adc758bec3939ece9d9ae104dd;hp=0000000000000000000000000000000000000000;hpb=71aa78b8a7d54e5aeb6b278310dfd735efb77477;p=jalview.git diff --git a/srcjar/fr/orsay/lri/varna/models/treealign/ExampleDistance2.java b/srcjar/fr/orsay/lri/varna/models/treealign/ExampleDistance2.java new file mode 100644 index 0000000..f58bcbb --- /dev/null +++ b/srcjar/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; + } + } + } +}