From 1d82a04f4b944618dd635bb50f99b180a8148364 Mon Sep 17 00:00:00 2001 From: Brandon Date: Fri, 21 Nov 2025 17:38:44 -0800 Subject: [PATCH] support multiple cameras and multiple channels together --- .../lightsheetmanager/LightSheetManager.java | 6 +++++- .../model/acquisitions/LSMAcquisitionEvents.java | 10 ++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/micromanager/lightsheetmanager/LightSheetManager.java b/src/main/java/org/micromanager/lightsheetmanager/LightSheetManager.java index 5f9354b..6655695 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/LightSheetManager.java +++ b/src/main/java/org/micromanager/lightsheetmanager/LightSheetManager.java @@ -6,6 +6,7 @@ import org.micromanager.lightsheetmanager.api.data.GeometryType; import org.micromanager.lightsheetmanager.model.DeviceManager; import org.micromanager.lightsheetmanager.model.PluginSettings; +import org.micromanager.lightsheetmanager.model.acquisitions.LSMAcquisitionEvents; import org.micromanager.lightsheetmanager.model.positions.PositionUpdater; import org.micromanager.lightsheetmanager.model.UserSettings; import org.micromanager.lightsheetmanager.model.acquisitions.AcquisitionEngine; @@ -30,7 +31,6 @@ public class LightSheetManager implements LightSheetManagerAPI { private final DeviceManager deviceManager_; private final PositionUpdater positionUpdater_; - private AcquisitionEngine acqEngine_; //private final AcquisitionTableData acqTableData_; @@ -83,6 +83,10 @@ public boolean setup() { // load settings userSettings_.load(); + // TODO: put this somewhere better, need to put this value into LSMAcquisitionEvents for now + LSMAcquisitionEvents.isUsingMultipleCameras = + deviceManager_.getDeviceAdapter().getNumSimultaneousCameras() > 1; + // if we made it here then everything loaded correctly return true; } diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/LSMAcquisitionEvents.java b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/LSMAcquisitionEvents.java index 67b296d..be32285 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/LSMAcquisitionEvents.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/LSMAcquisitionEvents.java @@ -23,6 +23,8 @@ public class LSMAcquisitionEvents { public static final String POSITION_AXIS = "position"; public static final String CAMERA_AXIS = "channel"; + public static int currentChannelIndex_ = 0; + public static boolean isUsingMultipleCameras = false; public static Iterator createTimelapseMultiChannelVolumeAcqEvents( AcquisitionEvent baseEvent, DefaultAcquisitionSettingsSCAPE acquisitionSettings, @@ -181,7 +183,11 @@ public boolean hasNext() { public AcquisitionEvent next() { AcquisitionEvent cameraEvent = event.copy(); cameraEvent.setCameraDeviceName(cameraDeviceNames_[cameraIndex_]); - cameraEvent.setAxisPosition(CAMERA_AXIS, cameraIndex_); + if (isUsingMultipleCameras) { + cameraEvent.setAxisPosition(CAMERA_AXIS, cameraIndex_ + (currentChannelIndex_ * cameraDeviceNames_.length)); + } else { + cameraEvent.setAxisPosition(CAMERA_AXIS, cameraIndex_); + } cameraIndex_++; return cameraEvent; } @@ -257,7 +263,7 @@ public AcquisitionEvent next() { channelEvent.setConfigGroup(channelList[index].getGroup()); channelEvent.setConfigPreset(channelList[index].getName()); channelEvent.setChannelName(Integer.toString(index)); - //channelEvent.setChannelName(channelList[index].getName()); + currentChannelIndex_ = index; double zPos; if (channelEvent.getZPosition() == null) {