broadinstitute/axonet-neuromorpho-dataset
AxoNet NeuroMorpho Dataset Multi-view rendered images of neuronal morphologies from NeuroMorpho.org, prepared for training segmentation and multimodal (CLIP-style) models. Dataset Summary This dataset contains 7,158 curated neurons rendered from 24 viewpoints each, totaling approximately 164,000 images. Each neuron has: Binary masks (silhouette) Semantic segmentation masks (soma, axon, dendrites) Depth maps Rich metadata (species, brain region, cell type… See the full description on the dataset page: https://huggingface.co/datasets/broadinstitute/axonet-neuromorpho-dataset.
AxoNet NeuroMorpho Dataset
Multi-view rendered images of neuronal morphologies from NeuroMorpho.org, prepared for training segmentation and multimodal (CLIP-style) models.
Dataset Summary
This dataset contains 7,158 curated neurons rendered from 24 viewpoints each, totaling approximately 164,000 images. Each neuron has:
- Binary masks (silhouette)
- Semantic segmentation masks (soma, axon, dendrites)
- Depth maps
- Rich metadata (species, brain region, cell type, morphometrics)
Supported Tasks
- Semantic Segmentation: Predict neuron compartment labels (soma, axon, basal/apical dendrites)
- Depth Estimation: Predict relative depth from 2D projections
- Contrastive Learning: Train CLIP-style models for text-image retrieval
- Zero-shot Classification: Classify neurons by cell type or brain region using natural language
Dataset Structure
data/
curated_manifest.jsonl # 7,158 neurons (QC'd, species-balanced)
full_manifest.jsonl # 164,016 images (all views)
metadata.jsonl # NeuroMorpho metadata per neuron
images/
[neuron_id]/
[neuron_id]_0000_mask_bw.png # Binary mask
[neuron_id]_0000_mask.png # Semantic segmentation
[neuron_id]_0000_mask_color.png # Color-coded visualization
[neuron_id]_0000_depth.png # Depth map
... (24 views per neuron)
provenance/
curation_report.txt # QC statistics
download_log.jsonl # Download metadata
render_config.json # Rendering parametersData Fields
Curated Manifest Fields (curated_manifest.jsonl)
One record per neuron (7,158 total):
neuron_id: Unique NeuroMorpho.org identifier (integer)neuron_name: NeuroMorpho.org name stringswc: Path to SWC morphology filespecies: Species namebrain_region: List of anatomical regionscell_type: List of cell type classificationsarchive: Source archive/labphysical_Integrity: Data quality annotation
Full Manifest Fields (full_manifest.jsonl)
One record per rendered view (~164K total):
neuron_id: Neuron identifier (string)swc: SWC filenamemask: Path to semantic segmentation maskmask_bw: Path to binary maskdepth: Path to depth mapidx: View index (0-23)camera: Camera parameters (eye, target, up, fovy, etc.)qc_fraction: Quality control scoreview_tier: View classification (canonical, etc.)
Metadata Fields (metadata.jsonl)
Full NeuroMorpho.org metadata per neuron:
neuron_id: NeuroMorpho.org identifierspecies: Species (mouse, rat, human, etc.)brain_region: Brain region(s)cell_type: Cell type classificationarchive: Source archive/labmorphometrics: Quantitative measurements (soma surface, total length, etc.)
Species Distribution
Curation Process
- Download: Retrieved 11,708 neurons from NeuroMorpho.org
- QC Filters: Removed failed downloads, degenerate files, zero-bifurcation neurons, integrity errors
- Outlier Removal: Excluded morphometric outliers (|z| > 5.0)
- Species Balancing: Capped over-represented species (mouse, rat) at 2,000 each
- Final Dataset: 7,158 high-quality neurons
Usage
import json
# Load curated manifest (neuron-level, 7,158 neurons)
with open("data/curated_manifest.jsonl") as f:
neurons = [json.loads(line) for line in f]
print(f"Loaded {len(neurons)} neurons")
# Example: neurons[0] = {"neuron_id": 84160, "species": "African wild dog", ...}
# Load full manifest (image-level, ~164K views)
with open("data/full_manifest.jsonl") as f:
images = [json.loads(line) for line in f]
print(f"Loaded {len(images)} image records")
# Example: images[0] = {"neuron_id": "10024_ADLR.CNG", "mask": "..._mask.png", ...}
# Load metadata (full NeuroMorpho.org metadata)
metadata = {}
with open("data/metadata.jsonl") as f:
for line in f:
record = json.loads(line)
nid = record.get("neuron_id") or record.get("neuron_name")
metadata[str(nid)] = recordRelated Models
- broadinstitute/axonet-vae-stage1 - Stage 1 VAE for segmentation
- broadinstitute/axonet-clip-stage2 - Stage 2 CLIP for retrieval
Citation
@misc{axonet2025,
author = {Hall, Giles},
title = {AxoNet: Multimodal Neuron Morphology Embeddings via 2D Projections},
year = {2025},
publisher = {HuggingFace},
howpublished = {\url{https://huggingface.co/datasets/broadinstitute/axonet-neuromorpho-dataset}}
}NeuroMorpho.org Attribution
This dataset is derived from NeuroMorpho.org. Please cite:
Ascoli GA, Donohue DE, Halavi M (2007) NeuroMorpho.Org: A Central Resource for Neuronal Morphologies. J Neurosci 27:9247-9251.
License
- Dataset: CC-BY-4.0
- Source Data: Subject to NeuroMorpho.org terms of use
