Skip to content

Commit 2a6cfa0

Browse files
committed
Fix NPEs when siginficance value is not available
1 parent b3947c6 commit 2a6cfa0

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

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

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,20 @@ public void run(TaskMonitor tm) {
7373

7474
Map<CyNode,Double> nodeSig = new HashMap<>();
7575
for(CyNode node : nodes) {
76-
nodeSig.put(node, getNodeAvgSig(network, node, columnIDs));
76+
var nodeAvgSig = getNodeAvgSig(network, node, columnIDs);
77+
if(nodeAvgSig != null) {
78+
nodeSig.put(node, nodeAvgSig);
79+
}
7780
}
7881

79-
nodes.sort(compareSignificance(nodeSig, chartData));
80-
81-
// System.out.println("** significance command **");
82-
// columnIDs.forEach(System.out::println);
83-
// nodes.forEach(node -> System.out.println("Node:" + node.getSUID() + ", sig:" + nodeSig.get(node)));
82+
results = nodes.stream()
83+
.filter(nodeSig::containsKey)
84+
.sorted(compareSignificance(nodeSig, chartData))
85+
.collect(Collectors.toList());
8486

85-
results = nodes;
87+
System.out.println("** significance command **");
88+
columnIDs.forEach(System.out::println);
89+
results.forEach(node -> System.out.println("Node:" + node.getSUID() + ", sig:" + nodeSig.get(node)));
8690
}
8791

8892

@@ -119,8 +123,8 @@ private static Comparator<CyNode> compareSignificance(Map<CyNode,Double> nodeSig
119123
default:
120124
case P_VALUE:
121125
case FDR_VALUE:
122-
return (n1, n2) -> Double.compare(nodeSig.get(n1), nodeSig.get(n2));
123-
case NONE: // NONE defaults to -log10
126+
return (n1, n2) -> Double.compare(nodeSig.get(n1), nodeSig.get(n2));
127+
case NONE: // -log10
124128
case LOG10_PVAL:
125129
return (n1, n2) -> -Double.compare(nodeSig.get(n1), nodeSig.get(n2));
126130
case NES_VALUE:
@@ -157,7 +161,7 @@ private List<CyColumnIdentifier> getSignificanceColumns(EnrichmentMap map, CyNet
157161
if(styleCol != null) {
158162
return List.of(styleCol);
159163
}
160-
columnDescriptor = EMStyleBuilder.Columns.NODE_PVALUE; // default to p-value
164+
columnDescriptor = EMStyleBuilder.Columns.NODE_LOG_PVALUE_MAX;
161165
}
162166

163167
EMDataSet ds = getDataSet(map);
@@ -170,24 +174,27 @@ private List<CyColumnIdentifier> getSignificanceColumns(EnrichmentMap map, CyNet
170174
}
171175

172176

173-
private double getNodeAvgSig(CyNetwork network, CyNode node, List<CyColumnIdentifier> columnIDs) {
177+
private Double getNodeAvgSig(CyNetwork network, CyNode node, List<CyColumnIdentifier> columnIDs) {
174178
CyTable nodeTable = network.getDefaultNodeTable();
175179

176180
double sigSum = 0;
177181
boolean hasSig = false;
178182

179183
for(var colID : columnIDs) {
180184
String colName = colID.getColumnName();
181-
Object val = network.getRow(node).get(colName, nodeTable.getColumn(colName).getType());
182-
if(val instanceof Number) {
183-
double sig = ((Number)val).doubleValue();
184-
sigSum += sig;
185-
hasSig = true;
185+
var column = nodeTable.getColumn(colName);
186+
if(column != null) {
187+
Object val = network.getRow(node).get(colName, column.getType());
188+
if(val instanceof Number) {
189+
double sig = ((Number)val).doubleValue();
190+
sigSum += sig;
191+
hasSig = true;
192+
}
186193
}
187194
}
188195

189196
if(!hasSig)
190-
return Double.NaN;
197+
return null;
191198

192199
return sigSum / columnIDs.size();
193200
}

0 commit comments

Comments
 (0)