Skip to content
Snippets Groups Projects
Commit 3515a9bc authored by Piotr Gawron's avatar Piotr Gawron
Browse files

miriam data comparator implemented

parent abdbf3dd
No related branches found
No related tags found
1 merge request!708Resolve "add handling of annotations for model"
package lcsb.mapviewer.model.map;
import lcsb.mapviewer.common.Comparator;
import lcsb.mapviewer.common.comparator.StringComparator;
/**
* Comparator of {@link MiriamData} object.
*
* @author Piotr Gawron
*
*/
public class MiriamDataComparator extends Comparator<MiriamData> {
/**
* Default constructor.
*/
public MiriamDataComparator() {
super(MiriamData.class);
}
@Override
protected int internalCompare(MiriamData arg0, MiriamData arg1) {
StringComparator stringComparator = new StringComparator();
if (stringComparator.compare(arg0.getResource(), arg1.getResource()) != 0) {
return stringComparator.compare(arg0.getResource(), arg1.getResource());
}
if (arg0.getDataType() != arg1.getDataType()) {
return -1;
}
if (arg0.getRelationType() != arg1.getRelationType()) {
return -1;
}
if (arg0.getAnnotator() != arg1.getAnnotator()) {
return -1;
}
return 0;
}
}
...@@ -10,10 +10,12 @@ import lcsb.mapviewer.common.Configuration; ...@@ -10,10 +10,12 @@ import lcsb.mapviewer.common.Configuration;
import lcsb.mapviewer.common.comparator.BooleanComparator; import lcsb.mapviewer.common.comparator.BooleanComparator;
import lcsb.mapviewer.common.comparator.DoubleComparator; import lcsb.mapviewer.common.comparator.DoubleComparator;
import lcsb.mapviewer.common.comparator.IntegerComparator; import lcsb.mapviewer.common.comparator.IntegerComparator;
import lcsb.mapviewer.common.comparator.SetComparator;
import lcsb.mapviewer.common.comparator.StringComparator; import lcsb.mapviewer.common.comparator.StringComparator;
import lcsb.mapviewer.common.comparator.StringListComparator; import lcsb.mapviewer.common.comparator.StringListComparator;
import lcsb.mapviewer.common.comparator.StringSetComparator; import lcsb.mapviewer.common.comparator.StringSetComparator;
import lcsb.mapviewer.model.map.MiriamData; import lcsb.mapviewer.model.map.MiriamData;
import lcsb.mapviewer.model.map.MiriamDataComparator;
import lcsb.mapviewer.model.map.kinetics.SbmlKineticsComparator; import lcsb.mapviewer.model.map.kinetics.SbmlKineticsComparator;
/** /**
...@@ -129,23 +131,14 @@ public class ReactionComparator extends Comparator<Reaction> { ...@@ -129,23 +131,14 @@ public class ReactionComparator extends Comparator<Reaction> {
return stringListComparator.compare(arg0.getSynonyms(), arg1.getSynonyms()); return stringListComparator.compare(arg0.getSynonyms(), arg1.getSynonyms());
} }
Set<String> hashCode1 = new HashSet<String>(); SetComparator<MiriamData> miriamDataSetComparator = new SetComparator<>(new MiriamDataComparator());
Set<String> hashCode2 = new HashSet<String>();
for (MiriamData md : arg0.getMiriamData()) { int status = miriamDataSetComparator.compare(arg0.getMiriamData(), arg1.getMiriamData());
String hash = md.getRelationType() + " " + md.getDataType() + " " + md.getResource(); if (status != 0) {
hashCode1.add(hash); logger.debug("miriam data different");
} logger.debug(arg0.getMiriamData());
logger.debug(arg1.getMiriamData());
for (MiriamData md : arg1.getMiriamData()) { return status;
String hash = md.getRelationType() + " " + md.getDataType() + " " + md.getResource();
hashCode2.add(hash);
}
StringSetComparator stringSetComparator = new StringSetComparator();
if (stringSetComparator.compare(hashCode1, hashCode2) != 0) {
logger.debug("Miriam dataset different");
return stringSetComparator.compare(hashCode1, hashCode2);
} }
if (arg0.getNodes().size() != arg1.getNodes().size()) { if (arg0.getNodes().size() != arg1.getNodes().size()) {
...@@ -155,7 +148,7 @@ public class ReactionComparator extends Comparator<Reaction> { ...@@ -155,7 +148,7 @@ public class ReactionComparator extends Comparator<Reaction> {
for (int i = 0; i < arg0.getNodes().size(); i++) { for (int i = 0; i < arg0.getNodes().size(); i++) {
AbstractNode node0 = arg0.getNodes().get(i); AbstractNode node0 = arg0.getNodes().get(i);
int status = -1; status = -1;
for (int j = 0; j < arg1.getNodes().size(); j++) { for (int j = 0; j < arg1.getNodes().size(); j++) {
int tmpStatus = aNodeComparator.compare(node0, arg1.getNodes().get(j)); int tmpStatus = aNodeComparator.compare(node0, arg1.getNodes().get(j));
if (tmpStatus == 0) { if (tmpStatus == 0) {
......
package lcsb.mapviewer.model.map.species; package lcsb.mapviewer.model.map.species;
import java.util.HashSet;
import java.util.Set;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import lcsb.mapviewer.common.Comparator; import lcsb.mapviewer.common.Comparator;
import lcsb.mapviewer.common.Configuration; import lcsb.mapviewer.common.Configuration;
import lcsb.mapviewer.common.comparator.ColorComparator; import lcsb.mapviewer.common.comparator.ColorComparator;
import lcsb.mapviewer.common.comparator.DoubleComparator; import lcsb.mapviewer.common.comparator.DoubleComparator;
import lcsb.mapviewer.common.comparator.SetComparator;
import lcsb.mapviewer.common.comparator.StringComparator; import lcsb.mapviewer.common.comparator.StringComparator;
import lcsb.mapviewer.common.comparator.StringListComparator; import lcsb.mapviewer.common.comparator.StringListComparator;
import lcsb.mapviewer.common.comparator.StringSetComparator;
import lcsb.mapviewer.model.map.MiriamData; import lcsb.mapviewer.model.map.MiriamData;
import lcsb.mapviewer.model.map.MiriamDataComparator;
import lcsb.mapviewer.model.map.compartment.CompartmentComparator; import lcsb.mapviewer.model.map.compartment.CompartmentComparator;
import lcsb.mapviewer.model.map.model.ElementSubmodelConnectionComparator; import lcsb.mapviewer.model.map.model.ElementSubmodelConnectionComparator;
...@@ -149,7 +147,6 @@ public class ElementComparator extends Comparator<Element> { ...@@ -149,7 +147,6 @@ public class ElementComparator extends Comparator<Element> {
return stringComparator.compare(arg0.getFormula(), arg1.getFormula()); return stringComparator.compare(arg0.getFormula(), arg1.getFormula());
} }
StringSetComparator stringSetComparator = new StringSetComparator();
StringListComparator stringListComparator = new StringListComparator(); StringListComparator stringListComparator = new StringListComparator();
if (stringListComparator.compare(arg0.getSynonyms(), arg1.getSynonyms()) != 0) { if (stringListComparator.compare(arg0.getSynonyms(), arg1.getSynonyms()) != 0) {
...@@ -162,38 +159,14 @@ public class ElementComparator extends Comparator<Element> { ...@@ -162,38 +159,14 @@ public class ElementComparator extends Comparator<Element> {
return stringListComparator.compare(arg0.getFormerSymbols(), arg1.getFormerSymbols()); return stringListComparator.compare(arg0.getFormerSymbols(), arg1.getFormerSymbols());
} }
Set<String> hashCode1 = new HashSet<>(); SetComparator<MiriamData> miriamDataSetComparator = new SetComparator<>(new MiriamDataComparator());
Set<String> hashCode2 = new HashSet<>();
if (arg0.getMiriamData().size() != arg1.getMiriamData().size()) {
logger.debug(
"different number of annotations: " + arg0.getMiriamData().size() + ", " + arg1.getMiriamData().size());
return ((Integer) arg0.getMiriamData().size()).compareTo(arg1.getMiriamData().size());
}
for (MiriamData md : arg0.getMiriamData()) {
String hash = md.getRelationType() + " " + md.getDataType() + " " + md.getResource();
hashCode1.add(hash);
}
for (MiriamData md : arg1.getMiriamData()) {
String hash = md.getRelationType() + " " + md.getDataType() + " " + md.getResource();
hashCode2.add(hash);
}
if (stringSetComparator.compare(hashCode1, hashCode2) != 0) {
logger.debug("different annotations: ");
logger.debug("A:");
for (String string : hashCode1) {
logger.debug("|" + string + "|");
}
logger.debug("B:");
for (String string : hashCode2) {
logger.debug("|" + string + "|");
}
logger.debug("--");
return stringSetComparator.compare(hashCode1, hashCode2);
status = miriamDataSetComparator.compare(arg0.getMiriamData(), arg1.getMiriamData());
if (status != 0) {
logger.debug("miriam data different");
logger.debug(arg0.getMiriamData());
logger.debug(arg1.getMiriamData());
return status;
} }
return 0; return 0;
......
...@@ -295,4 +295,18 @@ public class ReactionComparatorTest { ...@@ -295,4 +295,18 @@ public class ReactionComparatorTest {
assertTrue(comparator.compare(reaction1, reaction2) != 0); assertTrue(comparator.compare(reaction1, reaction2) != 0);
assertTrue(comparator.compare(reaction2, reaction1) != 0); assertTrue(comparator.compare(reaction2, reaction1) != 0);
} }
@Test
public void testDifferentMiriamData() {
Reaction reaction1 = createReaction();
Reaction reaction2 = createReaction();
reaction1.addMiriamData(new MiriamData(MiriamType.HGNC, "SNCA"));
assertTrue(comparator.compare(reaction1, reaction2) != 0);
assertTrue(comparator.compare(reaction2, reaction1) != 0);
reaction2.addMiriamData(new MiriamData(MiriamType.HGNC, "SNCA"));
assertEquals(0, comparator.compare(reaction1, reaction2));
assertEquals(0, comparator.compare(reaction2, reaction1));
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment