Skip to content

Commit abd0202

Browse files
committed
Fix NPE in GSEALeadingEdgeRankingOption.
1 parent 3b6ba9b commit abd0202

File tree

3 files changed

+24
-11
lines changed

3 files changed

+24
-11
lines changed

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/heatmap/GSEALeadingEdgeRankingOption.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet;
1212
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet.Method;
13-
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentResult;
1413
import org.baderlab.csplugins.enrichmentmap.model.GSEAResult;
1514
import org.baderlab.csplugins.enrichmentmap.model.GeneExpression;
1615
import org.baderlab.csplugins.enrichmentmap.model.Rank;
@@ -26,16 +25,16 @@ public class GSEALeadingEdgeRankingOption implements RankingOption {
2625

2726
private final String rankingName;
2827
private final EMDataSet dataset;
29-
private final String geneSetName;
28+
private final GSEAResult result;
3029

3130
private double scoreAtMax;
3231
private int rankAtMax;
3332

3433

35-
public GSEALeadingEdgeRankingOption(EMDataSet dataset, String geneSetName, String rankingName) {
34+
public GSEALeadingEdgeRankingOption(EMDataSet dataset, GSEAResult result, String rankingName) {
3635
assert dataset.getMethod() == Method.GSEA;
36+
this.result = result;
3737
this.dataset = dataset;
38-
this.geneSetName = geneSetName;
3938
this.rankingName = rankingName;
4039
}
4140

@@ -123,8 +122,6 @@ else if (ranksSubset[m] >= topRank && isNegative && topRank != 0 && topRank != -
123122
* sets (both if there are two datasets)
124123
*/
125124
private void initializeLeadingEdge() {
126-
Map<String,EnrichmentResult> results = dataset.getEnrichments().getEnrichments();
127-
GSEAResult result = (GSEAResult) results.get(geneSetName);
128125
scoreAtMax = result.getScoreAtMax();
129126
if(scoreAtMax == DetermineEnrichmentResultFileReader.DefaultScoreAtMax) {
130127
scoreAtMax = result.getNES();

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/heatmap/HeatMapMediator.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet.Method;
1515
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
1616
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapManager;
17+
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentResult;
18+
import org.baderlab.csplugins.enrichmentmap.model.GSEAResult;
1719
import org.baderlab.csplugins.enrichmentmap.model.Ranking;
1820
import org.baderlab.csplugins.enrichmentmap.style.EMStyleBuilder;
1921
import org.baderlab.csplugins.enrichmentmap.util.CoalesceTimerStore;
@@ -200,10 +202,20 @@ private List<RankingOption> getDataSetRankOptions(EnrichmentMap map, CyNetwork n
200202
for(EMDataSet dataset : map.getDataSetList()) {
201203
if(nodes.size() == 1 && edges.isEmpty() && dataset.getMethod() == Method.GSEA) {
202204
String geneSetName = network.getRow(nodes.get(0)).get(CyNetwork.NAME, String.class);
203-
Map<String,Ranking> ranks = dataset.getRanks();
204-
ranks.forEach((name, ranking) -> {
205-
options.add(new GSEALeadingEdgeRankingOption(dataset, geneSetName, name));
206-
});
205+
Map<String,EnrichmentResult> results = dataset.getEnrichments().getEnrichments();
206+
EnrichmentResult result = results.get(geneSetName);
207+
if(result instanceof GSEAResult) {
208+
GSEAResult gseaResult = (GSEAResult) result;
209+
Map<String,Ranking> ranks = dataset.getRanks();
210+
ranks.forEach((name, ranking) -> {
211+
options.add(new GSEALeadingEdgeRankingOption(dataset, gseaResult, name));
212+
});
213+
} else {
214+
Map<String,Ranking> ranks = dataset.getRanks();
215+
ranks.forEach((name, ranking) -> {
216+
options.add(new BasicRankingOption(ranking, dataset, name));
217+
});
218+
}
207219
} else {
208220
Map<String,Ranking> ranks = dataset.getRanks();
209221
ranks.forEach((name, ranking) -> {

EnrichmentMapPlugin/src/test/java/org/baderlab/csplugins/enrichmentmap/heatmap/HeatMapRanksTest.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet.Method;
2020
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMap;
2121
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentMapManager;
22+
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentResult;
2223
import org.baderlab.csplugins.enrichmentmap.model.EnrichmentResultFilterParams.NESFilter;
24+
import org.baderlab.csplugins.enrichmentmap.model.GSEAResult;
2325
import org.baderlab.csplugins.enrichmentmap.model.GeneSet;
2426
import org.baderlab.csplugins.enrichmentmap.model.LegacySupport;
2527
import org.baderlab.csplugins.enrichmentmap.model.Ranking;
@@ -91,7 +93,9 @@ public void testLeadingEdge(EnrichmentMapManager emManager) throws Exception {
9193
assertNotNull(gs);
9294

9395
// Run the ranking
94-
RankingOption rankingOption = new GSEALeadingEdgeRankingOption(dataset, geneSetName, Ranking.GSEARanking);
96+
Map<String,EnrichmentResult> results = dataset.getEnrichments().getEnrichments();
97+
GSEAResult result = (GSEAResult) results.get(geneSetName);
98+
RankingOption rankingOption = new GSEALeadingEdgeRankingOption(dataset, result, Ranking.GSEARanking);
9599
Map<Integer,RankValue> ranks = rankingOption.computeRanking(gs.getGenes()).get().get();
96100
assertEquals(454, ranks.size());
97101

0 commit comments

Comments
 (0)