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;
import lcsb.mapviewer.common.comparator.BooleanComparator;
import lcsb.mapviewer.common.comparator.DoubleComparator;
import lcsb.mapviewer.common.comparator.IntegerComparator;
import lcsb.mapviewer.common.comparator.SetComparator;
import lcsb.mapviewer.common.comparator.StringComparator;
import lcsb.mapviewer.common.comparator.StringListComparator;
import lcsb.mapviewer.common.comparator.StringSetComparator;
import lcsb.mapviewer.model.map.MiriamData;
import lcsb.mapviewer.model.map.MiriamDataComparator;
import lcsb.mapviewer.model.map.kinetics.SbmlKineticsComparator;
/**
......@@ -129,23 +131,14 @@ public class ReactionComparator extends Comparator<Reaction> {
return stringListComparator.compare(arg0.getSynonyms(), arg1.getSynonyms());
}
Set<String> hashCode1 = new HashSet<String>();
Set<String> hashCode2 = new HashSet<String>();
SetComparator<MiriamData> miriamDataSetComparator = new SetComparator<>(new MiriamDataComparator());
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);
}
StringSetComparator stringSetComparator = new StringSetComparator();
if (stringSetComparator.compare(hashCode1, hashCode2) != 0) {
logger.debug("Miriam dataset different");
return stringSetComparator.compare(hashCode1, hashCode2);
int 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;
}
if (arg0.getNodes().size() != arg1.getNodes().size()) {
......@@ -155,7 +148,7 @@ public class ReactionComparator extends Comparator<Reaction> {
for (int i = 0; i < arg0.getNodes().size(); i++) {
AbstractNode node0 = arg0.getNodes().get(i);
int status = -1;
status = -1;
for (int j = 0; j < arg1.getNodes().size(); j++) {
int tmpStatus = aNodeComparator.compare(node0, arg1.getNodes().get(j));
if (tmpStatus == 0) {
......
package lcsb.mapviewer.model.map.species;
import java.util.HashSet;
import java.util.Set;
import org.apache.log4j.Logger;
import lcsb.mapviewer.common.Comparator;
import lcsb.mapviewer.common.Configuration;
import lcsb.mapviewer.common.comparator.ColorComparator;
import lcsb.mapviewer.common.comparator.DoubleComparator;
import lcsb.mapviewer.common.comparator.SetComparator;
import lcsb.mapviewer.common.comparator.StringComparator;
import lcsb.mapviewer.common.comparator.StringListComparator;
import lcsb.mapviewer.common.comparator.StringSetComparator;
import lcsb.mapviewer.model.map.MiriamData;
import lcsb.mapviewer.model.map.MiriamDataComparator;
import lcsb.mapviewer.model.map.compartment.CompartmentComparator;
import lcsb.mapviewer.model.map.model.ElementSubmodelConnectionComparator;
......@@ -149,7 +147,6 @@ public class ElementComparator extends Comparator<Element> {
return stringComparator.compare(arg0.getFormula(), arg1.getFormula());
}
StringSetComparator stringSetComparator = new StringSetComparator();
StringListComparator stringListComparator = new StringListComparator();
if (stringListComparator.compare(arg0.getSynonyms(), arg1.getSynonyms()) != 0) {
......@@ -162,38 +159,14 @@ public class ElementComparator extends Comparator<Element> {
return stringListComparator.compare(arg0.getFormerSymbols(), arg1.getFormerSymbols());
}
Set<String> hashCode1 = new HashSet<>();
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);
SetComparator<MiriamData> miriamDataSetComparator = new SetComparator<>(new MiriamDataComparator());
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;
......
......@@ -295,4 +295,18 @@ public class ReactionComparatorTest {
assertTrue(comparator.compare(reaction1, reaction2) != 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