diff --git a/src/main/java/at/medunigraz/imi/bst/trec/Experimenter.java b/src/main/java/at/medunigraz/imi/bst/trec/Experimenter.java index 6587816..56ede7f 100644 --- a/src/main/java/at/medunigraz/imi/bst/trec/Experimenter.java +++ b/src/main/java/at/medunigraz/imi/bst/trec/Experimenter.java @@ -1,10 +1,10 @@ package at.medunigraz.imi.bst.trec; import java.io.File; -import java.util.HashSet; import java.util.Set; import at.medunigraz.imi.bst.trec.experiment.Experiment; +import at.medunigraz.imi.bst.trec.experiment.ExperimentsBuilder; import at.medunigraz.imi.bst.trec.model.Gene; import at.medunigraz.imi.bst.trec.query.ElasticSearchQuery; import at.medunigraz.imi.bst.trec.query.GeneExpanderQueryDecorator; @@ -14,19 +14,21 @@ public class Experimenter { public static void main(String[] args) { - Set experiments = new HashSet<>(); - - final File pmTemplate = new File(Experimenter.class.getResource("/templates/must-match-gene.json").getFile()); + final File boostTemplate = new File(Experimenter.class.getResource("/templates/boost-extra.json").getFile()); Query baselineDecorator = new WordRemovalQueryDecorator( - new TemplateQueryDecorator(pmTemplate, new ElasticSearchQuery("trec"))); - Experiment base = Experiment.create().withId("topics2017-pmid").withDecorator(baselineDecorator); - experiments.add(base); - + new TemplateQueryDecorator(boostTemplate, new ElasticSearchQuery("trec"))); + Gene.Field[] expandTo = { Gene.Field.SYMBOL, Gene.Field.DESCRIPTION }; Query geneDecorator = new WordRemovalQueryDecorator(new GeneExpanderQueryDecorator(expandTo, - new TemplateQueryDecorator(pmTemplate, new ElasticSearchQuery("trec")))); - experiments.add(Experiment.create(base).withDecorator(geneDecorator)); + new TemplateQueryDecorator(boostTemplate, new ElasticSearchQuery("trec")))); + + ExperimentsBuilder builder = new ExperimentsBuilder(); + + builder.newExperiment().withId("topics2017-pmid").withDecorator(baselineDecorator); + builder.newExperiment().withId("topics2017-pmid").withDecorator(geneDecorator); + + Set experiments = builder.build(); for (Experiment exp : experiments) { exp.start(); diff --git a/src/main/java/at/medunigraz/imi/bst/trec/RunnerDemo.java b/src/main/java/at/medunigraz/imi/bst/trec/RunnerDemo.java index 995d1d6..d4dec46 100644 --- a/src/main/java/at/medunigraz/imi/bst/trec/RunnerDemo.java +++ b/src/main/java/at/medunigraz/imi/bst/trec/RunnerDemo.java @@ -1,36 +1,32 @@ package at.medunigraz.imi.bst.trec; import java.io.File; -import java.util.HashSet; import java.util.Set; import at.medunigraz.imi.bst.trec.experiment.Experiment; -import at.medunigraz.imi.bst.trec.model.Gene; +import at.medunigraz.imi.bst.trec.experiment.ExperimentsBuilder; import at.medunigraz.imi.bst.trec.query.ElasticSearchQuery; import at.medunigraz.imi.bst.trec.query.Query; import at.medunigraz.imi.bst.trec.query.TemplateQueryDecorator; import at.medunigraz.imi.bst.trec.query.WordRemovalQueryDecorator; public class RunnerDemo { - public static void main(String[] args) { - Set bestExperiments = new HashSet<>(); - - + public static void main(String[] args) { final File pmTemplate = new File(RunnerDemo.class.getResource("/templates/boost-extra.json").getFile()); - Gene.Field[] expandTo = { Gene.Field.SYMBOL, Gene.Field.DESCRIPTION }; Query pmDecorator = new WordRemovalQueryDecorator( new TemplateQueryDecorator(pmTemplate, new ElasticSearchQuery("trec"))); - bestExperiments.add(Experiment.create().withId("example-pmid").withDecorator(pmDecorator)); - bestExperiments.add(Experiment.create().withId("extra-pmid").withDecorator(pmDecorator)); - bestExperiments.add(Experiment.create().withId("topics2017-pmid").withDecorator(pmDecorator)); - - final File ctTemplate = new File(RunnerDemo.class.getResource("/templates/baseline-ct.json").getFile()); Query ctDecorator = new TemplateQueryDecorator(ctTemplate, new ElasticSearchQuery("clinicaltrials")); - bestExperiments.add(Experiment.create().withId("extra-ct").withDecorator(ctDecorator)); + ExperimentsBuilder builder = new ExperimentsBuilder(); + + builder.newExperiment().withId("example-pmid").withDecorator(pmDecorator); + builder.newExperiment().withId("extra-pmid").withDecorator(pmDecorator); + builder.newExperiment().withId("topics2017-pmid").withDecorator(pmDecorator); + builder.newExperiment().withId("extra-ct").withDecorator(ctDecorator); + Set bestExperiments = builder.build(); for (Experiment exp : bestExperiments) { exp.start(); diff --git a/src/main/java/at/medunigraz/imi/bst/trec/experiment/Experiment.java b/src/main/java/at/medunigraz/imi/bst/trec/experiment/Experiment.java index fd93b08..8e24e56 100644 --- a/src/main/java/at/medunigraz/imi/bst/trec/experiment/Experiment.java +++ b/src/main/java/at/medunigraz/imi/bst/trec/experiment/Experiment.java @@ -25,31 +25,10 @@ public class Experiment extends Thread { private String id; private Query decorator; - private Experiment() { - } - - public static Experiment create() { - return new Experiment(); - } - - public static Experiment create(Experiment base) { - return new Experiment().withId(base.id).withDecorator(base.decorator); - } - - public Experiment withId(String id) { - this.id = id; - return this; - } - - public Experiment withDecorator(Query decorator) { - this.decorator = decorator; - return this; - } - @Override public void run() { final String collection = id.substring(0, id.indexOf('-')); - + final String name = id + " with decorator " + decorator.getName(); LOG.info("Running collection " + name + "..."); @@ -84,7 +63,25 @@ public void run() { csw.write(te.getMetrics()); csw.close(); - LOG.info("Collection " + name + " finished. NDCG: " + te.getNDCG()); + LOG.info("Got NDCG: " + te.getNDCG() + " for collection " + name); LOG.trace(te.getMetricsByTopic("all")); } + + public void setExperimentId(String id) { + this.id = id; + } + + public void setDecorator(Query decorator) { + this.decorator = decorator; + } + + public String getExperimentId() { + return id; + } + + public Query getDecorator() { + return decorator; + } + + } diff --git a/src/main/java/at/medunigraz/imi/bst/trec/experiment/ExperimentsBuilder.java b/src/main/java/at/medunigraz/imi/bst/trec/experiment/ExperimentsBuilder.java new file mode 100644 index 0000000..2f61fa9 --- /dev/null +++ b/src/main/java/at/medunigraz/imi/bst/trec/experiment/ExperimentsBuilder.java @@ -0,0 +1,50 @@ +package at.medunigraz.imi.bst.trec.experiment; + +import java.util.HashSet; +import java.util.Set; + +import at.medunigraz.imi.bst.trec.query.Query; + +public class ExperimentsBuilder { + + private Set experiments = new HashSet<>(); + + private Experiment buildingExp = null; + + public ExperimentsBuilder() { + } + + public ExperimentsBuilder newExperiment() { + addBuilding(); + buildingExp = new Experiment(); + return this; + } + + public ExperimentsBuilder newExperiment(Experiment base) { + buildingExp = new Experiment(); + buildingExp.setExperimentId(base.getExperimentId()); + buildingExp.setDecorator(base.getDecorator()); + return this; + } + + public ExperimentsBuilder withId(String id) { + buildingExp.setExperimentId(id); + return this; + } + + public ExperimentsBuilder withDecorator(Query decorator) { + buildingExp.setDecorator(decorator); + return this; + } + + public Set build() { + addBuilding(); + return experiments; + } + + private void addBuilding() { + if (buildingExp != null) { + this.experiments.add(buildingExp); + } + } +}