2
2
3
3
import java .util .ArrayList ;
4
4
import java .util .Collection ;
5
+ import java .util .Collections ;
6
+ import java .util .HashSet ;
5
7
import java .util .List ;
6
8
import java .util .Set ;
7
9
8
10
import org .baderlab .csplugins .enrichmentmap .model .AbstractDataSet ;
11
+ import org .baderlab .csplugins .enrichmentmap .model .EMSignatureDataSet ;
9
12
import org .baderlab .csplugins .enrichmentmap .model .EnrichmentMap ;
10
13
import org .cytoscape .event .CyEventHelper ;
14
+ import org .cytoscape .model .CyEdge ;
11
15
import org .cytoscape .model .CyIdentifiable ;
12
16
import org .cytoscape .model .CyNetwork ;
13
17
import org .cytoscape .model .CyRow ;
@@ -28,17 +32,20 @@ public class SelectNodesEdgesTask extends AbstractTask {
28
32
29
33
private final CyNetworkView networkView ;
30
34
private final Set <AbstractDataSet > dataSets ;
35
+ private final boolean distinctEdges ;
31
36
32
37
@ Inject private CyEventHelper eventHelper ;
33
38
34
39
public interface Factory {
35
- SelectNodesEdgesTask create (CyNetworkView networkView , Set <AbstractDataSet > dataSets );
40
+ SelectNodesEdgesTask create (CyNetworkView networkView , Set <AbstractDataSet > dataSets , boolean distinctEdges );
36
41
}
37
42
38
43
@ Inject
39
- public SelectNodesEdgesTask (@ Assisted CyNetworkView networkView , @ Assisted Set <AbstractDataSet > dataSets ) {
44
+ public SelectNodesEdgesTask (@ Assisted CyNetworkView networkView , @ Assisted Set <AbstractDataSet > dataSets ,
45
+ @ Assisted boolean distinctEdges ) {
40
46
this .networkView = networkView ;
41
47
this .dataSets = dataSets ;
48
+ this .distinctEdges = distinctEdges ;
42
49
}
43
50
44
51
@ Override
@@ -47,8 +54,24 @@ public void run(TaskMonitor tm) {
47
54
tm .setStatusMessage ("Getting Nodes and Edges from Data Sets..." );
48
55
tm .setProgress (0.0 );
49
56
50
- Set <Long > dataSetNodes = EnrichmentMap .getNodesUnion (dataSets );
51
- Set <Long > dataSetEdges = EnrichmentMap .getEdgesUnion (dataSets );
57
+ final Set <Long > dataSetNodes = EnrichmentMap .getNodesUnion (dataSets );
58
+ final Set <Long > dataSetEdges ;
59
+
60
+ if (distinctEdges ) {
61
+ dataSetEdges = EnrichmentMap .getEdgesUnion (dataSets );
62
+ } else {
63
+ dataSetEdges = new HashSet <>();
64
+
65
+ for (CyEdge e : networkView .getModel ().getEdgeList ()) {
66
+ if (dataSetNodes .contains (e .getSource ().getSUID ()) && dataSetNodes .contains (e .getTarget ().getSUID ()))
67
+ dataSetEdges .add (e .getSUID ());
68
+ }
69
+
70
+ for (AbstractDataSet ds : dataSets ) {
71
+ if (ds instanceof EMSignatureDataSet )
72
+ dataSetEdges .addAll (EnrichmentMap .getEdgesUnion (Collections .singleton (ds )));
73
+ }
74
+ }
52
75
53
76
if (!cancelled ) {
54
77
tm .setStatusMessage ("Selecting Edges..." );
0 commit comments