From 160495d1993cba4f88e7689c49aba56150e934a5 Mon Sep 17 00:00:00 2001 From: cjsha Date: Mon, 26 May 2025 18:02:56 -0400 Subject: [PATCH 1/8] Add GUI to miniscope docs --- .../uclaminiscopev4-miniscopedaq-gui.bonsai | 1355 +++++++++++++++++ .../uclaminiscopev4-miniscopedaq-gui.svg | 3 + source/ucla-miniscope-v4/quick/software.rst | 3 +- .../user/miniscope-daq/gui/description.rst | 38 + .../user/miniscope-daq/gui/hardware.rst | 5 + .../user/miniscope-daq/gui/index.rst | 29 + .../user/miniscope-daq/gui/software.rst | 75 + .../user/miniscope-daq/gui/tutorial.rst | 67 + .../user/miniscope-daq/index.rst | 3 +- 9 files changed, 1576 insertions(+), 2 deletions(-) create mode 100644 source/_static/downloads/uclaminiscopev4-miniscopedaq-gui.bonsai create mode 100644 source/_static/images/uclaminiscopev4-miniscopedaq-gui.svg create mode 100644 source/ucla-miniscope-v4/user/miniscope-daq/gui/description.rst create mode 100644 source/ucla-miniscope-v4/user/miniscope-daq/gui/hardware.rst create mode 100644 source/ucla-miniscope-v4/user/miniscope-daq/gui/index.rst create mode 100644 source/ucla-miniscope-v4/user/miniscope-daq/gui/software.rst create mode 100644 source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst diff --git a/source/_static/downloads/uclaminiscopev4-miniscopedaq-gui.bonsai b/source/_static/downloads/uclaminiscopev4-miniscopedaq-gui.bonsai new file mode 100644 index 0000000..8c6ce50 --- /dev/null +++ b/source/_static/downloads/uclaminiscopev4-miniscopedaq-gui.bonsai @@ -0,0 +1,1355 @@ + + + + + + + + + + + + + + + SaveData + + + + ToggleButtonRecord + + + + 1 + + + + + + + + + + + + + + + SaveDataToggle + + + + DataFrame + + + CheckBoxRecordDuration + + + + + + Source1 + + + + + + + + + + + + + + PT3S + + + + RecordingTimer + + + ToggleButtonRecordPublish + + + + + + Source1 + + + + + + + + + + + + + + + + + + Image + + + + + + + + + c.avi + None + true + true + FMP4 + 30 + + 0 + 0 + + NearestNeighbor + + + + + Trigger + + + + + + + + + + + adaqdsfds.csv + false + true + None + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + TriggerToggleLow + + + TriggerToggleHigh + + + + + + + 1 + + + + SaveDataTriggerToggle + + + + DataFrame + + + + + + Source1 + + + Trigger + + + + + + + + + + + Trigger + + + + + + ToggleButtonTriggerRecordPublish + + + + + + + + + Source1 + + + + + + + + + + + + + + + Image + + + + + + + + + c.avi + None + true + true + FMP4 + 30 + + 0 + 0 + + NearestNeighbor + + + + + Trigger + + + + + + + + + + + adaqdsfds.csv + false + true + None + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DataSource + + + + + + 2.avi + 0 + 0 + Frames + true + true + + + + + + + true + + + + + + + + + + + new ( + it.Item1 as Image, + it.Item2 as Trigger +) + + + + + DataFrame + + + + + + + + + + + + 1 + 0 + -17.2 + Low + Fps15 + false + + + + DataFrame + + + + + + + + + + + + + + + + + + + Video + + + + DataFrame + + + Image + + + RadioButtonNone + + + RadioButtonSaturation + + + RadioButtonDff + + + + + + + + + NoProcessing + + + + Source1 + + + it.item2.item1 + + + Item1 + + + + + + + + + + + + Saturation + + + + Source1 + + + it.item2.item2 + + + Item1 + + + CalculateDisplaySaturation + + + + Source1 + + + + 192 + 255 + ToZero + + + + + + + Size + + + + + + + + + + 640 + 480 + + U8 + 3 + + 0 + 0 + 100 + 100 + + + + + + + + + + 1 + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DF/F + + + + Source1 + + + it.item2.item3 + + + Item1 + + + + + + + + + 100 + 14.3 + 3 + + + + Item2 + + + + + 0.25 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + true + true + false + + + + DataFrame + + + Image + + + + + + + true + true + 1 + 2 + + + + + + + VideoRadioButtons + + + + RadioButtonNone + true + true + None + true + + + RadioButtonNone + + + + RadioButtonSaturation + true + true + Saturation + false + + + RadioButtonSaturation + + + + RadioButtonDff + true + true + ΔF/F + false + + + RadioButtonDff + + + + true + true + 3 + 1 + + + + + + + + + + + + + + + + + + + + + + + TimerLabels + + + + + PT0S + PT1S + + + + "Acquiring: " & Convert.ToString(it) & " seconds" + + + + + + + + true + true + Acquiring: 17 seconds + + + + + PT0S + PT1S + + + + ToggleButtonRecord + + + DataFrame + + + Trigger + + + + false + + + + ToggleButtonTriggerRecord + + + + + + + + + + + + it.Item2 + + + Item1 + + + + + + Source1 + + + + + + + + + + TriggerToggleHigh + + + + + + + + + Source1 + + + + + + + + + + + + + + + + Source1 + + + + + + + + + + + + TriggerToggleLow + + + ToggleButtonRecord + + + + + + Source1 + + + + + + + + + + + + ToggleButtonTriggerRecord + + + + + + Source1 + + + + + + + + + + + + + + + + + + + + + "Recording: " & Convert.ToString(it) & " seconds" + + + + + + + + + + + + + + + + + + + + + true + true + + + + + true + true + 2 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + IOGraphs + + + + DataFrame + + + Trigger + + + + + + + + + + + + CheckBoxes + + + + ToggleButtonRecord + + + ToggleButtonTriggerRecord + + + + + + + + + + + + CheckBoxRecordDuration + true + true + Stop recording when RecordingDuration has elapsed. + false + + + CheckBoxRecordDuration + + + + + + + + + + + + + + + + + Buttons + + + + RecordButton + + + + ToggleButtonRecord + + + it ? "Stop Recording" : "Record" + + + RecordingTimer + + + + Record + + + + + + + + + + + + + false + + + + RecordingTimer + + + + false + + + + + + + + + + + + + true + + + + ToggleButtonTriggerRecord + + + + + + + + + + + + ToggleButtonRecord + true + true + Record + false + + + ToggleButtonRecord + + + ToggleButtonRecordPublish + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RecordWhenTriggerButton + + + + ToggleButtonTriggerRecord + + + it ? "Stop Recording On Trigger" : "Record On Trigger" + + + RecordingTimer + + + + Record + + + + + + + + + + + + + false + + + + RecordingTimer + + + + false + + + + + + + + + + + + + true + + + + ToggleButtonRecord + + + + + + + + + + + + ToggleButtonTriggerRecord + true + true + Record On Trigger + false + + + ToggleButtonTriggerRecord + + + ToggleButtonTriggerRecordPublish + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + 2 + 1 + + + + + + + ToggleButtonRecord + + + ToggleButtonTriggerRecord + + + + + + + + + + + + + + Miniscope GUI + true + true + 2 + 4 + + + Absolute + 600 + + + 30 + + + + + Absolute + 600 + + + Absolute + 30 + + + Absolute + 200 + + + Absolute + 30 + + + + + + + + + + + + DataFrame + + + Quaternion + + + COM7 + true + true + + + RecordingTimer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/source/_static/images/uclaminiscopev4-miniscopedaq-gui.svg b/source/_static/images/uclaminiscopev4-miniscopedaq-gui.svg new file mode 100644 index 0000000..04fa391 --- /dev/null +++ b/source/_static/images/uclaminiscopev4-miniscopedaq-gui.svg @@ -0,0 +1,3 @@ + +]>SaveDataDataSourceMiniscope GUIAutoCommutatorRecordingTimerVideoFileName,VideoSuffix,VideoOvLedBrightness,Focus,SensorVisualizerMappingVisualizerMappingVisualizerMappingVisualizerMappingVisualizerMappingVisualizerMappingVisualizerMappingQuaternionVideoTableLayoutPanelVideoRadioButtonsTimerLabelsIOGraphsCheckBoxesButtonsDataFrameSigma,BackgroundFrames,BackgrVisualizerMappingVisualizerMappingPropertyGridImageHistogramImageDataFrame \ No newline at end of file diff --git a/source/ucla-miniscope-v4/quick/software.rst b/source/ucla-miniscope-v4/quick/software.rst index eee70a6..a219312 100644 --- a/source/ucla-miniscope-v4/quick/software.rst +++ b/source/ucla-miniscope-v4/quick/software.rst @@ -65,7 +65,8 @@ If you have not already done so, :align: center :height: 400px - #. Download and install the required Bonsai packages: + #. Download and install the required Bonsai packages or update to the latest versions using + the Bonsai Package Manager: * Bonsai.StarterPack diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/gui/description.rst b/source/ucla-miniscope-v4/user/miniscope-daq/gui/description.rst new file mode 100644 index 0000000..22eb3ef --- /dev/null +++ b/source/ucla-miniscope-v4/user/miniscope-daq/gui/description.rst @@ -0,0 +1,38 @@ +#################### +Workflow Description +#################### + +.. note:: This description assumes the reader has a foundation in Bonsai that is built on the :doc:`Trigger Workflow Description <../save-data/description>`. Start there if you have not already. + +************************** +GUI Description +************************** + +.. image:: /_static/images/uclaminiscopev4-miniscopedaq-gui.svg + :alt: exported svg of main workflow with bounding box over nodes responsible for automatic commutation + :align: center + +This workflow is quite extensive and therefore instead of node-by-node instructive description, it +gets an overview of how it works. There are several ``GroupWorkflow`` operators that have been named +after the GUI elements that they contain or the function they serve. + +- The "SaveData" ``GroupWorkflow`` contains a pattern that allows the ``VideoWriter`` operator to + subscribe (a `Reactive `__ way to say + "listening") to upstream operators which allows the user to change the filename while the + workflow is running. + +- The "DataSource" ``GroupWorkflow`` contains the ``UCLAMiniscopeV4`` source node. + +- The rest of the ``GroupWorkflows`` are for controlling the state of GUI elements. Each one has a + ``VisualizerMapping`` to map each GUI element to a panel. In particular: + + - If you want to add your own custom data-processing pipeline for visualization, inspect the + "Video" ``GroupWorkflow``. It contains three more ``GroupWorkflows`` that each represent a + way to look at the data. Create another radio button and branch (or override one that + already exists) to add your custom data-processing pipeline to the visualizer. + +- This workflow also demonstrates the usage of ``PublishSubject``, ``MulticastSubject``, and + ``SubscribeSubject``. These are all various ways to makes connections between nodes without + connecting them directly + +.. note:: To learn more about a respective node, refer to the description in the *Properties* pane that appears after left-clicking the respective node. If the node has a name that is different from the name of the operator it represents, the operator name is presented in parenthesis after the node name. diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/gui/hardware.rst b/source/ucla-miniscope-v4/user/miniscope-daq/gui/hardware.rst new file mode 100644 index 0000000..845a3c1 --- /dev/null +++ b/source/ucla-miniscope-v4/user/miniscope-daq/gui/hardware.rst @@ -0,0 +1,5 @@ +#################### +Hardware Connections +#################### + +Coming soon \ No newline at end of file diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/gui/index.rst b/source/ucla-miniscope-v4/user/miniscope-daq/gui/index.rst new file mode 100644 index 0000000..8363dd0 --- /dev/null +++ b/source/ucla-miniscope-v4/user/miniscope-daq/gui/index.rst @@ -0,0 +1,29 @@ +### +GUI +### + +.. image:: /_static/images/uclaminiscopev4-miniscopedaq-commutate.svg + :alt: image of workflow + :width: 50% + :align: center + +After following this tutorial, the user will be able to open a GUI constructed in Bonsai for +interfacing with the UCLA Miniscope v4 & Miniscope DAQ with the following features: + +- Toggle between one of three data-processing pipelines for viewing +- Control various properties related to the miniscope hardware, saving data, and the ΔF/F signal-processing pipeline +- Toggle recording manually or with a trigger +- View real-time histogram data +- View real-time IO data +- Commutate the UCLA Miniscope V4 tether + +.. note:: + This is the first release for the Bonsai Miniscope GUI. If you have feedback, (i.e. feature requests, usability issues, bug fixes, etc.), please submit them as a `GitHub issue `__! + +.. toctree:: + :hidden: + + hardware + software + tutorial + description \ No newline at end of file diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/gui/software.rst b/source/ucla-miniscope-v4/user/miniscope-daq/gui/software.rst new file mode 100644 index 0000000..30dc819 --- /dev/null +++ b/source/ucla-miniscope-v4/user/miniscope-daq/gui/software.rst @@ -0,0 +1,75 @@ +##################################### +Bonsai Installation and Configuration +##################################### + +#. If you have not already done so, + + #. `Download and Install Bonsai `_ + + #. `Install the necessary Bonsai packages: `_ + + #. Open Bonsai + + #. Open the Bonsai package manager: + + .. grid:: + + .. grid-item:: + :columns: 5 + + From the Bonsai landing window, select *Manage Packages* + + .. image:: /_static/images/bonsai-landing-page-package-manager-button.webp + :alt: screenshot of Bonsai landing window with *Manage Packages* text highlighted + :align: center + + .. grid-item:: + :columns: auto + :child-align: center + + or + + .. grid-item:: + :columns: 6 + + From the Bonsai workflow editor, hover over the *Tools* tab in the top ribbon to reveal a drop-down menu, and left-click *Manage Packages...*. + + .. image:: /_static/images/bonsai-workflow-editor-package-manager-button.webp + :alt: screenshot of Bonsai workflow editor with *Manage Packages...* text highlighted + :align: center + + #. Select the *Browse* tab in the top ribbon: + + .. image:: /_static/images/bonsai-package-manager-browse-button.webp + :alt: screenshot of Bonsai package manager with *Browse* tab highlighted + :align: center + :height: 400px + + #. Configure the *Package Source* field to *All* using the drop-down menu: + + .. image:: /_static/images/bonsai-package-manager-package-source-dropdown.webp + :alt: screenshot of Bonsai package manager with the Package Source drop-down highlighted + :align: center + :height: 400px + + #. Download and install the required Bonsai packages or update to the latest versions using + the Bonsai Package Manager: + + * Bonsai.StarterPack + + * OpenEphys.Miniscope + + * OpenEphys.Commutator + + * Bonsai.GUI + + For each one, search its name in the search bar, left-click its corresponding entry, and left-click the *Install* button. For example: + + .. image:: /_static/images/bonsai-starterpack.webp + :alt: screenshot of Bonsai package manager with search bar highlighted + :align: center + :height: 400px + + Click the *I Accept* button when prompted. + + diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst b/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst new file mode 100644 index 0000000..76b55e6 --- /dev/null +++ b/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst @@ -0,0 +1,67 @@ +################# +Workflow Tutorial +################# + +.. note:: An Open Ephys Coaxial Commutator is necessary for this workflow + +#. Download the following workflow (.bonsai file) and open it with Bonsai: + + .. raw:: html + + {% with static_path = '../../../../_static', name = 'uclaminiscopev4-miniscopedaq-gui' %} + {% include 'workflow.html' %} + {% endwith %} + +#. Double-click the ``DataSource`` node and set the ``UCLAMiniscopeV4`` operator's ``Index`` + property to the value that corresponds to the index of your miniscope. + + .. grid:: + + .. grid-item:: + + .. include:: /includes/set-index.rst + + .. grid-item:: + :columns: 3 + + .. image:: /_static/images/uclaminiscopev4-properties.webp + :align: center + :alt: screenshot of ucla miniscope v4 node properties for index + +#. Set the COM port associated with your commutator in the workflow + + * Left-click the ``AutoCommutator`` node and set the ``PortName`` property under the + `Properties` pane to match the port that corresponds to your commutator. + + * Confirm the RotationAxis is search + +#. Set the commutator to rotate around the correct axis + + * Left-click the ``AutoCommutator`` node and set the ``RotationAxis`` property under the + `Properties` pane to "0, 0, 1". + + .. note:: + + If you are uncertain about which COM port corresponds to your commutator, follow these instructions: + + #. Open Window's *Device Manager*. + + #. Unplug the commutator, and plug it back in. Observe which COM port disappears and + appears in device manager when doing so - that is the COM port associated with your + commutator. If the commutator does not appear in device manager, follow `these + instructions `__ + +#. Run the workflow and double-click the ``Miniscope GUI`` node. + +#. From here, you can: + + - toggle between one of three data-processing pipelines for viewing + - control various properties related to the miniscope hardware, saving data, + and the ΔF/F signal-processing pipeline + - toggle recording manually or with a trigger + - view real-time histogram data + - view real-time IO data + - commutate the UCLA Miniscope V4 tether automatically + +.. [1] + .. include:: /includes/start-workflow.rst \ No newline at end of file diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/index.rst b/source/ucla-miniscope-v4/user/miniscope-daq/index.rst index 8fc487d..c817b0d 100644 --- a/source/ucla-miniscope-v4/user/miniscope-daq/index.rst +++ b/source/ucla-miniscope-v4/user/miniscope-daq/index.rst @@ -15,7 +15,7 @@ The User Guide contains following tutorials: * :doc:`Commutate the UCLA Miniscope's tether using the on-board IMU ` For an extensive overview of the Miniscope-DAQ, refer to :ref:`its section ` of the :doc:`/overview/data-acq-hardware` page. - + .. toctree:: :hidden: @@ -23,3 +23,4 @@ For an extensive overview of the Miniscope-DAQ, refer to :ref:`its section Date: Mon, 26 May 2025 18:12:35 -0400 Subject: [PATCH 2/8] Remove broken refs --- source/overview/miniscopes.rst | 98 ------------------------------ source/ucla-miniscope-v4/index.rst | 4 -- 2 files changed, 102 deletions(-) delete mode 100644 source/overview/miniscopes.rst diff --git a/source/overview/miniscopes.rst b/source/overview/miniscopes.rst deleted file mode 100644 index 08ff5df..0000000 --- a/source/overview/miniscopes.rst +++ /dev/null @@ -1,98 +0,0 @@ -:orphan: - -##################### -Miniscopes Comparison -##################### - -Open Ephys sells the following miniscopes: - -* Wireless UCLA Miniscope v3 kit (`store `__) - -* UCLA Miniscope v4 kit or assembled (`store `__, :doc:`documentation `, `github `__) - -.. grid:: 2 - - .. grid-item:: **UCLA Miniscope v3 Wireless** (obsoleted) - :child-align: center - - .. image:: /_static/images/uclaminiscopev3-cad.webp - :alt: image of Wireless UCLA Miniscope v3 rendering - :align: center - - .. grid-item:: **UCLA Miniscope v4** - :child-align: center - - .. image:: /_static/images/uclaminiscopev4-cad.webp - :alt: image of UCLA Miniscope v4 redering - :align: center - -**************** -Comparison Chart -**************** - -The specifications of the miniscopes sold by Open Ephys (e.g. resolution, field-of-view, SNR, focusing capability, mode of data transmission, etc.) differ meaningfully. This chart serves to compare those miniscopes. - -.. todo:: v3 dimensions? Put checks and x's instead of yes and no - -.. list-table:: Miniscope Comparison Chart - :header-rows: 1 - - * - - - UCLA Miniscope v3 Wireless - - UCLA Miniscope v4 - - * - Part Status - - Deprecated - - Active - - * - Mass (g) - - 4.5 - - <3 - - * - Dimensions (mm) - - -- - - 14.5W 18L 22.5H - - * - Nominal Working Distance (µm) - - 50 - 200 - - 675 (this can be adjusted by swapping lenses) - - * - Focusing Capability - - Manual mechanical slide - - ±200um ETL/EWL focal adjustment - - * - Field-of-View - - 450µm × 700µm - - 1mm diameter (this can be adjusted by swapping lenses) - - * - Resolution (pixels) - - 480 × 752 - - 608 × 608 - - * - FPS - - 60 - - 10, 15, 20, 25, 30 - - * - Data Acquisition Hardware Compatibility - - On-board logger - - Miniscope-DAQ or MiniCAM - - * - Wire - - None - - Compatible with lightweight 0.3mm coaxial cable for power and data - - * - Excitation Efficiency Ranking (lower is better) - - 2 - - 1 - - * - Orientation Sensing - - No - - Yes - - * - Position Sensing - - No - - No - - * - Price as sold by Open Ephys - - €540 (wireless conversion kit) - - €1,985 (fully assembled + 1x cable + 2x baseplates) \ No newline at end of file diff --git a/source/ucla-miniscope-v4/index.rst b/source/ucla-miniscope-v4/index.rst index 8616276..fdbf6ef 100644 --- a/source/ucla-miniscope-v4/index.rst +++ b/source/ucla-miniscope-v4/index.rst @@ -23,10 +23,6 @@ To learn how the UCLA Miniscope v4 works, refer to the :doc:`/ucla-miniscope-v4/ UCLA Miniscope v4 Features & Properties *************************************** -.. todo:: format this better - -To compare the UCLA Miniscope v4 to other miniscopes sold by Open Ephys, refer to the :ref:`overview/miniscopes:Comparison Chart`. - Mechanical Properties: * **Mass:** <3g From c1efe36597c03c636575cd065c906d8938eba75a Mon Sep 17 00:00:00 2001 From: cjsha Date: Mon, 26 May 2025 19:27:58 -0400 Subject: [PATCH 3/8] Add step to disable commutation if commutator is connected --- ...ev4-miniscopedaq-gui_commutate-disable.svg | 365 ++++++++++++++++++ .../user/miniscope-daq/gui/tutorial.rst | 24 +- 2 files changed, 378 insertions(+), 11 deletions(-) create mode 100644 source/_static/images/uclaminiscopev4-miniscopedaq-gui_commutate-disable.svg diff --git a/source/_static/images/uclaminiscopev4-miniscopedaq-gui_commutate-disable.svg b/source/_static/images/uclaminiscopev4-miniscopedaq-gui_commutate-disable.svg new file mode 100644 index 0000000..a8a2012 --- /dev/null +++ b/source/_static/images/uclaminiscopev4-miniscopedaq-gui_commutate-disable.svg @@ -0,0 +1,365 @@ + +AutoCommutatorQuaternionDataFrameAutoCommutatorQuaternionDataFrame diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst b/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst index 76b55e6..a5d1818 100644 --- a/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst +++ b/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst @@ -2,8 +2,6 @@ Workflow Tutorial ################# -.. note:: An Open Ephys Coaxial Commutator is necessary for this workflow - #. Download the following workflow (.bonsai file) and open it with Bonsai: .. raw:: html @@ -33,13 +31,6 @@ Workflow Tutorial * Left-click the ``AutoCommutator`` node and set the ``PortName`` property under the `Properties` pane to match the port that corresponds to your commutator. - * Confirm the RotationAxis is search - -#. Set the commutator to rotate around the correct axis - - * Left-click the ``AutoCommutator`` node and set the ``RotationAxis`` property under the - `Properties` pane to "0, 0, 1". - .. note:: If you are uncertain about which COM port corresponds to your commutator, follow these instructions: @@ -49,9 +40,20 @@ Workflow Tutorial #. Unplug the commutator, and plug it back in. Observe which COM port disappears and appears in device manager when doing so - that is the COM port associated with your commutator. If the commutator does not appear in device manager, follow `these - instructions `__ + instructions `_ + +#. If you do not have a commutator connected, select the following chain of nodes and disable them + by either pressing ``Ctrl+D`` or right-clicking the selected nodes and clicking the "Disable" + option in the context menu that pops up. + + .. figure:: /_static/images/uclaminiscopev4-miniscopedaq-gui_commutate-disable.svg + :align: center + :alt: screenshot of nodes to be disabled if no commutator is connected + + Disable this row that performs commutation if no commutator is connected. -#. Run the workflow and double-click the ``Miniscope GUI`` node. +#. Run the workflow. Double-click the ``Miniscope GUI`` node and expand the visualizer that pops + up. #. From here, you can: From f5037e09d494e611c3a979e697d2d9fa4463445b Mon Sep 17 00:00:00 2001 From: Ceci Herbert Date: Tue, 27 May 2025 14:32:05 +0100 Subject: [PATCH 4/8] suggested changes --- .../user/miniscope-daq/gui/description.rst | 6 +++--- .../user/miniscope-daq/gui/index.rst | 20 ++++++++++--------- .../user/miniscope-daq/gui/tutorial.rst | 14 ++++++------- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/gui/description.rst b/source/ucla-miniscope-v4/user/miniscope-daq/gui/description.rst index 22eb3ef..6057e8c 100644 --- a/source/ucla-miniscope-v4/user/miniscope-daq/gui/description.rst +++ b/source/ucla-miniscope-v4/user/miniscope-daq/gui/description.rst @@ -12,9 +12,9 @@ GUI Description :alt: exported svg of main workflow with bounding box over nodes responsible for automatic commutation :align: center -This workflow is quite extensive and therefore instead of node-by-node instructive description, it -gets an overview of how it works. There are several ``GroupWorkflow`` operators that have been named -after the GUI elements that they contain or the function they serve. +This example workflow is quite extensive and meant to be extensible. Therefore, we have provided an overview of how it works, instead of a node-by-node instructive description. + +There are several ``GroupWorkflow`` operators that have been named after the GUI elements that they contain or the function they serve. - The "SaveData" ``GroupWorkflow`` contains a pattern that allows the ``VideoWriter`` operator to subscribe (a `Reactive `__ way to say diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/gui/index.rst b/source/ucla-miniscope-v4/user/miniscope-daq/gui/index.rst index 8363dd0..22f6dac 100644 --- a/source/ucla-miniscope-v4/user/miniscope-daq/gui/index.rst +++ b/source/ucla-miniscope-v4/user/miniscope-daq/gui/index.rst @@ -7,18 +7,20 @@ GUI :width: 50% :align: center -After following this tutorial, the user will be able to open a GUI constructed in Bonsai for -interfacing with the UCLA Miniscope v4 & Miniscope DAQ with the following features: +After following this tutorial, the user will be able to open an example GUI constructed in Bonsai for +interfacing with the UCLA Miniscope v4, Miniscope DAQ and Open Ephys torque-free commutator with the following features: -- Toggle between one of three data-processing pipelines for viewing -- Control various properties related to the miniscope hardware, saving data, and the ΔF/F signal-processing pipeline -- Toggle recording manually or with a trigger -- View real-time histogram data -- View real-time IO data -- Commutate the UCLA Miniscope V4 tether +- toggle between one of three online data-processing pipelines for viewing (raw, saturation, ΔF/F) +- control various properties related to the Miniscope hardware, saving data, and the ΔF/F signal-processing pipeline +- toggle recording manually or with a hardware input trigger +- view real-time pixel brightness histogram +- view real-time digital input data +- commutate the UCLA Miniscope V4 tether automatically with the Open Ephys torque-free commutator + +This example GUI is intended to provide easy-to-use access to the key features of the libraries that are available in Bonsai to work with this Miniscope system. We believe it will be useful as-is for most users. However, since the GUI is itself programmed in Bonsai, users can extend the layout or remove features to fit their experimental needs. .. note:: - This is the first release for the Bonsai Miniscope GUI. If you have feedback, (i.e. feature requests, usability issues, bug fixes, etc.), please submit them as a `GitHub issue `__! + This is the first release of this Bonsai GUI for Miniscopes. If you have feedback, (i.e. feature requests, usability issues, bug fixes, etc.), please submit them as a `GitHub issue `__! .. toctree:: :hidden: diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst b/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst index a5d1818..db067da 100644 --- a/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst +++ b/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst @@ -55,15 +55,15 @@ Workflow Tutorial #. Run the workflow. Double-click the ``Miniscope GUI`` node and expand the visualizer that pops up. -#. From here, you can: +#. Using the GUI, you can: - - toggle between one of three data-processing pipelines for viewing - - control various properties related to the miniscope hardware, saving data, + - toggle between one of three online data-processing pipelines for viewing (raw, saturation, ΔF/F) + - control various properties related to the Miniscope hardware, saving data, and the ΔF/F signal-processing pipeline - - toggle recording manually or with a trigger - - view real-time histogram data - - view real-time IO data - - commutate the UCLA Miniscope V4 tether automatically + - toggle recording manually or with a hardware input trigger + - view real-time pixel brightness histogram + - view real-time digital input data + - commutate the UCLA Miniscope V4 tether automatically with the Open Ephys torque-free commutator .. [1] .. include:: /includes/start-workflow.rst \ No newline at end of file From 8bf52278a84ae8aba98defe250c91fd884b09aac Mon Sep 17 00:00:00 2001 From: cjsha Date: Tue, 27 May 2025 12:10:41 -0400 Subject: [PATCH 5/8] Add tip for troubleshooting workflows Also, add links regarding subjects in Bonsai --- .../user/miniscope-daq/gui/description.rst | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/gui/description.rst b/source/ucla-miniscope-v4/user/miniscope-daq/gui/description.rst index 6057e8c..15403f8 100644 --- a/source/ucla-miniscope-v4/user/miniscope-daq/gui/description.rst +++ b/source/ucla-miniscope-v4/user/miniscope-daq/gui/description.rst @@ -4,17 +4,34 @@ Workflow Description .. note:: This description assumes the reader has a foundation in Bonsai that is built on the :doc:`Trigger Workflow Description <../save-data/description>`. Start there if you have not already. -************************** +*************** GUI Description -************************** +*************** .. image:: /_static/images/uclaminiscopev4-miniscopedaq-gui.svg :alt: exported svg of main workflow with bounding box over nodes responsible for automatic commutation :align: center -This example workflow is quite extensive and meant to be extensible. Therefore, we have provided an overview of how it works, instead of a node-by-node instructive description. +This example workflow is meant to be extensible. For that purpose, we have provided an overview of +how it works broad overview of how it works. -There are several ``GroupWorkflow`` operators that have been named after the GUI elements that they contain or the function they serve. +.. tip:: + + If you edit this workflow for your own experiment, one important feature of Bonsai to know about + is that all items passed from node to node are visible to the user using type visualizers. Either: + + #. Double-click a node while the workflow is running to open the default visualizer. + #. Right-click a node, click "Show Visualizer", and click a visualizer to show up when the + workflow is running. + + Not all types have descriptive visualizers, but they can still be helpful to know when data is + sent. Moreover, if a type doesn't have a descriptive visualizer, you might be able to select a + member from that type and visualize that member instead, i.e. what we do to visualize image or + quaternion data from a `UCLAMiniscopeV4Frame`. + +There are several ``GroupWorkflow`` operators that have been named after the GUI elements that they +contain or the function that they serve. Double-click one while the workflow is off to inspect it, or +press ``F12`` while one is selected. - The "SaveData" ``GroupWorkflow`` contains a pattern that allows the ``VideoWriter`` operator to subscribe (a `Reactive `__ way to say @@ -24,15 +41,15 @@ There are several ``GroupWorkflow`` operators that have been named after the GUI - The "DataSource" ``GroupWorkflow`` contains the ``UCLAMiniscopeV4`` source node. - The rest of the ``GroupWorkflows`` are for controlling the state of GUI elements. Each one has a - ``VisualizerMapping`` to map each GUI element to a panel. In particular: + ``VisualizerMapping`` to map each GUI element to a panel. - If you want to add your own custom data-processing pipeline for visualization, inspect the "Video" ``GroupWorkflow``. It contains three more ``GroupWorkflows`` that each represent a way to look at the data. Create another radio button and branch (or override one that already exists) to add your custom data-processing pipeline to the visualizer. -- This workflow also demonstrates the usage of ``PublishSubject``, ``MulticastSubject``, and - ``SubscribeSubject``. These are all various ways to makes connections between nodes without - connecting them directly - -.. note:: To learn more about a respective node, refer to the description in the *Properties* pane that appears after left-clicking the respective node. If the node has a name that is different from the name of the operator it represents, the operator name is presented in parenthesis after the node name. +This workflow also demonstrates the usage of ``PublishSubject``, ``MulticastSubject``, and +``BehaviorSubject`` which can be combined with ``SubscribeSubject`` to connect nodes without drawing +lines between them. Using `subjects `_ is `good +practice `_ when creating more +extensive workflows. \ No newline at end of file From 4dbbc5632c790ca94e25572e4144024ae6e4297e Mon Sep 17 00:00:00 2001 From: cjsha Date: Tue, 27 May 2025 13:04:47 -0400 Subject: [PATCH 6/8] gui workflow edits - Make it easier to change FourCC and set to Y800 - provide more descriptive file names - Save quaternion data as well as IO data - file overwrite: false, file suffix: filenumber - Also, add note in tutorial on how to change FourCC --- .../uclaminiscopev4-miniscopedaq-gui.bonsai | 128 ++++++++++-------- .../user/miniscope-daq/gui/tutorial.rst | 3 + 2 files changed, 76 insertions(+), 55 deletions(-) diff --git a/source/_static/downloads/uclaminiscopev4-miniscopedaq-gui.bonsai b/source/_static/downloads/uclaminiscopev4-miniscopedaq-gui.bonsai index 8c6ce50..e49b3cf 100644 --- a/source/_static/downloads/uclaminiscopev4-miniscopedaq-gui.bonsai +++ b/source/_static/downloads/uclaminiscopev4-miniscopedaq-gui.bonsai @@ -4,8 +4,8 @@ xmlns:rx="clr-namespace:Bonsai.Reactive;assembly=Bonsai.Core" xmlns:cv="clr-namespace:Bonsai.Vision;assembly=Bonsai.Vision" xmlns:io="clr-namespace:Bonsai.IO;assembly=Bonsai.System" - xmlns:scr="clr-namespace:Bonsai.Scripting.Expressions;assembly=Bonsai.Scripting.Expressions" xmlns:p1="clr-namespace:OpenEphys.Miniscope;assembly=OpenEphys.Miniscope" + xmlns:scr="clr-namespace:Bonsai.Scripting.Expressions;assembly=Bonsai.Scripting.Expressions" xmlns:dsp="clr-namespace:Bonsai.Dsp;assembly=Bonsai.Dsp" xmlns:gui="clr-namespace:Bonsai.Gui;assembly=Bonsai.Gui" xmlns:sys="clr-namespace:System;assembly=mscorlib" @@ -43,6 +43,7 @@ + SaveDataToggle @@ -72,7 +73,7 @@ - PT3S + PT10S @@ -109,14 +110,15 @@ + - c.avi - None + ucla-miniscope-v4_image_.avi + FileCount true - true - FMP4 + false + Y800 30 0 @@ -127,7 +129,7 @@ - Trigger + Trigger,Quaternion @@ -138,10 +140,10 @@ - adaqdsfds.csv + ucla-miniscope-v4_io-quaternion_.csv false - true - None + false + FileCount false @@ -244,14 +246,15 @@ + - c.avi - None + ucla-miniscope-v4_image_.avi + FileCount true - true - FMP4 + false + Y800 30 0 @@ -262,7 +265,7 @@ - Trigger + Trigger,Quaternion @@ -273,16 +276,16 @@ - adaqdsfds.csv + ucla-miniscope-v4_io-quaternion_.csv false - true - None + false + FileCount false - + @@ -337,10 +340,30 @@ DataSource + + + + + + + + + + 1 + 0 + -17.2 + Low + Fps15 + false + + + + DataFrame + - 2.avi + C:\Users\open-ephys\Downloads\unprocessed-miniscope-data\14_44_09\My_V4_Miniscope\2.avi 0 0 Frames @@ -356,6 +379,13 @@ + + + + 0 + + + @@ -365,7 +395,8 @@ new ( it.Item1 as Image, - it.Item2 as Trigger + it.Item2 as Trigger, + it.Item3 as Quaternion ) @@ -374,34 +405,15 @@ DataFrame - - - - - - - - - - 1 - 0 - -17.2 - Low - Fps15 - false - - - - DataFrame - - - - - - + + + + + + @@ -747,7 +759,7 @@ true true - Acquiring: 17 seconds + Acquiring: 42 seconds @@ -1309,16 +1321,22 @@ - - DataFrame + + + DataFrame + - - Quaternion + + + Quaternion + - - COM7 - true - true + + + COM7 + true + true + RecordingTimer diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst b/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst index db067da..8a8e4b2 100644 --- a/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst +++ b/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst @@ -52,6 +52,9 @@ Workflow Tutorial Disable this row that performs commutation if no commutator is connected. +#. If you want to change the FourCC, click the "SaveData" ``GroupWorkflow`` and edit it from the + properties panel. + #. Run the workflow. Double-click the ``Miniscope GUI`` node and expand the visualizer that pops up. From 9549597ac3994e4d0c6122bae1c853790b091292 Mon Sep 17 00:00:00 2001 From: cjsha Date: Sat, 12 Jul 2025 22:45:55 -0400 Subject: [PATCH 7/8] refactor workflow - simplify gui into another group workflow --- .../uclaminiscopev4-miniscopedaq-gui.bonsai | 1717 +++++++++-------- .../uclaminiscopev4-miniscopedaq-gui.svg | 4 +- .../user/miniscope-daq/gui/index.rst | 2 +- 3 files changed, 872 insertions(+), 851 deletions(-) diff --git a/source/_static/downloads/uclaminiscopev4-miniscopedaq-gui.bonsai b/source/_static/downloads/uclaminiscopev4-miniscopedaq-gui.bonsai index e49b3cf..7eb9a31 100644 --- a/source/_static/downloads/uclaminiscopev4-miniscopedaq-gui.bonsai +++ b/source/_static/downloads/uclaminiscopev4-miniscopedaq-gui.bonsai @@ -1,17 +1,105 @@  + + + + + + + + + DataSource + + + + + + + + + + + + 1 + 0 + -17.2 + Low + Fps15 + false + + + + DataFrame + + + + + C:\Users\open-ephys\Downloads\unprocessed-miniscope-data\14_44_09\My_V4_Miniscope\2.avi + 0 + 0 + Frames + true + true + + + + + + + true + + + + + + + 0 + + + + + + + + + + + new ( + it.Item1 as Image, + it.Item2 as Trigger, + it.Item3 as Quaternion +) + + + + + DataFrame + + + + + + + + + + + + + + @@ -329,1045 +417,978 @@ - - - - - - + + + DataFrame + - - DataSource - - - - - - - - - - - - 1 - 0 - -17.2 - Low - Fps15 - false - - - - DataFrame - - - - - C:\Users\open-ephys\Downloads\unprocessed-miniscope-data\14_44_09\My_V4_Miniscope\2.avi - 0 - 0 - Frames - true - true - - - - - - - true - - - - - - - 0 - - - - - - - - - - - new ( - it.Item1 as Image, - it.Item2 as Trigger, - it.Item3 as Quaternion -) - - - - - DataFrame - - - - - - - - - - - - - + + + Quaternion + + + + + COM7 + true + true + + + + true + true + true + true + false + - Video + MiniscopeGui - - DataFrame - - - Image - - - RadioButtonNone - - - RadioButtonSaturation - - - RadioButtonDff - - - - - - + + + + - NoProcessing + Video - - Source1 - - - it.item2.item1 + + DataFrame - Item1 + Image - - - - - - - - - - - Saturation - - - - Source1 + + RadioButtonNone - - it.item2.item2 + + RadioButtonSaturation - - Item1 + + RadioButtonDff + + + + + + - CalculateDisplaySaturation + NoProcessing Source1 - - - 192 - 255 - ToZero - - - - + + it.item2.item1 - Size + Item1 - - - - + + + + + + + + + + + Saturation + + + + Source1 - - - - 640 - 480 - - U8 - 3 - - 0 - 0 - 100 - 100 - - + + it.item2.item2 - - + + Item1 + + + CalculateDisplaySaturation + + + + Source1 + + + + 192 + 255 + ToZero + + + + + + + Size + + + + + + + + + + 600 + 600 + + U8 + 3 + + 0 + 0 + 100 + 100 + + + + + + + + + + 1 + 0 + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DF/F + + + + Source1 + + + it.item2.item3 + + + Item1 + + + + + - - - 1 - 0 - 0 - 1 - + + 100 + 14.3 + 3 - - + + Item2 + + + + + 0.25 + + - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - DF/F - - - - Source1 - - - it.item2.item3 - - - Item1 - - - - - - - - 100 - 14.3 - 3 - - - - Item2 - - - - - 0.25 - - + - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - false - - - - DataFrame - - - Image - - - - - - - true - true - 1 - 2 - - - - - - - VideoRadioButtons - - - - RadioButtonNone - true - true - None - true - - - RadioButtonNone - - - RadioButtonSaturation - true - true - Saturation - false - - - RadioButtonSaturation + + Source1 - - RadioButtonDff - true - true - ΔF/F - false + + DataFrame - - RadioButtonDff + + Image + + + true true - 3 - 1 + 1 + 2 - - - - - - - - - - - - - - - - - - - TimerLabels - - - - - PT0S - PT1S - - - - "Acquiring: " & Convert.ToString(it) & " seconds" - - - - - - - - true - true - Acquiring: 42 seconds - - - - PT0S - PT1S - - - - ToggleButtonRecord - - - DataFrame - - - Trigger - - - - false - - - - ToggleButtonTriggerRecord - - - - - - - - - - - - it.Item2 - - - Item1 - - + + VideoRadioButtons - - Source1 + + RadioButtonNone + true + true + None + true - - - - - - - - - TriggerToggleHigh - - - - - - - - - Source1 + + RadioButtonNone - - - - - - - - - - - - - - - Source1 + + + RadioButtonSaturation + true + true + Saturation + false - - - - - - - - - - - TriggerToggleLow - - - ToggleButtonRecord - - - - - - Source1 + + RadioButtonSaturation - - - - - - - - - - - ToggleButtonTriggerRecord - - - - - - Source1 + + + RadioButtonDff + true + true + ΔF/F + false + + + RadioButtonDff + + + + true + true + 3 + 1 + + + - + + + + + + + + - - - - - - - - - - - "Recording: " & Convert.ToString(it) & " seconds" - - - - - - - - - - - - - - - - - - - - - true - true - - - - true - true - 2 - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IOGraphs - - - - DataFrame - - - Trigger - - - - - - - - - - - - CheckBoxes - - - - ToggleButtonRecord - - - ToggleButtonTriggerRecord - - - - - - - - - - - - CheckBoxRecordDuration - true - true - Stop recording when RecordingDuration has elapsed. - false - - - CheckBoxRecordDuration - - - - - - - - - - - - - - - - - Buttons - - - RecordButton + TimerLabels - - ToggleButtonRecord - - - it ? "Stop Recording" : "Record" - - - RecordingTimer - - - Record + + PT0S + PT1S - - + + "Acquiring: " & Convert.ToString(it) & " seconds" + + true + true + Acquiring: 28 seconds + + - - false + + PT0S + PT1S - RecordingTimer + ToggleButtonRecord + + + DataFrame + + + Trigger false + + ToggleButtonTriggerRecord + - - - - + + - - true - + + + + it.Item2 + + + Item1 + + + + + + Source1 + + + + + + + + + + TriggerToggleHigh + + + + + + + + + Source1 + + + + + + + + + + + + + + + + Source1 + + + + + + + + + + + + TriggerToggleLow + + + ToggleButtonRecord + + + + + + Source1 + + + + + + + + + ToggleButtonTriggerRecord - + + + + + Source1 + + + + + + + + + + + + + + + + + + + + + "Recording: " & Convert.ToString(it) & " seconds" + + + + + + + + + + + - + - - ToggleButtonRecord + true true - Record - false - - - ToggleButtonRecord + - - ToggleButtonRecordPublish + + + true + true + 2 + 1 + + + - + - - - - + + + + - - - - + + + + - + - + + - + + + + + + + + + + + + + + + + + + + + + - RecordWhenTriggerButton + IOGraphs - ToggleButtonTriggerRecord + DataFrame - - it ? "Stop Recording On Trigger" : "Record On Trigger" + + Trigger + + + + + + + + + + + CheckBoxes + + - RecordingTimer - - - - Record - - - - - - - - - - - - - false - + ToggleButtonRecord - RecordingTimer - - - - false - + ToggleButtonTriggerRecord - - - - - - - - true - - - - ToggleButtonRecord - - - - - - ToggleButtonTriggerRecord + + CheckBoxRecordDuration true true - Record On Trigger + Stop recording when RecordingDuration has elapsed. false - - ToggleButtonTriggerRecord + + CheckBoxRecordDuration - - ToggleButtonTriggerRecordPublish + + + + + + + + + + + + + + + + Buttons + + + + ToggleButtonTriggerRecord + + + ToggleButtonRecord + + + RecordButton + + + + RecordingTimer + + + ToggleButtonRecord + + + it ? "Stop Recording" : "Record" + + + RecordingTimer + + + + Record + + + + + + + + + + + + + false + + + + RecordingTimer + + + + false + + + + + + + + + + + + + true + + + + ToggleButtonTriggerRecord + + + + + + + + + + + + ToggleButtonRecord + true + true + Record + false + + + ToggleButtonRecord + + + ToggleButtonRecordPublish + + + + + + + + + + + + + + + + + + + + + + + + + + + + + RecordWhenTriggerButton + + + + ToggleButtonTriggerRecord + + + it ? "Stop Recording On Trigger" : "Record On Trigger" + + + RecordingTimer + + + + Record + + + + + + + + + + + + + false + + + + RecordingTimer + + + + false + + + + + + + + + + + + + true + + + + ToggleButtonRecord + + + + + + + + + + + + ToggleButtonTriggerRecord + true + true + Record On Trigger + false + + + ToggleButtonTriggerRecord + + + ToggleButtonTriggerRecordPublish + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + true + 2 + 1 + + + - - - + - - - - - - - - - - - - - - + + + MiniscopeGui true true 2 - 1 - - - + 4 + + + Absolute + 600 + + + 30 + + + + + Absolute + 600 + + + Absolute + 30 + + + Absolute + 200 + + + Absolute + 30 + + + + + + + + + - - ToggleButtonRecord - - - ToggleButtonTriggerRecord - - - - - + + + + + + + + + + + + + + + + + + + + + - - - Miniscope GUI - true - true - 2 - 4 - - - Absolute - 600 - - - 30 - - - - - Absolute - 600 - - - Absolute - 30 - - - Absolute - 200 - - - Absolute - 30 - - - - - - - - - - - - - DataFrame - - - - - Quaternion - - - - - COM7 - true - true - - - - RecordingTimer - - - - - - - - - - - - - - - - - - - - - - + + \ No newline at end of file diff --git a/source/_static/images/uclaminiscopev4-miniscopedaq-gui.svg b/source/_static/images/uclaminiscopev4-miniscopedaq-gui.svg index 04fa391..0363c92 100644 --- a/source/_static/images/uclaminiscopev4-miniscopedaq-gui.svg +++ b/source/_static/images/uclaminiscopev4-miniscopedaq-gui.svg @@ -1,3 +1,3 @@ -]>SaveDataDataSourceMiniscope GUIAutoCommutatorRecordingTimerVideoFileName,VideoSuffix,VideoOvLedBrightness,Focus,SensorVisualizerMappingVisualizerMappingVisualizerMappingVisualizerMappingVisualizerMappingVisualizerMappingVisualizerMappingQuaternionVideoTableLayoutPanelVideoRadioButtonsTimerLabelsIOGraphsCheckBoxesButtonsDataFrameSigma,BackgroundFrames,BackgrVisualizerMappingVisualizerMappingPropertyGridImageHistogramImageDataFrame \ No newline at end of file + +]>DataSourceSaveDataAutoCommutatorMiniscopeGuiLedBrightness,Focus,SensorVideoFileName,VideoSuffix,VideoOvQuaternionSigma,BackgroundFrames,BackgrPropertyGridDataFrame \ No newline at end of file diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/gui/index.rst b/source/ucla-miniscope-v4/user/miniscope-daq/gui/index.rst index 22f6dac..6eb900b 100644 --- a/source/ucla-miniscope-v4/user/miniscope-daq/gui/index.rst +++ b/source/ucla-miniscope-v4/user/miniscope-daq/gui/index.rst @@ -2,7 +2,7 @@ GUI ### -.. image:: /_static/images/uclaminiscopev4-miniscopedaq-commutate.svg +.. image:: /_static/images/uclaminiscopev4-miniscopedaq-gui.svg :alt: image of workflow :width: 50% :align: center From 9f3ce3fa4e1e5e54e6fe28ed234de72855b33994 Mon Sep 17 00:00:00 2001 From: cjsha Date: Sat, 12 Jul 2025 22:51:36 -0400 Subject: [PATCH 8/8] Remove unreferenced footnote --- source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst b/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst index 8a8e4b2..5320eb5 100644 --- a/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst +++ b/source/ucla-miniscope-v4/user/miniscope-daq/gui/tutorial.rst @@ -67,6 +67,3 @@ Workflow Tutorial - view real-time pixel brightness histogram - view real-time digital input data - commutate the UCLA Miniscope V4 tether automatically with the Open Ephys torque-free commutator - -.. [1] - .. include:: /includes/start-workflow.rst \ No newline at end of file