-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;
- }
- }
- }
-}