Skip to content

Commit 4252ae7

Browse files
committed
Added 'greatFilter' arg to 'mastermap' command. Some refactoring.
Refs #494
1 parent 68b221c commit 4252ae7

File tree

8 files changed

+87
-86
lines changed

8 files changed

+87
-86
lines changed

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.baderlab.csplugins.enrichmentmap.model.AssociatedApp;
44
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapManager;
5+
import org.baderlab.csplugins.enrichmentmap.util.TaskUtil;
56
import org.cytoscape.model.CyNetworkManager;
67
import org.cytoscape.work.AbstractTask;
78
import org.cytoscape.work.TaskMonitor;
@@ -26,11 +27,7 @@ public class AssociateNetworkCommandTask extends AbstractTask {
2627
@Inject private EnrichmentMapManager emManager;
2728

2829
public AssociateNetworkCommandTask() {
29-
app = new ListSingleSelection<>(
30-
AssociatedApp.GENEMANIA.name(),
31-
AssociatedApp.STRING.name(),
32-
AssociatedApp.AUTOANNOTATE.name()
33-
);
30+
app = TaskUtil.lssFromEnum(AssociatedApp.values());
3431
}
3532

3633
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.baderlab.csplugins.enrichmentmap.commands;
22

3-
import static org.baderlab.csplugins.enrichmentmap.commands.tunables.CommandUtil.lssFromEnum;
3+
import static org.baderlab.csplugins.enrichmentmap.util.TaskUtil.lssFromEnum;
44

55
import java.io.File;
66
import java.util.ArrayList;

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

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
import java.io.File;
44
import java.nio.file.FileSystems;
55
import java.nio.file.PathMatcher;
6-
import java.util.Arrays;
76
import java.util.List;
87

98
import org.baderlab.csplugins.enrichmentmap.commands.tunables.FilterTunables;
109
import org.baderlab.csplugins.enrichmentmap.model.DataSetParameters;
1110
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters;
11+
import org.baderlab.csplugins.enrichmentmap.model.EMCreationParameters.GreatFilter;
1212
import org.baderlab.csplugins.enrichmentmap.resolver.DataSetResolverTask;
1313
import org.baderlab.csplugins.enrichmentmap.task.CreateEMNetworkTask;
1414
import org.baderlab.csplugins.enrichmentmap.task.CreateEnrichmentMapTaskFactory;
@@ -21,6 +21,7 @@
2121
import org.cytoscape.work.TaskIterator;
2222
import org.cytoscape.work.TaskMonitor;
2323
import org.cytoscape.work.Tunable;
24+
import org.cytoscape.work.util.ListSingleSelection;
2425

2526
import com.google.inject.Inject;
2627

@@ -48,13 +49,24 @@ public class MastermapCommandTask extends AbstractTask implements ObservableTask
4849
+ "For more details on syntax see https://docs.oracle.com/javase/8/docs/api/java/nio/file/FileSystem.html#getPathMatcher-java.lang.String-")
4950
public String pattern;
5051

52+
53+
@Tunable(description="GREAT results can be filtered by one of: HYPER (Hypergeometric p-value), BINOM (Binomial p-value), BOTH, EITHER")
54+
public ListSingleSelection<String> greatFilter;
55+
56+
57+
5158
@Inject private SynchronousTaskManager<?> taskManager;
5259
@Inject private CreateEnrichmentMapTaskFactory.Factory taskFactoryFactory;
5360

5461

5562
private Long[] result = { null };
5663

5764

