Skip to content

Commit

Permalink
Fetch opaque datasets with h5grove as binary
Browse files Browse the repository at this point in the history
  • Loading branch information
axelboc committed Mar 11, 2024
1 parent dc92faa commit c407d31
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -796,7 +796,11 @@ exports[`test file matches snapshot 1`] = `
"class": "Opaque",
"tag": "",
},
"value": """,
"value": Uint8Array [
0,
17,
34,
],
},
{
"name": "byte_string_1D",
Expand All @@ -813,10 +817,10 @@ exports[`test file matches snapshot 1`] = `
"class": "Opaque",
"tag": "",
},
"value": [
"
"",
""",
"value": Uint8Array [
0,
17,
34,
],
},
{
Expand All @@ -832,7 +836,16 @@ exports[`test file matches snapshot 1`] = `
"class": "Opaque",
"tag": "",
},
"value": [AxiosError: Request failed with status code 500],
"value": Uint8Array [
150,
177,
135,
93,
0,
0,
0,
0,
],
},
{
"name": "datetime64_not-a-time_scalar",
Expand All @@ -847,7 +860,16 @@ exports[`test file matches snapshot 1`] = `
"class": "Opaque",
"tag": "",
},
"value": [AxiosError: Request failed with status code 500],
"value": Uint8Array [
0,
0,
0,
0,
0,
0,
0,
128,
],
},
{
"name": "complex64_scalar",
Expand Down
10 changes: 8 additions & 2 deletions packages/app/src/providers/h5grove/h5grove-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import type {
ProvidedEntity,
Value,
} from '@h5web/shared/hdf5-models';
import { DTypeClass } from '@h5web/shared/hdf5-models';
import type { AxiosRequestConfig } from 'axios';

import { DataProviderApi } from '../api';
Expand Down Expand Up @@ -45,9 +46,13 @@ export class H5GroveApi extends DataProviderApi {
): Promise<H5GroveDataResponse> {
const { dataset } = params;

if (dataset.type.class === DTypeClass.Opaque) {
return new Uint8Array(await this.fetchBinaryData(params));
}

const DTypedArray = h5groveTypedArrayFromDType(dataset.type);
if (DTypedArray) {
const buffer = await this.fetchBinaryData(params);
const buffer = await this.fetchBinaryData(params, true);
const array = new DTypedArray(buffer);
return hasScalarShape(dataset) ? array[0] : array;
}
Expand Down Expand Up @@ -149,6 +154,7 @@ export class H5GroveApi extends DataProviderApi {

private async fetchBinaryData(
params: ValuesStoreParams,
safe = false,
): Promise<ArrayBuffer> {
const { data } = await this.cancellableFetchValue(
'/data/',
Expand All @@ -157,7 +163,7 @@ export class H5GroveApi extends DataProviderApi {
path: params.dataset.path,
selection: params.selection,
format: 'bin',
dtype: 'safe',
dtype: safe ? 'safe' : undefined,
},
'arraybuffer',
);
Expand Down

0 comments on commit c407d31

Please sign in to comment.