Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

The Google Summer of Code program provides a stipend for students who want to spend a summer contributing code to open-source projects. Open Ephys is applying as a mentoring organization in 2016. Below is a list of projects that would be extremely beneficial to our user base, and which could be completed in a 12-week period.

Getting started

If you're new to Open Ephys, we recommend reading through our main website, this wiki, and our google group, or just email info@open-ephys.org and let us know what you'd like to learn more about.

Application instructions

Open Ephys is looking for students to help us improve our GUI (http://www.open-ephys.org/gui/), an open-source data acquisition application used by neuroscientists across the globe. You'll have the opportunity to contribute code that will be applied to real experiments, as well as to learn the scientific motivations that drove us to create the GUI.

The only prerequisite is proficiency in C++, as demonstrated through coursework, code samples, and discussions with potential mentors. Experience with signal processing, data visualization, machine learning, embedded systems, and/or the Juce framework may be helpful, but are not necessary. Our software runs on Windows, Mac, and Linux, so you'll be able to work with the OS of your choice.

To apply, please send a resume, a link to your GitHub page, and a letter describing the project(s) you're interested in working on to info@open-ephys.org. Bonus points if you've already squashed some bugs listed at https://github.com/open-ephys/gui/issues

Proposal ideas

Below is a list of potential projects for GSoC students. This is just a subset of the many possibilities, so feel free to suggest your own ideas as well. This list will also be useful for anyone else that's looking for ways to contribute to the GUI.

 

1. Julia plugin module

Description: Creating custom processing modules for the Open Ephys GUI currently requires knowledge of C++. However, most scientists prefer to write code in high-level languages, such as Python and Matlab. Julia is a newly developed language for scientific computing that combines syntax of Matlab with the speed of compiled C++. It's easy to call Julia code from a C++ application using the Julia C++ interface. In order to take advantage of the vast amount of signal processing code that's been written by neuroscientists, and to make it easier for users to modify the GUI, we'd like to make it possible to run Julia code directly within our software. Julia modules could be used for such applications as detecting patterns in spiking activity or performing spectral analysis on neural signals. We already have a working prototype (https://github.com/open-ephys/gui/tree/jvoigts), but it needs to be made more robust and user-friendly.

Skills required: Proficiency with C++, especially integrating with other languages

Mentor: Jakob Voigts (@jvoigts)


2. Event-triggered averaging module

Description: One of the most important paradigms in neuroscience involves computing the average neural response to multiple presentations of the same environmental stimulus. This type of analysis is typically done offline, but it's often more convenient to measure the average response in real time. Open Ephys users would greatly benefit from having a plugin module that could align data to external events, and display both the individual trials and the average in an elegant way. This could be part of the existing LFP Viewer, or part of a separate processor. The module should be flexible enough to trigger only on certain types of events, and to work with multiple user-defined channel groups simultaneously. Ideally, the plugin would also perform simple analyses: e.g., computing the maximum, minimum, and standard deviation of the trigger-aligned data.

Skills required: Proficiency in C++, basic signal processing background

Mentor: Josh Siegle (@jsiegle)

 

3. Plugin generation GUI

Description: The Open Ephys GUI is based on a host–plugin architecture, in which processing modules are compiled separately from the main application and can be loaded on the fly. This makes it easier for users to add new functionality: they only need to understand the interface for piping data in and out of a processor, rather than the inner workings of the entire application. Nevertheless, there are still a number of mundane steps that must be carried out before one can start writing code for processing data. We'd like to have these steps be done automatically, guided by a graphical interface. The user would type in a name for their processor, and select some basic attributes, and it would generate all the necessary files and some boilerplate code. The interface could either be standalone, or integrated into the main GUI. This would help lower the barrier for entry for scientists interested in upgrading the GUI's functionality.

Skills required: Proficiency in C++, experience designing robust user interfaces

Mentor: Josh Siegle (@jsiegle)

 

4. Behavior scoring with accelerometer data

Description: When running any type of experiment with freely behaving animals, it's often important to know what behaviour the animal is engaged in at a given time. For instance, mice could be walking around, eating, grooming, sleeping, or standing up to explore their environment. Video capture can tell us roughly where an animal is located and where it's moving, but determining whether a mouse is sitting still, sleeping, eating is very difficult with image data alone. The headstages used by Open Ephys to acquire neural data also include small accelerometers that give continuously sampled 3D acceleration data. Mining this data to determine the behavioural state of the animal (mice or rats) in real-time would enable scientists to perform much more targeted experiments. We're looking for someone to create a plugin module for the Open Ephys GUI that takes 3 channels of accelerometer data and classifies it into discrete states that correspond to different behavioral states of an animal.

Skills required: Proficiency in C++, knowledge of basic machine learning algorithms (to be implemented in Python, Julia, or C++)

Mentor: Jakob Voigts (@jvoigts)

 

5. OpenBCI integration

Description: The majority of Open Ephys users are academic researchers performing experiments on animal models. However, the flexibility of the Open Ephys GUI makes it ideal for working with data from humans as well. Although the Open Ephys acquisition board can be adapted for use with human EEG, there are better alternatives. OpenBCI is a widely used open-source platform for streaming EEG data to a computer. Enabling the Open Ephys GUI to interface with OpenBCI hardware would allow our software to reach a much wider audience. We'd like to create a source module that could receive data from a 16-channel OpenBCI board. Next, existing visualization modules (such as the LFP Viewer) should be optimized for use with EEG. In addition, modules for spectral analysis and machine learning could be created to respond to changes in brain state in real time.

Skills required: Proficiency in C++, familiarity with microcontrollers and USB serial communication

Mentor: Josh Siegle (@jsiegle)

 

 

  • No labels