NeuroOmega stream into OpenEphys for deep brain stimulation

64 views
Skip to first unread message

Simón Oxenford

unread,
May 3, 2022, 4:38:58 AM5/3/22
to Open Ephys
Hi, I'm working on projects related to deep brain stimulation where we use the NeuroOmega device from AlphaOmega to acquire neurophysiological signals. (If interested, see a preprint of the work here or video here).

Currently, I have implemented a custom solution to stream signals from the NeuroOmega device, but I'm thinking to change this and adopt a more established platform. After doing some research, OpenEphys seems to be a good match for my needs.

I'm thinking of implementing a new plugin (DataThread Source) for streaming the data into OpenEphys, then do some processing here and communicate with other applications (for example 3D Slicer, which I use for imaging).

Just wanted to pitch my project, and perhaps get some feedback on wether it's a good idea to go for OpenEphys as a platform for my need. Also would be interesting to hear if someone from the community also works on deep brain stimulation or with the NeuroOmega.

Thanks a lot!

Best,
Simon

Josh Siegle

unread,
May 3, 2022, 10:55:32 PM5/3/22
to Simón Oxenford, Open Ephys
Hi Simón,

I think this sounds like a reasonable idea. Is the NeuroOmega C++ API publicly available somewhere? That would be helpful to see to get a sense for how easy it will be to integrate into an Open Ephys plugin.

In any case, if you decide to down this route, we’d be happy to help you get started. Here’s a template for a DataThread plugin; I’d recommend using the Rhythm Plugins as a reference. That repository also includes an example of an output module that allows you to trigger stimulation from within the GUI. Note that this code is only compatible with the next release, v0.6.0. You should definitely develop against that as it will have a number of major improvements over previous versions (see here for more details).

Josh


--
You received this message because you are subscribed to the Google Groups "Open Ephys" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-ephys+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/open-ephys/d5d75f93-1d27-4a75-9003-0a0b6aac6669n%40googlegroups.com.

Simón Oxenford

unread,
May 4, 2022, 3:23:42 AM5/4/22
to Open Ephys
Hi Josh, great and thanks for the reply.

Unfortunately, the NeuroOmega C++ API is not publicly available. I'll probably brainstorm a bit more and get started in the following weeks.

I'll get in touch regarding follow ups.

Thanks a lot!

Simon

Simón Oxenford

unread,
Aug 4, 2022, 5:50:41 AM8/4/22
to Open Ephys
Hi, I've been making progress with this and I'm able now to stream data from the NeuroOmega into OpenEphys.

There's one thing that I'd like to get some feedback on:

