Skip to content

Commit 589d37f

Browse files
authored
Merge pull request #565 from EarthyScience/jp/update-wasm
removed maps on large arrays
2 parents 3593b93 + 7fb7320 commit 589d37f

2 files changed

Lines changed: 30 additions & 19 deletions

File tree

src/components/plots/AnalysisWG.tsx

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -170,12 +170,16 @@ const AnalysisWG = ({ setTexture, }: { setTexture: React.Dispatch<React.SetState
170170
setValueScales({ minVal, maxVal });
171171
let _scales;
172172
const thisShape = dataShape.length > 2 ? dataShape.filter((_, idx) => idx !== axis) : dataShape;
173-
const textureData = new Uint8Array(
174-
newArray.map((i) => {
175-
const normed = (i - minVal) / (maxVal - minVal);
176-
return isNaN(normed) ? 255 : normed * 254;
177-
})
178-
);
173+
const textureData = new Uint8Array(newArray.length)
174+
const range = (maxVal - minVal)
175+
for (let i = 0; i < newArray.length; i++){
176+
const normed = (newArray[i] - minVal) / range;
177+
if (isNaN(normed)){
178+
textureData[i] = 255;
179+
} else {
180+
textureData[i] = normed * 254;
181+
}
182+
};
179183
const newTexture = CreateTexture(is3DResult ? dataShape : thisShape, textureData)
180184
// --- Final state updates ---
181185
setAnalysisArray(newArray);
@@ -200,12 +204,16 @@ const AnalysisWG = ({ setTexture, }: { setTexture: React.Dispatch<React.SetState
200204
const dataArray = GetCurrentArray(analysisStore);
201205
const newArray = await CustomShader(dataArray, shapeInfo, kernelParams, axis, customShader?? "") as Float16Array
202206
const {minVal, maxVal} = valueScales
203-
const textureData = new Uint8Array(
204-
newArray.map((i) => {
205-
const normed = (i - minVal) / (maxVal - minVal);
206-
return isNaN(normed) ? 255 : normed * 254;
207-
})
208-
);
207+
const textureData = new Uint8Array(newArray.length)
208+
const range = (maxVal - minVal)
209+
for (let i = 0; i < newArray.length; i++){
210+
const normed = (newArray[i] - minVal) / range;
211+
if (isNaN(normed)){
212+
textureData[i] = 255;
213+
} else {
214+
textureData[i] = normed * 254;
215+
}
216+
};
209217
const newTexture = CreateTexture(outputShape, textureData)
210218
setAnalysisArray(newArray);
211219
if (newTexture){

src/components/textures/TextureMakers.tsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,16 @@ function StoreData(array: Array, valueScales?: {maxVal: number, minVal: number})
1212
const { clampExtremes, setTextureData} = useGlobalStore.getState()
1313
const data = array.data;
1414
const [minVal,maxVal] = valueScales ? [valueScales.minVal, valueScales.maxVal] : ArrayMinMax(data )
15-
const textureData = new Uint8Array(
16-
data.map((i) => {
17-
if (isNaN(i)) return 255;
18-
const normed = (i - minVal) / (maxVal - minVal);
19-
return normed * 254;
20-
})
21-
);
15+
const textureData = new Uint8Array(data.length)
16+
const range = (maxVal - minVal)
17+
for (let i = 0; i < data.length; i++){
18+
const normed = (data[i] - minVal) / range;
19+
if (isNaN(normed)){
20+
textureData[i] = 255;
21+
} else {
22+
textureData[i] = normed * 254;
23+
}
24+
};
2225
setTextureData(textureData)
2326
return {minVal, maxVal}
2427
}

0 commit comments

Comments
 (0)