Skip to content

Commit

Permalink
Add NP tuts
Browse files Browse the repository at this point in the history
  • Loading branch information
cjsha committed Sep 9, 2024
1 parent d051b57 commit 6801090
Show file tree
Hide file tree
Showing 62 changed files with 1,297 additions and 92 deletions.
12 changes: 12 additions & 0 deletions articles/devices/bno055-neuropixelsv1e.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
uid: device-bno055-neuropixelsv1e
title: NeuropixelsV1eBno055
isGuide: true
isDevice: true
device: BNO055
headstage: NeuropixelsV1e
workflow: true
workflow_file: ~/workflows/devices/Bno055-Neuropixelsv1e.bonsai
visualize: true
visualize_timeseries: true
---
12 changes: 12 additions & 0 deletions articles/devices/bno055-neuropixelsv2e.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
uid: device-bno055-neuropixelsv2e
title: NeuropixelsV2eBno055
isGuide: true
isDevice: true
device: BNO055
headstage: NeuropixelsV2e
workflow: true
workflow_file: ~/workflows/devices/Bno055-Neuropixelsv2e.bonsai
visualize: true
visualize_timeseries: true
---
12 changes: 12 additions & 0 deletions articles/devices/bno055.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
uid: device-bno055
title: Bno055
isGuide: true
isDevice: true
device: BNO055
headstage: Headstage64
workflow: true
workflow_file: ~/workflows/devices/Bno055.bonsai
visualize: true
visualize_timeseries: true
---
12 changes: 12 additions & 0 deletions articles/devices/breakoutanalogio.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
uid: device-breakoutanalogio
title: BreakoutAnalogIO
isGuide: true
isDevice: true
device: BreakoutAnalogIO
headstage: Breakout Board
workflow: true
workflow_file: ~/workflows/devices/BreakoutAnalogIO.bonsai
visualize: true
visualize_mat: true
---
12 changes: 12 additions & 0 deletions articles/devices/breakoutdigitalio.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
uid: device-breakoutdigitalio
title: BreakoutDigitalIO
isGuide: true
isDevice: true
device: BreakoutDigitalIO
headstage: Breakout Board
workflow: true
workflow_file: ~/workflows/devices/BreakoutDigitalIO.bonsai
visualize: true
visualize_text: true
---
16 changes: 16 additions & 0 deletions articles/devices/electricalstimulator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
uid: device-electricalstimulator
title: Headstage64ElectricalStimulator
isGuide: true
isDevice: true
device: ElectricalStimulator
headstage: Headstage64
workflow: true
workflow_file: ~/workflows/devices/ElectricalStimulator.bonsai
---

<br>

## Send Trigger

While the workflow is running, pressing the middle button on the mouse will send a trigger delivering the stimulation waveform that is configured. The `MouseButtonDown` node can be found in the `Bonsai.Windows.Input` package.
12 changes: 12 additions & 0 deletions articles/devices/heartbeat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
uid: device-heartbeat
title: Heartbeat
isGuide: true
isDevice: true
device: Heartbeat
headstage: Breakout Board
workflow: true
workflow_file: ~/workflows/devices/Heartbeat.bonsai
visualize: true
visualize_timeseries: true
---
12 changes: 12 additions & 0 deletions articles/devices/memorymonitor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
uid: device-memorymonitor
title: MemoryMonitor
isGuide: true
isDevice: true
device: MemoryMonitor
headstage: Breakout Board
workflow: true
workflow_file: ~/workflows/devices/MemoryMonitor.bonsai
visualize: true
visualize_timeseries: true
---
12 changes: 12 additions & 0 deletions articles/devices/neuropixelsv1e.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
uid: device-neuropixelsv1e
title: NeuropixelsV1e
isGuide: true
isDevice: true
device: NeuropixelsV1e
headstage: NeuropixelsV1e
workflow: true
workflow_file: ~/workflows/devices/NeuropixelsV1e.bonsai
visualize: true
visualize_mat: true
---
12 changes: 12 additions & 0 deletions articles/devices/neuropixelsv2e.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
uid: device-neuropixelsv2e
title: NeuropixelsV2e
isGuide: true
isDevice: true
device: NeuropixelsV2e
headstage: NeuropixelsV2e
workflow: true
workflow_file: ~/workflows/devices/NeuropixelsV2e.bonsai
visualize: true
visualize_mat: true
---
12 changes: 12 additions & 0 deletions articles/devices/neuropixelsv2ebeta.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
uid: device-neuropixelsv2ebeta
title: NeuropixelsV2eBeta
isGuide: true
isDevice: true
device: NeuropixelsV2eBeta
headstage: NeuropixelsV2eBeta
workflow: true
workflow_file: ~/workflows/devices/NeuropixelsV2eBeta.bonsai
visualize: true
visualize_mat: true
---
16 changes: 16 additions & 0 deletions articles/devices/opticalstimulator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
uid: device-opticalstimulator
title: Headstage64OpticalStimulator
isGuide: true
isDevice: true
device: OpticalStimulator
headstage: Headstage64
workflow: true
workflow_file: ~/workflows/devices/OpticalStimulator.bonsai
---

