Internally use zero-based indexing for selecting dataset frame

Convert the one-based index at the plugin level and use zero-based
indexing elsewhere.
This commit is contained in:
Charles Mita
2018-03-28 13:19:19 +01:00
parent 5f57e5329a
commit dc41a80525
2 changed files with 4 additions and 5 deletions
+3 -4
View File
@@ -183,10 +183,9 @@ int get_nxs_frame(
int data_width,
void *buffer) {
/* detector data are the two inner most indices */
/* n is indexed from one - hdf5 slices start at zero */
/* TODO: handle ndims > 3 and select appropriately */
int retval = 0;
hsize_t frame_idx[3] = {n - 1, 0, 0};
hsize_t frame_idx[3] = {n, 0, 0};
hsize_t frame_size[3] = {1, ds_prop->dims[1], ds_prop->dims[2]};
retval = get_frame(desc->data_group_id, "data", frame_idx, frame_size, data_width, buffer);
if (retval < 0) {
@@ -214,8 +213,8 @@ int get_dectris_eiger_frame(
/* determine the relevant data block */
frame_count = 0;
block = 0;
while ((frame_count += eiger_desc->block_sizes[block]) < (n-1)) block++;
idx = n - (frame_count - eiger_desc->block_sizes[block]) - 1; /* index in current block */
while ((frame_count += eiger_desc->block_sizes[block]) <= n) block++;
idx = n - (frame_count - eiger_desc->block_sizes[block]); /* index in current block */
printf("n: %d -> Block: %d, idx: %d\n", n, block, idx);
frame_idx[0] = idx;
sprintf(data_name, "data_%06d", block + 1);
+1 -1
View File
@@ -130,7 +130,7 @@ void plugin_get_data(
int retval = 0;
reset_error_stack();
fill_info_array(info);
if (data_desc.get_data_frame(&data_desc, &ds_prop, *frame_number, sizeof(int), data_array) < 0) {
if (data_desc.get_data_frame(&data_desc, &ds_prop, (*frame_number) - 1, sizeof(int), data_array) < 0) {
char message[64] = {0};
sprintf(message, "Failed to retrieve data for frame %d", *frame_number);
ERROR_JUMP(-2, done, message);