@@ -92,6 +92,7 @@ public class OIRReader extends FormatReader {
92
92
93
93
private transient Double zStart ;
94
94
private transient Double zStep ;
95
+ private transient Double tStart ;
95
96
private transient Double tStep ;
96
97
private transient HashMap <Integer , Double > timestampAdjustments = new HashMap <Integer , Double >();
97
98
@@ -277,6 +278,7 @@ public void close(boolean fileOnly) throws IOException {
277
278
minT = Integer .MAX_VALUE ;
278
279
zStart = null ;
279
280
zStep = null ;
281
+ tStart = null ;
280
282
tStep = null ;
281
283
}
282
284
}
@@ -603,6 +605,9 @@ else if (!checkSuffix(id, "oir")) {
603
605
for (int i =0 ; i <getImageCount (); i ++) {
604
606
int t = getZCTCoords (i )[2 ];
605
607
double deltaT = t * tStep ;
608
+ if (tStart != null ) {
609
+ deltaT += tStart ;
610
+ }
606
611
for (Integer frame : timestampAdjustments .keySet ()) {
607
612
if (t >= frame ) {
608
613
deltaT += (timestampAdjustments .get (frame ) - tStep );
@@ -1189,8 +1194,12 @@ private void parseImageProperties(Element root) throws FormatException {
1189
1194
Element speed = getFirstChild (getFirstChild (scanner , "lsmimage:param" ), "lsmparam:speed" );
1190
1195
speed = getFirstChild (speed , "commonparam:speedInformation" );
1191
1196
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 ;
1194
1203
}
1195
1204
}
1196
1205
}
@@ -1358,6 +1367,8 @@ private void parseAxis(Element dimensionAxis) {
1358
1367
else if (name .equals ("TIMELAPSE" )) {
1359
1368
if (m .sizeT <= 1 ) {
1360
1369
m .sizeT = Integer .parseInt (size .getTextContent ());
1370
+ tStart = DataTools .parseDouble (start .getTextContent ());
1371
+ tStep = DataTools .parseDouble (step .getTextContent ());
1361
1372
}
1362
1373
}
1363
1374
else if (name .equals ("LAMBDA" )) {
0 commit comments