<br>

## Send Trigger

While the workflow is running, pressing the middle button on the mouse will send a trigger delivering the stimulation waveform that is configured. The `MouseButtonDown` node can be found in the `Bonsai.Windows.Input` package.
12 changes: 12 additions & 0 deletions articles/devices/rhd2164.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
uid: device-rhd2164
title: Rhd2164
isGuide: true
isDevice: true
device: Rhd2164
headstage: Headstage64
workflow: true
workflow_file: ~/workflows/devices/Rhd2164.bonsai
visualize: true
visualize_mat: true
---
13 changes: 13 additions & 0 deletions articles/devices/ts4231.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
uid: device-ts4231
title: TS4231
isGuide: true
isDevice: true
device: TS4231
headstage: Headstage64
workflow: true
workflow_file: ~/workflows/devices/TS4231.bonsai
visualize: true
visualize_timeseries: true
visualize_text: true
---
11 changes: 11 additions & 0 deletions articles/getting-started/getting-started.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
uid: GettingStarted
title: Getting Started
---

Welcome to the user guide! The next few pages are dedicated to users who are unfamiliar with ONIX and Bonsai, and will teach them what ONIX is, how to download and install Bonsai, open a new file, place operators (and understand what an operator is), reorder a workflow, run a workflow, and finally visualize data.

For those who are already familiar with Bonsai and are looking for a particular device or headstage to learn more about the hardware and how to utilize it, the table of contents on the left contains entries for each available device and headstage. Choose a page to learn more about the hardware and view a fully complete workflow that can be copied directly into Bonsai to aid in quickly setting up and collecting data from a system.

> [!Note]
> Add links to relevant pages for each of the action items listed here
14 changes: 14 additions & 0 deletions articles/getting-started/node-types.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
uid: OperatorTypes
title: Operator Types
---

In Bonsai, all objects are called "operators", and have a specific function associated with them depending on what they do; this can be `Source`, `Sink`, `Combinator`, `Transform`, or `Condition`. For ONIX operators, they are all classified as either `Source`, `Sink`, or `Combinator`.

| Operator Type | Description | Example ONIX operators |
| --------- | ----------- | ------------------ |
| Source | Generate event streams from devices or files | [`CreateContext`](xref:OpenEphys.Onix1.CreateContext), [`Bno055Data`](xref:OpenEphys.Onix1.Bno055Data), [`NeuropixelsV1eData`](xref:OpenEphys.Onix1.NeuropixelsV1eData) |
| Sink | Save data or trigger external outputs | [`ConfigureHeadstage64`](xref:OpenEphys.Onix1.ConfigureHeadstage64), [`ConfigureNeuropixelsV1eHeadstage`](xref:OpenEphys.Onix1.ConfigureNeuropixelsV1eHeadstage) |
| Combinator | Manage control flow or synchronize parallel inputs | [`StartAcquisition`](xref:OpenEphys.Onix1.StartAcquisition) |

Operators are placed in the Bonsai editor and can be saved into a "workflow", which is a grouping of operators and saved settings. This workflow can then be run to perform some task, depending on what operators are placed.
11 changes: 11 additions & 0 deletions articles/getting-started/visualizing-data.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
uid: VisualizingData
title: Visualizing Data
---

To visualize data from any `*Data` operator, typically the variable that needs to be visualized must first be output from the operator. To do this, right-click on any `*Data` operator and select the first option; this will be something similar to `Output (OpenEphys.Onix1.*DataFrame)`. From the drop-down list, select the corresponding data variable to be visualized. Doing so will create a new operator in the workflow.

