Skip to content

Commit 2d4b1c7

Browse files
committed
Bug fix: negative data min, not transfere from server correctly
- Also: use negative data min to recognize noisy data and don't compress as agressively
1 parent 9b2d6b5 commit 2d4b1c7

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

src/firefly/java/edu/caltech/ipac/firefly/server/visualize/VisJsonSerializer.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,8 @@ else if (data instanceof JSONObject jo) {
290290
private static JSONObject serializeWebFitsData(WebFitsData wfData) {
291291
if (wfData==null) return null;
292292
JSONObject map = new JSONObject();
293-
putDoubleOver0(map, "dataMin", wfData.dataMin());
294-
putDoubleOver0(map,"dataMax", wfData.dataMax());
293+
putDoubleNot0(map, "dataMin", wfData.dataMin());
294+
putDoubleNot0(map,"dataMax", wfData.dataMax());
295295
putStr(map, "fluxUnits", wfData.fluxUnits());
296296
putNum(map, "getFitsFileSize", wfData.fitsFileSize());
297297
return map;
@@ -456,6 +456,7 @@ private static boolean getBoolean(JSONObject j, String key) throws IllegalArgume
456456
private static void addJsonObj(JSONArray a, JSONObject v) {a.add(v);}
457457

458458
private static void putDoubleOver0(JSONObject m, String key, double v) {if (v>0.0) putDouble(m,key,v);}
459+
private static void putDoubleNot0(JSONObject m, String key, double v) {if (v!=0.0) putDouble(m,key,v);}
459460
private static void putNumOver0(JSONObject m, String key, int v) {if (v>0) putNum(m,key,v);}
460461
private static void putStrNotNull(JSONObject m, String key, String v) {if (v!=null) putStr(m,key,v);}
461462
private static void putBoolIfTrue(JSONObject m, String key, boolean v) {if (v) putBool(m,key,v);}

src/firefly/js/visualize/rawData/RawDataOps.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,9 @@ function getFirstDataCompress(plot, mask) {
220220
if (mask) return 'FULL';
221221
const {dataWidth, dataHeight}= plot;
222222
const size= dataWidth*dataHeight;
223+
if (!isThreeColor(plot) && plot.webFitsData[Band.NO_BAND.value].dataMin<0) { //these type of image don't seem to compress very well
224+
return (size < 100*MEG) ? 'FULL' : 'HALF';
225+
}
223226
if (size < 6*MEG) return 'FULL';
224227
if (size < 10*MEG) return 'HALF';
225228
return 'QUARTER';
@@ -277,7 +280,7 @@ export async function loadStretchData(pv, plot, dispatcher) {
277280
if (fatal) {
278281
Logger('RawDataOps').warn(`dispatch the the plot failed on BYTE_DATA_REFRESH: ${dataCompress}`);
279282
if (dataCompress!=='FULL') {
280-
await requestAgain(reqId, plotId, plot, 5, 'FULL', workerKey, dispatcher);
283+
await requestAgain(reqId, plotId, plot, 1, 'FULL', workerKey, dispatcher);
281284
}
282285
else {
283286
dispatcher({ type: ImagePlotCntlr.PLOT_IMAGE_FAIL,
@@ -289,7 +292,7 @@ export async function loadStretchData(pv, plot, dispatcher) {
289292

290293
if (plotInvalid()) return;
291294
let currPlot= primePlot(visRoot(),plotId);
292-
const waitTime= currPlot.zoomFactor<.3 ? 5000 : 1500; // wait 5 sec if small zoom level is otherwise 1.5 sec
295+
const waitTime= currPlot.zoomFactor<.3 ? 4000 : 100; // wait 4 sec if small zoom level is otherwise 1 sec
293296
const nextDataCompress= getNextDataCompress(dataCompress,currPlot);
294297
const secondSuccess= await requestAgain(reqId, plotId, currPlot, waitTime, nextDataCompress, workerKey, dispatcher);
295298
if (secondSuccess && nextDataCompress==='HALF' && dataSize < MAX_FULL_DATA_SIZE) {

src/firefly/js/visualize/ui/ColorPanelReducer.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ function computeLowerRangeField(fields,rv,fitsData,lowerWhich='lowerWhich', lowe
122122
break;
123123
case ABSOLUTE:
124124
retval= {
125-
validator: fitsData.dataMin && fitsData.dataMax ?
125+
validator: !isNaN(fitsData.dataMin) && !isNaN(fitsData.dataMax) ?
126126
Validate.floatRange.bind(null,fitsData.dataMin, fitsData.dataMax, 3, 'Lower range') : undefined,
127127
value : resetDefault ? fitsData.dataMin : fields[lowerRange].value
128128
};
@@ -158,7 +158,7 @@ function computeUpperRangeField(fields,rv,fitsData) {
158158

159159
case ABSOLUTE:
160160
retval= {
161-
validator: fitsData.dataMin && fitsData.dataMax ?
161+
validator: !isNaN(fitsData.dataMin) && !isNaN(fitsData.dataMax) ?
162162
Validate.floatRange.bind(null,fitsData.dataMin, fitsData.dataMax, 3, 'Upper range') : undefined,
163163
value : resetDefault ? fitsData.dataMax : fields.upperRange.value
164164
};

0 commit comments

Comments
 (0)