65+
public MastermapCommandTask() {
66+
greatFilter = TaskUtil.lssFromEnum(GreatFilter.values());
67+
}
68+
69+
5870
@Override
5971
public void run(TaskMonitor tm) throws Exception {
6072
tm = NullTaskMonitor.check(tm);
@@ -65,23 +77,52 @@ public void run(TaskMonitor tm) throws Exception {
6577
}
6678

6779
// Scan root folder (note: throws exception if no data sets were found)
68-
DataSetResolverTask resolverTask = new DataSetResolverTask(rootFolder);
80+
var resolverTask = new DataSetResolverTask(rootFolder);
6981

7082
if(pattern != null) {
7183
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:" + pattern);
7284
resolverTask.setPathMatcher(matcher);
7385
}
7486

7587
taskManager.execute(new TaskIterator(resolverTask)); // blocks
76-
List<DataSetParameters> dataSets = resolverTask.getDataSetResults();
88+
var dataSets = resolverTask.getDataSetResults();
89+
90+
setCommonFiles(dataSets);
91+
92+
tm.setStatusMessage("resolved " + dataSets.size() + " data sets");
93+
for(var params : dataSets) {
94+
tm.setStatusMessage(params.toString());
95+
}
96+
tm.setStatusMessage(filterArgs.toString());
97+
98+
EMCreationParameters params = filterArgs.getCreationParameters();
99+
100+
var filter = GreatFilter.valueOf(greatFilter.getSelectedValue());
101+
params.setGreatFilter(filter);
102+
103+
if(filterArgs.networkName != null && !filterArgs.networkName.trim().isEmpty()) {
104+
params.setNetworkName(filterArgs.networkName);
105+
}
106+
107+
var taskFactory = taskFactoryFactory.create(params, dataSets);
108+
var tasks = taskFactory.createTaskIterator();
77109

110+
taskManager.execute(tasks, TaskUtil.taskFinished(CreateEMNetworkTask.class, networkTask -> {
111+
result[0] = networkTask.getResults(Long.class); // get SUID of created network
112+
}));
113+
114+
tm.setStatusMessage("Done");
115+
}
116+
117+
118+
private void setCommonFiles(List<DataSetParameters> dataSets) {
78119
// Common gmt and expression files
79120
// Overwrite all the expression files if the common file has been provided
80121
if(commonExpressionFile != null) {
81122
if(!commonExpressionFile.canRead()) {
82123
throw new IllegalArgumentException("Cannot read commonExpressionFile: " + commonExpressionFile);
83124
}
84-
for(DataSetParameters dsp : dataSets) {
125+
for(var dsp : dataSets) {
85126
dsp.getFiles().setExpressionFileName(commonExpressionFile.getAbsolutePath());
86127
}
87128
}
@@ -91,7 +132,7 @@ public void run(TaskMonitor tm) throws Exception {
91132
if(!commonGMTFile.canRead()) {
92133
throw new IllegalArgumentException("Cannot read commonGMTFile: " + commonGMTFile);
93134
}
94-
for(DataSetParameters dsp : dataSets) {
135+
for(var dsp : dataSets) {
95136
dsp.getFiles().setGMTFileName(commonGMTFile.getAbsolutePath());
96137
}
97138
}
@@ -101,37 +142,16 @@ public void run(TaskMonitor tm) throws Exception {
101142
if(!commonClassFile.canRead()) {
102143
throw new IllegalArgumentException("Cannot read commonClassFile: " + commonClassFile);
103144
}
104-
for(DataSetParameters dsp : dataSets) {
145+
for(var dsp : dataSets) {
105146
dsp.getFiles().setClassFile(commonClassFile.getAbsolutePath());
106147
}
107148
}
108-
109-
tm.setStatusMessage("resolved " + dataSets.size() + " data sets");
110-
for(DataSetParameters params : dataSets) {
111-
tm.setStatusMessage(params.toString());
112-
}
113-
114-
tm.setStatusMessage(filterArgs.toString());
115-
116-
EMCreationParameters params = filterArgs.getCreationParameters();
117-
118-
if(filterArgs.networkName != null && !filterArgs.networkName.trim().isEmpty()) {
119-
params.setNetworkName(filterArgs.networkName);
120-
}
121-
122-
CreateEnrichmentMapTaskFactory taskFactory = taskFactoryFactory.create(params, dataSets);
123-
TaskIterator tasks = taskFactory.createTaskIterator();
124-
125-
taskManager.execute(tasks, TaskUtil.taskFinished(CreateEMNetworkTask.class, networkTask -> {
126-
result[0] = networkTask.getResults(Long.class); // get SUID of created network
127-
}));
128-
129-
tm.setStatusMessage("Done.");
130149
}
131150

151+
132152
@Override
133153
public List<Class<?>> getResultClasses() {
134-
return Arrays.asList(String.class, Long.class);
154+
return List.of(String.class, Long.class);
135155
}
136156

137157
@Override

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/commands/tunables/ChartTunables.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.baderlab.csplugins.enrichmentmap.commands.tunables;
22

3-
import static org.baderlab.csplugins.enrichmentmap.commands.tunables.CommandUtil.lssFromEnum;
43
import static org.baderlab.csplugins.enrichmentmap.style.ChartData.*;
54
import static org.baderlab.csplugins.enrichmentmap.style.ChartType.DATASET_PIE;
65
import static org.baderlab.csplugins.enrichmentmap.style.ChartType.HEAT_MAP;
@@ -10,6 +9,7 @@
109
import org.baderlab.csplugins.enrichmentmap.style.ChartData;
1110
import org.baderlab.csplugins.enrichmentmap.style.ChartType;
1211
import org.baderlab.csplugins.enrichmentmap.style.ColorScheme;
12+
import org.baderlab.csplugins.enrichmentmap.util.TaskUtil;
1313
import org.cytoscape.work.Tunable;
1414
import org.cytoscape.work.util.ListSingleSelection;
1515

@@ -29,9 +29,9 @@ public class ChartTunables {
2929

3030

3131
public ChartTunables() {
32-
data = lssFromEnum(NES_VALUE, P_VALUE, FDR_VALUE, PHENOTYPES, DATA_SET, EXPRESSION_DATA, NES_SIG, NONE); // want NES to be the default
33-
type = lssFromEnum(RADIAL_HEAT_MAP, HEAT_STRIPS, HEAT_MAP); // don't include DATASET_PIE
34-
colors = lssFromEnum(ColorScheme.values());
32+
data = TaskUtil.lssFromEnum(NES_VALUE, P_VALUE, FDR_VALUE, PHENOTYPES, DATA_SET, EXPRESSION_DATA, NES_SIG, NONE); // want NES to be the default
33+
type = TaskUtil.lssFromEnum(RADIAL_HEAT_MAP, HEAT_STRIPS, HEAT_MAP); // don't include DATASET_PIE
34+
colors = TaskUtil.lssFromEnum(ColorScheme.values());
3535
}
3636

3737

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/commands/tunables/CommandUtil.java

Lines changed: 0 additions & 18 deletions
This file was deleted.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public String getLabel() {
1919
switch(this) {
2020
case GSEA: default: return "GSEA";
2121
case Generic: return "Generic/gProfiler/Enrichr";
22-
case Specialized: return "DAVID/BINGO/Great";
22+
case Specialized: return "DAVID/BiNGO/GREAT";
2323
}
2424
}
2525
}

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/parsers/GREATWhichPvalueQuestionTask.java

Lines changed: 20 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -12,45 +12,37 @@
1212
public class GREATWhichPvalueQuestionTask extends AbstractTask implements ObservableTask{
1313
//tunable representing the question
1414
@Tunable(description="<html>GREAT results can be filtered by Hypergeometric, <<BR>>Binomial, both[AND] or either[OR] tests.<BR> Which would you like to filter by?")
15-
public ListSingleSelection<String> filterResponse;
15+
public ListSingleSelection<String> filterResponse;
1616

17-
private static String hyper = "Hypergeometric p-value";
18-
private static String binom = "Binomial p-value";
19-
private static String both = "Both";
20-
private static String either = "Either";
17+
private static final String hyper = "Hypergeometric p-value";
18+
private static final String binom = "Binomial p-value";
19+
private static final String both = "Both";
20+
private static final String either = "Either";
2121

22-
private EMCreationParameters params;
22+
private final EMCreationParameters params;
2323

2424
public GREATWhichPvalueQuestionTask(EnrichmentMap map) {
25-
filterResponse = new ListSingleSelection<String>(hyper, binom, both, either);
25+
filterResponse = new ListSingleSelection<>(hyper, binom, both, either);
2626
params = map.getParams();
2727
}
2828

2929
@Override
30-
public void run(TaskMonitor arg0) throws Exception {
31-
if(filterResponse.getSelectedValue().equals(hyper))
32-
params.setGreatFilter(GreatFilter.HYPER);
33-
if(filterResponse.getSelectedValue().equals(binom))
34-
params.setGreatFilter(GreatFilter.BINOM);
35-
if(filterResponse.getSelectedValue().equals(both))
36-
params.setGreatFilter(GreatFilter.BOTH);
37-
if(filterResponse.getSelectedValue().equals(either))
38-
params.setGreatFilter(GreatFilter.EITHER);
30+
public void run(TaskMonitor tm) {
31+
var filter = getFilter(filterResponse.getSelectedValue());
32+
params.setGreatFilter(filter);
3933
}
4034

41-
public void run() throws Exception {
42-
if(filterResponse.getSelectedValue().equals(hyper))
43-
params.setGreatFilter(GreatFilter.HYPER);
44-
if(filterResponse.getSelectedValue().equals(binom))
45-
params.setGreatFilter(GreatFilter.BINOM);
46-
if(filterResponse.getSelectedValue().equals(both))
47-
params.setGreatFilter(GreatFilter.BOTH);
48-
if(filterResponse.getSelectedValue().equals(either))
49-
params.setGreatFilter(GreatFilter.EITHER);
35+
private static GreatFilter getFilter(String value) {
36+
switch(value) {
37+
case hyper: return GreatFilter.HYPER;
38+
case binom: return GreatFilter.BINOM;
39+
case both: return GreatFilter.BOTH;
40+
case either: return GreatFilter.EITHER;
41+
}
42+
return null;
5043
}
51-
52-
public <R> R getResults(Class<? extends R> arg0) {
53-
// TODO Auto-generated method stub
44+
45+
public <R> R getResults(Class<? extends R> arg) {
5446
return null;
5547
}
5648

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/util/TaskUtil.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package org.baderlab.csplugins.enrichmentmap.util;
22

3+
import java.util.ArrayList;
4+
import java.util.List;
35
import java.util.function.Consumer;
46

57
import org.cytoscape.work.FinishStatus;
68
import org.cytoscape.work.FinishStatus.Type;
79
import org.cytoscape.work.ObservableTask;
810
import org.cytoscape.work.TaskObserver;
11+
import org.cytoscape.work.util.ListSingleSelection;
912

1013
public class TaskUtil {
1114
private TaskUtil() {}
@@ -62,4 +65,11 @@ public void allFinished(FinishStatus finishStatus) { }
6265
};
6366
}
6467

68+
public static ListSingleSelection<String> lssFromEnum(Enum<?> ... values) {
69+
List<String> names = new ArrayList<>(values.length);
70+
for(Enum<?> value : values) {
71+
names.add(value.name());
72+
}
73+
return new ListSingleSelection<>(names);
74+
}
6575
}

0 commit comments

Comments
 (0)