Select this new operator and right-click it, search for the **Select Visualizer** option and choose a visualizer from that drop-down menu. Note that some data types will require a secondary operator to be connected directly after it, such as a `RollingGraph` operator. If so, this secondary operator must be right-clicked and the appropriate visualizer must be selected here.

> [!Note]
> Some visualizers come as Bonsai operators and can be found in the `Bonsai.Design.Visualizers` package, which can be installed in the Bonsai package manager. These operators must be placed in the workflow and be linked to a data operator to visualize the data properly.
10 changes: 10 additions & 0 deletions articles/hubs/headstage64.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
uid: headstage-headstage64
title: Headstage64
isGuide: true
isHeadstage: true
headstage: Headstage64
devices: [ { id: TS4231, file: ~/articles/devices/ts4231 }, { id: RHD2164, file: ~/articles/devices/rhd2164 }, { id: BNO055, file: ~/articles/devices/bno055 } ]
workflow: true
workflow_file: ~/workflows/hubs/Headstage64.bonsai
---
22 changes: 22 additions & 0 deletions articles/hubs/np1e/bno055.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
uid: np1e_bno055
title: Neuropixels V1e Headstage Bno055
hub: Neuropixels V1e Headstage
hubDirectory: np1e
device: Bno055
deviceDirectory: bno055
features: |
<li>Provides information about the status of the port.</li>
sourceOperator: NeuropixelsV1eBno055Data
configureOperator: ConfigureNeuropixelsV1eHeadstage
dataFrame: Bno055DataFrame
noVideo: true
---

This graph generates orientation data from the headstage's Bno055, writes it to a .csv file, selects the `Quaternion` member from the Bno055 data frame, and automates commutation of the headstage tether from that `Quaternion` member.

