Skip to content

Commit 46af1a2

Browse files
committed
Edge slider and combo box in creation dialog.
1 parent a68aaf0 commit 46af1a2

24 files changed

+349
-78
lines changed

EnrichmentMapIntegrationTest/src/test/java/org/baderlab/csplugins/enrichmentmap/integration/task/CreateEnrichmentMapTaskTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.baderlab.csplugins.enrichmentmap.integration.TestUtils;
1919
import org.baderlab.csplugins.enrichmentmap.model.DataSetFiles;
2020
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters;
21+
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters.EdgeStrategy;
2122
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters.SimilarityMetric;
2223
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet.Method;
2324
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentResultFilterParams.NESFilter;
@@ -63,7 +64,9 @@ public void testEnrichmentMapBuildMapTask() throws Exception {
6364
String rankFile = TestUtils.createTempFile(PATH, "FakeRank.rnk").getAbsolutePath();
6465

6566
PropertyManager pm = new PropertyManager();
66-
EMCreationParameters params = new EMCreationParameters("EM1_", pm.getPvalue(), pm.getQvalue(), NESFilter.ALL, Optional.empty(), SimilarityMetric.JACCARD, pm.getJaccardCutoff(), pm.getCombinedConstant());
67+
EMCreationParameters params =
68+
new EMCreationParameters("EM1_", pm.getPvalue(), pm.getQvalue(), NESFilter.ALL, Optional.empty(), SimilarityMetric.JACCARD,
69+
pm.getJaccardCutoff(), pm.getCombinedConstant(), EdgeStrategy.COMPOUND);
6770

6871
DataSetFiles dataset1files = new DataSetFiles();
6972
dataset1files.setGMTFileName(geneSetsFile);

EnrichmentMapIntegrationTest/src/test/java/org/baderlab/csplugins/enrichmentmap/integration/task/Protocol1Test.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public void testProtocol1() throws Exception {
3939
task.pvalue = 1.0;
4040
task.qvalue = 0.00001;
4141
task.similaritycutoff = 0.25;
42+
task.distinctEdges = false;
4243

4344
SerialTestTaskManager taskManager = new SerialTestTaskManager();
4445
taskManager.execute(new TaskIterator(task));

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/commands/EMBuildCommandTask.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
import org.baderlab.csplugins.enrichmentmap.PropertyManager;
5252
import org.baderlab.csplugins.enrichmentmap.model.DataSetFiles;
5353
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters;
54+
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters.EdgeStrategy;
5455
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters.SimilarityMetric;
5556
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet.Method;
5657
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapManager;
@@ -225,15 +226,18 @@ public void buildEnrichmentMap() {
225226
dataSets.add(new DataSetParameters(LegacySupport.DATASET2, method, dataset2files));
226227
}
227228

229+
EdgeStrategy edgeStrategy;
230+
if(distinctEdges == null)
231+
edgeStrategy = EdgeStrategy.AUTOMATIC;
232+
else if(distinctEdges)
233+
edgeStrategy = EdgeStrategy.DISTINCT;
234+
else
235+
edgeStrategy = EdgeStrategy.COMPOUND;
236+
228237
String prefix = legacySupport.getNextAttributePrefix();
229238
EMCreationParameters creationParams =
230239
new EMCreationParameters(prefix, pvalue, qvalue, NESFilter.ALL, Optional.empty(),
231-
metric, similaritycutoff, propertyManager.getCombinedConstant());
232-
233-
if(distinctEdges != null)
234-
creationParams.setCreateDistinctEdges(distinctEdges);
235-
else if(!dataset2files.isEmpty())
236-
creationParams.setCreateDistinctEdges(true);
240+
metric, similaritycutoff, propertyManager.getCombinedConstant(), edgeStrategy);
237241

238242
CreateEnrichmentMapTaskFactory taskFactory = taskFactoryFactory.create(creationParams, dataSets);
239243
insertTasksAfterCurrentTask(taskFactory.createTaskIterator());

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/commands/EMGseaCommandTask.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import org.baderlab.csplugins.enrichmentmap.model.DataSetFiles;
99
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters;
10+
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters.EdgeStrategy;
1011
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters.SimilarityMetric;
1112
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet.Method;
1213
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapManager;
@@ -81,7 +82,7 @@ private void buildEnrichmentMap(){
8182
String prefix = legacySupport.getNextAttributePrefix();
8283
EMCreationParameters creationParams =
8384
new EMCreationParameters(prefix, pvalue, qvalue, NESFilter.ALL, Optional.empty(),
84-
metric, overlap, combinedconstant);
85+
metric, overlap, combinedconstant, EdgeStrategy.AUTOMATIC);
8586

8687
CreateEnrichmentMapTaskFactory taskFactory = taskFactoryFactory.create(creationParams, dataSets);
8788
insertTasksAfterCurrentTask(taskFactory.createTaskIterator());

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/commands/ResolverCommandTask.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import org.baderlab.csplugins.enrichmentmap.PropertyManager;
1010
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters;
11+
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters.EdgeStrategy;
1112
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters.SimilarityMetric;
1213
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentResultFilterParams.NESFilter;
1314
import org.baderlab.csplugins.enrichmentmap.model.LegacySupport;
@@ -36,7 +37,7 @@ public class ResolverCommandTask extends AbstractTask {
3637
public File commonExpressionFile;
3738

3839
@Tunable
39-
public boolean distinctEdges = false;
40+
public ListSingleSelection<String> edgeStrategy;
4041

4142
// Parameter Tuneables
4243
@Tunable
@@ -75,6 +76,9 @@ public ResolverCommandTask(PropertyManager propertyManager) {
7576
similarityMetric = enumNames(SimilarityMetric.values());
7677
similarityMetric.setSelectedValue(defaultMetric.name());
7778

79+
edgeStrategy = enumNames(EdgeStrategy.values());
80+
edgeStrategy.setSelectedValue(EdgeStrategy.AUTOMATIC.name());
81+
7882
similarityCutoff = propertyManager.getDefaultCutOff(defaultMetric);
7983

8084
nesFilter = enumNames(NESFilter.values());
@@ -127,8 +131,11 @@ public void run(TaskMonitor taskMonitor) throws Exception {
127131
prefix, pvalue, qvalue, nesf, minExperiments, sm, similarityCutoff, combinedConstant);
128132
logger.info(info);
129133

130-
EMCreationParameters params = new EMCreationParameters(prefix, pvalue, qvalue, nesf, Optional.ofNullable(minExperiments), sm, similarityCutoff, combinedConstant);
131-
params.setCreateDistinctEdges(distinctEdges);
134+
EdgeStrategy strategy = EdgeStrategy.valueOf(edgeStrategy.getSelectedValue());
135+
136+
EMCreationParameters params =
137+
new EMCreationParameters(prefix, pvalue, qvalue, nesf, Optional.ofNullable(minExperiments),
138+
sm, similarityCutoff, combinedConstant, strategy);
132139

133140
CreateEnrichmentMapTaskFactory taskFactory = taskFactoryFactory.create(params, dataSets);
134141
TaskIterator tasks = taskFactory.createTaskIterator();

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/model/EMCreationParameters.java

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ public static enum GreatFilter {
1515
HYPER, BINOM, BOTH, EITHER
1616
}
1717

18+
public static enum EdgeStrategy {
19+
AUTOMATIC, DISTINCT, COMPOUND
20+
}
21+
1822
private String attributePrefix; // MKTODO this shouldn't be here
1923

2024
// Node filtering (gene-sets)
@@ -34,7 +38,14 @@ public static enum GreatFilter {
3438
private double qvalueMin = 1.0;
3539
private double pvalueMin = 1.0;
3640

37-
private boolean createDistinctEdges;
41+
private EdgeStrategy edgeStrategy;
42+
43+
/**
44+
* This is calculated based on the edge strategy, number of data sets and expressions.
45+
* See FilterGenesetsByDatasetGenes and ComputeSimilarityTaskParallel.
46+
*/
47+
private boolean createDistinctEdges;
48+
3849
private String enrichmentEdgeType = "Geneset_Overlap";
3950

4051
private final Set<String> pValueColumnNames = new HashSet<>();
@@ -50,7 +61,8 @@ public EMCreationParameters(
5061
Optional<Integer> minExperiments,
5162
SimilarityMetric similarityMetric,
5263
double similarityCutoff,
53-
double combinedConstant
64+
double combinedConstant,
65+
EdgeStrategy edgeStrategy
5466
) {
5567
this.similarityMetric = similarityMetric;
5668
this.attributePrefix = attributePrefix;
@@ -60,6 +72,7 @@ public EMCreationParameters(
6072
this.minExperiments = minExperiments;
6173
this.similarityCutoff = similarityCutoff;
6274
this.combinedConstant = combinedConstant;
75+
this.edgeStrategy = edgeStrategy;
6376
}
6477

6578
public String getAttributePrefix() {
@@ -139,6 +152,14 @@ public void setEMgmt(boolean eMgmt) {
139152
emgmt = eMgmt;
140153
}
141154

155+
public void setEdgeStrategy(EdgeStrategy edgeStrategy) {
156+
this.edgeStrategy = edgeStrategy;
157+
}
158+
159+
public EdgeStrategy getEdgeStrategy() {
160+
return edgeStrategy;
161+
}
162+
142163
public void setCreateDistinctEdges(boolean d) {
143164
this.createDistinctEdges = d;
144165
}
@@ -198,4 +219,18 @@ public Set<String> getQValueColumnNames() {
198219
public Set<String> getSimilarityCutoffColumnNames() {
199220
return new HashSet<>(similarityCutoffColumnNames);
200221
}
222+
223+
@Override
224+
public String toString() {
225+
return "EMCreationParameters [attributePrefix=" + attributePrefix + ", pvalue=" + pvalue + ", qvalue=" + qvalue
226+
+ ", minExperiments=" + minExperiments + ", nesFilter=" + nesFilter + ", similarityMetric="
227+
+ similarityMetric + ", similarityCutoff=" + similarityCutoff + ", combinedConstant=" + combinedConstant
228+
+ ", greatFilter=" + greatFilter + ", fdr=" + fdr + ", emgmt=" + emgmt + ", qvalueMin=" + qvalueMin
229+
+ ", pvalueMin=" + pvalueMin + ", edgeStrategy=" + edgeStrategy + ", createDistinctEdges="
230+
+ createDistinctEdges + ", enrichmentEdgeType=" + enrichmentEdgeType + ", pValueColumnNames="
231+
+ pValueColumnNames + ", qValueColumnNames=" + qValueColumnNames + ", similarityCutoffColumnNames="
232+
+ similarityCutoffColumnNames + "]";
233+
}
234+
235+
201236
}

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/model/EnrichmentMapParameters.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import java.util.Set;
5555

5656
import org.baderlab.csplugins.enrichmentmap.PropertyManager;
57+
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters.EdgeStrategy;
5758
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters.SimilarityMetric;
5859
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet.Method;
5960
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentResultFilterParams.NESFilter;
@@ -231,7 +232,7 @@ public EnrichmentMapParameters(StreamUtil streamUtil, CyApplicationManager appli
231232
public EMCreationParameters getCreationParameters() {
232233
SimilarityMetric similarityMetric = stringToSimilarityMetric(getSimilarityMetric());
233234
EMCreationParameters params = new EMCreationParameters(getAttributePrefix(),
234-
getPvalue(), getQvalue(), NESFilter.ALL, Optional.empty(), similarityMetric, getSimilarityCutOff(), getCombinedConstant());
235+
getPvalue(), getQvalue(), NESFilter.ALL, Optional.empty(), similarityMetric, getSimilarityCutOff(), getCombinedConstant(), EdgeStrategy.AUTOMATIC);
235236
params.setEnrichmentEdgeType(enrichment_edge_type);
236237
params.setFDR(fdr);
237238
return params;

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/ComputeSimilarityTaskParallel.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@ public void run(TaskMonitor tm) throws InterruptedException {
3939
int cpus = Runtime.getRuntime().availableProcessors();
4040
ExecutorService executor = Executors.newFixedThreadPool(cpus);
4141

42-
boolean distinct = map.getParams().getCreateDistinctEdges();
42+
boolean distinct = useDistinctEdges();
43+
map.getParams().setCreateDistinctEdges(distinct); // set this value for access by UI components
4344

44-
Map<SimilarityKey,GenesetSimilarity> similarities = startComputeSimilarities(tm, executor, distinct, !distinct);
45+
Map<SimilarityKey,GenesetSimilarity> similarities = startComputeSimilarities(tm, executor, distinct);
4546

4647
// Support cancellation
4748
Timer timer = new Timer();
@@ -62,9 +63,27 @@ public void run() {
6263
}
6364

6465

65-
private Map<SimilarityKey,GenesetSimilarity> startComputeSimilarities(TaskMonitor tm, ExecutorService executor, boolean distinct, boolean compound) {
66+
private boolean useDistinctEdges() {
67+
switch(map.getParams().getEdgeStrategy()) {
68+
case DISTINCT:
69+
return true;
70+
case COMPOUND:
71+
return false;
72+
default:
73+
case AUTOMATIC:
74+
if(map.getDataSetCount() == 1)
75+
return true; // doesn't really matter but its more consistent with the common 2-dataset case
76+
if(map.getDataSetCount() == 2)
77+
return map.isDistinctExpressionSets(); // emulate EM2 behaviour
78+
// 3 or more datasets use compound edges
79+
return false;
80+
}
81+
}
82+
83+
84+
private Map<SimilarityKey,GenesetSimilarity> startComputeSimilarities(TaskMonitor tm, ExecutorService executor, boolean distinct) {
6685
Set<String> names = map.getAllGeneSetOfInterestNames();
67-
Map<String,Set<Integer>> unionedGenesets = compound ? map.unionAllGeneSetsOfInterest() : null;
86+
Map<String,Set<Integer>> unionedGenesets = distinct ? null : map.unionAllGeneSetsOfInterest();
6887

6988
DiscreteTaskMonitor taskMonitor = discreteTaskMonitor(tm, names.size());
7089
String edgeType = map.getParams().getEnrichmentEdgeType();
@@ -101,8 +120,7 @@ private Map<SimilarityKey,GenesetSimilarity> startComputeSimilarities(TaskMonito
101120
}
102121
}
103122
}
104-
105-
if(compound) {
123+
else {
106124
SimilarityKey key = new SimilarityKey(geneset1Name, geneset2Name, edgeType, null);
107125

108126
if(!similarities.containsKey(key)) {

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/creation/CombinedConstantSlider.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import javax.swing.JPanel;
77
import javax.swing.JSlider;
88

9+
import org.baderlab.csplugins.enrichmentmap.view.util.SwingUtil;
10+
911
@SuppressWarnings("serial")
1012
public class CombinedConstantSlider extends JPanel {
1113

@@ -22,10 +24,7 @@ public CombinedConstantSlider(int defaultValue) {
2224
JLabel jaccardLabel = new JLabel(mkLabel("Jaccard", 100-defaultValue));
2325
JLabel overlapLabel = new JLabel(mkLabel("Overlap", defaultValue));
2426
JLabel plusLabel = new JLabel("+");
25-
26-
jaccardLabel.setFont(jaccardLabel.getFont().deriveFont(10f));
27-
overlapLabel.setFont(overlapLabel.getFont().deriveFont(10f));
28-
plusLabel.setFont(plusLabel.getFont().deriveFont(10f));
27+
SwingUtil.makeSmall(jaccardLabel, overlapLabel, plusLabel);
2928

3029
plusLabel.setHorizontalAlignment(JLabel.CENTER);
3130

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/creation/CreationDialogParameters.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public String getPageChooserLabelText() {
4444

4545
@Override
4646
public Dimension getPreferredSize() {
47-
return new Dimension(800, 700);
47+
return new Dimension(820, 700);
4848
}
4949

5050
@Override

0 commit comments

Comments
 (0)