diff --git a/articles/devices/bno055-neuropixelsv2e.md b/articles/devices/bno055-neuropixelsv2e.md index f6e7ac2..5ff473e 100644 --- a/articles/devices/bno055-neuropixelsv2e.md +++ b/articles/devices/bno055-neuropixelsv2e.md @@ -6,7 +6,7 @@ isDevice: true device: BNO055 headstage: NeuropixelsV2e workflow: true -workflow_file: ~/workflows/devices/bno055-neuropixelsv2e.bonsai +workflow_file: ~/workflows/devices/Bno055-Neuropixelsv2e.bonsai visualize: true visualize_timeseries: true --- diff --git a/articles/getting-started/bonsai-usage.md b/articles/getting-started/bonsai-usage.md index 4d574c2..56dac57 100644 --- a/articles/getting-started/bonsai-usage.md +++ b/articles/getting-started/bonsai-usage.md @@ -7,4 +7,4 @@ To begin, the first thing to do is to open up the Bonsai editor. This can be don ![Open a new file in Bonsai](../../images/bonsai-splash-page-new-file.png){width=650px} -From the editor, nodes can be selected on the left side and placed into the workspace. Before going into details on how to place nodes, we will instead go over the different types of nodes, some examples of ONIX-specific nodes in each category, and some common categories of properties that can be modified across nodes. +From the editor, operators can be selected on the left side and placed into the workspace. Before going into details on how to place operators, we will instead go over the different types of operators, some examples of ONIX-specific operators in each category, and some common categories of properties that can be modified across operators. diff --git a/articles/getting-started/getting-started.md b/articles/getting-started/getting-started.md index 7d03ec7..96756d0 100644 --- a/articles/getting-started/getting-started.md +++ b/articles/getting-started/getting-started.md @@ -3,7 +3,7 @@ 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 nodes (and understand what a node is), reorder a workflow, run a workflow, and finally visualize data. +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. diff --git a/articles/getting-started/initialize-oni-context.md b/articles/getting-started/initialize-oni-context.md index d47c188..88d2130 100644 --- a/articles/getting-started/initialize-oni-context.md +++ b/articles/getting-started/initialize-oni-context.md @@ -3,21 +3,21 @@ uid: InitializeOniContext title: Initialize the ONI Context --- -The [`CreateContext`](xref:OpenEphys.Onix1.CreateContext) operator initializes the acquisition context, and it should be the first node you add to your workflow as it provides access to the hardware device table for all other configuration operators. There are several different ways to find this node and add it to the workflow: +The [`CreateContext`](xref:OpenEphys.Onix1.CreateContext) operator initializes the acquisition context, and it should be the first operator you add to your workflow as it provides access to the hardware device table for all other configuration operators. There are several different ways to find this operator and add it to the workflow: -1. From the Bonsai editor, navigate to the toolbox on the left side of the screen and expand the **Source** section. Next, expand the **OpenEphys.Onix1** section, and find the `CreateContext` line. The node can then be added by either double-clicking it, or dragging and dropping the node into the workflow. +1. From the Bonsai editor, navigate to the toolbox on the left side of the screen and expand the **Source** section. Next, expand the **OpenEphys.Onix1** section, and find the `CreateContext` line. The operator can then be added by either double-clicking it, or dragging and dropping the operator into the workflow. - ![Search for CreateContext node manually](../../images/bonsai-editor-place-create-context-manually.png){width=700px} + ![Search for CreateContext operator manually](../../images/bonsai-editor-place-create-context-manually.png){width=700px} -2. Click on the textbox at the top of the toolbox on the left, or from Ctrl + E to focus on the textbox, and type `CreateContext` to search for the node. Same as (1), the node can be placed by double-clicking or dragging and dropping; additionally, if the `CreateContext` string is highlighted Enter can be pressed to place the node immediately. +2. Click on the textbox at the top of the toolbox on the left, or from Ctrl + E to focus on the textbox, and type `CreateContext` to search for the operator. Same as (1), the operator can be placed by double-clicking or dragging and dropping; additionally, if the `CreateContext` string is highlighted Enter can be pressed to place the operator immediately. - ![Search for CreateContext node from textbox](../../images/bonsai-editor-place-create-context-search.png){width=700px} + ![Search for CreateContext operator from textbox](../../images/bonsai-editor-place-create-context-search.png){width=700px} 3. Hover over the image of the [`CreateContext`](xref:OpenEphys.Onix1.CreateContext) workflow below, and click on the clipboard icon in the top-right corner of the workflow image to copy the workflow to the clipboard. Navigate back to Bonsai, and paste the copied workflow into the active editor. Pasting can be done via Ctrl + V, or right-clicking in the editor and choosing **Paste**. ## CreateContext Workflow -This is a nominally functional workflow that provides access to the ONI context, from which all nodes can then be linked to and configured, while also demonstrating how a Breakout Board can be configured before finishing the configuration chain by placing a [`StartAcquisition`](xref:OpenEphys.Onix1.StartAcquisition) node: +This is a nominally functional workflow that provides access to the ONI context, from which all operators can then be linked to and configured, while also demonstrating how a Breakout Board can be configured before finishing the configuration chain by placing a [`StartAcquisition`](xref:OpenEphys.Onix1.StartAcquisition) operator: :::workflow ![CreateContext](../../workflows/operators/ConfigureBreakoutBoard.bonsai) diff --git a/articles/getting-started/install-configure-bonsai.md b/articles/getting-started/install-configure-bonsai.md index b7e45e2..f2fff80 100644 --- a/articles/getting-started/install-configure-bonsai.md +++ b/articles/getting-started/install-configure-bonsai.md @@ -81,4 +81,4 @@ It is good practice to periodically check for package updates. [Open the package ## Next Steps -Now that Bonsai has been installed and configured, it is time to start placing nodes and configuring those. If you are new to Bonsai, the following sections give a high-level understanding of how Bonsai is organized, and some of the ONIX-specific concepts that will be useful for learning how to work with the nodes. +Now that Bonsai has been installed and configured, it is time to start placing operators and configuring those. If you are new to Bonsai, the following sections give a high-level understanding of how Bonsai is organized, and some of the ONIX-specific concepts that will be useful for learning how to work with the operators. diff --git a/articles/getting-started/next-steps.md b/articles/getting-started/next-steps.md index a18c0df..ab8bd51 100644 --- a/articles/getting-started/next-steps.md +++ b/articles/getting-started/next-steps.md @@ -3,8 +3,8 @@ uid: NextSteps title: Next Steps --- -Continue browsing and check out specific nodes on the left to see how to configure each node, as well as some ways to visualize data. Each page will have a fully functional workflow that can be copied into Bonsai to provide an easy starting point for generating data. +Continue browsing and check out specific operators on the left to see how to configure each operator, as well as some ways to visualize data. Each page will have a fully functional workflow that can be copied into Bonsai to provide an easy starting point for generating data. -For more technical information on each node, head to the to see a more developer-focused view of each node. +For more technical information on each operator, head to the to see a more developer-focused view of each operator. -More complex and in-depth tutorials for placing multiple nodes and moving towards generating data in an experimental setting can be found in the . +More complex and in-depth tutorials for placing multiple operators and moving towards generating data in an experimental setting can be found in the . diff --git a/articles/getting-started/node-types.md b/articles/getting-started/node-types.md index bc3f82c..e9cd8df 100644 --- a/articles/getting-started/node-types.md +++ b/articles/getting-started/node-types.md @@ -1,14 +1,14 @@ --- -uid: NodeTypes -title: Node Types +uid: OperatorTypes +title: Operator Types --- -In Bonsai, all objects are called "nodes", and have a specific function associated with them depending on what they do; this can be `Source`, `Sink`, `Combinator`, `Transform`, or `Condition`. For ONIX nodes, they are all classified as either `Source`, `Sink`, or `Combinator`. +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`. -| Node Type | Description | Example ONIX nodes | +| 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) | -Nodes are placed in the Bonsai editor and can be saved into a "workflow", which is a grouping of nodes and saved settings. This workflow can then be run to perform some task, depending on what nodes are placed. +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. diff --git a/articles/getting-started/property-categories.md b/articles/getting-started/property-categories.md index 1cd02a6..af7dd7f 100644 --- a/articles/getting-started/property-categories.md +++ b/articles/getting-started/property-categories.md @@ -3,7 +3,7 @@ uid: PropertyCategories title: Property Categories --- -There are specific categories of properties that define when a node's properties can be modified. +There are specific categories of properties that define when an operator's properties can be modified. `Configuration` properties are only settable when the workflow is not running, and for ONIX devices define how to initialize the device. Examples would be setting the number of channels to record from, the frame rate of a camera, or defining filters to apply to recording channels. diff --git a/articles/getting-started/start-workflow.md b/articles/getting-started/start-workflow.md index 3467d97..0281224 100644 --- a/articles/getting-started/start-workflow.md +++ b/articles/getting-started/start-workflow.md @@ -3,8 +3,8 @@ uid: StartAWorkflow title: Start a Workflow --- -Once all nodes have been placed and linked correctly, and all **Configuration** properties have been set, it is now possible to run a workflow. Note that some aspects of Bonsai are only available in specific contexts; for instance, the GUIs mentioned above can only be opened when a workflow is not running. Once a workflow is running, these GUIs are not accessible, but visualizers for certain nodes can be opened to view the streaming data. +Once all operators have been placed and linked correctly, and all **Configuration** properties have been set, it is now possible to run a workflow. Note that some aspects of Bonsai are only available in specific contexts; for instance, the GUIs mentioned above can only be opened when a workflow is not running. Once a workflow is running, these GUIs are not accessible, but visualizers for certain operators can be opened to view the streaming data. -Running a workflow can be done in one of two ways: (1) Press the **Start** button at the top of the Bonsai editor, and (2) Press F5. Upon starting a workflow, a context will be created, and all devices will be configured based on the **Configuration** properties. Any `*Data` nodes will then begin streaming data, and can be visualized. +Running a workflow can be done in one of two ways: (1) Press the **Start** button at the top of the Bonsai editor, and (2) Press F5. Upon starting a workflow, a context will be created, and all devices will be configured based on the **Configuration** properties. Any `*Data` operators will then begin streaming data, and can be visualized. ![Start button in Bonsai editor](../../images/bonsai-editor-start-button.png){width=700px} diff --git a/articles/getting-started/tips-tricks.md b/articles/getting-started/tips-tricks.md index 1f7a085..76838e8 100644 --- a/articles/getting-started/tips-tricks.md +++ b/articles/getting-started/tips-tricks.md @@ -3,32 +3,32 @@ uid: TipsAndTricks title: Tips and Tricks --- -## Bonsai Node Actions +## Bonsai Operator Actions -When running a workflow in Bonsai, nodes are evaluated from left to right, and top to bottom, meaning that the order of the nodes becomes very important. Additionally, nodes that are linked together conceptually must be linked together explicitly in the editor. Below is a table with some methods for adding links, removing links, reordering nodes horizontally and vertically, as well as some shortcuts to aid in placing nodes more efficiently. +When running a workflow in Bonsai, operators are evaluated from left to right, and top to bottom, meaning that the order of the operators becomes very important. Additionally, operators that are linked together conceptually must be linked together explicitly in the editor. Below is a table with some methods for adding links, removing links, reordering operators horizontally and vertically, as well as some shortcuts to aid in placing operators more efficiently. -The order of nodes is also important for which actions can be taken. In the table below, the "first" node is always the one that is on the left side, or on the bottom for multiple rows of nodes. If the first node clicked is on the right side, or on the top, these actions do not work. +The order of operators is also important for which actions can be taken. In the table below, the "first" operator is always the one that is on the left side, or on the bottom for multiple rows of operators. If the first operator clicked is on the right side, or on the top, these actions do not work. | Goal | Clicks / Keystrokes | Description | | ---- | ------------------- | ----------- | -| Link two nodes | Click and hold the first node, drag the cursor to the second node, and release | While dragging the cursor, it will temporarily change to a red symbol until there is a valid target (e.g., the second node), where it will change to an up arrow | -| Link two nodes | Right-click the first node, and select **Create Connection**. Select the second node | While moving the cursor, it will change to an up arrow. A valid node target will change color when hovering over it | -| Link two nodes on placement | Click on a node in the editor to select it, then place a node using either method (1) or (2) above | If a node is currently selected in the editor when a new node is added, whether it is added by clicking and dragging, double-clicking, or pressing **Enter**, the newly placed node will be connected to the first node automatically | -| Unlink two nodes | Click the first node to select it, hold **Shift**, click and hold the first node, drag to the second node, and release | While dragging the cursor, it will temporarily change to a red symbol until there is a valid target (e.g., the second node), where it will change to an up arrow | -| Unlink two nodes | Right-click the first node, and select **Remove Connection**. Select the second node | While moving the cursor, it will change to an up arrow. A valid node target will change color when hovering over it | -| Move row of nodes up | Hold **Alt**, click and hold the first node, drag upwards to a node in another row, and release | This action does not require that the node be selected prior to performing the action. The second node that is highlighted when the button / mouse are released will now be under the first node | -| Change order of nodes in a row | Hold **Ctrl**, click and hold the first node, drag to the right to the second node, and release | This action does not require that the node be selected prior to performing the action. This can change the order of any two nodes that are a part of the same row; it is not constrained to adjacent nodes. Note that if the new placement of the nodes is not valid (such as giving a `Source` node an input), it will knock the node of the current row and remove any connections | +| Link two operators | Click and hold the first operator, drag the cursor to the second operator, and release | While dragging the cursor, it will temporarily change to a red symbol until there is a valid target (e.g., the second operator), where it will change to an up arrow | +| Link two operators | Right-click the first operator, and select **Create Connection**. Select the second operator | While moving the cursor, it will change to an up arrow. A valid operator target will change color when hovering over it | +| Link two operators on placement | Click on an operator in the editor to select it, then place an operator using either method (1) or (2) above | If an operator is currently selected in the editor when a new operator is added, whether it is added by clicking and dragging, double-clicking, or pressing **Enter**, the newly placed operator will be connected to the first operator automatically | +| Unlink two operators | Click the first operator to select it, hold **Shift**, click and hold the first operator, drag to the second operator, and release | While dragging the cursor, it will temporarily change to a red symbol until there is a valid target (e.g., the second operator), where it will change to an up arrow | +| Unlink two operators | Right-click the first operator, and select **Remove Connection**. Select the second operator | While moving the cursor, it will change to an up arrow. A valid operator target will change color when hovering over it | +| Move row of operators up | Hold **Alt**, click and hold the first operator, drag upwards to an operator in another row, and release | This action does not require that the operator be selected prior to performing the action. The second operator that is highlighted when the button / mouse are released will now be under the first operator | +| Change order of operators in a row | Hold **Ctrl**, click and hold the first operator, drag to the right to the second operator, and release | This action does not require that the operator be selected prior to performing the action. This can change the order of any two operators that are a part of the same row; it is not constrained to adjacent operators. Note that if the new placement of the operators is not valid (such as giving a `Source` operator an input), it will knock the operator of the current row and remove any connections | > [!Note] -> In the context of `OpenEphys.Onix1`, almost all workflows should have the top row containing a [`CreateContext`](xref:OpenEphys.Onix1.CreateContext) node connected to an arbitrary number of `Configure*` nodes, finished with a [`StartAcquisition`](xref:OpenEphys.Onix1.StartAcquisition) node. Subsequent rows can contain the corresponding `*Data` nodes configured above, and any processing / visualizing nodes needed. +> In the context of `OpenEphys.Onix1`, almost all workflows should have the top row containing a [`CreateContext`](xref:OpenEphys.Onix1.CreateContext) operator connected to an arbitrary number of `Configure*` operators, finished with a [`StartAcquisition`](xref:OpenEphys.Onix1.StartAcquisition) operator. Subsequent rows can contain the corresponding `*Data` operators configured above, and any processing / visualizing operators needed.
## Accessing GUIs -Some nodes, specifically many of the `Configure*` nodes, can have a GUI attached to the node that allows for easy manipulation of **Configuration** properties in a graphical environment. These GUIs can be accessed by double-clicking on a node; if there is a GUI assigned to it, then it will be opened up in a new window. Please note that not all nodes have GUIs, but if you think that a node would benefit from having this functionality added please reach out to us. +Some operators, specifically many of the `Configure*` operators, can have a GUI attached to the operator that allows for easy manipulation of **Configuration** properties in a graphical environment. These GUIs can be accessed by double-clicking on ab operator; if there is a GUI assigned to it, then it will be opened up in a new window. Please note that not all operators have GUIs, but if you think that an operator would benefit from having this functionality added please reach out to us. > [!Note] > GUIs are not part of the base `OpenEphys.Onix1` library. To take advantage of this added functionality, you must install the accompanying `OpenEphys.Onix1.Design` library using the Bonsai package manager. -A number of Bonsai nodes also come shipped with GUIs, but similar to `OpenEphys.Onix1`, the corresponding `*.Design` library must be installed before it can be leveraged. +A number of Bonsai operators also come shipped with GUIs, but similar to `OpenEphys.Onix1`, the corresponding `*.Design` library must be installed before it can be leveraged. diff --git a/articles/getting-started/visualizing-data.md b/articles/getting-started/visualizing-data.md index 09414e8..1a6fafd 100644 --- a/articles/getting-started/visualizing-data.md +++ b/articles/getting-started/visualizing-data.md @@ -3,9 +3,9 @@ uid: VisualizingData title: Visualizing Data --- -To visualize data from any `*Data` node, typically the variable that needs to be visualized must first be output from the node. To do this, right-click on any `*Data` node 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 node in the workflow. +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 node 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 node to be connected directly after it, such as a `RollingGraph` node. If so, this secondary node must be right-clicked and the appropriate visualizer must be selected here. +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 nodes and can be found in the `Bonsai.Design.Visualizers` package, which can be installed in the Bonsai package manager. These nodes must be placed in the workflow and be linked to a data node to visualize the data properly. +> 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.