The Department of Biomedical Informatics, Emory University (often stylized “Emory BMI” for GSoC communications) is committed to open source development of several biomedical informatics research projects. As a research organization, its source code lives across several open source project repositories, released with open-source licenses including BSD 3-Clause License and MIT license. Emory BMI has been a successful mentoring organization for Google Summer of Code 2012 – 2016, 2019, 2021, 2022, and 2023! In the recent years, we had 8 great contributors in 2022 and 6 in 2021. We are excited and looking forward to working with another batch of contributors for the upcoming GSoC. Emory BMI takes pride in having the past successes and GSoC contributors turning into long-term collaborators and mentors themselves. Emory BMI also encourages the contributors to collaborate further towards research outcomes, alongside their coding, as most of our GSoC projects include a fair amount of research.


Below are the projects hosted by the NiSys Lab and its members. If you are interested in a project, please direct your application to:

Please refer to the contributor guidelines for more details on how to apply and a standard template for the application.

Read More on the GitHub

The current implementation of concore, a lightweight framework for closed-Loop peripheral neuromodulation control systems, works well for the neuromodulation control systems simulations. However, the current implementation is not optimized for real-time execution of time-sensitive executions such as real-time live experiments with organ systems, as the latency must be much lower with higher performance requirements. There are three obstacles to a full real-time implementation: i) the language chosen must support real-time computations. There is a preliminary C++ implementation here. ii) currently concore uses file sharing to communicate between processes, which may impact the real-time guarantees. iii) the software needs to run on some kind of hardware platform that supports real-time computations.

 We need to promote a unified experience in concore, whether the edges are actually implemented via the default file-sharing approach, or through this experimental osparc-control/ZeroMQ message-based approach. To illustrate the ZeroMQ-based edges, the contributor can choose to introduce a new assumption that all the ZeroMQ-edges must start with “0” in their labels. Usually, we label the edges with alphabetical characters. Therefore, this is a safe assumption. Once such a graph with ZeroMQ-edges is made (a single directed hypergraph, rather than a forest with disjoint two or more directed hypergraphs), we should be able to seamlessly build and run the study regardless of the underlying communication mechanism. Thus, we aim to demonstrate the possibility of a seamless local vs. distributed execution in a cluster through ZeroMQ.

We developed the concore library initially in Python, and then implemented support for other languages. The contributor will work towards a reference implementation in Java or Julia in this project. The successful completion of this project will expand the user base of concore to include Java/Julia developers. Expected outcomes are a complete reference implementation of the concore Library in Java or Julia.

Currently, to contribute a study or a program to concore, a user must fork the concore repository and send a pull request through Git. This contribute approach does not help with users that are not familiar with Git or GitHub. The concore-editor has a “Contribute” button, which does nothing at this point. Once we have this project successfully completed, concore will have a script named “contribute” with necessary GitHub actions (or a similar alternative approach). With this Contribute option, the contributors merely invoke the contribute script and a pull request is generated or updated on their behalf. This project also has a research component, and the contributors are encouraged to propose their alternative approach (if any) in their proposal.

Our previous GSoC project DHGWorkflow enabled us to visually create Directed Hypergraphs (DHGs) and export them as GraphML files through its browser-based lightweight environment. This project could use a similar approach to generate WDL and CWL files from a browser-based application. There are three approaches to implementing this project. First: forking and adopting DHGWorkflow is an option. concore-editor adopted DHGWorkflow for the CONTROL-CORE project with additional capabilities such as editing programs. Second, the potential contributor may also choose to fork and adopt concore-editor for this project instead. Third, there are also stand-alone CWL and WDL drag-and-drop projects such as Rabix that can be adopted for this project. APIs (such as RESTful interfaces) should be provided to internally pass the workflow definitions to the backend, to avoid having a backend application having to read and parse the workflow files (WDL and CWL) again, rather than having them directly use the workflow definitions by the other programs.

Parkinson’s disease is the second-most common neurodegenerative disorder, affecting 2–3% of the population ≥65 years of age. Deep Brain Stimulation (DBS) has become a standard treatment for neurological disorders, such as Parkinson’s disease and essential tremor, to ameliorate patient motor symptoms when medications are insufficient. Our group is working to develop an automated, patient-specific framework for optimization of DBS parameters.

Read More

The objective of this project is to develop an open-source framework that utilizes unsupervised deep learning techniques for data clustering. The framework should be capable of handling low-resource scenarios and be able to scale to large datasets. The proposed framework will utilize unsupervised deep learning techniques for data clustering. Specifically, the framework will be based on autoencoder networks, which can be trained to learn a compact, low-dimensional representation of the data. The encoded data will then be used as input to a clustering algorithm. To handle low-resource scenarios, the framework will also incorporate techniques such as active learning and transfer learning. The framework will be implemented in an open-source programming language, such as Python, and will be made publicly available on a platform such as GitHub.