Skip to content

Commit 2cce78e

Browse files
committed
PA dialog wasn't handling case where there are no ranks. Fixes #304
1 parent dd8ae0e commit 2cce78e

File tree

4 files changed

+39
-35
lines changed

4 files changed

+39
-35
lines changed

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/commands/PAKnownSignatureCommandTask.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ private FilterMetric.MannWhit processMannWhitneyArgs(EnrichmentMap map, EMDataSe
207207
if(mannWhitRanks.isEmpty() && map.isSingleRanksPerDataset()) {
208208
String ranksName = dataset.getAllRanksNames().iterator().next();
209209
Ranking ranking = dataset.getRanksByName(ranksName);
210-
return new FilterMetric.MannWhit(cutoff, ranksName, ranking, type);
210+
return new FilterMetric.MannWhit(type, cutoff, ranksName, ranking);
211211
} else if(mannWhitRanks.isEmpty()) {
212212
throw new IllegalArgumentException("At least one of the data sets you have specified has more than one ranks file. "
213213
+ "You must use the 'mannWhitRanks' parameter to specify which ranking to use for each data set.");
@@ -226,10 +226,10 @@ private FilterMetric.MannWhit processMannWhitneyArgs(EnrichmentMap map, EMDataSe
226226
if(rankFile == null && ranksNames.size() == 1) {
227227
String ranksName = ranksNames.iterator().next();
228228
Ranking ranking = dataset.getRanksByName(ranksName);
229-
return new FilterMetric.MannWhit(cutoff, ranksName, ranking, type);
229+
return new FilterMetric.MannWhit(type, cutoff, ranksName, ranking);
230230
} else {
231231
Ranking ranking = dataset.getRanksByName(rankFile);
232-
return new FilterMetric.MannWhit(cutoff, rankFile, ranking, type);
232+
return new FilterMetric.MannWhit(type, cutoff, rankFile, ranking);
233233
}
234234
}
235235
}

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/postanalysis/FilterMetric.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,11 +205,11 @@ public String getDisplayString() {
205205
class MannWhit extends BaseFilterMetric {
206206

207207
private final String rankingName;
208-
private final Ranking ranks;
208+
private final @Nullable Ranking ranks;
209209
private final MannWhitneyMemoized mannWhitneyCache = new MannWhitneyMemoized();
210+
210211

211-
212-
public MannWhit(double filter, String rankingName, Ranking ranks, PostAnalysisFilterType type) {
212+
public MannWhit(PostAnalysisFilterType type, double filter, String rankingName, Ranking ranks) {
213213
super(type, filter);
214214
if(!type.isMannWhitney())
215215
throw new IllegalArgumentException("FilterType is not Mann Whitney: " + type);
@@ -228,7 +228,7 @@ public double moreSimilar(double x, double y) {
228228
public double computeValue(Set<Integer> geneSet, Set<Integer> sigSet, @Nullable SignatureGenesetSimilarity similarity) {
229229
Set<Integer> intersection = Sets.intersection(geneSet, sigSet);
230230
int size = intersection.size();
231-
if(ranks.isEmpty() || size == 0) {
231+
if(ranks == null || ranks.isEmpty() || size == 0) {
232232
if(similarity != null) {
233233
similarity.setMannWhitPValueTwoSided(1.0); // avoid NoDataException
234234
similarity.setMannWhitPValueGreater(1.0);

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/postanalysis/PAWeightPanel.java

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.HashMap;
1818
import java.util.List;
1919
import java.util.Map;
20+
import java.util.Set;
2021

2122
import javax.swing.ButtonGroup;
2223
import javax.swing.DefaultComboBoxModel;
@@ -425,32 +426,35 @@ private JPanel createMannWhittCard() {
425426
JPanel body = new JPanel(new GridBagLayout());
426427
int y = 0;
427428
for(EMDataSet dataset : dataSets) {
428-
final String dataSetName = dataset.getName();
429-
JLabel label = new JLabel(dataSetName + ":");
430-
JComboBox<String> combo = new JComboBox<>();
431-
for(String ranksName : dataset.getAllRanksNames()) {
432-
combo.addItem(ranksName);
429+
Set<String> ranksNames = dataset.getAllRanksNames();
430+
if(ranksNames != null && !ranksNames.isEmpty()) {
431+
final String dataSetName = dataset.getName();
432+
JLabel label = new JLabel(dataSetName + ":");
433+
JComboBox<String> combo = new JComboBox<>();
434+
for(String ranksName : ranksNames) {
435+
combo.addItem(ranksName);
436+
}
437+
SwingUtil.makeSmall(label, combo);
438+
if(combo.getItemCount() <= 1) {
439+
combo.setEnabled(false);
440+
}
441+
442+
String ranksName = mannWhitRanks.get(dataSetName);
443+
if(ranksName == null)
444+
mannWhitRanks.put(dataSetName, combo.getSelectedItem().toString());
445+
else
446+
combo.setSelectedItem(ranksName);
447+
448+
combo.addActionListener(e -> {
449+
String ranks = combo.getSelectedItem().toString();
450+
mannWhitRanks.put(dataSetName, ranks);
451+
firePropertyChange(PROPERTY_PARAMETERS, false, true);
452+
});
453+
454+
body.add(label, GBCFactory.grid(0,y).weightx(.5).anchor(EAST).fill(NONE).get());
455+
body.add(combo, GBCFactory.grid(1,y).weightx(.5).get());
456+
y++;
433457
}
434-
SwingUtil.makeSmall(label, combo);
435-
if(combo.getItemCount() <= 1) {
436-
combo.setEnabled(false);
437-
}
438-
439-
String ranksName = mannWhitRanks.get(dataSetName);
440-
if(ranksName == null)
441-
mannWhitRanks.put(dataSetName, combo.getSelectedItem().toString());
442-
else
443-
combo.setSelectedItem(ranksName);
444-
445-
combo.addActionListener(e -> {
446-
String ranks = combo.getSelectedItem().toString();
447-
mannWhitRanks.put(dataSetName, ranks);
448-
firePropertyChange(PROPERTY_PARAMETERS, false, true);
449-
});
450-
451-
body.add(label, GBCFactory.grid(0,y).weightx(.5).anchor(EAST).fill(NONE).get());
452-
body.add(combo, GBCFactory.grid(1,y).weightx(.5).get());
453-
y++;
454458
}
455459

456460
JPanel container = new JPanel(new BorderLayout());
@@ -611,8 +615,8 @@ public FilterMetric createFilterMetric(String dataset) {
611615
case MANN_WHIT_GREATER:
612616
case MANN_WHIT_LESS:
613617
String rankingName = mannWhitRanks.get(dataset);
614-
Ranking ranking = map.getDataSet(dataset).getRanks().get(rankingName);
615-
return new FilterMetric.MannWhit(value, rankingName, ranking, type);
618+
Ranking ranking = rankingName == null ? null : map.getDataSet(dataset).getRanks().get(rankingName);
619+
return new FilterMetric.MannWhit(type, value, rankingName, ranking);
616620
default:
617621
return null;
618622
}

EnrichmentMapPlugin/src/test/java/org/baderlab/csplugins/enrichmentmap/task/PostAnalysisTaskTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public void test_2_PostAnalysisMannWhitney(@Continuous VisualMappingFunctionFact
111111
PostAnalysisFilterType mannWhitTwoSided = PostAnalysisFilterType.MANN_WHIT_TWO_SIDED;
112112

113113
FilterMetricSet rankTest = new FilterMetricSet(PostAnalysisFilterType.MANN_WHIT_TWO_SIDED);
114-
rankTest.put(LegacySupport.DATASET1, new FilterMetric.MannWhit(mannWhitTwoSided.defaultValue, null, ranking, mannWhitTwoSided));
114+
rankTest.put(LegacySupport.DATASET1, new FilterMetric.MannWhit(mannWhitTwoSided, mannWhitTwoSided.defaultValue, null, ranking));
115115
builder.setRankTestParameters(rankTest);
116116

117117
runPostAnalysis(emNetwork, builder, PATH + "PA_top8_middle8_bottom8.gmt", LegacySupport.DATASET1);

0 commit comments

Comments
 (0)