GSoC 2023 Project Idea 2.2 Generalize parameter optimization routines (350 h)

Human Neocortical Neurosolver (HNN) is a software for interpreting the neural origin of macroscale magneto-/electro-encephalography (MEG/EEG) data using biophysically-detailed microcircuit simulations. HNN can be run through a user-friendly graphical user interface or through a Python interface HNN-core.

IRC channel:

Mailing list(s):

Overview of HNN Utility

HNN-GUI tutorials

HNN-core tutorials and examples

Contributing guide


HNN-core currently lacks the ability to perform parameter optimization on rhythmic/bursty and poisson drive configurations. The goal is to add this functionality and generalize the optimization routine to encompass all types of exogenous drive parameters that are used to configure model simulation outputs.


  • Develop functions, optimize_rhythmic and optimize_poisson, that can be used to optimize the parameters associated with each of these drive types, respectively. Inspiration can be drawn from the current implementation of optimized_evoked, however, the optimization routines for rhythmic and poisson drives will not necessarily leverage the sequential design used for a sequence of evoked drives.
  • Consolidate the different optimization functions as much as possible, producing a clear API with minimal redundancies. This should also allow the user to constrain parameter ranges and run simple parameter sweeps by specifying or eliminating the optimization cost function.
  • Create a function for visualizing the parameter changes pre-to-post optimization.
  • Document the optimization routines with examples and develop tests for each function.

Related issues: add functionality for running batch simulations · Issue #140 · jonescompneurolab/hnn-core · GitHub Model optimization for rhythmic time courses · Issue #176 · jonescompneurolab/hnn-core · GitHub create visualization plot for parameter optimization · Issue #423 · jonescompneurolab/hnn-core · GitHub efficacy of parameter recovery using current optimization routine · Issue #466 · jonescompneurolab/hnn-core · GitHub Optimization with calcium model · Issue #567 · jonescompneurolab/hnn-core · GitHub

Skill level: Intermediate

Required skills: Python, some experience in neuroscience data analysis may be helpful

Time commitment: Full-time (350 hours)

Lead mentor: Ryan Thorpe

Project website:

Backup mentors: Nicholas Tolley, Mainak Jas

Tech keywords: Python, networks, modeling, simulation

1 Like

I’m Aritra Sinha, an undergrad student from NIT Surathkal, Karnataka, India. I have a few years of experience with Python, and the projects seems pretty interesting. I would love to work and contribute to this project. I have started going through the project details and the related issues that are mentioned. Would be great to get some guidance on how to proceed ahead.


Hello @INCFComms, I am Arya and I am studying Artificial Intelligence and Machine Learning. I am very intrigued by this software and I am very eager to contribute to its development. I am confident that the knowledge and skills I gained from last year’s Computational Neuroscience track in Neuromatch and my course curriculum, will help me contribute to this project.

I have gone through the hnn webpage and the links given above(except the ‘contributing guide’ link is giving a 404 page!). Please let me know what I should do next to contribute to this project.
Thank you!

Thanks for finding the bug in our contributing guide link. Please see here for the proper link.

Greetings! I am Simarjot, a computer science student at University of Manitoba. I am done with my draft proposal and wanted to ask if any one of the mentors @rythorpe @jasmainak could take a look and suggest improvements.

Hi @SimarjotSingh, you can email me at ryan_thorpe at brown dot edu to share your document. Keep in mind that the deadline for submitting your proposal is fast approaching (April 4), and we usually like to have at least one pull request well underway before/while working on your proposal so that you can get a better feel for the code you’d be working with for this project. We’ll do our best to give you some feedback and guide you through the pull request, but given the time crunch this will be tricky.