neuPrint: Analysis Tools for EM Connectomics
Jody ClementsiD, Tom Dolafi, Lowell A. UmayamiD, Nicole L. NeubarthiD, Stuart BergiD, Louis K. SchefferiD, Stephen M. PlazaiD
Abstract
Due to technological advances in electron microscopy (EM) and deep learning, it is now practical to reconstruct a connectome, a description of neurons and the connections between them, for significant volumes of neural tissue. The limited scope of past reconstructions meant they were primarily used by domain experts, and performance was not a serious problem. But the new reconstructions, of common laboratory creatures such as the fruit fly Drosophila melanogaster, upend these assumptions. These natural neural networks now contain tens of thousands of neurons and tens of millions of connections between them, with yet larger reconstructions pending, and are of interest to a large community of non-specialists. This requires new tools that are easy to use and efficiently handle large data. We introduce neuPrint to address these data analysis challenges. neuPrint is a database and analysis ecosystem that organizes connectome data in a manner conducive to biological discovery. In particular, we propose a data model that allows users to access the connectome at different levels of abstraction primarily through a graph database, neo4j, and its powerfully expressive query language Cypher. neuPrint is compatible with modern connectome reconstruction workflows, providing tools for assessing reconstruction quality, and offering both batch and incremental updates to match modern connectome reconstruction flows. Finally, we introduce a web interface and programmer API that targets a diverse user skill set. We demonstrate the effectiveness and efficiency of neuPrint through example database queries.
02 /Specification & Classification
Click any tag to browse matching papers- Citations
- 65
- Organism
- Assay
- Research Focus
- Approach
In-depth summary
Claude Opus 5.5 · xhigh effort · 8 Nov 2026 · from the full text of version 1 (17 Jan 2020) · CC BY 4.0
neo4j-based graph data model, web explorer and HTTP/Python API for EM connectomes; on an unpublished dataset with 10s of millions of synaptic elements, most queries finish under a second.
Connectomes reconstructed from electron microscopy (EM) with deep learning, such as those of Drosophila, now span tens of thousands of neurons with tens of millions of connections and attract non-specialist users, so tools must be fast and easy to use. Unlike other connectome tools, which the paper describes as using custom query languages or relational databases or as editing-focused, neuPrint is analysis-only and builds on the off-the-shelf neo4j graph database and its Cypher query language.
Key results
ShownIn all three tested scenarios, queries that use the full neuPrint data model (:Neuron labels, cached per-region counts, synapse sets) ran at least twice as fast as equivalent queries on simplified data models.
Three paired tests on the larger unpublished dataset: Segment vs Neuron counting, roiInfo vs per-synapse region checks, and SynapseSet vs SynapsesTo traversal. Optimized queries were at least 2x faster, with runtimes averaged over more than 50 independent queries on a cloud VM. Per-test milliseconds appear only in Figure 6, not in the text. · 5.1 Performance Decisions; Test 1: Segment vs neuron; Test 2: roiInfo; Test 3: Accessing synapses through synapse sets
ShownCommon connectome queries (partner sums, reciprocal connections, region-to-region projections, regex type lookup, output completeness) return within interactive times. Multi-hop path searches are slower and vary widely.
Six Cypher examples on the larger unpublished dataset: most take only a fraction of a second. Searching all 3-hop paths between random neuron pairs averaged under 5 seconds; many such queries took under a second and some took around 30 seconds. · 5 Results; 5.2 Example queries
ShownKeeping most analyses on the :Neuron label, a small subset of :Segment nodes, keeps even unindexed scans fast. It also avoids the storage cost of indexing every segment property.
:Neuron nodes number about 1/100 of all segments. Counting large bodies in a region was much faster via :Neuron, partly because region names are indexed there. A forced linear scan over all :Neuron nodes still finished under one second. · Test 1: Segment vs neuron
ShownBulk ingestion from precomputed CSV files is fast, and the graph store is compact compared with the EM data.
Using a 20-processor machine with 256GB of memory, the fly medulla seven-column and mushroom body datasets each loaded in a few seconds. Load time for the larger unpublished dataset (10s of millions of synaptic elements) scaled well, and the CSV files are roughly as large as the neo4j store on disk. · 4.1 Ingesting data into the neuPrint graph data…; 5 Results
ClaimedThe authors expect one large server to hold graphs with hundreds of millions of connections in memory, because storage grows mainly with synapse count.
This is an extrapolation from the Figure 5 storage results and was not tested. For bigger graphs the authors propose SSD storage (with a performance penalty) or moving synapse annotations out of the graph. · 4.3 Deploying and managing multiple datasets; 5 Results
Methods, data and reproducibility
Connectome data are stored in neo4j under a multi-level data model (:Neuron/:Segment, :SynapseSet, :Synapse and :Meta nodes, with per-region-of-interest (ROI) synapse counts cached on neurons and connections). A Go HTTP layer feeds a React web app and Python/R clients; data are bulk-loaded from CSV and updated incrementally from Kafka edit logs. Runtimes were averaged over more than 50 independent queries.
- Fly medulla seven-column connectome dataset (public neuPrint example) · fly
- Fly mushroom body connectome dataset (public neuPrint example) · fly
- Larger unpublished connectome dataset used for the storage test and all runtime benchmarks · n = 10s of millions of synaptic elements
- Methods & tools
- neo4j, Cypher, neuPrintHTTP (Go), neuPrintExplorer (React/Redux), SharkViewer, neuroglancer, DVID, Apache Kafka, neuprint-python, natverse (R), Google OAuth, d3
- Code
- https://github.com/connectome-neuprint/neuPrinthttps://github.com/connectome-neuprint/neuPrintHTTPhttps://github.com/connectome-neuprint/neuprint-pythonhttps://github.com/connectome-neuprint/neuPrintExplorerPlugins
- Data & accessions
- https://neuprint-examples.janelia.org/
- Software & environment
- neuPrintHTTP is written in Go and neuPrintExplorer is a React/Redux single-page app on top of neo4j. No software versions, containers or requirement files are given.
- Assay conditions & compute
- Ingestion used a 20-processor machine with 256GB of memory. Query benchmarks ran on a cloud VM with enough memory for the whole graph; each runtime includes several milliseconds of network latency.
- Reproducibility gaps
- All runtime benchmarks use an unpublished dataset, so they cannot be rerun on public data. The CSV ingestion pipeline is described as a work in progress that supports one dataset per database, and no versions are pinned.
Limitations (6)
- The authors leave a comparison of neo4j against relational databases out of scope, so the graph-database performance advantage for path queries is argued but not measured. · stated by the authors
- Per-region breakdowns (roiInfo) are stored as JSON strings because neo4j lacks map types. They cannot be indexed usefully and must be decoded whenever they are used as a query filter; the authors call this convenient but clumsy. · stated by the authors
- The current ingestion system is a work in progress and supports only one dataset per database, although the data model and interfaces allow several datasets to share one. · stated by the authors
- Compatibility with Cypher-capable graph databases other than neo4j is presumed but has not been tested. · stated by the authors
- Graph databases perform best when the whole graph fits in one server's memory. Larger datasets could presumably be served from SSDs with some performance penalty, or by moving synapse annotations out of the graph. · stated by the authors
- All runtimes come from one unpublished dataset, and the baselines are simplified versions of the authors' own data model; there is no head-to-head comparison with other connectome analysis tools. Per-query timings are given only in figures; the text gives only rough bounds. · noted in this summary
Who should read:Read this if you query or host large EM connectomes and want a graph-database data model, worked Cypher examples and timing evidence for neuron-, region- and synapse-level queries.
Reproducibility ledger
Nobody has reported trying to reproduce this paper yet. Did you replicate an experiment or run the code? Your report saves the next lab a week.
Sign in to file a reproducibility report.
Related papers
- Accelerated EM Connectome Reconstruction using 3D Visualization and Segmentation Graphs
Philip M. Hubbard, Stuart Berg, … Stephen M. Plaza·bioRxiv·Jan 17, 2020
- NEURD offers automated proofreading and feature extraction for connectomics
Brendan Celii, Stelios Papadopoulos, … Jacob Reimer·NaturePeer-reviewed·Apr 9, 2025
- The Connectome Interpreter Toolkit
Yijie Yin, Judith Hoeller, … Albert Cardona·bioRxiv·Sep 29, 2025
- mEMbrain: an interactive deep learning MATLAB tool for connectomic segmentation on commodity desktops
Elisa Catherine Pavarino, Emma Yang, … Yaron Meirovitch·Frontiers in Neural CircuitsPeer-reviewed·Jun 15, 2023
- NeuronBridge: an intuitive web application for neuronal morphology search across large data sets
Jody Clements, Cristian Goina, … Konrad Rokicki·BMC BioinformaticsPeer-reviewed·Mar 15, 2024
- Scalable graph analysis tools for the connectomics community
Jordan Matelsky, Erik C. Johnson, … William Gray-Roncal·bioRxiv·Jun 1, 2022