diff --git a/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultAcquisitionSettingsSCAPE.java b/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultAcquisitionSettingsSCAPE.java index e6823bb..7540325 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultAcquisitionSettingsSCAPE.java +++ b/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultAcquisitionSettingsSCAPE.java @@ -356,32 +356,15 @@ private DefaultAcquisitionSettingsSCAPE(Builder builder) { postMoveDelay_ = builder.postMoveDelay_; liveScanPeriod_= builder.liveScanPeriod_; } - // /** + +// /** // * Creates a Builder populated with settings of this DefaultAcquisitionSettingsDISPIM instance. // * // * @return DefaultAcquisitionSettingsDISPIM.Builder pre-populated with settings of this instance. // */ // @Override // public DefaultAcquisitionSettingsDISPIM.Builder copyBuilder() { -// return new Builder( -// timingSettings_.copyBuilder(), -// volumeSettings_.copyBuilder(), -// sliceSettings_.copyBuilder(), -// sliceSettingsLS_.copyBuilder(), -// acquisitionMode_, -// channelMode_, -// cameraMode_, -// useChannels_, -// useTimePoints_, -// useAutofocus_, -// useStageScanning_, -// useMultiplePositions_, -// useHardwareTimePoints_, -// useAdvancedTiming_, -// numTimePoints_, -// timePointInterval_, -// postMoveDelay_ -// ); +// return new Builder(this); // } /** diff --git a/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultTimingSettings.java b/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultTimingSettings.java index 78dc56d..b3a86c6 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultTimingSettings.java +++ b/src/main/java/org/micromanager/lightsheetmanager/api/internal/DefaultTimingSettings.java @@ -144,13 +144,13 @@ public TimingSettings.Builder useAlternateScanDirection(final boolean state) { @Override public String toString() { - return String.format("[scansPerSlice_=%s, delayBeforeScan_=%s, scanDuration_=%s, " + - "delayBeforeLaser_=%s, laserTriggerDuration_=%s, delayBeforeCamera_=%s, " + - "cameraTriggerDuration_=%s, cameraExposure_=%s, sliceDuration_=%s, alternateScanDirection_=%s]", - scansPerSlice_, delayBeforeScan_, scanDuration_, delayBeforeLaser_, - laserTriggerDuration_, delayBeforeCamera_, cameraTriggerDuration_, - cameraExposure_, sliceDuration_, alternateScanDirection_ - + return String.format("%s[scansPerSlice_=%s, delayBeforeScan_=%s, scanDuration_=%s, " + + "delayBeforeLaser_=%s, laserTriggerDuration_=%s, delayBeforeCamera_=%s, " + + "cameraTriggerDuration_=%s, cameraExposure_=%s, sliceDuration_=%s, " + + "alternateScanDirection_=%s]", + getClass().getSimpleName(), scansPerSlice_, delayBeforeScan_, scanDuration_, + delayBeforeLaser_, laserTriggerDuration_, delayBeforeCamera_, + cameraTriggerDuration_, cameraExposure_, sliceDuration_, alternateScanDirection_ ); } diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineDISPIM.java b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineDISPIM.java index c69c11a..f87b793 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineDISPIM.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineDISPIM.java @@ -835,7 +835,6 @@ public DefaultTimingSettings.Builder getTimingFromPeriodAndLightExposure() { break; default: studio_.logs().showError("Invalid camera mode"); - // FIXME: set to invalid! break; } 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 1b3aecf..6492a1f 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineSCAPE.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineSCAPE.java @@ -17,7 +17,6 @@ import org.micromanager.data.internal.DefaultSummaryMetadata; import org.micromanager.internal.MMStudio; import org.micromanager.lightsheetmanager.api.data.AcquisitionMode; -import org.micromanager.lightsheetmanager.api.data.CameraData; import org.micromanager.lightsheetmanager.api.data.CameraLibrary; import org.micromanager.lightsheetmanager.api.data.CameraMode; import org.micromanager.lightsheetmanager.api.data.MultiChannelMode; @@ -948,7 +947,7 @@ private boolean doHardwareCalculations(PLogicSCAPE plc) { // } // } - final double sliceDuration = getSliceDuration(asb_.timingSettingsBuilder()); + final double sliceDuration = getSliceDuration(asb_.timingSettingsBuilder().build()); if (exposureTime + cameraReadoutTime > sliceDuration) { // should only possible to mess this up using advanced timing settings // or if there are errors in our own calculations @@ -998,7 +997,7 @@ public void recalculateSliceTiming() { DefaultTimingSettings.Builder tsb = getTimingFromExposure(); asb_.timingSettingsBuilder(tsb); } - final double sliceDuration = getSliceDuration(asb_.timingSettingsBuilder()); + final double sliceDuration = getSliceDuration(asb_.timingSettingsBuilder().build()); asb_.timingSettingsBuilder().sliceDuration(sliceDuration); //System.out.println(asb_.timingSettingsBuilder()); } @@ -1101,7 +1100,7 @@ public DefaultTimingSettings.Builder getTimingFromExposure() { } if (!acqSettings_.sliceSettings().isSlicePeriodMinimized()) { - double globalDelay = acqSettings_.sliceSettings().slicePeriod() - getSliceDuration(tsb); + double globalDelay = acqSettings_.sliceSettings().slicePeriod() - getSliceDuration(tsb.build()); if (cameraMode == CameraMode.VIRTUAL_SLIT) { globalDelay = 0; } @@ -1129,7 +1128,7 @@ public DefaultTimingSettings.Builder getTimingFromExposure() { tsb.delayBeforeScan(delayBeforeScan); // update the slice duration based on our new values - tsb.sliceDuration(getSliceDuration(tsb)); + tsb.sliceDuration(getSliceDuration(tsb.build())); return tsb; } @@ -1281,13 +1280,12 @@ public DefaultTimingSettings.Builder getTimingFromPeriodAndLightExposure() { break; default: studio_.logs().showError("Invalid camera mode"); - // FIXME: set to invalid! break; } // fix corner case of negative calculated scanDelay if (delayBeforeScan < 0) { - delayBeforeCamera-= delayBeforeScan; + delayBeforeCamera -= delayBeforeScan; delayBeforeLaser -= delayBeforeScan; delayBeforeScan = 0; // same as (-= delayBeforeScan) } @@ -1303,7 +1301,7 @@ public DefaultTimingSettings.Builder getTimingFromPeriodAndLightExposure() { } // update the slice duration based on our new values - sliceDuration = getSliceDuration(delayBeforeScan, scanDuration, scansPerSlice, delayBeforeLaser, laserDuration, delayBeforeCamera, cameraDuration); + //sliceDuration = getSliceDuration(delayBeforeScan, scanDuration, scansPerSlice, delayBeforeLaser, laserDuration, delayBeforeCamera, cameraDuration); tsb.scansPerSlice(scansPerSlice); tsb.scanDuration(scanDuration); @@ -1313,7 +1311,8 @@ public DefaultTimingSettings.Builder getTimingFromPeriodAndLightExposure() { tsb.delayBeforeCamera(delayBeforeCamera); tsb.delayBeforeLaser(delayBeforeLaser); tsb.delayBeforeScan(delayBeforeScan); - tsb.sliceDuration(sliceDuration); + + tsb.sliceDuration(getSliceDuration(tsb.build())); return tsb; } @@ -1334,14 +1333,13 @@ private double getSliceDuration( ); } - private double getSliceDuration(DefaultTimingSettings.Builder tsb) { - DefaultTimingSettings s = tsb.build(); + private double getSliceDuration(final DefaultTimingSettings ts) { // slice duration is the max out of the scan time, laser time, and camera time return Math.max(Math.max( - s.delayBeforeScan() + (s.scanDuration() * s.scansPerSlice()), // scan time - s.delayBeforeLaser() + s.laserTriggerDuration() // laser time + ts.delayBeforeScan() + (ts.scanDuration() * ts.scansPerSlice()), // scan time + ts.delayBeforeLaser() + ts.laserTriggerDuration() // laser time ), - s.delayBeforeCamera() + s.cameraTriggerDuration() // camera time + ts.delayBeforeCamera() + ts.cameraTriggerDuration() // camera time ); }