GSOC 2026 Project #15 : HNN (Human Neocortical Neurosolver) Projects : Refactoring synaptic behavior in HNN-Core

Difficulty: Intermediate - Advanced

Duration: 350 hours (full time)

Skills:

  • Experience with Python programming, including Numpy and Scipy

  • Experience with Git version control

  • Experience with neuroscience and synaptic physiology is optional but advantageous

Mentors:

Nicholas Tolley (ntolley (Nicholas Tolley) · GitHub), Katharina Duecker (katduecker (Katharina Duecker) · GitHub), Dylan Daniels (dylansdaniels · GitHub), Anna Cattani (annacatt · GitHub)

About HNN-Core: The Human Neocortical Neurosolver (HNN) is a software for interpreting the cell and circuit neural origin of macroscale magneto-/electro-encephalography (MEG/EEG) data using biophysically-detailed microcircuit simulations. HNN-Core is the modern open source interface defining the HNN network model that allows simulations to be run through a user-friendly graphical user interface (GUI) or through a Python API as a library. Official website of HNN software (https://hnn.brown.edu/), HNN Textbook website with tutorials and examples (HNN Textbook), Contributing guide (Contributing Guide — hnn-core 0.5.0 documentation).

Goal: HNN-core is a biophysical modeling framework based on the NEURON simulator (The NEURON Simulator — NEURON documentation). The cells in HNN-core consist of one or several sections (in biophysical modeling referred to as “compartments”), that are connected in a way that approximates the morphology of biological neurons. In the current implementation in HNN-core, synapses are placed at fixed locations at the center of each section. While only a subset of these synapses are active connections from thalamic and cortical inputs, the NEURON simulator solves the differential equations for all synapses, including those with inactive connections. The synaptic currents are stored as simulation outputs in an HNN-core network object, again including synapses with zero current flow. The goal of this project is to refactor the placement of synapses to locations at which a neuron receives synaptic inputs. This will improve the computational and memory efficiency of simulations in HNN-core and improve user-friendliness in interpreting simulation outputs. A bonus goal is to introduce biologically realistic variability in the synapse placement for different neurons (time permitting). This includes thalamic inputs and synaptic connections to other cells in the network.

Subgoals:

  • Parameterize synapse position within Section, such that synapses are only placed at locations where the cell receives thalamic or cortical input, while maintaining backwards compatibility.

  • Refactor code such that synaptic current is only recorded for active synapses.

  • Update predefined network models.

  • Create comprehensive tests and documentation

  • Validate and create visualization tools for synaptic currents

  • Bonus: implement position distributions for synapse placement, both for thalamic inputs (drives) and within-network connections

  • Bonus: Extend existing drive and connectivity API to support heterogeneous placement

  • Bonus: Add cell-level and network-level variability options

  • Bonus: Create visualization tools for synapses

Tech keywords: Python, NEURON simulator, Compartmental modeling

1 Like

Hello,

My name is Parvathi and I am a master’s student in Biomedical Engineering at the Indian Institute of Technology, Bombay. I am interested in this project, and was trying to set up HNN-core locally so that I could run some example simulations in VS Code on my laptop, but I was running into issues while installing NEURON, which I understand is required for HNN-core.

Environment - OS: Windows, Python: 3.11,Virtual environment created using venv

Steps I followed:

  1. Created and activated a virtual environment

  2. Installed hnn-core
    This installed successfully.

  3. I then attempted to install NEURON using pip: pip install neuron
    However, pip was returning:
    ERROR: Could not find a version that satisfies the requirement neuron
    ERROR: No matching distribution found for neuron

Running pip with verbose output shows messages like:
Skipping link: none of the wheel’s tags (cp39-cp39-manylinux_2_27_x86_64 …)
are compatible
which seems to indicate that the available wheels are built for Linux rather than Windows.

I had previously installed NEURON 8.2.2 using the Windows installer, but import neuron was failing inside my virtual environment and throwing this error: ModuleNotFoundError: No module named ‘neuron’

So I just wanted to know if there an easier/ recommended way to install NEURON so that it works with hnn-core in a Python virtual environment on Windows? Also, should NEURON be installed through pip, the Windows installer, or through some other way?

Also please do let me know if I made any mistakes in the process that I followed.

Thank you!

1 Like

For those who are interested in applying for this Project, feel free to follow the instructions on this HNN-Core GitHub issue here. These steps are not required but will improve your chances of consideration.

Hello Parvathi, for installation help, I have copied your comment over to a post on our Github Discussions forum here where we can continue to provide installation support. Thank you for your interest!

Thank you so much for your support!

1 Like

Hi mentors, I’ve been reading through the HNN-Core project idea on refactoring synaptic behavior and also looking at the docs/textbook to understand how drives, connectivity, and section-level recording currently work.

From my understanding, the main goal is to move from placing synapses at fixed section-center locations to placing them only where thalamic or cortical inputs actually exist, and then record synaptic currents only for active synapses.

I noticed that HNN-Core already has support for targeting specific sections when adding drives or connections. So I wanted to ask: for this project, is the main expected refactor mostly about changing the internal representation and instantiation of synapses in NEURON, or do you also expect noticeable changes to the public API for drives/connectivity ?

I’ve started going through the contributing guide and setting up the development install, and I’d love to understand which part of the codebase would be the best place to study first for this project.

1 Like

Hi everyone,

My name is Eluit Cruz, I’m a freshman at Yale and I’ve been working as an RA in the McDougal Lab since January 2026. I’m very interested in this project.

For the past couple of months I’ve been helping develop myneuron, a pure-Python reimplementation of NEURON’s Python interface that Dr. McDougal started. Instead of using the built-in from neuron import h, it calls libnrniv directly via ctypes, both interfaces drive the same C simulation engine, but myneuron is designed to make the Python layer easier to develop and contribute to. My contributions have focused on expanding the ctypes FFI layer (the project now wraps 77 C API bindings), building out the testing infrastructure (199 tests across unit, conformance, and regression suites with CI on Python 3.10–3.12), and implementing features like nothrow error handling, memory-safe section ownership, object refcounting, and cross-API conformance tests that verify bit-for-bit identical simulation outputs against real NEURON. The work has given me a lot of hands-on time with how NEURON handles sections, segments, synapse objects (ExpSyn, Exp2Syn, NetCon), and the compartmental solver at the C API level.

I’m interested in this project because that experience seems relevant to the proposed refactoring, particularly around synapse placement on compartments and the computational cost of solving equations for inactive synapses.

A few questions about the project scope:

  1. When the project description says “parameterize synapse position within Section”, is this mainly an extension to the existing Cell class’s synapse construction (changing where synapse objects get placed on compartments), or does it involve a more fundamental change to how the Network class builds and wires cells?

  2. For backwards compatibility, does this mainly refer to preserving the Python API surface (e.g., add_connection() and drive APIs), or are there serialized configurations / param files that would also need to remain loadable?

  3. For the bonus goal of biologically realistic variability in synapse placement, does the team have a specific distribution model in mind, or would that be part of the contributor’s proposal?

I’m going to look at the good first issues per the instructions on #1202. Looking forward to engaging with the project.

Best, Eluit Cruz
GitHub: ec1dev

1 Like

Hello Vishwas, I believe you have a correct understanding of the project. To answer your question, this is expected to mostly be about making changes to internal code, not the public API.

1 Like

Hello Eluit,

To answer your questions approximately (I’m the mentor for our other GSOC project, not this one)

  1. RE: It’ll probably be a combination of both. As you’ve mentioned, the actual connection gets built by Cell, but information about the connectivity will be required to figure out which possible synapses get created. Part of the project will be figuring out what, if any, of the other systems need to be changed.
  2. RE: We don’t need to worry about binary compatibility, but we do use JSON Network configurations and similar files. However, I expect that most of the backwards-compatibility work will be at the API level. We have good test coverage of our JSON configuration files that should help with ensuring the loading/saving is backwards-compatible.
  3. RE: At this time, no, I do not believe we have a specific distribution in mind, but I could be wrong. We’re mostly interested in a generalizable approach to this problem. The distributions will likely be cell-type-specific, but the process of sourcing and validating what parameters and distributions we should use (which is not necessarily part of the GSOC project) tends to be time-consuming and require more science than engineering.

Thanks,
Austin

Thank you for clarifying
I have been studying the repository for quite a while now, focusing on how the current synapse works.
I’m currently studying cell.py, network.py, and how the NEURON backend creates and manages synapses. I’m also looking at the existing tests to understand the expected behavior.

Looking forward to contribute in the coming days

1 Like

Interest in Project 15 — Integrating my GFE hierarchical non-Markovian kernels into HNN-Core synapses

Hi Nicholas, Katharina, Dylan, and Anna,
I’m very interested in Project 15 (Refactoring synaptic behavior in HNN-Core) and would like to propose a concrete scientific extension.
I have already built and tested a complete framework (Aberconics / GFE) that represents memory kernels as completely monotone (CM) functions, approximated via sum-of-exponentials (SOE) with auxiliary variables. It includes:
hierarchical Memory-Integrated Network (MIN) with explicit top-down/bottom-up coupling,
renormalisation flow that preserves CM and SOE structure across scales,
effective memory dimension D_eff as a diagnostic.
I recently ran the full pipeline on real Calmodulin linker NMR data (R1/R2/NOE) and recovered a CM kernel with D_eff analytics — matching the protein-complex range in my framework and demonstrating immediate applicability to biophysical microcircuits.
For this project I propose to:
refactor synapse placement and currents in HNN-Core to use GFE/CM kernels instead of fixed locations,
add parameterised top-down modulation (slow variables affecting fast synaptic weights/rates),
track D_eff renormalisation in network simulations.
This would give HNN biologically richer, non-Markovian synapses while keeping full backward compatibility and improving biophysical realism for MEG/EEG interpretation.
I already have a minimal prototype (MasterLoader + SOE wrapper) ready and can share a notebook + draft proposal today.
Happy to adapt to 175h or 350h scope and also consider Project 16 (testing infrastructure) as a fallback if needed.
Thank you,
David Ahorlu

Tempotown-github

1 Like