mirror of
https://github.com/paulscherrerinstitute/ch.psi.imagej.hdf5.git
synced 2025-04-20 05:00:03 +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;
|
||||
|
||||
public class SelectedDatasets {
|
||||
public class DatasetSelection {
|
||||
|
||||
private List<Dataset> datasets = new ArrayList<Dataset>();
|
||||
private boolean group = false;
|
||||
private Integer slice;
|
||||
|
||||
public List<Dataset> getDatasets() {
|
||||
return datasets;
|
||||
@ -22,5 +23,10 @@ public class SelectedDatasets {
|
||||
public void setGroup(boolean 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();
|
||||
|
||||
List<Dataset> datasets = HDF5Utilities.getDatasets(file);
|
||||
SelectedDatasets selectedDatasets = selectDatasets(datasets);
|
||||
DatasetSelection selectedDatasets = selectDatasets(datasets);
|
||||
|
||||
|
||||
// TODO Remove
|
||||
@ -217,19 +217,44 @@ public class HDF5Reader implements PlugIn {
|
||||
} else if (numberOfDimensions == 3) {
|
||||
logger.info("3D Image");
|
||||
|
||||
// Select what to readout
|
||||
long[] selected = var.getSelectedDims();
|
||||
selected[0] = dimensions[0];
|
||||
selected[1] = dimensions[1];
|
||||
selected[2] = dimensions[2];
|
||||
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();
|
||||
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];
|
||||
|
||||
ImageStack 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);
|
||||
|
||||
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);
|
||||
@ -279,7 +304,7 @@ public class HDF5Reader implements PlugIn {
|
||||
* @return List of datasets to visualize. If nothing selected the list will be empty
|
||||
* @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");
|
||||
gd.addMessage("Please select variables to be loaded.\n");
|
||||
@ -292,10 +317,11 @@ public class HDF5Reader implements PlugIn {
|
||||
gd.pack();
|
||||
gd.showDialog();
|
||||
|
||||
SelectedDatasets selectedDatasets = new SelectedDatasets();
|
||||
DatasetSelection selectedDatasets = new DatasetSelection();
|
||||
if (!gd.wasCanceled()) {
|
||||
selectedDatasets.setDatasets(panel.getSelectedValues());
|
||||
selectedDatasets.setGroup(panel.groupValues());
|
||||
selectedDatasets.setSlice(panel.getSlice());
|
||||
}
|
||||
|
||||
return selectedDatasets;
|
||||
|
@ -16,7 +16,6 @@ import javax.swing.ScrollPaneConstants;
|
||||
|
||||
import ncsa.hdf.object.Dataset;
|
||||
import javax.swing.JTextField;
|
||||
import javax.swing.JSpinner;
|
||||
import java.awt.FlowLayout;
|
||||
|
||||
public class SelectionPanel extends JPanel {
|
||||
@ -72,7 +71,7 @@ public class SelectionPanel extends JPanel {
|
||||
flowLayout.setAlignment(FlowLayout.LEFT);
|
||||
add(panel);
|
||||
|
||||
lblSlice = new JLabel("Slice:");
|
||||
lblSlice = new JLabel("Slice (3D only):");
|
||||
panel.add(lblSlice);
|
||||
|
||||
textField = new JTextField();
|
||||
@ -87,4 +86,12 @@ public class SelectionPanel extends JPanel {
|
||||
public boolean groupValues(){
|
||||
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