When using the device, the electrodes' depth changes throughout the procedure (they are lowered down towards the planned target of implantation).  My plan is to be able to send this information to 3DSlicer through IGTLink. This currently works, setting up a text message from the NeuroOmega plugin, which the IGTLink plugin handles. 
I would like, however, to be able to replay this from saved data and I've seen that the FileReader plugin only reads binary TTL events. I wonder what would you recommend to implement this. The approach I'm thinking is to send CUSTOM TTL events, and then enhance the FileReader to be able to load such events.
(I'm also planning on making this event to stop/start a new acquisition and start calculating features from the new recording site again. This could be probably handled by any type of event.).

Here are the links to the plugins I've been working on:
NeuroOmega: https://github.com/netstim/OpenEphysNeuroOmega (a proprietary SDK is needed to build this).
IGTLink: https://github.com/netstim/OpenEphysIGTLink (OpenIGTLink should be built before building this).

Here's also a picture of the plugin connected, streaming some signals (noise) from the device:
IMG_20220803_154915528.jpg

Thanks, and best

Josh Siegle

unread,
Aug 8, 2022, 5:38:44 PM8/8/22
to Simón Oxenford, Open Ephys
Hi Simón,

It's great to see you were able to get data streaming into the GUI!

I think the easiest solution to your issue will be to make it possible for the File Reader to load in TEXT events. That way it could replay all the messages that were generated during the recording (and saved by the Record Node).

There should only be three changes required to implement this:
  1. Add a `text` vector of strings in the FileSource EventInfo struct
  2. When the File Reader processes incoming events, it should create a broadcast message instead of a TTL event if the `text` field is not empty
  3. When loading events, the BinaryFileSource should also look for events stored in the MessageCenter directory, and load the strings stored in `text.npy`
Because the first change modifies the Open Ephys Plugin API, we may not be able to incorporate this into the official release right away. But it will hopefully solve the problem on your locally compiled version.

Let me know if that makes sense!

Josh



On Thu, Aug 04, 2022 at 2:50 AM, Simón Oxenford <oxenfo...@gmail.com> wrote:
Hi, I've been making progress with this and I'm able now to stream data from the NeuroOmega into OpenEphys.

There's one thing that I'd like to get some feedback on:

When using the device, the electrodes' depth changes throughout the procedure (they are lowered down towards the planned target of implantation).  My plan is to be able to send this information to 3DSlicer through IGTLink. This currently works, setting up a text message from the NeuroOmega plugin, which the IGTLink plugin handles. 
I would like, however, to be able to replay this from saved data and I've seen that the FileReader plugin only reads binary TTL events. I wonder what would you recommend to implement this. The approach I'm thinking is to send CUSTOM TTL events, and then enhance the FileReader to be able to load such events.
(I'm also planning on making this event to stop/start a new acquisition and start calculating features from the new recording site again. This could be probably handled by any type of event.).

Here are the links to the plugins I've been working on:
NeuroOmega: https://github.com/netstim/OpenEphysNeuroOmega (a proprietary SDK is needed to build this).
IGTLink: https://github.com/netstim/OpenEphysIGTLink (OpenIGTLink should be built before building this).

Here's also a picture of the plugin connected, streaming some signals (noise) from the device:

To unsubscribe from this group and stop receiving emails from it, send an email to open-ephys+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/open-ephys/90d8dc0e-8dc6-4c22-b219-934f6682616en%40googlegroups.com.

Simón Oxenford

unread,
Aug 9, 2022, 5:03:53 AM8/9/22
to Open Ephys
Hi Josh,

thanks for the reply and the suggested directions! Makes sense and I will try it out in the following weeks.

Is there interest to potentially include this in the Open Ephys Plugin API down the road? I wouldn’t want to diverge too much. Could make a PR once I have it working.

Thanks and best,
Simón

Josh Siegle

unread,
Aug 9, 2022, 12:32:17 PM8/9/22
to Simón Oxenford, Open Ephys
Yes, this is definitely something we'd like to include! We'll have to be careful about how we do it, though, because it will break compatibility with the existing Record Engine plugins (Open Ephys Format and NWB). We may need to add the ability to auto-update these plugins once the new version of the GUI is launched.

Josh


To unsubscribe from this group and stop receiving emails from it, send an email to open-ephys+unsubscribe@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Open Ephys" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-ephys+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/open-ephys/df69703d-069c-4c7c-857f-db06d05ce6f2n%40googlegroups.com.

Simón Oxenford

unread,
Aug 18, 2022, 6:29:38 AM8/18/22
to Open Ephys
Thanks Josh, I implemented this here:

https://github.com/simonoxen/plugin-GUI/commit/ede8385207cc3e2f9420cda98719f3f5e4ca1e82

Works on my build, let me know if interested in making a PR.

Simon

--
You received this message because you are subscribed to the Google Groups "Open Ephys" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-ephys+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/open-ephys/df69703d-069c-4c7c-857f-db06d05ce6f2n%40googlegroups.com.

Josh Siegle

unread,
Aug 18, 2022, 1:08:41 PM8/18/22
to Simón Oxenford, Open Ephys
This looks great! Glad to hear it's working.

Let's hold off a PR until we can figure out how to deal with the changes to the File Source API. We'll probably want to add the ability to automatically upgrade any installed File Source plugins before merging this upgrade.

Josh


To unsubscribe from this group and stop receiving emails from it, send an email to open-ephys+unsubscribe@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Open Ephys" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-ephys+unsubscribe@googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Open Ephys" group.
To unsubscribe from this group and stop receiving emails from it, send an email to open-ephys+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/open-ephys/096df4a1-23e1-46ef-8eab-659ba138aee0n%40googlegroups.com.

Reply all
Reply to author
Forward
0 new messages