--- /dev/null
+package fr.orsay.lri.varna.models.treealign;
+
+
+/**
+ * This distance is such that a substitution costs nothing.
+ *
+ * @author Raphael Champeimont
+ *
+ */
+public class ExampleDistance2 implements TreeAlignLabelDistanceSymmetric<RNANodeValue2> {
+ 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;
+ }
+ }
+ }
+}