3
3
import java .io .File ;
4
4
import java .nio .file .FileSystems ;
5
5
import java .nio .file .PathMatcher ;
6
- import java .util .Arrays ;
7
6
import java .util .List ;
8
7
9
8
import org .baderlab .csplugins .enrichmentmap .commands .tunables .FilterTunables ;
10
9
import org .baderlab .csplugins .enrichmentmap .model .DataSetParameters ;
11
10
import org .baderlab .csplugins .enrichmentmap .model .EMCreationParameters ;
11
+ import org .baderlab .csplugins .enrichmentmap .model .EMCreationParameters .GreatFilter ;
12
12
import org .baderlab .csplugins .enrichmentmap .resolver .DataSetResolverTask ;
13
13
import org .baderlab .csplugins .enrichmentmap .task .CreateEMNetworkTask ;
14
14
import org .baderlab .csplugins .enrichmentmap .task .CreateEnrichmentMapTaskFactory ;
21
21
import org .cytoscape .work .TaskIterator ;
22
22
import org .cytoscape .work .TaskMonitor ;
23
23
import org .cytoscape .work .Tunable ;
24
+ import org .cytoscape .work .util .ListSingleSelection ;
24
25
25
26
import com .google .inject .Inject ;
26
27
@@ -48,13 +49,24 @@ public class MastermapCommandTask extends AbstractTask implements ObservableTask
48
49
+ "For more details on syntax see https://docs.oracle.com/javase/8/docs/api/java/nio/file/FileSystem.html#getPathMatcher-java.lang.String-" )
49
50
public String pattern ;
50
51
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
+
51
58
@ Inject private SynchronousTaskManager <?> taskManager ;
52
59
@ Inject private CreateEnrichmentMapTaskFactory .Factory taskFactoryFactory ;
53
60
54
61
55
62
private Long [] result = { null };
56
63
57
64
65
+ public MastermapCommandTask () {
66
+ greatFilter = TaskUtil .lssFromEnum (GreatFilter .values ());
67
+ }
68
+
69
+
58
70
@ Override
59
71
public void run (TaskMonitor tm ) throws Exception {
60
72
tm = NullTaskMonitor .check (tm );
@@ -65,23 +77,52 @@ public void run(TaskMonitor tm) throws Exception {
65
77
}
66
78
67
79
// Scan root folder (note: throws exception if no data sets were found)
68
- DataSetResolverTask resolverTask = new DataSetResolverTask (rootFolder );
80
+ var resolverTask = new DataSetResolverTask (rootFolder );
69
81
70
82
if (pattern != null ) {
71
83
PathMatcher matcher = FileSystems .getDefault ().getPathMatcher ("glob:" + pattern );
72
84
resolverTask .setPathMatcher (matcher );
73
85
}
74
86
75
87
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 ();
77
109
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 ) {
78
119
// Common gmt and expression files
79
120
// Overwrite all the expression files if the common file has been provided
80
121
if (commonExpressionFile != null ) {
81
122
if (!commonExpressionFile .canRead ()) {
82
123
throw new IllegalArgumentException ("Cannot read commonExpressionFile: " + commonExpressionFile );
83
124
}
84
- for (DataSetParameters dsp : dataSets ) {
125
+ for (var dsp : dataSets ) {
85
126
dsp .getFiles ().setExpressionFileName (commonExpressionFile .getAbsolutePath ());
86
127
}
87
128
}
@@ -91,7 +132,7 @@ public void run(TaskMonitor tm) throws Exception {
91
132
if (!commonGMTFile .canRead ()) {
92
133
throw new IllegalArgumentException ("Cannot read commonGMTFile: " + commonGMTFile );
93
134
}
94
- for (DataSetParameters dsp : dataSets ) {
135
+ for (var dsp : dataSets ) {
95
136
dsp .getFiles ().setGMTFileName (commonGMTFile .getAbsolutePath ());
96
137
}
97
138
}
@@ -101,37 +142,16 @@ public void run(TaskMonitor tm) throws Exception {
101
142
if (!commonClassFile .canRead ()) {
102
143
throw new IllegalArgumentException ("Cannot read commonClassFile: " + commonClassFile );
103
144
}
104
- for (DataSetParameters dsp : dataSets ) {
145
+ for (var dsp : dataSets ) {
105
146
dsp .getFiles ().setClassFile (commonClassFile .getAbsolutePath ());
106
147
}
107
148
}
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." );
130
149
}
131
150
151
+
132
152
@ Override
133
153
public List <Class <?>> getResultClasses () {
134
- return Arrays . asList (String .class , Long .class );
154
+ return List . of (String .class , Long .class );
135
155
}
136
156
137
157
@ Override
0 commit comments