diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java index 7e9aea5e..f7921867 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java @@ -18,6 +18,7 @@ import org.micromanager.data.internal.PropertyKey; import org.micromanager.lightsheetmanager.LightSheetManager; import org.micromanager.lightsheetmanager.api.AcquisitionManager; +import org.micromanager.lightsheetmanager.api.AcquisitionSettings; import org.micromanager.lightsheetmanager.api.TimingSettings; import org.micromanager.lightsheetmanager.api.data.AcquisitionMode; import org.micromanager.lightsheetmanager.api.internal.ScapeAcquisitionSettings; @@ -479,6 +480,20 @@ public void requestResume() { } } + /** + * Returns the number of time points a run acquires. + * + *
The time point count keeps its value while time points are off, so that turning them + * back on restores it. Anything that sizes or checks a run reads the count through here, + * which gives 1 in that case. + * + * @param settings the acquisition settings + * @return the time point count, or 1 when time points are off + */ + static int numTimePointsToAcquire(final AcquisitionSettings settings) { + return settings.isUsingTimePoints() ? settings.numTimePoints() : 1; + } + /** * Higher level stuff in MM may depend on many hidden, poorly documented * ways on summary metadata generated by the acquisition engine. @@ -487,7 +502,7 @@ public void requestResume() { protected DefaultSummaryMetadata addMMSummaryMetadata(JSONObject summaryMetadata) { return addMMSummaryMetadata(summaryMetadata, acqSettings_, studio_.positions().getPositionList(), - acqSettings_.isUsingTimePoints() ? acqSettings_.numTimePoints() : 1); + numTimePointsToAcquire(acqSettings_)); } /** diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineScape.java b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineScape.java index 5675f633..78bb88a2 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineScape.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineScape.java @@ -503,7 +503,7 @@ private boolean startTimePointAcquisition(final ScapeAcquisitionSettings setting final boolean separate = datasetTimeIndex >= 0; // one time point per dataset in separate mode, the whole series otherwise final int numTimePoints = separate ? 1 - : (settings.isUsingTimePoints() ? settings.numTimePoints() : 1); + : numTimePointsToAcquire(settings); ////////////////////////////////////// // Begin AcqEngJ integration @@ -1547,7 +1547,7 @@ private boolean doHardwareCalculations(PLogicScape plc) { // the port. if (acqSettings_.isUsingMultiplePositions()) { if (isUsingHardwareTimePoints - || (acqSettings_.numTimePoints() > 1 + || (numTimePointsToAcquire(acqSettings_) > 1 && timepointIntervalMs < timepointDuration * 1.2)) { // warn the user but allow the acquisition to continue asb_.useHardwareTimePoints(false); @@ -1613,7 +1613,7 @@ private boolean doHardwareCalculations(PLogicScape plc) { } } - final int numTimePoints = acqSettings_.isUsingTimePoints() ? acqSettings_.numTimePoints() : 1; + final int numTimePoints = numTimePointsToAcquire(acqSettings_); if (!acqSettings_.isUsingMultiplePositions() && numTimePoints > 1) { if (timepointIntervalMs < volumeDuration) { studio_.logs().showError("Time point interval shorter than the time to collect a single volume."); @@ -2072,7 +2072,7 @@ private void updateTotalTimeDurationLabel(final JLabel label) { } private double computeTotalTimeDuration() { - final int numTimePoints = acqSettings_.isUsingTimePoints() ? acqSettings_.numTimePoints() : 1; + final int numTimePoints = numTimePointsToAcquire(acqSettings_); return (numTimePoints - 1) * acqSettings_.timePointIntervalSec() + computeTimePointDuration() / 1000.0; }