Joey Pinto

Software Engineer

Google Summer of Code 2018

Project: Dynamic Signal Processing Workflow Designer

Organization: International Neuroinformatics Coordinating Facility
Mentor: Petr Ježek

  • INCF is using EEG event-related potential signal processing and machine learning methods for building assistive systems for motor impaired people. Their system collects human brain data of audio/video stimulated subject and uses customized classifiers to provide a feedback leading to an action like turning on a TV, opening a window etc. The team had previously developed a client-server architecture to execute some signal processing methods onto data stored on a distributed file system.
  • This project aims at building an easy to use graphical interface that can assist in designing the workflow of these methods. This web-based toolkit will also assist the configuration of the parameters that control individual signal processing routines thus making it easy to design complicated signal flows and execute them. The entire workflow will be exportable and reusable as a JSON file. The GUI will use the Java implementation in a way that the user will be free to implement his own methods and use them in the workflow designer. The GUI will host each signal processing method as a block and will allow users to draw data channels between them. This can then be directly be exported as a job to Spark.
Sample EEG Workflow
A Machine Learning Workflow

What does it do?

The Workflow Designer project helps you convert your Java classes into visual blocks of functionality that you can combine and arrange to create workflows.

How does it work?

The tool uses customized Java annotations to identify critical sections of code like inputs, outputs, parameters and the execution logic. A web application called the ‘Workflow Designer Server’ enables importing projects with these annotations. The user can then use a drag-and-drop interface to create workflows.

How can I use it?

Simple, go ahead and get a copy of the annotations from here. Then refer to the quickstart guide to annotate your own project. Then set up your own workflow designer server and you’re good to go. Import your project and start designing. Still confused? Go through the manuals.(See links at the top)

What are the coolest parts?

  1. You can create workflows using absolutely independent projects with ease
  2. Schedule jobs, grab a coffee or come in the next day to check your results for really long jobs.
  3. Maintain a repository for your institution to share libraries and data files
  4. Use a distributed file system like Hadoop
  5. Use Spark for Job execution (see examples)

What’s next?

  1. We’d love to have an admin mechanism to control user access
  2. Maybe some more examples for people to try
  3. It would be amazing to have support for other popular languages like Python.

How can you contribute?

  1. Create an issue/feature request on any of the two projects, the workflow designer or the workflow designer server
  2. Go through the README.md file for contribution guidelines.

Project Status:

0