Skip to content

Commit 0a937d6

Browse files
committed
Limit the range to the max useful value & Add ground truth legend.
1 parent ac6e6c6 commit 0a937d6

File tree

1 file changed

+74
-44
lines changed

1 file changed

+74
-44
lines changed

website/index.js

Lines changed: 74 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,23 @@ document.addEventListener('DOMContentLoaded', function() {
2525
const algorithmSelect = document.getElementById('algorithm-select');
2626
algorithmSelect.addEventListener('change', function(event) {
2727
selectedAlgorithm = event.target.value;
28+
updateRange('2')
2829
drawBoxPlot(data, selectedAlgorithm, selectedSNR, selectedType, selectedRange);
2930
});
3031

3132
// Add event listener to SNR select
3233
const snrSelect = document.getElementById('snr-select');
3334
snrSelect.addEventListener('change', function(event) {
3435
selectedSNR = event.target.value;
36+
updateRange('2')
3537
drawBoxPlot(data, selectedAlgorithm, selectedSNR, selectedType, selectedRange);
3638
});
3739

38-
39-
4040
// Add event listener to type select
4141
const typeSelect = document.getElementById('type-select');
4242
typeSelect.addEventListener('change', function(event) {
4343
selectedType = event.target.value;
44+
updateRange('2')
4445
drawBoxPlot(data, selectedAlgorithm, selectedSNR, selectedType, selectedRange);
4546
});
4647

@@ -49,10 +50,10 @@ document.addEventListener('DOMContentLoaded', function() {
4950
const rangeValue = document.getElementById('range-value');
5051
const decrementRange = document.getElementById('decrement-range');
5152
const incrementRange = document.getElementById('increment-range');
52-
5353
function updateRange(value) {
5454
selectedRange = value;
5555
rangeValue.textContent = value;
56+
rangeSlider.value = value
5657
drawBoxPlot(data, selectedAlgorithm, selectedSNR, selectedType, selectedRange);
5758
}
5859

@@ -70,7 +71,7 @@ document.addEventListener('DOMContentLoaded', function() {
7071

7172
incrementRange.addEventListener('click', function() {
7273
let newValue = parseInt(rangeSlider.value) + 2;
73-
if (newValue <= 100) {
74+
if (newValue <= rangeSlider.max) {
7475
rangeSlider.value = newValue;
7576
updateRange(newValue);
7677
}
@@ -80,53 +81,59 @@ document.addEventListener('DOMContentLoaded', function() {
8081
const regionSelect = document.getElementById('region-select');
8182
regionSelect.addEventListener('change', function(event) {
8283
selectedRegion = event.target.value;
83-
drawRegionBoxPlot(data, selectedRegion, selectedSNR, selectedType, selectedRange);
84+
updateRangeRegion('2')
85+
drawRegionBoxPlot(data, selectedRegion, selectedSNRRegion, selectedTypeRegion, selectedRangeRegion);
8486
});
85-
// Add event listener to SNR select
86-
const snrRegionSelect = document.getElementById('snr-region-select');
87-
snrRegionSelect.addEventListener('change', function(event) {
88-
selectedSNRRegion = event.target.value;
89-
drawRegionBoxPlot(data, selectedRegion, selectedSNRRegion, selectedTypeRegion, selectedRangeRegion);
90-
});
91-
92-
// Add event listener to type select
93-
const typeRegionSelect = document.getElementById('type-region-select');
94-
typeRegionSelect.addEventListener('change', function(event) {
95-
selectedTypeRegion = event.target.value;
96-
drawRegionBoxPlot(data, selectedRegion, selectedSNRRegion, selectedTypeRegion, selectedRangeRegion);
97-
});
98-
99-
// Add event listeners to range region slider and buttons
100-
const rangeSliderRegion = document.getElementById('range-slider-region');
101-
const rangeValueRegion = document.getElementById('range-value-region');
102-
const decrementRangeRegion = document.getElementById('decrement-range-region');
103-
const incrementRangeRegion = document.getElementById('increment-range-region');
104-
105-
function updateRangeRegion(value) {
106-
selectedRangeRegion = value;
107-
rangeValueRegion.textContent = value;
108-
drawRegionBoxPlot(data, selectedRegion, selectedSNRRegion, selectedTypeRegion, selectedRangeRegion);
109-
}
11087

111-
rangeSliderRegion.addEventListener('input', function(event) {
112-
updateRangeRegion(event.target.value);
113-
});
88+
// Add event listener to SNR select
89+
const snrRegionSelect = document.getElementById('snr-region-select');
90+
snrRegionSelect.addEventListener('change', function(event) {
91+
selectedSNRRegion = event.target.value;
92+
updateRangeRegion('2')
93+
drawRegionBoxPlot(data, selectedRegion, selectedSNRRegion, selectedTypeRegion, selectedRangeRegion);
94+
});
11495

115-
decrementRangeRegion.addEventListener('click', function() {
116-
let newValue = parseInt(rangeSliderRegion.value) - 2;
117-
if (newValue >= 2) {
118-
rangeSliderRegion.value = newValue;
119-
updateRangeRegion(newValue);
120-
}
121-
});
96+
// Add event listener to type select
97+
const typeRegionSelect = document.getElementById('type-region-select');
98+
typeRegionSelect.addEventListener('change', function(event) {
99+
selectedTypeRegion = event.target.value;
100+
updateRangeRegion('2')
101+
drawRegionBoxPlot(data, selectedRegion, selectedSNRRegion, selectedTypeRegion, selectedRangeRegion);
102+
});
103+
104+
// Add event listeners to range region slider and buttons
105+
const rangeSliderRegion = document.getElementById('range-slider-region');
106+
const rangeValueRegion = document.getElementById('range-value-region');
107+
const decrementRangeRegion = document.getElementById('decrement-range-region');
108+
const incrementRangeRegion = document.getElementById('increment-range-region');
109+
110+
function updateRangeRegion(value) {
111+
selectedRangeRegion = value;
112+
rangeValueRegion.textContent = value;
113+
rangeSliderRegion.value = value
114+
drawRegionBoxPlot(data, selectedRegion, selectedSNRRegion, selectedTypeRegion, selectedRangeRegion);
115+
}
116+
117+
rangeSliderRegion.addEventListener('input', function(event) {
118+
updateRangeRegion(event.target.value);
119+
});
120+
121+
decrementRangeRegion.addEventListener('click', function() {
122+
let newValue = parseInt(rangeSliderRegion.value) - 2;
123+
if (newValue >= 2) {
124+
rangeSliderRegion.value = newValue;
125+
updateRangeRegion(newValue);
126+
}
127+
});
122128

123129
incrementRangeRegion.addEventListener('click', function() {
124130
let newValue = parseInt(rangeSliderRegion.value) + 2;
125-
if (newValue <= 100) {
131+
if (newValue <= rangeSliderRegion.max) {
126132
rangeSliderRegion.value = newValue;
127133
updateRangeRegion(newValue);
128134
}
129135
});
136+
130137
showLoading();
131138

132139
Papa.parse('test_output.csv', {
@@ -194,6 +201,17 @@ document.addEventListener('DOMContentLoaded', function() {
194201
"Dp_fitted": "Perfusion",
195202
"f_fitted": "Perfusion Fraction"
196203
};
204+
205+
const allD_fittedValues = jsonData
206+
.filter(obj => obj.SNR === selectedSNR)
207+
.map(obj => obj[selectedType]);
208+
209+
const maxValue = Math.max(...allD_fittedValues.map(Math.abs));
210+
const groundTruthList = jsonData
211+
.filter(obj => obj.SNR === selectedSNR)
212+
.map(obj => obj[selectedType.slice(0, -7)]);
213+
let estimatedRange = Math.abs(maxValue) / Math.min(...groundTruthList)
214+
rangeSlider.max = Math.round(estimatedRange / 2) * 2
197215
let plots = [];
198216
const regions = new Set(jsonData.map(obj => obj.Region));
199217
const uniqueRegionsArray = Array.from(regions);
@@ -208,7 +226,7 @@ document.addEventListener('DOMContentLoaded', function() {
208226
type: 'box',
209227
name: region,
210228
marker: {
211-
outliercolor: 'white)',
229+
outliercolor: 'white',
212230
},
213231
boxpoints: 'Outliers'
214232
};
@@ -221,12 +239,12 @@ document.addEventListener('DOMContentLoaded', function() {
221239
x: [region],
222240
y: groundTruth,
223241
type: 'scatter',
242+
name: region + ' ground truth',
224243
mode: 'markers',
225244
marker: {
226245
color: 'black',
227246
size: 10
228247
},
229-
showlegend: false
230248
};
231249
plots.push(constantPoint);
232250
});
@@ -245,6 +263,18 @@ document.addEventListener('DOMContentLoaded', function() {
245263
"Dp_fitted": "Perfusion",
246264
"f_fitted": "Perfusion Fraction"
247265
};
266+
267+
const allD_fittedValues = jsonData
268+
.filter(obj => obj.SNR === selectedSNR)
269+
.map(obj => obj[selectedType]);
270+
271+
const maxValue = Math.max(...allD_fittedValues.map(Math.abs));
272+
const groundTruthList = jsonData
273+
.filter(obj => obj.SNR === selectedSNR)
274+
.map(obj => obj[selectedType.slice(0, -7)]);
275+
let estimatedRange = Math.abs(maxValue) / Math.min(...groundTruthList)
276+
rangeSliderRegion.max = Math.round(estimatedRange / 2) * 2
277+
248278
let plots = [];
249279
const algorithms = new Set(jsonData.map(obj => obj.Algorithm));
250280
const uniqueAlgorithmsArray = Array.from(algorithms);
@@ -272,12 +302,12 @@ document.addEventListener('DOMContentLoaded', function() {
272302
x: [algorithm],
273303
y: groundTruth,
274304
type: 'scatter',
305+
name: algorithm + ' ground truth',
275306
mode: 'markers',
276307
marker: {
277308
color: 'black',
278309
size: 10
279310
},
280-
showlegend: false
281311
};
282312
plots.push(constantPoint);
283313
});

0 commit comments

Comments
 (0)