An HDF newbie here...
I'm attempting to use the HDF Object Package 1.6.0_12 to read a previously created HDF5 formatted file that contains, among other things, a Dataset containing a 3-dimensional array of integers, row x column x frame. I want to operate on the data one frame at a time but am unable to select the frame that I want. The Dataset object seems to always default to frame 0 and won't budge from there. In the code fragment below, the returned frame is the same regardless of the value of frameNum. What am I doing wrong?
public int[] getFrame(Dataset dataset, int frameNum) {
dataset.init();
// Select the desired frame
long[] startDims = dataset.getStartDims();
startDims[0] = frameNum;
// Grab the frame data
int[] rawdata = (int[])dataset.getData();
return rawdata;
}
Try this.
*public* int getFrame(Dataset dataset, int frameNum) {
dataset.init();
// Select the desired frame
*long* startDims = dataset.getStartDims();
int idx = getSelectedIndex(); // idx[0]=hight, idx[1]=width, idx[2]=depth
// if you want to look through the first dimension, uncomment out the follwing line
//idx[0]=1; idx[1]=2; idx[2] = 0
startDims[idx[2]] = frameNum;
// Grab the frame data
*int* rawdata = (*int*)dataset.getData();
return rawdata;
}
Shane, Hugh A. wrote:
···
An HDF newbie here…
I’m attempting to use the HDF Object Package 1.6.0_12 to read a previously created HDF5 formatted file that contains, among other things, a Dataset containing a 3-dimensional array of integers, row x column x frame. I want to operate on the data one frame at a time but am unable to select the frame that I want. The Dataset object seems to always default to frame 0 and won’t budge from there. In the code fragment below, the returned frame is the same regardless of the value of frameNum. What am I doing wrong?
*public* int getFrame(Dataset dataset, int frameNum) {
dataset.init();
// Select the desired frame
*long* startDims = dataset.getStartDims();
startDims[0] = frameNum;
// Grab the frame data
*int* rawdata = (*int*)dataset.getData();
return rawdata;
}
------------------------------------------------------------------------
_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
I tried this and get the same results. Any other ideas?
···
-----Original Message-----
From: hdf-forum-bounces@hdfgroup.org [mailto:hdf-forum-
bounces@hdfgroup.org] On Behalf Of Peter Cao
Sent: Friday, December 04, 2009 3:16 PM
To: hdf-forum@hdfgroup.org
Subject: Re: [Hdf-forum] Java HDF : unable to select frame in 3D array
Try this.
public int getFrame(Dataset dataset, int frameNum) {
dataset.init();
// Select the desired frame
long startDims = dataset.getStartDims();
int idx = getSelectedIndex(); // idx[0]=hight, idx[1]=width,
idx[2]=depth
// if you want to look through the first dimension, uncomment out the follwing line
//idx[0]=1; idx[1]=2; idx[2] = 0
startDims[idx[2]] = frameNum;
// Grab the frame data
int rawdata = (*int*)dataset.getData();
return rawdata;
}
Shane, Hugh A. wrote:
An HDF newbie here...
I'm attempting to use the HDF Object Package 1.6.0_12 to read a
previously created HDF5 formatted file that contains, among other
things, a Dataset containing a 3-dimensional array of integers, row x
column x frame. I want to operate on the data one frame at a time but
am unable to select the frame that I want. The Dataset object seems to
always default to frame 0 and won't budge from there. In the code
fragment below, the returned frame is the same regardless of the value
of frameNum. What am I doing wrong?
public int getFrame(Dataset dataset, int frameNum) {
dataset.init();
// Select the desired frame
long startDims = dataset.getStartDims();
startDims[0] = frameNum;
// Grab the frame data
int rawdata = (*int*)dataset.getData();
return rawdata;
}
----------------------------------------------------------------------
--
_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
Try HDFView to see if you can see your 3D data page by page.
The class ncsa.hdf.view.DefaultTableView.java use very similar code to
yours to show 3D data page by page. I copied the part of the code below.
···
=====
private void gotoPage(long idx)
{
if (dataset.getRank() < 3) {
return;
}
if (isValueChanged) {
updateValueInFile();
}
long start = dataset.getStartDims();
int selectedIndex = dataset.getSelectedIndex();
long dims = dataset.getDims();
if ((idx <0) || (idx >= dims[selectedIndex[2]])) {
toolkit.beep();
JOptionPane.showMessageDialog(this,
"Frame number must be between 0 and "+(dims[selectedIndex[2]]-1),
getTitle(),
JOptionPane.ERROR_MESSAGE);
return;
}
start[selectedIndex[2]] = idx;
curFrame = idx;
dataset.clearData();
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
try {
dataValue = dataset.getData();
if (dataset instanceof ScalarDS)
{
((ScalarDS)dataset).convertFromUnsignedC();
dataValue = dataset.getData();
}
}
catch (Exception ex)
{
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
dataValue = null;
JOptionPane.showMessageDialog(this, ex, getTitle(), JOptionPane.ERROR_MESSAGE);
return;
}
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
frameField.setText(String.valueOf(curFrame));
updateUI();
}
Shane, Hugh A. wrote:
I tried this and get the same results. Any other ideas?
-----Original Message-----
From: hdf-forum-bounces@hdfgroup.org [mailto:hdf-forum-
bounces@hdfgroup.org] On Behalf Of Peter Cao
Sent: Friday, December 04, 2009 3:16 PM
To: hdf-forum@hdfgroup.org
Subject: Re: [Hdf-forum] Java HDF : unable to select frame in 3D array
Try this.
public int getFrame(Dataset dataset, int frameNum) {
dataset.init();
// Select the desired frame
long startDims = dataset.getStartDims();
int idx = getSelectedIndex(); // idx[0]=hight, idx[1]=width,
idx[2]=depth
// if you want to look through the first dimension, uncomment out the follwing line
//idx[0]=1; idx[1]=2; idx[2] = 0
startDims[idx[2]] = frameNum;
// Grab the frame data
int rawdata = (*int*)dataset.getData();
return rawdata;
}
Shane, Hugh A. wrote:
An HDF newbie here...
I'm attempting to use the HDF Object Package 1.6.0_12 to read a
previously created HDF5 formatted file that contains, among other
things, a Dataset containing a 3-dimensional array of integers, row x
column x frame. I want to operate on the data one frame at a time but
am unable to select the frame that I want. The Dataset object seems to
always default to frame 0 and won't budge from there. In the code
fragment below, the returned frame is the same regardless of the value
of frameNum. What am I doing wrong?
public int getFrame(Dataset dataset, int frameNum) {
dataset.init();
// Select the desired frame
long startDims = dataset.getStartDims();
startDims[0] = frameNum;
// Grab the frame data
int rawdata = (*int*)dataset.getData();
return rawdata;
}
----------------------------------------------------------------------
--
_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org
This is resolved. The missing piece was the invocation of the not intuitively obvious dataset.clearData(). Thanks Peter for your help.
Hugh
···
-----Original Message-----
From: hdf-forum-bounces@hdfgroup.org [mailto:hdf-forum-
bounces@hdfgroup.org] On Behalf Of Peter Cao
Sent: Monday, December 14, 2009 11:00 AM
To: hdf-forum@hdfgroup.org
Subject: Re: [Hdf-forum] Java HDF : unable to select frame in 3D array
Try HDFView to see if you can see your 3D data page by page.
The class ncsa.hdf.view.DefaultTableView.java use very similar code to
yours to show 3D data page by page. I copied the part of the code below.
=====
private void gotoPage(long idx)
{
if (dataset.getRank() < 3) {
return;
}
if (isValueChanged) {
updateValueInFile();
}
long start = dataset.getStartDims();
int selectedIndex = dataset.getSelectedIndex();
long dims = dataset.getDims();
if ((idx <0) || (idx >= dims[selectedIndex[2]])) {
toolkit.beep();
JOptionPane.showMessageDialog(this,
"Frame number must be between 0 and
"+(dims[selectedIndex[2]]-1),
getTitle(),
JOptionPane.ERROR_MESSAGE);
return;
}
start[selectedIndex[2]] = idx;
curFrame = idx;
dataset.clearData();
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
try {
dataValue = dataset.getData();
if (dataset instanceof ScalarDS)
{
((ScalarDS)dataset).convertFromUnsignedC();
dataValue = dataset.getData();
}
}
catch (Exception ex)
{
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
dataValue = null;
JOptionPane.showMessageDialog(this, ex, getTitle(),
JOptionPane.ERROR_MESSAGE);
return;
}
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
frameField.setText(String.valueOf(curFrame));
updateUI();
}
Shane, Hugh A. wrote:
I tried this and get the same results. Any other ideas?
-----Original Message-----
From: hdf-forum-bounces@hdfgroup.org [mailto:hdf-forum-
bounces@hdfgroup.org] On Behalf Of Peter Cao
Sent: Friday, December 04, 2009 3:16 PM
To: hdf-forum@hdfgroup.org
Subject: Re: [Hdf-forum] Java HDF : unable to select frame in 3D
array
Try this.
public int getFrame(Dataset dataset, int frameNum) {
dataset.init();
// Select the desired frame
long startDims = dataset.getStartDims();
int idx = getSelectedIndex(); // idx[0]=hight, idx[1]=width,
idx[2]=depth
// if you want to look through the first dimension, uncomment out
the follwing line
//idx[0]=1; idx[1]=2; idx[2] = 0
startDims[idx[2]] = frameNum;
// Grab the frame data
int rawdata = (*int*)dataset.getData();
return rawdata;
}
Shane, Hugh A. wrote:
An HDF newbie here...
I'm attempting to use the HDF Object Package 1.6.0_12 to read a
previously created HDF5 formatted file that contains, among other
things, a Dataset containing a 3-dimensional array of integers, row
x
column x frame. I want to operate on the data one frame at a time
but
am unable to select the frame that I want. The Dataset object seems
to
always default to frame 0 and won't budge from there. In the code
fragment below, the returned frame is the same regardless of the
value
of frameNum. What am I doing wrong?
public int getFrame(Dataset dataset, int frameNum) {
dataset.init();
// Select the desired frame
long startDims = dataset.getStartDims();
startDims[0] = frameNum;
// Grab the frame data
int rawdata = (*int*)dataset.getData();
return rawdata;
}