mirror of
https://github.com/paulscherrerinstitute/ch.psi.imagej.hdf5.git
synced 2025-06-05 10:00:43 +02:00
added support for reading only every x-th image
This commit is contained in:
parent
93885470e4
commit
4aec3a2858
@ -10,6 +10,8 @@ public class DatasetSelection {
|
||||
private List<Dataset> datasets = new ArrayList<Dataset>();
|
||||
private boolean group = false;
|
||||
private Integer slice;
|
||||
// Intervall to read images
|
||||
private Integer modulo;
|
||||
|
||||
public List<Dataset> getDatasets() {
|
||||
return datasets;
|
||||
@ -29,4 +31,10 @@ public class DatasetSelection {
|
||||
public Integer getSlice() {
|
||||
return slice;
|
||||
}
|
||||
public void setModulo(Integer modulo) {
|
||||
this.modulo = modulo;
|
||||
}
|
||||
public Integer getModulo() {
|
||||
return modulo;
|
||||
}
|
||||
}
|
||||
|
@ -10,20 +10,9 @@ import ij.plugin.PlugIn;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.awt.*;
|
||||
|
||||
import javax.swing.BoxLayout;
|
||||
import javax.swing.DefaultListCellRenderer;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JList;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.ScrollPaneConstants;
|
||||
|
||||
import ncsa.hdf.object.*;
|
||||
import ncsa.hdf.object.h5.*;
|
||||
@ -238,6 +227,29 @@ public class HDF5Reader implements PlugIn {
|
||||
// int startIdx = selectedDatasets.getSlice() * size;
|
||||
addSlice(stack, wholeDataset, 0, size);
|
||||
}
|
||||
else if(selectedDatasets.getModulo()!=null){
|
||||
logger.info("Read every "+selectedDatasets.getModulo()+" image");
|
||||
// Select what to readout
|
||||
|
||||
stack = new ImageStack((int) dimensions[2], (int) dimensions[1]);
|
||||
|
||||
for(int indexToRead=0;indexToRead<dimensions[0]; indexToRead=indexToRead+selectedDatasets.getModulo()){
|
||||
|
||||
long[] selected = var.getSelectedDims();
|
||||
selected[0] = 1;
|
||||
selected[1] = dimensions[1];
|
||||
selected[2] = dimensions[2];
|
||||
|
||||
long[] start = var.getStartDims();
|
||||
start[0] = indexToRead;
|
||||
|
||||
Object wholeDataset = var.read();
|
||||
|
||||
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();
|
||||
@ -322,6 +334,7 @@ public class HDF5Reader implements PlugIn {
|
||||
selectedDatasets.setDatasets(panel.getSelectedValues());
|
||||
selectedDatasets.setGroup(panel.groupValues());
|
||||
selectedDatasets.setSlice(panel.getSlice());
|
||||
selectedDatasets.setModulo(panel.getModulo());
|
||||
}
|
||||
|
||||
return selectedDatasets;
|
||||
|
@ -89,9 +89,17 @@ public class SelectionPanel extends JPanel {
|
||||
|
||||
public Integer getSlice(){
|
||||
String text = textField.getText();
|
||||
if(text.matches("[0-9]+")){
|
||||
if(text.matches("^[0-9]+$")){
|
||||
return new Integer(text);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Integer getModulo(){
|
||||
String text = textField.getText();
|
||||
if(text.matches("^%[0-9]+$")){
|
||||
return new Integer(text.replace("%", ""));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user