Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: typos, macros

...

The new Cyclops is now controlled by Teensy 3.2, a powerful 32 bit ARM Cortex M4 CPU. The primary reason for choosing a Teensy over an Arduino was its superior clock speed and peripheral options. A more detailed discussion can be found in this GitHub issue.

...

The Teensy is flashed/programmed using the Teensyduino add-on for Arduino IDE. The Open-Ephys GUI can also flash programs (that it auto-generates) into the Teensy.

Installation

  1. Install the Strictly follow this guide to install theĀ Arduino IDE and Teensyduino and strictly follow this guide. Also read the "Known Issues" section on the bottom of that page.
  2. Go through the "Getting Started" page to check if your software is setup correctly and that the Teensy works. You don't have to power up the Cyclops for this.
  3. To read the developer documentation locally, install doxygen for your PC.
  4. Make sure you have python installed (preferably python 3.X). Also install:
    • IPython
    • python-scipy, python-numpy, python-matplotlib (if you haven't already)
    • pyserial

...

For this, the Cyclops Library provides an RPC (Remote Procedure Call) interface over USB to communicate with the Teensy. It can be used to alter almost all aspects of the signal and its delivery in real-time for any number of Teensy boards (and hence any number of Cyclops Boards)! &gtOE GUI or you worry about analysis and stimulus generation, Cyclops worries only about delivery.

Hence, there are 2 ways to use this library's RPC interface.

  1. Open Ephys GUI
    • The RPC is baked into the CyclopsStimulator plugin.
    • Define transformation rules in C++, that parse "Events" in the Open Ephys data-flow, and generates modification calls (via RPC C++ API).
    • Virtually connect "rules" to a specific node in OE data-flow (processor graph) with the target Cyclops LED channel.
      So, all events up till this node would be fed to the "rules" and affect the target optical channel.
    • Plug in Cyclops r3.6+
    • Deploy.
  2. Baremetal

    • Write and flash a custom Arduino script on the Cyclops. Optionally connect with PC on USB, and control via custom C++ or python script.

Tip
titleAlternative #1

is a flexible use-case and designed to support almost all kinds of Optogenetic experiments, and it lets you focus on your experiment and its results, rather than the nitty-gritty details of the Cyclops library.

If your use case requires more customisation, you might want to tweak the Cyclops Library. You can always request a feature, or help us build it!

...

The Waveform object defines powerful methods to control everthing about the delivery of signals. Since each Teensy can control up to 4 Cyclops Boards (aka channels or LEDs), the Waveform can It can even be used to change the output channel (LED) at runtime.

All the objects and their interconnections can be created and modified at runtime.

Warning
titleCaution

The Cyclops programs are interrupt driven, and if you want to edit or write programs that use Cyclops Objects, please read the developer documentation so that you can write safe programs which are protected from subtle Context Switch Bugs.

Next up: General Program Structure

...