Skip to content

Commit 53e3218

Browse files
committed
Better caching of color gradients. Refs #290
1 parent 766b7d7 commit 53e3218

File tree

4 files changed

+12
-37
lines changed

4 files changed

+12
-37
lines changed

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

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -129,35 +129,6 @@ public DataSetFiles getDataSetFiles() {
129129
return dataSetFiles;
130130
}
131131

132-
@Override
133-
public int hashCode() {
134-
final int prime = 11;
135-
int result = 5;
136-
result = prime * result + ((method == null) ? 0 : method.hashCode());
137-
result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
138-
return result;
139-
}
140-
141-
@Override
142-
public boolean equals(Object obj) {
143-
if (this == obj)
144-
return true;
145-
if (obj == null)
146-
return false;
147-
if (getClass() != obj.getClass())
148-
return false;
149-
EMDataSet other = (EMDataSet) obj;
150-
if (method != other.method)
151-
return false;
152-
if (getName() == null) {
153-
if (other.getName() != null)
154-
return false;
155-
} else if (!getName().equals(other.getName())) {
156-
return false;
157-
}
158-
return true;
159-
}
160-
161132
@Override
162133
public String toString() {
163134
return "EMDataSet [name=" + getName() + ", method=" + method + "]";

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,9 @@ private JPanel createTablePanel() {
142142
table.setCellSelectionEnabled(true);
143143
table.setAutoCreateRowSorter(true);
144144
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
145+
146+
table.setDefaultRenderer(Double.class, new HeatMapCellRenderer());
147+
table.setDefaultRenderer(RankValue.class, new RankValueRenderer());
145148

146149
JPanel panel = new JPanel(new BorderLayout());
147150
panel.add(scrollPane, BorderLayout.CENTER);
@@ -486,8 +489,8 @@ public void updateSetting_RankOption(RankingOption rankOption) {
486489
}
487490

488491
private void updateSetting_ShowValues(boolean showValues) {
489-
table.setDefaultRenderer(Double.class, new HeatMapCellRenderer(showValues));
490-
table.setDefaultRenderer(RankValue.class, new RankValueRenderer());
492+
HeatMapCellRenderer renderer = (HeatMapCellRenderer) table.getDefaultRenderer(Double.class);
493+
renderer.setShowValues(showValues);
491494
clearTableHeader();
492495
createTableHeader(showValues ? COLUMN_WIDTH_VALUE : COLUMN_WIDTH_COLOR);
493496
table.revalidate();

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ 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()");
2524
float[] minMax = expression.getMinMax(transform);
2625
if(minMax == null || minMax.length < 2)
2726
return Optional.empty();

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,22 @@
1515
import javax.swing.border.Border;
1616
import javax.swing.table.TableCellRenderer;
1717

18+
import org.apache.commons.lang3.tuple.Pair;
1819
import org.baderlab.csplugins.enrichmentmap.model.EMDataSet;
1920
import org.baderlab.csplugins.enrichmentmap.view.heatmap.HeatMapParams.Transform;
2021
import org.baderlab.csplugins.org.mskcc.colorgradient.ColorGradientRange;
2122
import org.baderlab.csplugins.org.mskcc.colorgradient.ColorGradientTheme;
2223

2324
public class HeatMapCellRenderer implements TableCellRenderer {
2425

25-
private final Map<EMDataSet,Optional<DataSetColorRange>> colorRanges = new HashMap<>();
26+
private final Map<Pair<EMDataSet,Transform>,Optional<DataSetColorRange>> colorRanges = new HashMap<>();
2627
private final DecimalFormat format = new DecimalFormat("###.##");
27-
private final boolean showValue;
28+
private boolean showValue;
2829

2930

30-
public HeatMapCellRenderer(boolean showValue) {
31+
public void setShowValues(boolean showValue) {
3132
this.showValue = showValue;
3233
}
33-
3434

3535
@Override
3636
public JLabel getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
@@ -82,7 +82,9 @@ public Color getColor(HeatMapTableModel model, int col, double d) {
8282

8383
public Optional<DataSetColorRange> getRange(EMDataSet dataset, Transform transform) {
8484
// creating the color range for Transform.ROW_NORMALIZED consumes memory, so cache the value
85-
return colorRanges.computeIfAbsent(dataset, ds -> DataSetColorRange.create(ds.getExpressionSets(), transform));
85+
return colorRanges.computeIfAbsent(Pair.of(dataset, transform),
86+
pair -> DataSetColorRange.create(pair.getLeft().getExpressionSets(), pair.getRight())
87+
);
8688
}
8789

8890

0 commit comments

Comments
 (0)