Skip to content

Commit cda2dfa

Browse files
committed
Don't filter edges by data sets when the enrichment map created compound edges.
1 parent 382e654 commit cda2dfa

File tree

1 file changed

+34
-19
lines changed

1 file changed

+34
-19
lines changed

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/control/ControlPanelMediator.java

Lines changed: 34 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -661,17 +661,15 @@ public FilterActionListener(EMViewControlPanel viewPanel, EnrichmentMap map, CyN
661661

662662
@Override
663663
public void actionPerformed(ActionEvent evt) {
664-
CyNetwork net = netView.getModel();
665-
EMCreationParameters params = map.getParams();
666664
Set<AbstractDataSet> selectedDataSets = viewPanel.getCheckedDataSets();
667665

668666
// Find nodes and edges that must be displayed
669-
Set<CyNode> filteredInNodes = getFilteredInNodes(net, params, selectedDataSets);
670-
Set<CyEdge> filteredInEdges = getFilteredInEdges(net, params, selectedDataSets);
667+
Set<CyNode> filteredInNodes = getFilteredInNodes(selectedDataSets);
668+
Set<CyEdge> filteredInEdges = getFilteredInEdges(selectedDataSets);
671669

672670
// Hide or show nodes and their edges
673-
showOrHideNodes(net, filteredInNodes);
674-
showOrHideEdges(net, filteredInNodes, filteredInEdges);
671+
showOrHideNodes(filteredInNodes);
672+
showOrHideEdges(filteredInNodes, filteredInEdges);
675673
netView.updateView();
676674

677675
Timer timer = filterTimers.get(netView);
@@ -680,9 +678,9 @@ public void actionPerformed(ActionEvent evt) {
680678
timer.stop();
681679
}
682680

683-
private Set<CyNode> getFilteredInNodes(CyNetwork net, EMCreationParameters params,
684-
Set<AbstractDataSet> selectedDataSets) {
681+
private Set<CyNode> getFilteredInNodes(Set<AbstractDataSet> selectedDataSets) {
685682
Set<Long> dataSetNodes = EnrichmentMap.getNodesUnion(selectedDataSets);
683+
EMCreationParameters params = map.getParams();
686684

687685
// Only p or q value, but not both!
688686
if (viewPanel.getPValueSliderPanel() != null && viewPanel.getPValueSliderPanel().isVisible()) {
@@ -698,6 +696,7 @@ private Set<CyNode> getFilteredInNodes(CyNetwork net, EMCreationParameters param
698696
}
699697

700698
Set<CyNode> filteredInNodes = new HashSet<>();
699+
CyNetwork net = netView.getModel();
701700

702701
for (CyNode n : net.getNodeList()) {
703702
if (dataSetNodes.contains(n.getSUID()))
@@ -706,20 +705,29 @@ private Set<CyNode> getFilteredInNodes(CyNetwork net, EMCreationParameters param
706705

707706
return filteredInNodes;
708707
}
709-
710-
private Set<CyEdge> getFilteredInEdges(CyNetwork net, EMCreationParameters params,
711-
Set<AbstractDataSet> selectedDataSets) {
712-
Set<Long> dataSetEdges = EnrichmentMap.getEdgesUnion(selectedDataSets);
708+
709+
private Set<CyEdge> getFilteredInEdges(Set<AbstractDataSet> selectedDataSets) {
710+
EMCreationParameters params = map.getParams();
711+
boolean distinct = params.getCreateDistinctEdges() && map.isDistinctExpressionSets();
712+
713+
// Compound edges are not associated with a specific data set
714+
Set<Long> dataSetEdges = distinct ? EnrichmentMap.getEdgesUnion(selectedDataSets) : null;
713715

714716
if (viewPanel.getSimilaritySliderPanel() != null)
715717
return getFilteredInEdges(viewPanel.getSimilaritySliderPanel(), map, netView,
716718
params.getSimilarityCutoffColumnNames(), dataSetEdges);
717719

718720
Set<CyEdge> filteredInEdges = new HashSet<>();
721+
CyNetwork net = netView.getModel();
719722

720-
for (CyEdge e : net.getEdgeList()) {
721-
if (dataSetEdges.contains(e.getSUID()))
722-
filteredInEdges.add(e);
723+
if (distinct) {
724+
for (CyEdge e : net.getEdgeList()) {
725+
if (dataSetEdges.contains(e.getSUID()))
726+
filteredInEdges.add(e);
727+
}
728+
} else {
729+
// If compound edges, all edges are filtered in, no matter the selected data sets
730+
filteredInEdges.addAll(net.getEdgeList());
723731
}
724732

725733
return filteredInEdges;
@@ -745,7 +753,7 @@ private Set<CyNode> getFilteredInNodes(SliderBarPanel sliderPanel, EnrichmentMap
745753
boolean show = true;
746754
CyRow row = network.getRow(n);
747755

748-
if (!dataSetNodes.contains(n.getSUID())) {
756+
if (dataSetNodes != null && !dataSetNodes.contains(n.getSUID())) {
749757
show = false;
750758
} else if (table.getColumn(prefix + NODE_GS_TYPE) != null
751759
&& NODE_GS_TYPE_ENRICHMENT.equalsIgnoreCase(row.get(prefix + NODE_GS_TYPE, String.class))) {
@@ -776,6 +784,9 @@ private Set<CyNode> getFilteredInNodes(SliderBarPanel sliderPanel, EnrichmentMap
776784
return nodes;
777785
}
778786

787+
/**
788+
* If dataSetEdges is null, don't filter by Data Sets.
789+
*/
779790
private Set<CyEdge> getFilteredInEdges(SliderBarPanel sliderPanel, EnrichmentMap map, CyNetworkView networkView,
780791
Set<String> columnNames, Set<Long> dataSetEdges) {
781792
Set<CyEdge> edges = new HashSet<>();
@@ -791,7 +802,7 @@ private Set<CyEdge> getFilteredInEdges(SliderBarPanel sliderPanel, EnrichmentMap
791802
for (CyEdge e : network.getEdgeList()) {
792803
boolean show = true;
793804

794-
if (!dataSetEdges.contains(e.getSUID())) {
805+
if (dataSetEdges != null && !dataSetEdges.contains(e.getSUID())) {
795806
show = false;
796807
} else {
797808
CyRow row = network.getRow(e);
@@ -838,7 +849,9 @@ private Set<String> getFilteredColumnNames(Set<String> columnNames, Collection<A
838849
return filteredNames;
839850
}
840851

841-
private void showOrHideNodes(CyNetwork net, Set<CyNode> filteredInNodes) {
852+
private void showOrHideNodes(Set<CyNode> filteredInNodes) {
853+
CyNetwork net = netView.getModel();
854+
842855
for (CyNode n : net.getNodeList()) {
843856
final View<CyNode> nv = netView.getNodeView(n);
844857

@@ -883,7 +896,9 @@ private void showOrHideNodes(CyNetwork net, Set<CyNode> filteredInNodes) {
883896
}
884897
}
885898

886-
private void showOrHideEdges(CyNetwork net, Set<CyNode> filteredInNodes, Set<CyEdge> filteredInEdges) {
899+
private void showOrHideEdges(Set<CyNode> filteredInNodes, Set<CyEdge> filteredInEdges) {
900+
CyNetwork net = netView.getModel();
901+
887902
for (CyEdge e : net.getEdgeList()) {
888903
final View<CyEdge> ev = netView.getEdgeView(e);
889904

0 commit comments

Comments
 (0)