20
20
import org .baderlab .csplugins .enrichmentmap .model .LegacySupport ;
21
21
import org .baderlab .csplugins .enrichmentmap .model .SimilarityKey ;
22
22
import org .baderlab .csplugins .enrichmentmap .style .EMStyleBuilder .Columns ;
23
+ import org .baderlab .csplugins .enrichmentmap .util .DiscreteTaskMonitor ;
23
24
import org .cytoscape .model .CyEdge ;
24
25
import org .cytoscape .model .CyNetwork ;
25
26
import org .cytoscape .model .CyNetworkFactory ;
@@ -49,7 +50,7 @@ public class CreateEMNetworkTask extends AbstractTask implements ObservableTask
49
50
50
51
private final Supplier <Map <SimilarityKey ,GenesetSimilarity >> supplier ;
51
52
52
- private long networkSuidResult ;
53
+ private Long networkSuidResult ;
53
54
54
55
public interface Factory {
55
56
CreateEMNetworkTask create (EnrichmentMap map , Supplier <Map <SimilarityKey ,GenesetSimilarity >> supplier );
@@ -63,10 +64,10 @@ public CreateEMNetworkTask(@Assisted EnrichmentMap map, @Assisted Supplier<Map<S
63
64
}
64
65
65
66
@ Override
66
- public void run (TaskMonitor taskMonitor ) throws Exception {
67
- taskMonitor .setTitle ("Creating EnrichmentMap Network" );
68
- networkSuidResult = createEMNetwork ();
69
- taskMonitor .setStatusMessage ("" );
67
+ public void run (TaskMonitor tm ) {
68
+ tm .setTitle ("Creating EnrichmentMap Network" );
69
+ networkSuidResult = createEMNetwork (tm );
70
+ tm .setStatusMessage ("" );
70
71
}
71
72
72
73
@@ -86,8 +87,41 @@ public <R> R getResults(Class<? extends R> type) {
86
87
}
87
88
88
89
89
- private long createEMNetwork () {
90
- // Create the CyNetwork
90
+ private Long createEMNetwork (TaskMonitor tm ) {
91
+ CyNetwork network = createNetwork ();
92
+ map .setNetworkID (network .getSUID ());
93
+
94
+ createNodeColumns (network );
95
+ createEdgeColumns (network );
96
+
97
+ Map <String ,Set <Integer >> geneSets = map .unionAllGeneSetsOfInterest ();
98
+ Map <SimilarityKey ,GenesetSimilarity > similarities = supplier .get ();
99
+
100
+ int numNodes = geneSets .size ();
101
+ int numEdges = similarities .size ();
102
+
103
+ tm .setProgress (0.1 );
104
+
105
+ var nodeTm = new DiscreteTaskMonitor (tm , numNodes , 0.1 , 0.2 ).percentMessage ("Creating " + numNodes + " Nodes: {0,number,#%}" );
106
+ Map <String ,CyNode > nodes = createNodes (network , geneSets , nodeTm );
107
+
108
+ if (cancelled )
109
+ return null ;
110
+
111
+ var edgeTm = new DiscreteTaskMonitor (tm , numEdges , 0.2 , 1.0 ).percentMessage ("Creating " + numEdges + " Edges: {0,number,#%}" );
112
+ createEdges (network , nodes , similarities , edgeTm );
113
+
114
+ if (cancelled )
115
+ return null ;
116
+
117
+ networkManager .addNetwork (network );
118
+ emManager .registerEnrichmentMap (map );
119
+
120
+ return network .getSUID ();
121
+ }
122
+
123
+
124
+ private CyNetwork createNetwork () {
91
125
CyNetwork network = networkFactory .createNetwork ();
92
126
CyRootNetwork rootNetwork = ((CySubNetwork )network ).getRootNetwork ();
93
127
@@ -98,25 +132,17 @@ private long createEMNetwork() {
98
132
99
133
rootNetwork .getRow (rootNetwork ).set (CyNetwork .NAME , LegacySupport .EM_NAME );
100
134
network .getRow (network ).set (CyNetwork .NAME , networkName );
101
-
102
- map .setNetworkID (network .getSUID ());
103
-
104
- createNodeColumns (network );
105
- createEdgeColumns (network );
106
-
107
- Map <String ,CyNode > nodes = createNodes (network );
108
- createEdges (network , nodes );
109
-
110
- networkManager .addNetwork (network );
111
- emManager .registerEnrichmentMap (map );
112
- return network .getSUID ();
135
+ return network ;
113
136
}
114
137
115
- private Map <String , CyNode > createNodes (CyNetwork network ) {
138
+
139
+ private Map <String , CyNode > createNodes (CyNetwork network , Map <String ,Set <Integer >> geneSets , DiscreteTaskMonitor tm ) {
116
140
Map <String ,CyNode > nodes = new HashMap <>();
117
- Map <String ,Set <Integer >> geneSets = map .unionAllGeneSetsOfInterest ();
118
141
119
142
for (String genesetName : geneSets .keySet ()) {
143
+ if (cancelled )
144
+ return null ;
145
+
120
146
CyNode node = network .addNode ();
121
147
nodes .put (genesetName , node );
122
148
@@ -163,6 +189,8 @@ private Map<String, CyNode> createNodes(CyNetwork network) {
163
189
else if (result instanceof GenericResult )
164
190
setGenericResultNodeAttributes (row , ds , (GenericResult ) result );
165
191
}
192
+
193
+ tm .inc ();
166
194
}
167
195
168
196
return nodes ;
@@ -236,12 +264,12 @@ private Double getMaxNegLog10pval(String genesetName) {
236
264
237
265
/**
238
266
* Note, we expect that GenesetSimilarity object that don't pass the cutoff have already been filtered out.
239
- * @param network
240
- * @param nodes
241
267
*/
242
- private void createEdges (CyNetwork network , Map <String ,CyNode > nodes ) {
243
- Map <SimilarityKey ,GenesetSimilarity > similarities = supplier .get ();
268
+ private void createEdges (CyNetwork network , Map <String ,CyNode > nodes , Map <SimilarityKey ,GenesetSimilarity > similarities , DiscreteTaskMonitor tm ) {
244
269
for (SimilarityKey key : similarities .keySet ()) {
270
+ if (cancelled )
271
+ return ;
272
+
245
273
GenesetSimilarity similarity = similarities .get (key );
246
274
247
275
CyNode node1 = nodes .get (similarity .getGeneset1Name ());
@@ -275,6 +303,8 @@ private void createEdges(CyNetwork network, Map<String,CyNode> nodes) {
275
303
} else {
276
304
Columns .EDGE_DATASET .set (row , prefix , null , similarity .getDataSetName ());
277
305
}
306
+
307
+ tm .inc ();
278
308
}
279
309
}
280
310
0 commit comments