Skip to content

Commit 55efc40

Browse files
committed
Fix heat map update bug when changing Transform.
1 parent 819f9bf commit 55efc40

File tree

8 files changed

+22
-25
lines changed

8 files changed

+22
-25
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public Optional<String> getPhenotype(int idx) {
4242
}
4343

4444
@Override
45-
public double getValue(int geneID, int idx, Compress compress) {
45+
public double getValue(int geneID, int idx, Compress compress, Transform transform) {
4646
EMDataSet dataset = getDataSet(idx);
4747
String pheno = getName(idx);
4848

@@ -51,7 +51,7 @@ public double getValue(int geneID, int idx, Compress compress) {
5151
if (phenotypes == null || phenotypes.length == 0)
5252
return Double.NaN;
5353

54-
Optional<float[]> optExpr = expressionCache.getExpressions(dataset, geneID);
54+
Optional<float[]> optExpr = expressionCache.getExpressions(geneID, dataset, transform);
5555

5656
if (!optExpr.isPresent())
5757
return Double.NaN;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ public EMDataSet getDataSet(int idx) {
2121
}
2222

2323
@Override
24-
public double getValue(int geneID, int idx, Compress compress) {
24+
public double getValue(int geneID, int idx, Compress compress, Transform transform) {
2525
EMDataSet dataset = getDataSet(idx);
26-
Optional<float[]> expression = expressionCache.getExpressions(dataset, geneID);
26+
Optional<float[]> expression = expressionCache.getExpressions(geneID, dataset, transform);
2727

2828
if (compress == null || !expression.isPresent())
2929
return Float.NaN;

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

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,47 +6,45 @@
66

77
import javax.annotation.Nullable;
88

9-
import org.apache.commons.lang3.tuple.Pair;
9+
import org.apache.commons.lang3.tuple.Triple;
1010

1111
import com.google.common.cache.Cache;
1212
import com.google.common.cache.CacheBuilder;
1313

1414
public class ExpressionCache {
1515

16-
private final Cache<Pair<Integer, EMDataSet>, Optional<float[]>> cache;
17-
private final Transform transform;
16+
private final Cache<Triple<Integer,EMDataSet,Transform>, Optional<float[]>> cache;
1817

19-
public ExpressionCache(Transform transform) {
20-
this.transform = transform;
18+
public ExpressionCache() {
2119
this.cache = CacheBuilder.newBuilder().maximumSize(20).build();
2220
}
2321

24-
public Optional<float[]> getExpressions(EMDataSet dataset, int geneID) {
22+
public Optional<float[]> getExpressions(int geneID, EMDataSet dataset, Transform transform) {
2523
try {
26-
return cache.get(Pair.of(geneID, dataset),
27-
() -> Optional.ofNullable(getExpression(dataset, geneID, transform))
24+
return cache.get(Triple.of(geneID, dataset, transform),
25+
() -> Optional.ofNullable(getExpression(geneID, dataset, transform))
2826
);
2927
} catch (ExecutionException e) {
3028
return Optional.empty();
3129
}
3230
}
3331

34-
public float getExpression(EMDataSet dataset, int geneID, int expressionIndex) {
35-
Optional<float[]> vals = getExpressions(dataset, geneID);
32+
public float getExpression(int geneID, EMDataSet dataset, Transform transform, int expressionIndex) {
33+
Optional<float[]> vals = getExpressions(geneID, dataset, transform);
3634

3735
return vals.isPresent() ? vals.get()[expressionIndex] : Float.NaN;
3836
}
3937

40-
public static GeneExpression getGeneExpression(EMDataSet dataset, int geneID) {
38+
public static GeneExpression getGeneExpression(int geneID, EMDataSet dataset) {
4139
GeneExpressionMatrix matrix = dataset.getExpressionSets();
4240
Map<Integer, GeneExpression> expressions = matrix.getExpressionMatrix();
4341
GeneExpression row = expressions.get(geneID);
4442

4543
return row;
4644
}
4745

48-
private static @Nullable float[] getExpression(EMDataSet dataset, int geneID, Transform transform) {
49-
GeneExpression expression = getGeneExpression(dataset, geneID);
46+
private static @Nullable float[] getExpression(int geneID, EMDataSet dataset, Transform transform) {
47+
GeneExpression expression = getGeneExpression(geneID, dataset);
5048

5149
if (expression != null) {
5250
switch (transform) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public interface ExpressionData {
99

1010
EMDataSet getDataSet(int col);
1111

12-
double getValue(int geneID, int col, Compress compress);
12+
double getValue(int geneID, int col, Compress compress, Transform transform);
1313

1414
String getName(int col);
1515

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ private int getIndexInDataSet(int idx) {
3737
}
3838

3939
@Override
40-
public double getValue(int geneID, int idx, Compress compress) {
40+
public double getValue(int geneID, int idx, Compress compress, Transform transform) {
4141
EMDataSet dataset = getDataSet(idx);
4242

43-
return expressionCache.getExpression(dataset, geneID, getIndexInDataSet(idx));
43+
return expressionCache.getExpression(geneID, dataset, transform, getIndexInDataSet(idx));
4444
}
4545

4646
@Override

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/task/UpdateAssociatedStyleTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ private void updateExpressionDataColumn() {
130130
continue;
131131

132132
for (int i = 0; i < n; i++) {
133-
double value = exp.getValue(id, i, options.getCompress());
133+
double value = exp.getValue(id, i, options.getCompress(), options.getTransform());
134134
data[i] = value;
135135
}
136136
}

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/view/control/ControlPanelMediator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -804,7 +804,7 @@ private AssociatedStyleOptions createAssociatedStyleOptions(EnrichmentMap map, A
804804

805805
private ExpressionData createExpressionData(EnrichmentMap map, List<EMDataSet> datasets, Transform transform, Compress compress) {
806806
ExpressionData exp = null;
807-
ExpressionCache cache = new ExpressionCache(transform);
807+
ExpressionCache cache = new ExpressionCache();
808808

809809
switch (compress) {
810810
case DATASET_MEDIAN:

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public void update(
8989
datasets = Collections.emptyList();
9090
}
9191

92-
expressionCache = new ExpressionCache(transform);
92+
expressionCache = new ExpressionCache();
9393

9494
ExpressionData uncompressed = new Uncompressed(datasets, expressionCache);
9595
ExpressionData compressedDataSet = new CompressedDataSet(datasets, expressionCache, map != null && map.isDistinctExpressionSets());
@@ -120,7 +120,6 @@ public void setTransform(Transform transform, Compress compress) {
120120
boolean structureChanged = !this.compress.sameStructure(compress);
121121
this.transform = transform;
122122
this.compress = compress;
123-
this.expressionCache = new ExpressionCache(transform);
124123

125124
if (structureChanged)
126125
fireTableStructureChanged();
@@ -220,7 +219,7 @@ public Object getValueAt(int row, int col) {
220219
ExpressionData exp = data.get(compress);
221220
if(exp == null || geneID == null)
222221
return Double.NaN; // because the DefaultRowSorter doesn't sort null the way we want
223-
return exp.getValue(geneID, col - DESC_COL_COUNT, compress);
222+
return exp.getValue(geneID, col - DESC_COL_COUNT, compress, transform);
224223
}
225224

226225
public RankValue getRankValue(int row) {

0 commit comments

Comments
 (0)