diff --git a/source/Software Guide/index.rst b/source/Software Guide/index.rst index f180b2c..73db82d 100644 --- a/source/Software Guide/index.rst +++ b/source/Software Guide/index.rst @@ -6,16 +6,18 @@ |software_logo| Software Guide =================================== + .. toctree:: :hidden: Bonsai Package Docs - Open Ephys GUI + Open Ephys GUI Plugin ONIX Source oni-repl/index Deprecated Software -There are two recommended software programs to acquire data from the ONIX system. Click on the cards below to navigate to their respective documentation sites. - +There are two recommended software programs to acquire data from the ONIX +system. Click on the cards below to navigate to their respective documentation +sites. .. grid:: @@ -43,17 +45,120 @@ There are two recommended software programs to acquire data from the ONIX system Acquire data from ONIX in the Open Ephys GUI, a turnkey solution for acquiring and visualizing electrophysiology data. -Both are free and open-source and widely used. Some considerations to choose between them are: - -- The Open Ephys GUI is an application while Bonsai is a programming language. In the OE GUI users configure a signal processing pipeline from modules that have standalone functionality while in Bonsai are performed step by step with individual nodes connected in sequence. The Open Ephys GUI has extensive visualizers for ephys data, pre-defined data formats and file management and error reporting. +Both platforms are free, open-source, and widely adopted in the neuroscience +community. There are a few important considerations when selecting which to use, which you can read about below. + +Software Comparison +___________________________________ + +| **User Experience and Types of Data** +| The Open Ephys GUI is a turnkey application specialized in electrophysiology voltage data acquisition and online processing. Data processing pipelines are made up of a sequence of processors, called a signal chain. Typically, each processor performs one signal processing step so it is straightforward to build signal chains by successively combining different functionalities. + Bonsai is a visual programming language which can be used to acquire and process different types of data (analog and digital signals as well as images). It is designed to handle asynchronous datastreams, i.e. that are not sampled continuously, making it possible to flexibly coordinate, combine, and condition datastreams across time. Data acquisition and signal processing pipelines are constructed by connecting operators to make up each function. The Open Ephys GUI is more user-friendly whereas expertise is helpful to build upon the example workflows provided in our documentation and take full advantage of Bonsai. + +| **Hardware and Software Scope** +| + The Open Ephys GUI can acquire headstage and analog and digital data from different neural data acquisition systems (see the `User Manual introduction page `_), and actuation is limited to a few external device options (Arduino, PulsePal). Bonsai offers broader compatibility with more hardware options such as + behavioral cameras, miniscopes, photometry systems, Arduino boards, Harp + devices, stimulators and numerous other instruments. Bonsai programming elements can be used to structure experimental task logic and stimuli presentation. Additionally, Bonsai integrates third-party algorithms such as SLEAP and DeepLabCut for pose estimation and other machine learning packages for online data processing, and native packages for stimuli presentation such as BonVision, mathematical operations and much more. + +.. grid:: + :margin: 0 + :padding: 0 + + .. grid-item:: + :child-align: center + :margin: 0 + :padding: 0 + + .. figure:: /_static/images/software/example-signal-chain.png + :alt: Example signal chain in the Open Ephys GUI + + Example signal chain in the Open Ephys GUI + + .. grid-item:: + :child-align: center + :margin: 0 + :padding: 0 + + .. figure:: /_static/images/software/example-workflow.png + :alt: Example workflow in Bonsai + + Example workflow in Bonsai + +| **ONIX Support** +| The OpenEphys.Onix1 package in Bonsai has support for all ONIX + capabilities while the ONIX Source plugin in the Open Ephys GUI can only support a subset of them. For more information on this, visit the `ONIX Source plugin page `_. + +| **Performance/Closed-Loop Latency** +| Bonsai is capable of operating with sub-millisecond closed-loop latencies, with onboard stimulation devices. + The Open Ephys GUI operates on the order of 20ms and has more variable + latencies, using external devices for stimulation. + +| **Data Visualization** +| The Open Ephys GUI provides visualization tools specialized for presenting electrophysiology voltage data such as the + `LFP viewer `_ with different waveform and raster views, and the + `Probe viewer `_ for displaying high-density probe data. + Bonsai provides type visualizers which are more agnostic to the kind of data + that is being streamed. + +.. grid:: + :margin: 0 + :padding: 0 + + .. grid-item:: + :child-align: center + :margin: 0 + :padding: 0 + + .. figure:: /_static/images/software/lfp-viewer.png + :alt: LFP Viewer in the Open Ephys GUI + + LFP Viewer in the Open Ephys GUI + + .. grid-item:: + :child-align: center + :margin: 0 + :padding: 0 + + .. figure:: /_static/images/software/type-visualizer.png + :alt: Type visualizer in Bonsai + + Type visualizer in Bonsai + +Note, however, that the Open Ephys GUI visualization tools can be used to visualize data acquired from Bonsai using sockets, as explained in `this tutorial `_. +Visualization of multichannel ephys voltage data in Bonsai is improving with the integration of `Dear ImGUI `_ in the Bonsai.Ephys package. + +.. grid:: + :margin: 0 + :padding: 0 + + .. grid-item:: + :child-align: center + :margin: 0 + :padding: 0 + + .. figure:: /_static/images/software/sockets-end-result_GUI.jpg + :alt: Sockets to visualize Bonsai data in the Open Ephys GUI visualizers + + Sockets to visualize Bonsai data in the Open Ephys GUI visualizers -- The Open Ephys GUI was developed to acquire, visualize and process extracellular electrophysiology data and analog and digital lines from a variety of acquisition devices. It can drive output to a few devices such as the Open Ephys Acquisition Board, PulsePal and Arduino boards. Bonsai can work extensively with ephys and image data, and can be used to build task logic and stimuli presentation. It interfaces with acquisition systems, industrial behavioral cameras, miniscopes, photometry systems, Arduino boards, Harp devices and many more. - -- Both the Open Ephys GUI and Bonsai have many online data processing modules available (phase detection, spike sorting, centroid tracking, pose estimation, machine learning algorithms). Having Bonsai control all the experimental hardware makes it more flexible, easier to prototype and scale different experiments. For example, triggering ephys or miniscope recording to file based on the animal's location in space, or closed-loop applications. + .. grid-item:: + :child-align: center + :margin: 0 + :padding: 0 + + .. figure:: /_static/images/software/imgui-visualizer.png + :alt: ImGUI visualizer in Bonsai -- ONIX in Bonsai can achieve sub-ms closed-loop latencies while the Open Ephys GUI latencies are in the order of 20ms and more variable. + ImGUI visualizer in Bonsai -- In addition to having numerous modules, both are extensible: you can write your own plug-ins/packages and you can interact with other applications via communication protocols such as OSC, ZMQ and TCP. Bonsai also supports C# and Python scripting within workflows. +| **Extensibility** +| Both options are open-source and provide options for extending functionality + by providing the capability for users to create + `custom processors `_ + (in the Open Ephys GUI) or + `custom operators `_ and `packages `_ + (in Bonsai). Scripting packages to include Python code in Bonsai workflows are also available, and both the Open Ephys GUI and Bonsai can stream data to external applications using sockets. Troubleshooting & Development ___________________________________ @@ -70,5 +175,5 @@ Deprecated Software ___________________________________ :doc:`Bonsai.ONIX ` is the deprecated Bonsai ONIX -package which has been superseded by `OpenEphys.Onix1 `__. +package which has been superseded by `OpenEphys.Onix1 `_. diff --git a/source/_static/images/software/example-signal-chain.png b/source/_static/images/software/example-signal-chain.png new file mode 100644 index 0000000..944cfb3 Binary files /dev/null and b/source/_static/images/software/example-signal-chain.png differ diff --git a/source/_static/images/software/example-workflow.png b/source/_static/images/software/example-workflow.png new file mode 100644 index 0000000..6261c61 Binary files /dev/null and b/source/_static/images/software/example-workflow.png differ diff --git a/source/_static/images/software/imgui-visualizer.png b/source/_static/images/software/imgui-visualizer.png new file mode 100644 index 0000000..a355567 Binary files /dev/null and b/source/_static/images/software/imgui-visualizer.png differ diff --git a/source/_static/images/software/lfp-viewer.png b/source/_static/images/software/lfp-viewer.png new file mode 100644 index 0000000..c4373f9 Binary files /dev/null and b/source/_static/images/software/lfp-viewer.png differ diff --git a/source/_static/images/software/sockets-end-result.webp b/source/_static/images/software/sockets-end-result.webp new file mode 100644 index 0000000..7d9cc89 Binary files /dev/null and b/source/_static/images/software/sockets-end-result.webp differ diff --git a/source/_static/images/software/sockets-end-result_GUI.jpg b/source/_static/images/software/sockets-end-result_GUI.jpg new file mode 100644 index 0000000..1600d28 Binary files /dev/null and b/source/_static/images/software/sockets-end-result_GUI.jpg differ diff --git a/source/_static/images/software/type-visualizer.png b/source/_static/images/software/type-visualizer.png new file mode 100644 index 0000000..098b805 Binary files /dev/null and b/source/_static/images/software/type-visualizer.png differ