mirror of
https://github.com/paulscherrerinstitute/ch.psi.imagej.hdf5.git
synced 2025-04-20 21:20:02 +02:00
Added support for slice / tested
This commit is contained in:
parent
d7f6602944
commit
93885470e4
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
@ -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,20 +217,45 @@ public class HDF5Reader implements PlugIn {
|
|||||||
} else if (numberOfDimensions == 3) {
|
} else if (numberOfDimensions == 3) {
|
||||||
logger.info("3D Image");
|
logger.info("3D Image");
|
||||||
|
|
||||||
|
ImageStack stack;
|
||||||
|
|
||||||
|
if(selectedDatasets.getSlice()!=null){
|
||||||
|
|
||||||
|
// Select what to readout
|
||||||
|
long[] selected = var.getSelectedDims();
|
||||||
|
selected[0] = 1;
|
||||||
|
selected[1] = dimensions[1];
|
||||||
|
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
|
// Select what to readout
|
||||||
long[] selected = var.getSelectedDims();
|
long[] selected = var.getSelectedDims();
|
||||||
selected[0] = dimensions[0];
|
selected[0] = dimensions[0];
|
||||||
selected[1] = dimensions[1];
|
selected[1] = dimensions[1];
|
||||||
selected[2] = dimensions[2];
|
selected[2] = dimensions[2];
|
||||||
|
|
||||||
|
|
||||||
Object wholeDataset = var.read();
|
Object wholeDataset = var.read();
|
||||||
|
|
||||||
ImageStack stack = new ImageStack((int) dimensions[2], (int) dimensions[1]);
|
stack = new ImageStack((int) dimensions[2], (int) dimensions[1]);
|
||||||
int size = (int) (dimensions[1] * dimensions[2]);
|
int size = (int) (dimensions[1] * dimensions[2]);
|
||||||
|
|
||||||
for (int lev = 0; lev < dimensions[0]; ++lev) {
|
for (int lev = 0; lev < dimensions[0]; ++lev) {
|
||||||
int startIdx = lev * size;
|
int startIdx = lev * size;
|
||||||
addSlice(stack, wholeDataset, startIdx, size);
|
addSlice(stack, wholeDataset, startIdx, size);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ImagePlus imp = new ImagePlus(filename + " " + datasetName, stack);
|
ImagePlus imp = new ImagePlus(filename + " " + datasetName, stack);
|
||||||
imp.resetDisplayRange();
|
imp.resetDisplayRange();
|
||||||
@ -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;
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user