Added support for slice / tested

This commit is contained in:
ebner 2015-04-14 10:38:38 +02:00
parent d7f6602944
commit 93885470e4
3 changed files with 57 additions and 18 deletions

View File

@ -5,10 +5,11 @@ import java.util.List;
import ncsa.hdf.object.Dataset; import ncsa.hdf.object.Dataset;
public class SelectedDatasets { public class DatasetSelection {
private List<Dataset> datasets = new ArrayList<Dataset>(); private List<Dataset> datasets = new ArrayList<Dataset>();
private boolean group = false; private boolean group = false;
private Integer slice;
public List<Dataset> getDatasets() { public List<Dataset> getDatasets() {
return datasets; return datasets;
@ -22,5 +23,10 @@ public class SelectedDatasets {
public void setGroup(boolean group) { public void setGroup(boolean group) {
this.group = group; this.group = group;
} }
public void setSlice(Integer slice) {
this.slice = slice;
}
public Integer getSlice() {
return slice;
}
} }

View File

@ -68,7 +68,7 @@ public class HDF5Reader implements PlugIn {
file.open(); file.open();
List<Dataset> datasets = HDF5Utilities.getDatasets(file); List<Dataset> datasets = HDF5Utilities.getDatasets(file);
SelectedDatasets selectedDatasets = selectDatasets(datasets); DatasetSelection selectedDatasets = selectDatasets(datasets);
// TODO Remove // TODO Remove
@ -217,19 +217,44 @@ public class HDF5Reader implements PlugIn {
} else if (numberOfDimensions == 3) { } else if (numberOfDimensions == 3) {
logger.info("3D Image"); logger.info("3D Image");
// Select what to readout ImageStack stack;
long[] selected = var.getSelectedDims();
selected[0] = dimensions[0];
selected[1] = dimensions[1];
selected[2] = dimensions[2];
Object wholeDataset = var.read(); if(selectedDatasets.getSlice()!=null){
ImageStack stack = new ImageStack((int) dimensions[2], (int) dimensions[1]); // Select what to readout
int size = (int) (dimensions[1] * dimensions[2]); long[] selected = var.getSelectedDims();
for (int lev = 0; lev < dimensions[0]; ++lev) { selected[0] = 1;
int startIdx = lev * size; selected[1] = dimensions[1];
addSlice(stack, wholeDataset, startIdx, size); selected[2] = dimensions[2];
long[] start = var.getStartDims();
start[0] = selectedDatasets.getSlice();
Object wholeDataset = var.read();
stack = new ImageStack((int) dimensions[2], (int) dimensions[1]);
int size = (int) (dimensions[1] * dimensions[2]);
// int startIdx = selectedDatasets.getSlice() * size;
addSlice(stack, wholeDataset, 0, size);
}
else{
// Select what to readout
long[] selected = var.getSelectedDims();
selected[0] = dimensions[0];
selected[1] = dimensions[1];
selected[2] = dimensions[2];
Object wholeDataset = var.read();
stack = new ImageStack((int) dimensions[2], (int) dimensions[1]);
int size = (int) (dimensions[1] * dimensions[2]);
for (int lev = 0; lev < dimensions[0]; ++lev) {
int startIdx = lev * size;
addSlice(stack, wholeDataset, startIdx, size);
}
} }
ImagePlus imp = new ImagePlus(filename + " " + datasetName, stack); ImagePlus imp = new ImagePlus(filename + " " + datasetName, stack);
@ -279,7 +304,7 @@ public class HDF5Reader implements PlugIn {
* @return List of datasets to visualize. If nothing selected the list will be empty * @return List of datasets to visualize. If nothing selected the list will be empty
* @throws HDF5Exception * @throws HDF5Exception
*/ */
private SelectedDatasets selectDatasets(List<Dataset> datasets) throws HDF5Exception { private DatasetSelection selectDatasets(List<Dataset> datasets) throws HDF5Exception {
GenericDialog gd = new GenericDialog("Variable Name Selection"); GenericDialog gd = new GenericDialog("Variable Name Selection");
gd.addMessage("Please select variables to be loaded.\n"); gd.addMessage("Please select variables to be loaded.\n");
@ -292,10 +317,11 @@ public class HDF5Reader implements PlugIn {
gd.pack(); gd.pack();
gd.showDialog(); gd.showDialog();
SelectedDatasets selectedDatasets = new SelectedDatasets(); DatasetSelection selectedDatasets = new DatasetSelection();
if (!gd.wasCanceled()) { if (!gd.wasCanceled()) {
selectedDatasets.setDatasets(panel.getSelectedValues()); selectedDatasets.setDatasets(panel.getSelectedValues());
selectedDatasets.setGroup(panel.groupValues()); selectedDatasets.setGroup(panel.groupValues());
selectedDatasets.setSlice(panel.getSlice());
} }
return selectedDatasets; return selectedDatasets;

View File

@ -16,7 +16,6 @@ import javax.swing.ScrollPaneConstants;
import ncsa.hdf.object.Dataset; import ncsa.hdf.object.Dataset;
import javax.swing.JTextField; import javax.swing.JTextField;
import javax.swing.JSpinner;
import java.awt.FlowLayout; import java.awt.FlowLayout;
public class SelectionPanel extends JPanel { public class SelectionPanel extends JPanel {
@ -72,7 +71,7 @@ public class SelectionPanel extends JPanel {
flowLayout.setAlignment(FlowLayout.LEFT); flowLayout.setAlignment(FlowLayout.LEFT);
add(panel); add(panel);
lblSlice = new JLabel("Slice:"); lblSlice = new JLabel("Slice (3D only):");
panel.add(lblSlice); panel.add(lblSlice);
textField = new JTextField(); textField = new JTextField();
@ -87,4 +86,12 @@ public class SelectionPanel extends JPanel {
public boolean groupValues(){ public boolean groupValues(){
return checkbox.isSelected(); return checkbox.isSelected();
} }
public Integer getSlice(){
String text = textField.getText();
if(text.matches("[0-9]+")){
return new Integer(text);
}
return null;
}
} }