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 participated as a mentoring organization in 2016, and we're applying again in 2017but we were not accepted for the 2017 program. We'll know by February 27th whether or not we've been accepted.Below is try again in 2018. Until then, this page will serve as 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

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 2017 student application window is March 20th through April 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.

Application instructions

You'll officially apply through Google starting March 20th. 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:

...

...


1

...

.

...

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

...

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.

For a variant: event-triggered spectrogram or event-triggered time-frequency decompositions. These will require some careful thought about the underlying library, OR a very close integration with, e.g., the Julia plugin described above.

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

...

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. This project could also include an improved display and UI for managing the passage of data between modules: Sometimes large numbers of data channels are passed from one module to the next, but sometimes individual channels or groups of channels need to be split off or combined. 

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

...

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


9. Mathematical Operations

Description: Many real-time neuroscience applications require minor mathematical transforms. Channels may need to be subtracted to create local bipolar derivations. Multiplying channels by weight vectors and summing them is a classic neural decoding algorithm. One variant of these multichannel operations is already implemented as a Common Average Re-Reference plugin. This interface would be a module that applies very simple multichannel operations to transform data, possibly allowing the user to specify some parts (like a weight vector)  in a separate file.

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

Level of difficulty: Easy

Potential Mentors: Alik Widge (Alik Widge)