diff --git a/src/main/java/org/micromanager/lightsheetmanager/LightSheetManagerPlugin.java b/src/main/java/org/micromanager/lightsheetmanager/LightSheetManagerPlugin.java index 93ea5d4..b7fa05c 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/LightSheetManagerPlugin.java +++ b/src/main/java/org/micromanager/lightsheetmanager/LightSheetManagerPlugin.java @@ -14,7 +14,7 @@ public class LightSheetManagerPlugin implements MenuPlugin, SciJavaPlugin { public static final String copyright = "Applied Scientific Instrumentation (ASI), 2022-2026"; public static final String description = "A plugin to control various types of light sheet microscopes."; public static final String menuName = "Light Sheet Manager"; - public static final String version = "0.6.5"; + public static final String version = "0.6.6"; private Studio studio_; private LightSheetManager model_; diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/AcquisitionTab.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/AcquisitionTab.java index 01b6fbf..7b70572 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/AcquisitionTab.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/AcquisitionTab.java @@ -292,7 +292,7 @@ private void createEventHandlers() { if (selected) { pnlAdvancedTiming_.updateSpinners(); } else { - model_.acquisitions().updateAcquisitionSettings(); + model_.acquisitions().updateSettings(); model_.acquisitions().recalculateSliceTiming(); } }); diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/SavePanel.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/SavePanel.java index 2f80596..dfa10e5 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/SavePanel.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/SavePanel.java @@ -181,7 +181,7 @@ public void createEventHandlers() { } } // update settings and save to file - model_.acquisitions().updateAcquisitionSettings(); + model_.acquisitions().updateSettings(); FileUtils.writeStringToFile(file.toString(), model_.acquisitions().settings().toPrettyJson()); model_.studio().logs().logMessage("Acquisition settings saved to: " + file); } diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/SlicePanel.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/SlicePanel.java index 4bead3b..464be8c 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/SlicePanel.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/SlicePanel.java @@ -101,7 +101,7 @@ private void createEventHandlers() { model_.acquisitions().settingsBuilder() .sliceBuilder().periodMinimized(selected); // update slice timing - model_.acquisitions().updateAcquisitionSettings(); + model_.acquisitions().updateSettings(); model_.acquisitions().recalculateSliceTiming(); }); @@ -109,7 +109,7 @@ private void createEventHandlers() { model_.acquisitions().settingsBuilder() .sliceBuilder().period(spnSlicePeriod_.getDouble()); // update slice timing - model_.acquisitions().updateAcquisitionSettings(); + model_.acquisitions().updateSettings(); model_.acquisitions().recalculateSliceTiming(); }); @@ -117,7 +117,7 @@ private void createEventHandlers() { model_.acquisitions().settingsBuilder() .sliceBuilder().sampleExposure(spnSampleExposure_.getDouble()); // update slice timing - model_.acquisitions().updateAcquisitionSettings(); + model_.acquisitions().updateSettings(); model_.acquisitions().recalculateSliceTiming(); }); diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTablePanel.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTablePanel.java index cee3bbc..566981d 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTablePanel.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/channels/ChannelTablePanel.java @@ -81,7 +81,7 @@ private void createEventHandlers() { table_.updatePresetComboBoxes(channelGroup); // set the channel group to use when we get the channels model_.acquisitions().settingsBuilder().channelBuilder().group(channelGroup); - model_.acquisitions().updateAcquisitionSettings(); + model_.acquisitions().updateSettings(); // update the table data model and refresh ui table_.getData().setChannels(channelGroup, model_.acquisitions().settings().channels().used()); table_.getData().setChannelGroup(channelGroup); diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/CameraPanel.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/CameraPanel.java index 027cba2..5d04a68 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/CameraPanel.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/CameraPanel.java @@ -1,16 +1,16 @@ package org.micromanager.lightsheetmanager.gui.tabs.setup; -import com.google.common.eventbus.Subscribe; -import org.micromanager.events.LiveModeEvent; import org.micromanager.lightsheetmanager.api.data.CameraMode; import org.micromanager.lightsheetmanager.api.data.GeometryType; import org.micromanager.lightsheetmanager.gui.components.Button; +import org.micromanager.lightsheetmanager.gui.components.ComboBox; import org.micromanager.lightsheetmanager.gui.components.Panel; import org.micromanager.lightsheetmanager.gui.components.ToggleButton; import org.micromanager.lightsheetmanager.gui.data.Icons; import org.micromanager.lightsheetmanager.LightSheetManager; import org.micromanager.lightsheetmanager.model.devices.cameras.CameraBase; +import javax.swing.JLabel; import java.util.Objects; @@ -19,6 +19,8 @@ */ public class CameraPanel extends Panel { + public static final String CONFIG_GROUP = "Path Select"; + private boolean isPreviewPressed = false; private boolean isLivePressed = false; @@ -29,6 +31,9 @@ public class CameraPanel extends Panel { private ToggleButton btnInvertedPath_; private ToggleButton btnLiveMode_; + // path selection for SCAPE + private ComboBox cmbPreset_; + private final LightSheetManager model_; public CameraPanel(final LightSheetManager model) { @@ -62,6 +67,19 @@ private void createUserInterface() { Icons.CAMERA, Icons.CANCEL ); + // populate the combo box if the group exists + String selected = ""; + String[] presets = {""}; + if (model_.core().isGroupDefined(CONFIG_GROUP)) { + presets = model_.core().getAvailableConfigs(CONFIG_GROUP).toArray(); + try { + selected = model_.core().getCurrentConfig(CONFIG_GROUP); + } catch (Exception e) { + // ignore => use default value + } + } + cmbPreset_ = new ComboBox<>(presets, selected, 165, 26); + switch (geometryType) { case DISPIM: add(btnImagingPath_, ""); @@ -72,7 +90,9 @@ private void createUserInterface() { break; case SCAPE: add(btnInvertedPath_, "wrap"); - add(btnLiveMode_, ""); + add(btnLiveMode_, "wrap"); + add(new JLabel("Path Preset:"), "wrap"); + add(cmbPreset_, ""); break; default: break; @@ -85,23 +105,18 @@ private void createEventHandlers() { switch (geometryType) { case DISPIM: btnImagingPath_.registerListener(() -> { - }); btnMultiPath_.registerListener(() -> { - }); btnEpiPath_.registerListener(() -> { - }); btnInvertedPath_.registerListener(() -> { - }); btnLiveMode_.registerListener(() -> { - }); break; case SCAPE: @@ -157,6 +172,18 @@ private void createEventHandlers() { default: break; } + + // select path preset + cmbPreset_.registerListener(() -> { + final String selected = cmbPreset_.getSelected(); + try { + model_.core().setConfig(CONFIG_GROUP, selected); + model_.studio().app().refreshGUI(); + } catch (Exception e) { + model_.studio().logs().showError("Failed to set configuration: " + e.getMessage()); + } + }); + } /** diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/PositionPanel.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/PositionPanel.java index aa64a43..9a9cecb 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/PositionPanel.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/PositionPanel.java @@ -2,6 +2,7 @@ import org.micromanager.lightsheetmanager.api.data.GeometryType; import org.micromanager.lightsheetmanager.gui.components.Button; +import org.micromanager.lightsheetmanager.gui.components.ListeningPanel; import org.micromanager.lightsheetmanager.gui.components.Panel; import org.micromanager.lightsheetmanager.gui.components.TextField; import org.micromanager.lightsheetmanager.LightSheetManager; @@ -15,7 +16,7 @@ import java.awt.geom.Point2D; import java.util.Objects; -public class PositionPanel extends Panel implements Subscriber { +public class PositionPanel extends Panel implements Subscriber, ListeningPanel { private JLabel lblImagingCenterValue_; @@ -58,9 +59,9 @@ private void createUserInterface() { isUsingPLogic_ = model_.devices().isUsingPLogic(); final JLabel lblImagingCenter = new JLabel("Imaging Center:"); - final double imagingCenter = model_.acquisitions().settings() - .sheetCalibration().imagingCenter(); - lblImagingCenterValue_ = new JLabel(imagingCenter + " μm"); + final String imagingCenter = String.format("%.3f μm", + model_.acquisitions().settings().sheetCalibration().imagingCenter()); + lblImagingCenterValue_ = new JLabel(imagingCenter); setMigLayout( "", @@ -116,7 +117,7 @@ private void createUserInterface() { lblSlicePositionValue_.setText(scannerPositionStr); } - // test fields + // text fields txtSlicePosition_.setText("0"); txtImagingPosition_.setText("0"); txtIllumPosition_.setText("0"); @@ -193,6 +194,7 @@ private void createEventHandlers() { btnImagingCenterGo_.registerListener(() -> { // FIXME: make sure this is the same as original plugin, diSPIM also moves Scanner with computeGalvoFromPiezo + // TODO: (also check if the move when the tab is selected is correct) final double imagingCenter = model_.acquisitions().settingsBuilder().build() .sheetCalibration().imagingCenter(); piezo.setPosition(imagingCenter); @@ -238,4 +240,20 @@ public void update(String topic, Object value) { } }); } + + @Override + public void selected() { + if (model_.devices().isUsingPLogic()) { + // TODO: check the fixme above + final double imagingCenter = model_.acquisitions().settingsBuilder().build() + .sheetCalibration().imagingCenter(); + final ASIPiezo piezo = model_.devices().device("ImagingFocus"); + piezo.setPosition(imagingCenter); + } + } + + @Override + public void unselected() { + + } } diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/ScannerPanel.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/ScannerPanel.java index 46afd0f..523b8cd 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/ScannerPanel.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/ScannerPanel.java @@ -72,10 +72,7 @@ private void createEventHandlers() { if (isUsingPLogic_) { final ASIScanner scanner = model_.devices().device("IllumSlice"); - cbxBeamExc_.registerListener(() -> { - scanner.setBeamOn(cbxBeamExc_.isSelected()); - //System.out.println("set beam on: " + cbxBeamExc_.isSelected()); - }); + cbxBeamExc_.registerListener(() -> scanner.setBeamOn(cbxBeamExc_.isSelected())); } if (model_.devices().adapter().geometry() == GeometryType.DISPIM) { @@ -90,17 +87,13 @@ private void createEventHandlers() { } } - // TODO: only handles SCAPE for now @Override public void selected() { - final boolean isBeamOn = cbxBeamExc_.isSelected(); - if (isUsingPLogic_) { - final ASIScanner scanner = - model_.devices().device("IllumSlice"); - if (scanner != null && isBeamOn && !scanner.isBeamOn()) { - scanner.setBeamOn(true); - } +// final ASIScanner scanner = model_.devices().device("IllumSlice"); +// if (scanner != null && !scanner.isBeamOn()) { +// scanner.setBeamOn(true); +// } } } diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/SetupPanel.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/SetupPanel.java index e6ccb08..ed13f44 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/SetupPanel.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/SetupPanel.java @@ -52,7 +52,6 @@ public SetupPanel(final LightSheetManager model, final int pathNum) { scannerPanel_ = new ScannerPanel(model_); cameraPanel_ = new CameraPanel(model_); - // TODO: add joystick panel back in leftPanel_.add(scannerPanel_, "growx, wrap"); leftPanel_.add(joystickPanel_, "growx, wrap"); if (model_.devices().adapter().geometry() == GeometryType.SCAPE) { @@ -80,6 +79,7 @@ public int getPathNum() { @Override public void selected() { scannerPanel_.selected(); + positionPanel_.selected(); } @Override diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/DeviceManager.java b/src/main/java/org/micromanager/lightsheetmanager/model/DeviceManager.java index dd953d2..906adb8 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/DeviceManager.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/DeviceManager.java @@ -404,7 +404,7 @@ public void useDefaultImagingCameraOrder() { // update settings with default camera order model_.acquisitions().settingsBuilder() .imagingCameraOrder(cameras.toArray(new CameraData[0])); - model_.acquisitions().updateAcquisitionSettings(); + model_.acquisitions().updateSettings(); } public DeviceAdapter adapter() { diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/SettingsAdapter.java b/src/main/java/org/micromanager/lightsheetmanager/model/SettingsAdapter.java index 59a7d9d..223e65e 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/SettingsAdapter.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/SettingsAdapter.java @@ -258,7 +258,7 @@ public void convert(final String json) { } // build the settings from builder and update the ui - model_.acquisitions().updateAcquisitionSettings(); + model_.acquisitions().updateSettings(); model_.userSettings().notifyListeners(model_.acquisitions().settings()); } diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/UserSettings.java b/src/main/java/org/micromanager/lightsheetmanager/model/UserSettings.java index 7c8060c..d7e3cd9 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/UserSettings.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/UserSettings.java @@ -129,7 +129,7 @@ public void loadFromJson(final String json, final boolean notify) { */ public void save() { // make settings current before saving - model_.acquisitions().updateAcquisitionSettings(); + model_.acquisitions().updateSettings(); // settings key based on geometry type final GeometryType geometryType = model_.devices().adapter().geometry(); 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 61826ee..340d66a 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngine.java @@ -8,22 +8,24 @@ import org.micromanager.acqj.main.Acquisition; import org.micromanager.acquisition.internal.MMAcquistionControlCallbacks; import org.micromanager.acquisition.internal.acqengjcompat.speedtest.SpeedTest; +import org.micromanager.data.Coords; import org.micromanager.data.DataProvider; import org.micromanager.data.Datastore; import org.micromanager.data.Pipeline; import org.micromanager.data.SummaryMetadata; import org.micromanager.data.internal.DefaultSummaryMetadata; import org.micromanager.data.internal.PropertyKey; +import org.micromanager.lightsheetmanager.LightSheetManager; import org.micromanager.lightsheetmanager.LightSheetManagerPlugin; import org.micromanager.lightsheetmanager.api.AcquisitionManager; +import org.micromanager.lightsheetmanager.api.data.AcquisitionMode; import org.micromanager.lightsheetmanager.api.internal.ScapeAcquisitionSettings; import org.micromanager.lightsheetmanager.gui.tabs.acquisition.DurationPanel; -import org.micromanager.lightsheetmanager.model.autofocus.AutofocusAdapter; import org.micromanager.lightsheetmanager.model.DataStorage; -import org.micromanager.lightsheetmanager.LightSheetManager; +import org.micromanager.lightsheetmanager.model.autofocus.AutofocusAdapter; import org.micromanager.lightsheetmanager.model.channels.ChannelSpec; -import org.micromanager.lightsheetmanager.api.data.AcquisitionMode; +import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.concurrent.ExecutorService; @@ -99,7 +101,7 @@ public void setAcquisitionSettingsAndBuilder(final ScapeAcquisitionSettings acqS /** * Build the {@code DefaultAcquisitionSettingsSCAPE} with the builder and update settings. */ - public void updateAcquisitionSettings() { + public void updateSettings() { acqSettings_ = asb_.build(); } @@ -113,7 +115,7 @@ public Future requestRun(boolean speedTest) { } try { - updateAcquisitionSettings(); // make sure settings are current + updateSettings(); // make sure settings are current if (speedTest) { try { @@ -174,8 +176,7 @@ public void requestResume() { * ways on summary metadata generated by the acquisition engine. * This function adds in its fields in order to achieve compatibility. */ - // TODO remove doProjections when it is clear where it should come from in settings - protected DefaultSummaryMetadata addMMSummaryMetadata(JSONObject summaryMetadata, boolean doProjections) { + protected DefaultSummaryMetadata addMMSummaryMetadata(JSONObject summaryMetadata) { try { // These are the ones from the clojure engine that may yet need to be translated // "Channels" -> {Long@25854} 2 @@ -196,16 +197,13 @@ protected DefaultSummaryMetadata addMMSummaryMetadata(JSONObject summaryMetadata // MM MDA acquisitions have a defined number of // frames/slices/channels/positions at the outset - summaryMetadata.put(PropertyKey.FRAMES.key(), acqSettings_.isUsingTimePoints() ? - acqSettings_.numTimePoints() : 1); + summaryMetadata.put(PropertyKey.FRAMES.key(), acqSettings_.isUsingTimePoints() ? acqSettings_.numTimePoints() : 1); - summaryMetadata - .put(PropertyKey.SLICES.key(), doProjections ? 1 : acqSettings_.volume().slicesPerView()); + summaryMetadata.put(PropertyKey.SLICES.key(), acqSettings_.volume().slicesPerView()); summaryMetadata.put(PropertyKey.CHANNELS.key(), acqSettings_.channels().enabled() ? - acqSettings_.channels().count() : 1); - summaryMetadata - .put(PropertyKey.POSITIONS.key(), acqSettings_.isUsingMultiplePositions() ? + acqSettings_.channels().count() : 1); + summaryMetadata.put(PropertyKey.POSITIONS.key(), acqSettings_.isUsingMultiplePositions() ? studio_.positions().getPositionList().getNumberOfPositions() : 1); // MM MDA acquisitions have a defined order @@ -225,13 +223,39 @@ protected DefaultSummaryMetadata addMMSummaryMetadata(JSONObject summaryMetadata } summaryMetadata.put(PropertyKey.AXIS_ORDER.key(), axes); - // add "z-step_um" metadata to the image viewer (used in the deskew plugin) - DefaultSummaryMetadata dsmd = (DefaultSummaryMetadata) dsmb - .zStepUm(acqSettings_.volume().sliceStepSize()) - .build(); + // handle multiple cameras + int numChannels = acqSettings_.channels().count(); + if (model_.devices().adapter().numSimultaneousCameras() > 1) { + numChannels *= model_.devices().adapter().numSimultaneousCameras(); + } + + final int numPositions = studio_.positions().getPositionList().getNumberOfPositions(); - summaryMetadata.put(PropertyKey.MICRO_MANAGER_VERSION.key(), - dsmd.getMicroManagerVersion()); + final Coords dims = studio_.data().coordsBuilder() + .channel(acqSettings_.channels().enabled() ? numChannels : 1) + .z(acqSettings_.volume().slicesPerView()) + .timePoint(acqSettings_.isUsingTimePoints() ? acqSettings_.numTimePoints() : 1) + .stagePosition(acqSettings_.isUsingMultiplePositions() ? numPositions : 1) + .build(); + + final List axisOrder = new ArrayList<>(); + axisOrder.add(Coords.T); + axisOrder.add(Coords.P); + axisOrder.add(Coords.C); + axisOrder.add(Coords.Z); + + // add "z-step_um" metadata to the image viewer (used in the deskew plugin) + final DefaultSummaryMetadata dsmd = (DefaultSummaryMetadata) dsmb + .prefix("") + .axisOrder(axisOrder) + .channelGroup(model_.acquisitions().settings().channels().group()) + .imageWidth((int)core_.getImageWidth()) + .imageHeight((int)core_.getImageHeight()) + .zStepUm(acqSettings_.volume().sliceStepSize()) + .intendedDimensions(dims) + .build(); + + summaryMetadata.put(PropertyKey.MICRO_MANAGER_VERSION.key(), dsmd.getMicroManagerVersion()); return dsmd; } catch (JSONException e) { studio_.logs().logError(e); 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 73f049d..49f8847 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineDispim.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineDispim.java @@ -57,7 +57,7 @@ boolean setup() { } // make settings current - updateAcquisitionSettings(); + updateSettings(); return true; } @@ -167,7 +167,7 @@ boolean run() { // e1.printStackTrace(); // } - updateAcquisitionSettings(); + updateSettings(); studio_.logs().logMessage("Starting Acquisition with settings:\n" + acqSettings_.toPrettyJson()); @@ -191,11 +191,6 @@ boolean run() { throw new RuntimeException(e); } - - // Projection mode - //TODO: where should this come from in settings? - boolean projectionMode = false; - ////////////////////////////////////// // Begin AcqEngJ integration // The acqSettings object should be static at this point, it will now @@ -208,7 +203,7 @@ boolean run() { currentAcquisition_ = new Acquisition(sink); JSONObject summaryMetadata = currentAcquisition_.getSummaryMetadata(); - DefaultSummaryMetadata dsmd = addMMSummaryMetadata(summaryMetadata, projectionMode); + DefaultSummaryMetadata dsmd = addMMSummaryMetadata(summaryMetadata); // TODO(Brandon): where should i get this from? SequenceSettings.Builder sequenceSettingsBuilder = new SequenceSettings.Builder(); @@ -238,27 +233,8 @@ boolean run() { // AcquisitionAPI.BEFORE_HARDWARE_HOOK); // } - - - // TODO: how much of this do we need? use the projector plugin... -// if (projectionMode) { -// // DiSPIM always uses 45 degrees -// double theta = Math.PI / 4; -// double zStep = acqSettings_.volumeSettings().sliceStepSize(); -// int numZSlices = acqSettings_.volumeSettings().slicesPerView(); -// int cameraWidth = (int) core_.getImageWidth(); -// int cameraHeight = (int) core_.getImageHeight(); -// double pixelSizeXYUm = core_.getPixelSizeUm(); -// -// int numUniqueProcessorsNeeded = 2; // Always keep enough around for 2 views -// if (acqSettings_.isUsingChannels()) { -// numUniqueProcessorsNeeded *= acqSettings_.channels().length; -// } -// } - long acqButtonStart = System.currentTimeMillis(); - //////////// Acquisition hooks //////////////////// // These functions will be run on different threads during the acquisition process // Hooks will run on the Acquisition Engine thread--the one that controls all hardware 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 936c1d5..02a3a28 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineScape.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/acquisitions/AcquisitionEngineScape.java @@ -79,7 +79,7 @@ boolean setup() { asb_.sheetCalibrationBuilder().autoSheetWidthPerPixel(0.0); // make settings current - updateAcquisitionSettings(); + updateSettings(); // // check pixel size // if (core_.getPixelSizeUm() < 1e-6) { @@ -231,7 +231,7 @@ boolean run() { // System.out.println(jsonStr); // } - updateAcquisitionSettings(); + updateSettings(); final String settingsJson = acqSettings_.toPrettyJson(); studio_.logs().logMessage("Starting Acquisition with settings:\n" + settingsJson); @@ -270,10 +270,6 @@ boolean run() { return false; } - // Projection mode - //TODO: where should this come from in settings? - boolean projectionMode = false; - ////////////////////////////////////// // Begin AcqEngJ integration // The acqSettings object should be static at this point, it will now @@ -291,7 +287,7 @@ boolean run() { } catch (JSONException e) { studio_.logs().logError("Failed to add z-um_step metadata: " + e.getMessage()); } - DefaultSummaryMetadata dsmd = addMMSummaryMetadata(summaryMetadata, projectionMode); + DefaultSummaryMetadata dsmd = addMMSummaryMetadata(summaryMetadata); // TODO(Brandon): where should i get this from? SequenceSettings.Builder sequenceSettingsBuilder = new SequenceSettings.Builder(); @@ -321,27 +317,8 @@ boolean run() { // AcquisitionAPI.BEFORE_HARDWARE_HOOK); // } - - - // TODO: how much of this do we need? use the projector plugin... -// if (projectionMode) { -// // DiSPIM always uses 45 degrees -// double theta = Math.PI / 4; -// double zStep = acqSettings_.volumeSettings().sliceStepSize(); -// int numZSlices = acqSettings_.volumeSettings().slicesPerView(); -// int cameraWidth = (int) core_.getImageWidth(); -// int cameraHeight = (int) core_.getImageHeight(); -// double pixelSizeXYUm = core_.getPixelSizeUm(); -// -// int numUniqueProcessorsNeeded = 2; // Always keep enough around for 2 views -// if (acqSettings_.isUsingChannels()) { -// numUniqueProcessorsNeeded *= acqSettings_.channels().length; -// } -// } - long acqButtonStart = System.currentTimeMillis(); - //////////// Acquisition hooks //////////////////// // These functions will be run on different threads during the acquisition process // Hooks will run on the Acquisition Engine thread--the one that controls all hardware @@ -1363,7 +1340,7 @@ public DefaultTimingSettings.Builder getTimingFromPeriodAndLightExposure() { @Override public void updateDurationLabels() { model_.acquisitions().recalculateSliceTiming(); - model_.acquisitions().updateAcquisitionSettings(); + model_.acquisitions().updateSettings(); // update durations now that settings are current updateSlicePeriodLabel(pnlDuration_.getSliceDurationLabel()); updateVolumeDurationLabel(pnlDuration_.getVolumeDurationLabel()); diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/devices/cameras/PvCamera.java b/src/main/java/org/micromanager/lightsheetmanager/model/devices/cameras/PvCamera.java index 9f72588..5370c09 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/devices/cameras/PvCamera.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/devices/cameras/PvCamera.java @@ -35,8 +35,8 @@ public static class Properties { } public static class Values { - public final static String INTERNAL_TRIGGER = "Internal Trigger"; - public final static String EDGE_TRIGGER = "Edge Trigger"; + public static final String INTERNAL_TRIGGER = "Internal Trigger"; + public static final String EDGE_TRIGGER = "Edge Trigger"; } public PvCamera(final Studio studio, final String deviceName) {