Skip to content

Commit 766b7d7

Browse files
committed
Fix color gradient for log transform. Refs #290
1 parent b6ca47a commit 766b7d7

File tree

5 files changed

+12
-8
lines changed

5 files changed

+12
-8
lines changed

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/model/GeneExpression.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,9 @@ private float mean() {
178178
private float std(final float mean) {
179179
float sum = 0;
180180
for(float exp : expression) {
181-
sum += (float)Math.pow(Math.abs(exp - mean), 2);
181+
if(Float.isFinite(exp)) {
182+
sum += (float)Math.pow(Math.abs(exp - mean), 2);
183+
}
182184
}
183185
return (float) Math.sqrt(sum) / expression.length;
184186
}

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/model/GeneExpressionMatrix.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,6 @@
5454
* Class representing a set of genes/proteins expresion profile
5555
*/
5656
public class GeneExpressionMatrix {
57-
58-
59-
6057

6158
//name of columns - specified by first or second row in the expression matrix
6259
private String[] columnNames;

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ private DataSetColorRange(ColorGradientTheme theme, ColorGradientRange range) {
2121
* Reset color gradients based on a change in the data transformation.
2222
*/
2323
public static Optional<DataSetColorRange> create(GeneExpressionMatrix expression, Transform transform) {
24+
System.out.println("DataSetColorRange.create()");
2425
float[] minMax = expression.getMinMax(transform);
2526
if(minMax == null || minMax.length < 2)
2627
return Optional.empty();
@@ -37,6 +38,11 @@ public static Optional<DataSetColorRange> create(GeneExpressionMatrix expression
3738
ColorGradientRange range = ColorGradientRange.getInstance(0, median, median, max, 0, median, median, max);
3839
ColorGradientTheme theme = ColorGradientTheme.GREEN_ONECOLOR_GRADIENT_THEME;
3940
return Optional.of(new DataSetColorRange(theme, range));
41+
} else if(Math.abs(min) > max) {
42+
min = Math.abs(min);
43+
ColorGradientRange range = ColorGradientRange.getInstance(-min, 0, 0, min, -min, 0, 0, min);
44+
ColorGradientTheme theme = ColorGradientTheme.PR_GN_GRADIENT_THEME;
45+
return Optional.of(new DataSetColorRange(theme, range));
4046
} else {
4147
ColorGradientRange range = ColorGradientRange.getInstance(-max, 0, 0, max, -max, 0, 0, max);
4248
ColorGradientTheme theme = ColorGradientTheme.PR_GN_GRADIENT_THEME;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,9 @@ public static Color getColor(Double measurement, DataSetColorRange range) {
9191
}
9292

9393
public static Color getColor(Double measurement, ColorGradientTheme theme, ColorGradientRange range) {
94-
if (theme == null || range == null || measurement == null)
94+
if (theme == null)
9595
return Color.GRAY;
96-
if(!Double.isFinite(measurement)) // missing data can result in NaN, log transformed value of -1 can result in -Infinity
96+
if(range == null || measurement == null || !Double.isFinite(measurement)) // missing data can result in NaN, log transformed value of -1 can result in -Infinity
9797
return theme.getNoDataColor();
9898

9999
float rLow = (float)theme.getMinColor().getRed() / 255f;

EnrichmentMapPlugin/src/test/java/org/baderlab/csplugins/enrichmentmap/model/ExpressionOpsTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
import org.baderlab.csplugins.enrichmentmap.view.heatmap.HeatMapParams.Transform;
1111
import org.baderlab.csplugins.enrichmentmap.view.heatmap.table.DataSetColorRange;
12-
import org.junit.Ignore;
1312
import org.junit.Test;
1413

1514
public class ExpressionOpsTest {
@@ -111,7 +110,7 @@ public void testExpressionMatrixOpsZeros() {
111110
assertEquals(0f, matrix.getClosestToZero(), 0.0f);
112111
}
113112

114-
@Ignore
113+
@Test
115114
public void testDataSetColorRangeNaN() {
116115
Map<Integer,GeneExpression> map = new HashMap<>();
117116
map.put(1, new GeneExpression("ge1", "", new float[] {Float.NaN, Float.NaN, 1.0f, Float.NaN, Float.NaN}));

0 commit comments

Comments
 (0)