@@ -604,98 +604,6 @@ private void filterNodesAndEdges(EMViewControlPanel viewPanel, EnrichmentMap map
604
604
timer .start ();
605
605
}
606
606
607
- private Set <CyNode > getFilteredInNodes (SliderBarPanel sliderPanel , EnrichmentMap map , CyNetworkView networkView ,
608
- Set <String > columnNames , Set <Long > dataSetNodes ) {
609
- Set <CyNode > nodes = new HashSet <>();
610
-
611
- Double maxCutoff = (double ) sliderPanel .getValue () / sliderPanel .getPrecision ();
612
- Double minCutoff = (double ) sliderPanel .getMin () / sliderPanel .getPrecision ();
613
-
614
- CyNetwork network = networkView .getModel ();
615
- CyTable table = network .getDefaultNodeTable ();
616
-
617
- EMCreationParameters params = map .getParams ();
618
-
619
- // Get the prefix of the current network
620
- final String prefix = params .getAttributePrefix ();
621
-
622
- // Go through all the existing nodes to see if we need to hide any new nodes.
623
- for (CyNode n : network .getNodeList ()) {
624
- boolean show = true ;
625
- CyRow row = network .getRow (n );
626
-
627
- if (!dataSetNodes .contains (n .getSUID ())) {
628
- show = false ;
629
- } else if (table .getColumn (prefix + NODE_GS_TYPE ) != null
630
- && NODE_GS_TYPE_ENRICHMENT .equalsIgnoreCase (row .get (prefix + NODE_GS_TYPE , String .class ))) {
631
- // Skip Node if it's not an Enrichment-Geneset (but e.g. a Signature-Hub)...
632
- for (String colName : columnNames ) {
633
- if (table .getColumn (colName ) == null )
634
- continue ; // Ignore this column name (maybe the user deleted it)
635
-
636
- Double value = row .get (colName , Double .class );
637
-
638
- // Possible that there isn't a cutoff value for this geneset
639
- if (value == null )
640
- continue ;
641
-
642
- if (value >= minCutoff && value <= maxCutoff ) {
643
- show = true ;
644
- break ;
645
- } else {
646
- show = false ;
647
- }
648
- }
649
- }
650
-
651
- if (show )
652
- nodes .add (n );
653
- }
654
-
655
- return nodes ;
656
- }
657
-
658
- private Set <CyEdge > getFilteredInEdges (SliderBarPanel sliderPanel , EnrichmentMap map , CyNetworkView networkView ,
659
- Set <String > columnNames ) {
660
- Set <CyEdge > edges = new HashSet <>();
661
-
662
- JSlider slider = sliderPanel .getSlider ();
663
- Double maxCutoff = slider .getMaximum () / sliderPanel .getPrecision ();
664
- Double minCutoff = slider .getValue () / sliderPanel .getPrecision ();
665
-
666
- CyNetwork network = networkView .getModel ();
667
- CyTable table = network .getDefaultEdgeTable ();
668
-
669
- // Go through all the existing edges to see if we need to hide any new ones.
670
- for (CyEdge e : network .getEdgeList ()) {
671
- boolean show = true ;
672
- CyRow row = network .getRow (e );
673
-
674
- for (String colName : columnNames ) {
675
- if (table .getColumn (colName ) == null )
676
- continue ; // Ignore this column name (maybe the user deleted it)
677
-
678
- Double value = row .get (colName , Double .class );
679
-
680
- // Possible that there isn't value for this interaction
681
- if (value == null )
682
- continue ;
683
-
684
- if (value >= minCutoff && value <= maxCutoff ) {
685
- show = true ;
686
- break ;
687
- } else {
688
- show = false ;
689
- }
690
- }
691
-
692
- if (show )
693
- edges .add (e );
694
- }
695
-
696
- return edges ;
697
- }
698
-
699
607
private JPopupMenu getOptionsMenu () {
700
608
final JPopupMenu menu = new JPopupMenu ();
701
609
@@ -753,31 +661,184 @@ public FilterActionListener(EMViewControlPanel viewPanel, EnrichmentMap map, CyN
753
661
754
662
@ Override
755
663
public void actionPerformed (ActionEvent evt ) {
756
- Set <CyNode > filteredInNodes = new HashSet <>();
757
- Set <CyEdge > filteredInEdges = Collections .emptySet ();
758
-
664
+ CyNetwork net = netView .getModel ();
759
665
EMCreationParameters params = map .getParams ();
760
666
Set <AbstractDataSet > selectedDataSets = viewPanel .getCheckedDataSets ();
667
+
668
+ // Find nodes and edges that must be displayed
669
+ Set <CyNode > filteredInNodes = getFilteredInNodes (net , params , selectedDataSets );
670
+ Set <CyEdge > filteredInEdges = getFilteredInEdges (net , params , selectedDataSets );
671
+
672
+ // Hide or show nodes and their edges
673
+ showOrHideNodes (net , filteredInNodes );
674
+ showOrHideEdges (net , filteredInNodes , filteredInEdges );
675
+ netView .updateView ();
676
+
677
+ Timer timer = filterTimers .get (netView );
678
+
679
+ if (timer != null )
680
+ timer .stop ();
681
+ }
682
+
683
+ private Set <CyNode > getFilteredInNodes (CyNetwork net , EMCreationParameters params ,
684
+ Set <AbstractDataSet > selectedDataSets ) {
761
685
Set <Long > dataSetNodes = EnrichmentMap .getNodesUnion (selectedDataSets );
762
686
763
687
// Only p or q value, but not both!
764
688
if (viewPanel .getPValueSliderPanel () != null && viewPanel .getPValueSliderPanel ().isVisible ()) {
765
689
Set <String > columnNames = getFilteredColumnNames (params .getPValueColumnNames (), selectedDataSets );
766
- filteredInNodes .addAll (
767
- getFilteredInNodes (viewPanel .getPValueSliderPanel (), map , netView , columnNames , dataSetNodes ));
768
- } else if (viewPanel .getQValueSliderPanel () != null && viewPanel .getQValueSliderPanel ().isVisible ()) {
690
+
691
+ return getFilteredInNodes (viewPanel .getPValueSliderPanel (), map , netView , columnNames , dataSetNodes );
692
+ }
693
+
694
+ if (viewPanel .getQValueSliderPanel () != null && viewPanel .getQValueSliderPanel ().isVisible ()) {
769
695
Set <String > columnNames = getFilteredColumnNames (params .getQValueColumnNames (), selectedDataSets );
770
- filteredInNodes . addAll (
771
- getFilteredInNodes (viewPanel .getQValueSliderPanel (), map , netView , columnNames , dataSetNodes ) );
696
+
697
+ return getFilteredInNodes (viewPanel .getQValueSliderPanel (), map , netView , columnNames , dataSetNodes );
772
698
}
773
-
699
+
700
+ Set <CyNode > filteredInNodes = new HashSet <>();
701
+
702
+ for (CyNode n : net .getNodeList ()) {
703
+ if (dataSetNodes .contains (n .getSUID ()))
704
+ filteredInNodes .add (n );
705
+ }
706
+
707
+ return filteredInNodes ;
708
+ }
709
+
710
+ private Set <CyEdge > getFilteredInEdges (CyNetwork net , EMCreationParameters params ,
711
+ Set <AbstractDataSet > selectedDataSets ) {
712
+ Set <Long > dataSetEdges = EnrichmentMap .getEdgesUnion (selectedDataSets );
713
+
774
714
if (viewPanel .getSimilaritySliderPanel () != null )
775
- filteredInEdges = getFilteredInEdges (viewPanel .getSimilaritySliderPanel (), map , netView ,
776
- params .getSimilarityCutoffColumnNames ());
715
+ return getFilteredInEdges (viewPanel .getSimilaritySliderPanel (), map , netView ,
716
+ params .getSimilarityCutoffColumnNames (), dataSetEdges );
777
717
778
- CyNetwork net = netView . getModel ();
718
+ Set < CyEdge > filteredInEdges = new HashSet <> ();
779
719
780
- // Hide or show nodes and their edges
720
+ for (CyEdge e : net .getEdgeList ()) {
721
+ if (dataSetEdges .contains (e .getSUID ()))
722
+ filteredInEdges .add (e );
723
+ }
724
+
725
+ return filteredInEdges ;
726
+ }
727
+
728
+ private Set <CyNode > getFilteredInNodes (SliderBarPanel sliderPanel , EnrichmentMap map , CyNetworkView networkView ,
729
+ Set <String > columnNames , Set <Long > dataSetNodes ) {
730
+ Set <CyNode > nodes = new HashSet <>();
731
+
732
+ Double maxCutoff = (double ) sliderPanel .getValue () / sliderPanel .getPrecision ();
733
+ Double minCutoff = (double ) sliderPanel .getMin () / sliderPanel .getPrecision ();
734
+
735
+ CyNetwork network = networkView .getModel ();
736
+ CyTable table = network .getDefaultNodeTable ();
737
+
738
+ EMCreationParameters params = map .getParams ();
739
+
740
+ // Get the prefix of the current network
741
+ final String prefix = params .getAttributePrefix ();
742
+
743
+ // Go through all the existing nodes to see if we need to hide any new nodes.
744
+ for (CyNode n : network .getNodeList ()) {
745
+ boolean show = true ;
746
+ CyRow row = network .getRow (n );
747
+
748
+ if (!dataSetNodes .contains (n .getSUID ())) {
749
+ show = false ;
750
+ } else if (table .getColumn (prefix + NODE_GS_TYPE ) != null
751
+ && NODE_GS_TYPE_ENRICHMENT .equalsIgnoreCase (row .get (prefix + NODE_GS_TYPE , String .class ))) {
752
+ // Skip Node if it's not an Enrichment-Geneset (but e.g. a Signature-Hub)...
753
+ for (String colName : columnNames ) {
754
+ if (table .getColumn (colName ) == null )
755
+ continue ; // Ignore this column name (maybe the user deleted it)
756
+
757
+ Double value = row .get (colName , Double .class );
758
+
759
+ // Possible that there isn't a cutoff value for this geneset
760
+ if (value == null )
761
+ continue ;
762
+
763
+ if (value >= minCutoff && value <= maxCutoff ) {
764
+ show = true ;
765
+ break ;
766
+ } else {
767
+ show = false ;
768
+ }
769
+ }
770
+ }
771
+
772
+ if (show )
773
+ nodes .add (n );
774
+ }
775
+
776
+ return nodes ;
777
+ }
778
+
779
+ private Set <CyEdge > getFilteredInEdges (SliderBarPanel sliderPanel , EnrichmentMap map , CyNetworkView networkView ,
780
+ Set <String > columnNames , Set <Long > dataSetEdges ) {
781
+ Set <CyEdge > edges = new HashSet <>();
782
+
783
+ JSlider slider = sliderPanel .getSlider ();
784
+ Double maxCutoff = slider .getMaximum () / sliderPanel .getPrecision ();
785
+ Double minCutoff = slider .getValue () / sliderPanel .getPrecision ();
786
+
787
+ CyNetwork network = networkView .getModel ();
788
+ CyTable table = network .getDefaultEdgeTable ();
789
+
790
+ // Go through all the existing edges to see if we need to hide any new ones.
791
+ for (CyEdge e : network .getEdgeList ()) {
792
+ boolean show = true ;
793
+
794
+ if (!dataSetEdges .contains (e .getSUID ())) {
795
+ show = false ;
796
+ } else {
797
+ CyRow row = network .getRow (e );
798
+
799
+ for (String colName : columnNames ) {
800
+ if (table .getColumn (colName ) == null )
801
+ continue ; // Ignore this column name (maybe the user deleted it)
802
+
803
+ Double value = row .get (colName , Double .class );
804
+
805
+ // Possible that there isn't value for this interaction
806
+ if (value == null )
807
+ continue ;
808
+
809
+ if (value >= minCutoff && value <= maxCutoff ) {
810
+ show = true ;
811
+ break ;
812
+ } else {
813
+ show = false ;
814
+ }
815
+ }
816
+ }
817
+
818
+ if (show )
819
+ edges .add (e );
820
+ }
821
+
822
+ return edges ;
823
+ }
824
+
825
+ private Set <String > getFilteredColumnNames (Set <String > columnNames , Collection <AbstractDataSet > dataSets ) {
826
+ Set <String > filteredNames = new HashSet <>();
827
+
828
+ for (String name : columnNames ) {
829
+ for (AbstractDataSet ds : dataSets ) {
830
+ // TODO What about 2.x columns?
831
+ if (name .endsWith (" (" + ds .getName () + ")" )) {
832
+ filteredNames .add (name );
833
+ break ;
834
+ }
835
+ }
836
+ }
837
+
838
+ return filteredNames ;
839
+ }
840
+
841
+ private void showOrHideNodes (CyNetwork net , Set <CyNode > filteredInNodes ) {
781
842
for (CyNode n : net .getNodeList ()) {
782
843
final View <CyNode > nv = netView .getNodeView (n );
783
844
@@ -820,7 +881,9 @@ public void actionPerformed(ActionEvent evt) {
820
881
}
821
882
}
822
883
}
823
-
884
+ }
885
+
886
+ private void showOrHideEdges (CyNetwork net , Set <CyNode > filteredInNodes , Set <CyEdge > filteredInEdges ) {
824
887
for (CyEdge e : net .getEdgeList ()) {
825
888
final View <CyEdge > ev = netView .getEdgeView (e );
826
889
@@ -854,29 +917,6 @@ public void actionPerformed(ActionEvent evt) {
854
917
}
855
918
}
856
919
}
857
-
858
- netView .updateView ();
859
-
860
- Timer timer = filterTimers .get (netView );
861
-
862
- if (timer != null )
863
- timer .stop ();
864
- }
865
-
866
- private Set <String > getFilteredColumnNames (Set <String > columnNames , Collection <AbstractDataSet > dataSets ) {
867
- Set <String > filteredNames = new HashSet <>();
868
-
869
- for (String name : columnNames ) {
870
- for (AbstractDataSet ds : dataSets ) {
871
- // TODO What about 2.x columns?
872
- if (name .endsWith (" (" + ds .getName () + ")" )) {
873
- filteredNames .add (name );
874
- break ;
875
- }
876
- }
877
- }
878
-
879
- return filteredNames ;
880
920
}
881
921
}
882
922
}
0 commit comments