Skip to content

Commit 68b8e17

Browse files
OIR: parse time step from TIMELAPSE axis when possible
1 parent 862723a commit 68b8e17

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

components/formats-gpl/src/loci/formats/in/OIRReader.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ public class OIRReader extends FormatReader {
9292

9393
private transient Double zStart;
9494
private transient Double zStep;
95+
private transient Double tStart;
9596
private transient Double tStep;
9697
private transient HashMap<Integer, Double> timestampAdjustments = new HashMap<Integer, Double>();
9798

@@ -277,6 +278,7 @@ public void close(boolean fileOnly) throws IOException {
277278
minT = Integer.MAX_VALUE;
278279
zStart = null;
279280
zStep = null;
281+
tStart = null;
280282
tStep = null;
281283
}
282284
}
@@ -603,6 +605,9 @@ else if (!checkSuffix(id, "oir")) {
603605
for (int i=0; i<getImageCount(); i++) {
604606
int t = getZCTCoords(i)[2];
605607
double deltaT = t * tStep;
608+
if (tStart != null) {
609+
deltaT += tStart;
610+
}
606611
for (Integer frame : timestampAdjustments.keySet()) {
607612
if (t >= frame) {
608613
deltaT += (timestampAdjustments.get(frame) - tStep);
@@ -1189,8 +1194,12 @@ private void parseImageProperties(Element root) throws FormatException {
11891194
Element speed = getFirstChild(getFirstChild(scanner, "lsmimage:param"), "lsmparam:speed");
11901195
speed = getFirstChild(speed, "commonparam:speedInformation");
11911196
Element seriesInterval = getFirstChild(speed, "commonparam:seriesInterval");
1192-
if (seriesInterval != null) {
1193-
tStep = DataTools.parseDouble(seriesInterval.getTextContent());
1197+
1198+
// prefer setting tStep from the TIMELAPSE axis,
1199+
// but fall back to this if needed
1200+
if (seriesInterval != null && tStep == null) {
1201+
// units are seconds, so multiply to get milliseconds
1202+
tStep = DataTools.parseDouble(seriesInterval.getTextContent()) * 1000;
11941203
}
11951204
}
11961205
}
@@ -1358,6 +1367,8 @@ private void parseAxis(Element dimensionAxis) {
13581367
else if (name.equals("TIMELAPSE")) {
13591368
if (m.sizeT <= 1) {
13601369
m.sizeT = Integer.parseInt(size.getTextContent());
1370+
tStart = DataTools.parseDouble(start.getTextContent());
1371+
tStep = DataTools.parseDouble(step.getTextContent());
13611372
}
13621373
}
13631374
else if (name.equals("LAMBDA")) {

0 commit comments

Comments
 (0)