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 27 Next »

The Google Summer of Code program provides a stipend for university students who want to spend a summer contributing code to open-source projects. Open Ephys is applying as a mentoring organization in 2016. We'll know by February 29th whether or not we've been accepted. Other neuroscience organizations participating this year include INCF and the Blue Brain Project.

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 projects you might be interested in working on. You should also download our software and work your way through this Tutorial.

If you haven't already, you should read through the GSoC Student Manual. The 2016 student application window is March 14th through 25th.

Application instructions

You'll officially apply through Google starting March 14th. The information on this page is intended to help you decide if you'd like to develop a proposal with us.

Open Ephys is looking for students to help us improve our GUI, an open-source data acquisition application used by neuroscientists. You'll have the opportunity to contribute code that will be applied immediately to real experiments in labs around the world, as well as to learn about the scientific motivations that drove us to create Open Ephys.

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 start developing your proposal with Open Ephys, please send the following information to info@open-ephys.org:

  • Contact details: full name, location, email, and Skype account
  • An up-to-date resume
  • A link to your GitHub page (with a list of the repositories you've contributed the most to)
  • A 1-page letter describing the project(s) you're interested in working on to (see below for suggestions)
  • 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. 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 the software 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 user interfaces

Level of difficulty: Easy

Mentors: Josh Siegle (@jsiegle), Jakob Voigts (@jvoigts), Aarón Cuevas López (@aacuevas)

 

2. Upgrade channel selection interface

Description: Every processing module within the Open Ephys GUI includes a generic interface that allows the user to select subsets of channels for editing parameters and toggling recording on and off. Currently, users can only select or deselect one channel at a time, and the interface does not scale well to high channel counts. We're looking for someone to re-design the interface so that the buttons for each channel can be visualized more effectively and channel selection can be performed more efficiently.

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

Level of difficulty: Easy

Mentors: Josh Siegle (@jsiegle), Jakob Voigts (@jvoigts), Aarón Cuevas López (@aacuevas)

 

3. Recording to Neurodata Without Borders format

Description: Neurodata Without Borders (NWB) is a recently developed data format that aims to simplify the process of sharing data across labs. It's based on HDF5, a format designed to store scientific datasets within hierarchical, self-documenting files. The Open Ephys GUI can currently be configured to save data as binary files or in Kwik files, another HDF5-based format. Adding the ability to save directly to the NWB format will be beneficial to a number of users, as NWB becomes more widely adopted by members of the field. Additionally, the project could include adding support for other commonly used binary formats, such as those developed by Neuralynx and Plexon. We have already implemented a modular recording architecture, which greatly simplifies the process of adding support for new formats.

Skills required: Proficiency in C++, familiarity with HDF5

Level of difficulty: Easy

Mentors: Josh Siegle (@jsiegle), Jakob Voigts (@jvoigts), Aarón Cuevas López (@aacuevas)

 

4. 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

Level of difficulty: Moderate

Mentors: Josh Siegle (@jsiegle), Jakob Voigts (@jvoigts), Aarón Cuevas López (@aacuevas)

 

5. 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 relatively new language for scientific computing that combines a syntax similar to 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 minimal 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 it with other languages

Level of difficulty: Moderate

Mentors: Josh Siegle (@jsiegle), Jakob Voigts (@jvoigts), Aarón Cuevas López (@aacuevas)

 

6. 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, or eating is very difficult with image data alone. The headstages used by Open Ephys to acquire neural data also include small accelerometers that continuously measure 3D acceleration data. Mining this data to determine the behavioural state of an animal 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++)

Level of difficulty: Hard

Mentors: Josh Siegle (@jsiegle), Jakob Voigts (@jvoigts), Aarón Cuevas López (@aacuevas)

 

7. 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 would make 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 out there. 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 data. 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

Level of difficulty: Hard

Mentors: Josh Siegle (@jsiegle), Jakob Voigts (@jvoigts), Aarón Cuevas López (@aacuevas)

 

8. Improving the spike-sorting module

Description: The majority of Open Ephys users employ multi-channel extracellular electrodes, such as tetrodes or silicon probes. In order to identify the activity of individual neurons in the data coming off such electrodes, spike-sorting methods need to be used. Traditionally, spike sorting was performed offline after the experiment, but for virtually all online analyses based on spike patterns, spike sorting needs to be performed in real time. The Open Ephys GUI already has a module that performs simple spike-sorting (https://github.com/open-ephys/plugin-GUI/tree/master/Source/Plugins/SpikeSorter), but it needs both user interface and under-the-hood improvements. Further, the module currently only works with purely manual clustering, which is increasingly less viable because the number of channels recorded with modern probes exceeds what a human experimenter can manually process in the time required for a single recording. Integrating automated or semi-automated spike sorting methods methods into the Open Ephys GUI would increase its usefulness for high-channel count experiments.

Skills required: Proficiency in C++, experience designing user interfaces, knowledge of basic machine learning algorithms (ideally implemented in C++, but Python or Julia could also work here)

Level of difficulty: Hard

Mentors: Josh Siegle (@jsiegle), Jakob Voigts (@jvoigts), Aarón Cuevas López (@aacuevas)

 

 

  • No labels