- The <xref:OpenEphys.Onix1.NeuropixelsV1eBno055Data> operator generates a sequence of <xref:OpenEphys.Onix1.Bno055DataFrame>s. This is accomplished by changing the following <xref:OpenEphys.Onix1.NeuropixelsV1eBno055Data> properties from their default values:
- The `DeviceName` is set to "NeuropixelsV1eHeadstage/NeuropixelsV1eBno055". This links the <xref:OpenEphys.Onix1.NeuropixelsV1eBno055Data> operator to the corresponding configuration operator.
- The [`CsvWriter`](https://bonsai-rx.org/docs/api/Bonsai.IO.CsvWriter.html) operator saves the `Clock`, `BytesUsed`, and `PercentUsed` mmebers to a file with the following format: `memory-use_<timestamp>.csv`. Because [`CsvWriter`](https://bonsai-rx.org/docs/api/Bonsai.IO.CsvWriter.html) is a _sink_ operator, its output sequence is equivalent to its input sequence. In other words, its output is equivalent to <xref:OpenEphys.Onix1.Bno055DataFrame>'s output. Therefore, it's possible to use a [`MemberSelector`](https://bonsai-rx.org/docs/api/Bonsai.Expressions.MemberSelectorBuilder.html) operator on the [`CsvWriter`](https://bonsai-rx.org/docs/api/Bonsai.IO.CsvWriter.html) to select members from <xref:OpenEphys.Onix1.Bno055DataFrame>.
- The [`MemberSelector`](https://bonsai-rx.org/docs/api/Bonsai.Expressions.MemberSelectorBuilder.html) operator selects the `Quartnernion` member from the.
- The `AutoCommutator` operator automatically commutates the headstage provided that there is a proper commutator connection.
23 changes: 23 additions & 0 deletions articles/hubs/np1e/configuration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
uid: np1e_configuration
title: Neuropixels 1.0 Headstage Configuration
hub: NeuropixelsV1e Headstage
hubDirectory: np1e
deviceDirectory: configuration
configuration: true
operator: ConfigureNeuropixelsV1eHeadstage
noVideo: true
---

This graph creates a context (an object that interfaces with the hardware), configures the NeuropixelsV1e Headstage through that context, starts acquisition, and timestamps/saves the Onix1 breakout configuration action.

- The [`NeuropixelsV1eHeadstage`](xref:OpenEphys.Onix1.ConfigureNeuropixelsV1eHeadstage) operator is set to configure the NeuropixelsV2e Headstage to:
- stream and save electrophysiology data from a Neuropixels 1.0 probe
- stream and save orientation data from a Bno055
- The [`TimeStamp`](https://bonsai-rx.org/docs/api/Bonsai.Reactive.Timestamp.html) operator generates a sequence of timestamped items from its input sequence.
- The [`CsvWriter`](https://bonsai-rx.org/docs/api/Bonsai.IO.CsvWriter.html) operator writes a file containing `Timestamp` as well as `AcquisitionClockHz`, `BlockReadSize`, `BlockWriteSize` members from <xref:OpenEphys.Onix1.ContextTask> with the following name format: `start-time_<timestamp>.csv`.


<!-- - The above bullet point is accomplished by changing the following properties from their default values:
- The `NeuropixelsV2eHeadstage`'s `AnalogIO Direction0` property is set to `Output`.
- The `NeuropixelsV2eHeadstage`'s `MemoryMonitor Enable` property is set to `True`. -->
16 changes: 10 additions & 6 deletions articles/hubs/np1e/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,18 @@ uid: np1e
title: Neuropixels V1e Headstage
hub: Neuropixels V1e Headstage
hubDirectory: np1e
quickStart:
- Stream and save port status information.
- Stream and save electrophysiology data from a Neuropixels 1.0 probe.
- Stream and save orientation data from a Bno055.
index: true
---

- Support for a single IMEC Neuropixels 1.0 probe that features:
- A single 1 cm long shank probe with a 70 x 24 µm shank cross-section.
<!-- include bno055 contents instead of repeating -->

- [IMEC Neuropixels 1.0](xref:np1e_np1):
- A single 1cm long shank probe with a 70 x 24 µm shank cross-section.
- 960-electrode low-impedance TiN electrodes total.
- 384 parallel, dual-band (AP, LFP), low-noise recording channels.
- A BNO055 9-axis IMU for real-time, 3D orientation tracking and easy automated commutation with Open Ephys commutators.

> [!NOTE]
> More in-depth descriptions for the workflow are in-progress
- 30kHz sample rate.
- [Bno055](xref:np1e_bno055): 9-axis IMU for real-time, 3D orientation tracking and easy automated commutation with Open Ephys commutators.
23 changes: 23 additions & 0 deletions articles/hubs/np1e/np1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
uid: np1e_np1
title: Neuropixels V1e Headstage Probe
hub: Neuropixels V1e Headstage
hubDirectory: np1e
device: Neuropixels 1.0 Probe
deviceDirectory: np1
features: |
<li>960 electrodes multiplex-able into 384 channels</li>
<li>30kHz sample rate</li>
sourceOperator: NeuropixelsV1eData
dataFrame: NeuropixelsV1eDataFrame
configureOperator: ConfigureNeuropixelsV1eHeadstage
noVideo: true
---

This graph generates Neuropixels 1.0 data, selects the `Clock`, `SpikeData`, and `LfpData` members from the Neuropixels 1.0 data frame, and writes those members to various files.

- The <xref:OpenEphys.Onix1.NeuropixelsV1eData> operator generates a sequence of <xref:OpenEphys.Onix1.NeuropixelsV1eDataFrame>s. This is accomplished by changing the following <xref:OpenEphys.Onix1.NeuropixelsV1eData> properties from their default values:
- The `DeviceName` is set to "NeuropixelsV1eHeadstage/NeuropixelsV1e". This links the <xref:OpenEphys.Onix1.NeuropixelsV1eData> operator to the corresponding configuration operator.
- To learn about considerations setting the `Buffer` property, visit the <xref:buffers-memory-usage>.
- The [`MemberSelector`](https://bonsai-rx.org/docs/api/Bonsai.Expressions.MemberSelectorBuilder.html) operators each select a member from the <xref:OpenEphys.Onix1.NeuropixelsV1eDataFrame>, `Clock`, `SpikeData`, and `LfpData`.
- The [`MatrixWriter`](https://bonsai-rx.org/docs/api/Bonsai.Dsp.MatrixWriter.html) operators saves the selected members to files with the following format: `np1-clock_<timestamp>.raw`, `np1-spike_<timestamp>.raw`, and `np1-lfp_<timestamp>.raw`, respectively.
21 changes: 21 additions & 0 deletions articles/hubs/np1e/port-status.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
uid: np1e_port-status
title: Neuropixels V1e Headstage Port Status
hub: Neuropixels V1e Headstage
hubDirectory: np1e
device: port status
deviceDirectory: port-status
features: |
<li>Provides information about the status of the port.</li>
sourceOperator: PortStatus
dataFrame: PortStatusFrame
event: the headstage becomes disconnected, a packet fails a CRC check, etc.
noVideo: true
---

This graph generates port status data, timestamps it, and writes the timestamped port status data to a file.

- The [`PortStatus`](xref:OpenEphys.Onix1.PortStatus) operator generates <xref:OpenEphys.Onix1.PortStatusFrame>s. Events that cause the [`PortStatus`](xref:OpenEphys.Onix1.PortStatus) to emit an item when: the SERDES loses or gains lock, SERDES fails or passes parity check, or the [port status code](xref:OpenEphys.Onix1.PortStatusCode) changes value.
- The <xref:OpenEphys.Onix1.PortStatus>'s `DeviceName` property is set to "NeuropixelsV1eHeadstage/PortController". This links the <xref:OpenEphys.Onix1.PortStatus> operator to the corresponding hub's port controller.
- The [`TimeStamp`](https://bonsai-rx.org/docs/api/Bonsai.Reactive.Timestamp.html) operator generates a sequence of timestamped items from its input sequence.
- The [`CsvWriter`](https://bonsai-rx.org/docs/api/Bonsai.IO.CsvWriter.html) operator writes a file containing `Timestamp` as well as `Clock`, `StatusCode`, `SerdesLocked`, and `SerdesPass` members from <xref:OpenEphys.Onix1.PortStatusFrame> with the following name format: `port-status_<timestamp>.csv`.
22 changes: 22 additions & 0 deletions articles/hubs/np2e/bno055.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
uid: np2e_bno055
title: Neuropixels V2e Headstage Bno055
hub: Neuropixels V2e Headstage
hubDirectory: np2e
device: Bno055
deviceDirectory: bno055
features: |
<li>Provides information about the status of the port.</li>
sourceOperator: NeuropixelsV2eBno055Data
configureOperator: ConfigureNeuropixelsV2eHeadstage
dataFrame: Bno055DataFrame
noVideo: true
---

This graph generates orientation data from the headstage's Bno055, writes it to a .csv file, selects the `Quaternion` member from the Bno055 data frame, and automates commutation of the headstage tether from that `Quaternion` member.

- The <xref:OpenEphys.Onix1.NeuropixelsV2eBno055Data> operator generates a sequence of <xref:OpenEphys.Onix1.Bno055DataFrame>s. This is accomplished by changing the following <xref:OpenEphys.Onix1.NeuropixelsV2eBno055Data> properties from their default values:
- The `DeviceName` is set to "NeuropixelsV2eHeadstage/NeuropixelsV2eBno055". This links the <xref:OpenEphys.Onix1.NeuropixelsV2eBno055Data> operator to the corresponding configuration operator.
- The [`CsvWriter`](https://bonsai-rx.org/docs/api/Bonsai.IO.CsvWriter.html) operator saves the `Clock`, `BytesUsed`, and `PercentUsed` mmebers to a file with the following format: `memory-use_<timestamp>.csv`. Because [`CsvWriter`](https://bonsai-rx.org/docs/api/Bonsai.IO.CsvWriter.html) is a _sink_ operator, its output sequence is equivalent to its input sequence. In other words, its output is equivalent to <xref:OpenEphys.Onix1.Bno055DataFrame>'s output. Therefore, it's possible to use a [`MemberSelector`](https://bonsai-rx.org/docs/api/Bonsai.Expressions.MemberSelectorBuilder.html) operator on the [`CsvWriter`](https://bonsai-rx.org/docs/api/Bonsai.IO.CsvWriter.html) to select members from <xref:OpenEphys.Onix1.Bno055DataFrame>.
- The [`MemberSelector`](https://bonsai-rx.org/docs/api/Bonsai.Expressions.MemberSelectorBuilder.html) operator selects the `Quartnernion` member from the.
- The `AutoCommutator` operator automatically commutates the headstage provided that there is a proper commutator connection.
Loading

0 comments on commit 6801090

Please sign in to comment.