Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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 participated as a mentoring organization in 2016, and we're applying again in 2017. We'll know by February 29th 27th 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. 

...

To start working with our code, please work with the newer, plugin-based code base at https://github.com/open-ephys/plugin-GUI. Most of the open issues and bugs are still located in the repository of our slightly older non-plugin software at https://github.com/open-ephys/GUI/issues.

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

Please use info@open-ephys.org for all communication related to GSoC. Do not email open-ephys@googlegroups.com unless you have a specific question about the software.

...

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

...

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 GUIJulia plugin module

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

Potential mentors: Josh Siegle (@jsiegle), Jakob Voigts (@jvoigts), Aarón Cuevas López (@aacuevas), Alik Widge (Alik Widge)

 

2. Upgrade channel selection interface (more details)

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

Potential mentors: Josh Siegle (@jsiegle), Jakob Voigts (@jvoigts), Aarón Cuevas López (@aacuevas), Alik Widge (Alik Widge)

 

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. We have already implemented a modular recording architecture, which greatly simplifies the process of adding support for new formats. Additionally, this project should include an upgrade of the File Reader module, to make it compatible with all formats used by Open Ephys, as well as other common formats used by the field.

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

Level of difficulty: Easy 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

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

 

42. Event-triggered averaging module

...

Potential mentors: Josh Siegle (@jsiegle), Jakob Voigts (@jvoigts), Aarón Cuevas López (@aacuevas), Alik Widge (Alik Widge)

 

5. Module to control LED driver for optogenetic stimulation

Description: Many users of Open Ephys are using optogenetic tools to manipulate activity in genetically defined neural circuits. This requires precise delivery of light form an LED source. In many cases, this is the basis for closed-loop experiments where neural data is decoded and then informs optogenetic manipulation of the brain based upon the signal content. The Cyclops driver (http://www.open-ephys.org/cyclops/) is a high precision, open-source/open-hardware LED driver designed specifically with neuroscience applications in mind. The driver houses an Arduino and an internal digital to analog converter that can be used to generate arbitrary optical waveforms. It would be very useful to program both the microcontroller firmware and a corresponding plugin for the Open Ephys GUI such that users of the GUI could define and upload waveforms onto the cyclops, and then trigger their delivery based on events in the software. This would greatly simplify the implementation of complex closed-loop optical stimulation protocols that are becoming a staple of systems neuroscience research.

Skills required: Proficiency in C++, micro-controller programming, interest in UI design, access to Arduino hardware (we may be able to help with this)

Level of difficulty: Moderate

Potential mentors: Josh Siegle (@jsiegle), Jakob Voigts (@jvoigts), Aarón Cuevas López (@aacuevas), Jon Newman (@jonnew)

 

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

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

 


7. 3. Behavior scoring with accelerometer data

...

Potential mentors: Josh Siegle (@jsiegle), Jakob Voigts (@jvoigts), Aarón Cuevas López (@aacuevas), Alik Widge (Alik Widge), Eric Burguiere (ICM, Paris)

 

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

...

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

 

95. Improving the spike-sorting module

...

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

 

106. Remote computing plugin

...

Potential mentors: Arne Meyer (UCL Gatsby Unit, London), Gonçalo Lopes (@glopes)


117. Video tracking integration

...