Datasets¶
name label species backends annotations public
0 aedes Aedes (mosquito brain) Aedes aegypti cave flytable False
1 banc BANC (brain and nerve cord) Drosophila melanogaster neuprint, cave cave, flytable True
2 fanc FANC (female VNC) Drosophila melanogaster cave cave False
3 fish2 fish2 (larval zebrafish) Danio rerio neuprint neuprint False
4 flywire FlyWire (FAFB) public release Drosophila melanogaster neuprint, cave public, flytable True
5 flywire-production FlyWire (FAFB) production Drosophila melanogaster cave public, flytable False
6 hemibrain hemibrain Drosophila melanogaster neuprint neuprint True
7 malecns male CNS Drosophila melanogaster neuprint neuprint, clio True
8 manc MANC (male VNC) Drosophila melanogaster neuprint neuprint True
9 microns MICrONS (minnie65) public Mus musculus cave celltypes, mtypes, nucleus_svm True
aedes's only annotation source is flytable — its CAVE datastack has no annotation
table, so the cell typing lives in the lab's SeaTable instead. It is the only source,
and it is non-public, so annotations="auto" still resolves to it. See below.
Every one of these is also reachable by name:
Who made it, and may you have it?¶
A dataset is somebody's years of work, and connecto is the last thing that knows which one produced the numbers in your figure. So it carries the provenance:
hemibrain (Drosophila melanogaster)
Dense FIB-SEM reconstruction of much of the central brain of a female Drosophila -
one hemisphere, cropped, and no optic lobes. ~25,000 typed neurons and ~20M synapses.
Please cite:
Scheffer LK, Xu CS, Januszewski M, Lu Z, et al. (2020) A connectome and analysis of
the adult Drosophila central brain. eLife. doi:10.7554/eLife.57443
Xu CS, Hayworth KJ, Lu Z, Grob P, et al. (2017) Enhanced FIB-SEM systems for
large-volume 3D imaging. eLife. doi:10.7554/eLife.25916
See also:
website https://www.janelia.org/project-team/flyem/hemibrain
neuprint https://neuprint.janelia.org/?dataset=hemibrain:v1.2.1
Every field is data, so you can use it rather than read it:
ds.description # the blurb
ds.publications # tuple[Publication] - authors, year, title, journal, doi, url
ds.links # {"website": ..., "neuprint": ..., "codex": ...}
ds.public # False if a token alone will not get you in
ds.access # ...and what will
public=False is not a secret. Every dataset here is one you may read about; four
of them are ones connecto cannot fetch for you on a fresh token — flywire-production,
fanc, aedes and fish2. Saying so up front is kinder than letting you find out from
a 403 halfway through a script, and when the 403 does come, the dataset's access note
is in the error:
ConnectoAuthError: Your CAVE token is valid, but you do not have permission
for this resource (HTTP 403).
https://cave.fanc-fly.com
[fanc_production_mar2021]
Authenticated as: you@lab.org
Your groups: default
FANC (female VNC): Needs the `FANC_edit` group: join the FANC community and have
your Google account authorized before you generate a CAVE token. There is no public
FANC datastack - an unprivileged token gets a 403, and a new one will not help.
Two datasets cite nothing, and that is deliberate. aedes and fish2 have no paper,
and it would be easy to give them a plausible neighbour's — the Lee lab's mosquito
preprint describes a different, partial volume; there are two published larval
zebrafish connectomes and neither is known to be this one. Both would look right in a
methods section and both would be wrong, so connecto says it does not know.
Backend is not the same as dataset¶
This trips people up, so it is worth being explicit: a dataset can be served by more than one backend. BANC and FlyWire both are, and neuPrint is the default for both.
cn.BANC() # neuPrint banc:v888
cn.BANC(backend="cave") # CAVE materialization 888 - the same snapshot
These are not two datasets. They are two doors into one. BANC's neuPrint body IDs are valid CAVE root IDs — which is what makes them directly comparable, and is the basis of connecto's cross-backend conformance test.
But the doors are different widths, and connecto will not pretend otherwise. See A capability belongs to a door. The short version:
| neuPrint | CAVE | |
|---|---|---|
ROI hierarchy, by_roi= edges |
✅ | · |
chunkedgraph (update_ids, supervoxels) |
· | ✅ |
| proofreading, L2 cache | · | ✅ |
| FlyWire per-synapse transmitters | · | ✅ |
| BANC skeletons, meshes, segmentation | · | ✅ |
Everything a door cannot do raises, and the error names the door that can.
Drosophila¶
flywire — FlyWire (FAFB) public release¶
The whole brain of an adult female Drosophila at synapse resolution, proofread by the
FlyWire community from the FAFB serial-section TEM volume. The v783 release has 139,255
neurons and ~50 M synapses. Backends: neuPrint (flywire-fafb:v783b, the default)
and CAVE (flywire_fafb_public, versions 630 and 783).
Cite Dorkenwald et al. (2024) Neuronal wiring diagram of an adult brain, Nature, 10.1038/s41586-024-07558-y · Schlegel et al. (2024) Whole-brain annotation and multi-connectome cell typing of Drosophila, Nature, 10.1038/s41586-024-07686-5 · Zheng et al. (2018) A complete electron microscopy volume of the brain of adult Drosophila melanogaster, Cell, 10.1016/j.cell.2018.06.019 — the segmentation is FlyWire's, the electrons are FAFB's.
Find it flywire.ai · Codex · annotations
- Annotations come from a published GitHub TSV, not from CAVE. This is load-bearing:
it means
ds.ids("DA1_lPN")genuinely cannot compile to a CAVE server-side filter, and must be resolved client-side against the cached annotation frame. 34 columns, includingsuper_class,ito_lee_hemilineage,top_nt. Same on either backend. - Skeletons come from a precomputed bucket, on both backends — the CAVE public stack has no L2 cache (and CAVE's skeleton service needs one), and the neuPrint mirror has no skeleton store at all. It is a plain HTTPS bucket, so both doors read it and return the identical skeleton.
- Per-synapse neurotransmitters are CAVE-only. The neuPrint mirror's
Synapsenodes do not carry them, sosynapses(x, transmitters=True)raises there and tells you to usebackend="cave". It used to return a frame with nontcolumn and no error. - No
livequeries. The public release is a frozen release.
flywire-production — FlyWire (FAFB) production¶
The live, actively-proofread stack (flywire_fafb_production). Same brain, moving
target: root IDs change with every edit.
- Adds
liveandl2cache. Uses CAVE's skeleton service, not the precomputed bucket — those are published per materialization of the frozen release, and a live root ID is in none of them. - Not public. Needs group membership, not just a token. If you are not in the FlyWire group you get a 403, which connecto reports as a permission problem rather than sending you off to fetch a new token that would not help. See Credentials.
banc — brain and nerve cord¶
The first synapse-resolution connectome to hold the brain and the ventral nerve cord
of one animal — a female adult Drosophila, imaged by GridTape-TEM. 158,262 neurons at
v888. Served by both neuPrint (banc:v888, the default) and CAVE (mat 888).
Cite Bates et al. (2026) Distributed control circuits across a brain-and-cord connectome, Nature, 10.1038/s41586-026-10735-w
Find it wiki · Codex · neuroglancer
- Annotations live in a CAVE table (
codex_annotations) which is long-format — 1.84 M rows across 32 classification systems. connecto pivots it to wide and fetches it in chunks, because it will not come down in one request. - The neuPrint-backed handle still reads its annotations from CAVE, because that is where they are. Backend and annotation source are independent choices.
- The neuPrint door is connectivity-only, for now.
banc:v888hosts no skeleton store, and BANC publishes no flat volume — its only segmentation is CAVE's graphene one — so skeletons, meshes, cutouts and neuroglancer scenes are all absent there and raise, naming the CAVE door. (Left as a one-line deletion for when the server gains the stores.) Connectivity, synapses, annotations, somas and ROIs all work.
fanc — female adult nerve cord¶
GridTape-TEM volume and connectome of the ventral nerve cord of an adult female
Drosophila: ~45 M synapses and ~14,600 cell bodies, with leg and wing motor neurons
mapped to the muscles they drive. The female counterpart to manc, but a CAVE dataset
rather than a neuPrint one — an editable segmentation with a chunkedgraph, so root IDs
move under you and version="auto" earns its keep.
Cite Azevedo et al. (2024) Connectomic reconstruction of a female Drosophila ventral nerve cord, Nature, 10.1038/s41586-024-07389-x · Phelps et al. (2021) Reconstruction of motor control circuits in adult Drosophila using automated transmission electron microscopy, Cell, 10.1016/j.cell.2020.12.013 · Lesser et al. (2024) Synaptic architecture of leg and wing premotor control networks in Drosophila, Nature, 10.1038/s41586-024-07600-z
Find it FANC_auto_recon
- Not public. Needs the
FANC_editgroup: join the FANC community and have your Google account authorized before you generate a CAVE token. There is no public FANC datastack. Without it you get a 403, which connecto reports as a permission problem rather than a bad token. - Its synapse table calls the confidence score
score, notcleft_score. That is a column name, not a capability —min_score=works exactly as it does on FlyWire. - Annotations are long-format tags: one row per (neuron, tag), with the category in
tag2and the value intag. connecto pivots it wide, so each category (hemilineage,soma segment,publication, …) becomes a column. - A neuron carries several tags per category. Each MDN is tagged
MDN,MDN3andmoonwalker descending neuron, so itstypereads"MDN, MDN3, moonwalker descending neuron". All three are individually searchable —ds.ids("MDN"),ds.ids("MDN3")andds.ids("moonwalker descending neuron")all find it. - It pins to
latest, not to the one permanent materialization (v840). v840 never expires, but it predates most of the annotation work: 95 neurons have a cell type there against 4,265 today, andhemilineagedoes not exist at all. Current annotations win. - Its
l2cacheservice is flaky and 503s on its own. That does not take skeletons with it — connecto uses the CAVE skeleton service, which is a different service.
hemibrain¶
The dataset everyone has used. Dense FIB-SEM reconstruction of much of the central brain
of a female Drosophila: ~25,000 typed neurons, ~20 M synapses. neuPrint,
hemibrain:v1.2.1.
Cite Scheffer et al. (2020) A connectome and analysis of the adult Drosophila central brain, eLife, 10.7554/eLife.57443 · Xu et al. (2017) Enhanced FIB-SEM systems for large-volume 3D imaging, eLife, 10.7554/eLife.25916
Find it Janelia FlyEM · neuPrint
- It is a hemibrain. One side of the brain, cropped. Expect roughly half the neurons
of a whole-brain dataset, and expect somata to be missing — they are frequently outside
the volume, so
soma_x/y/zisNaNfor many neurons. - Has no
somaSidefield. The side is a suffix oninstance(DA1_lPN_R), which connecto derives and normalises toleft/right. - Has no
classcolumn, and connecto does not invent one. - Rich ROI hierarchy (231 ROIs, nested — use
primary=Truefor the non-overlapping set).
malecns — male CNS¶
The complete central nervous system — brain and ventral nerve cord — of a male
Drosophila: 166,691 neurons in 11,691 cell types, annotated with fruitless/doublesex
expression. The counterpart that makes synapse-resolution male-vs-female comparison
possible. neuPrint, plus optional Clio annotations
(pip install "connecto[clio]"; Clio itself needs a login).
Cite Berg et al. (2025) Sexual dimorphism in the complete connectome of the Drosophila male central nervous system, bioRxiv, 10.1101/2025.10.09.680999 — still a preprint; there is no journal version yet.
Find it male-cns.janelia.org · neuPrint
There is no optic-lobe dataset
There used to be. It was the optic lobes of this specimen, released on their own —
so it was two names for one dataset, and the narrower one could only ever hand you
fewer neurons under a different set of body IDs. Registering both invited a silent
mismatch of exactly the kind connecto exists to prevent. Use malecns and select the
optic-lobe ROIs.
manc — male adult nerve cord¶
Dense FIB-SEM connectome of the complete ventral nerve cord of an adult male
Drosophila (~23,000 neurons), with motor, descending and ascending neurons,
hemilineages and predicted transmitters. neuPrint. The counterpart to CAVE-backed
fanc.
Cite Takemura et al. (2024) A connectome of the male Drosophila ventral nerve cord, eLife, 10.7554/eLife.97769 · Marin et al. (2024) Systematic annotation of a complete adult male Drosophila nerve cord connectome, eLife, 10.7554/eLife.97766 · Cheong et al. (2025) Transforming descending input into motor output, eLife, 10.7554/eLife.96084
Find it Janelia FlyEM · neuPrint
- Uses
LHS/RHSfor side, where hemibrain and maleCNS useL/R. connecto normalises both toleft/right. typecoalescestype→systematicType→instance, so neurons with only a systematic name still get one.
Mus musculus¶
microns — MICrONS (minnie65) public¶
A cubic millimetre of mouse visual cortex — ~1.4 × 0.87 × 0.84 mm of serial-section EM
spanning all six layers of VISp and neighbouring higher visual areas, with >200,000 cells
and ~0.5 billion synapses, co-registered with two-photon calcium imaging of ~75,000
neurons in the same awake animal. Backend: CAVE (minnie65_public).
Cite The MICrONS Consortium (2025) Functional connectomics spanning multiple areas of mouse visual cortex, Nature, 10.1038/s41586-025-08790-w · Schneider-Mizell et al. (2025) Inhibitory specificity from a connectomic census of mouse visual cortex, Nature, 10.1038/s41586-024-07780-8
Find it microns-explorer.org · BossDB
Two things are different enough to call out:
It ships with fields={}. No type, no side, no class. This is deliberate.
MICrONS's cell types live across several tables with genuinely different semantics —
cell_type_local, aibs_metamodel_mtypes_v661, nucleus_svm — and they disagree.
Choosing one to be the type would be a scientific judgement smuggled in as a library
default. So connecto declines:
ValueError: MICrONS (minnie65) public has no `type` column configured. Pass
`fields={'type': (...)}` to the dataset, or query a raw column with 'column:value'.
Say what you mean, and it is a one-liner:
A root ID can have more than one nucleus. Merge errors are common in a dataset this
size, so do not assume id is unique in the annotation frame.
Danio rerio¶
fish2 — larval zebrafish¶
A larval zebrafish connectome, on its own neuPrint server
(neuprint-fish2.janelia.org). A separate deployment — a token that works for
neuprint.janelia.org is not valid here, which is why auth_status() probes every
server rather than one.
Cite — nothing. This is the one dataset with no publication to point at: no paper, no preprint, no project page names it. There is a published larval zebrafish connectome and another forthcoming one, and it would be easy to attach either; neither is known to be this. connecto would rather say it does not know than put the wrong paper in your methods section.
Find it neuprint-fish2.janelia.org
- Not public. The server issues its own tokens and access appears to be granted per account. Ask Janelia.
- Unversioned: the dataset string is just
fish2, with no:vNsuffix. connecto handles both forms.
Aedes aegypti¶
aedes — mosquito brain¶
An EM volume of the brain of the yellow fever mosquito, from the Wei-Chung Lee lab — the
substrate for an in-progress whole-brain connectome (a Wellcome Discovery Award, with
Jefferis, Marin and Younger). CAVE (wclee_aedes_brain).
Cite — nothing yet. The Lee lab has a published mosquito preprint, but its data availability statement describes a different, partial volume (the posterior antennal lobes, served over CATMAID) and never mentions this datastack. So connecto cites none rather than the wrong one.
Find it project announcement
- Not public. The datastack is undocumented and appears to be restricted to project members. Ask the Lee lab or the whole-brain connectome project.
Its annotations come from FlyTable, not CAVE. The datastack ships a synapse table
and a nucleus table and nothing else — no column that means "type" or "side". The
project keeps its cell typing in FlyTable, the lab's SeaTable database: the aedes_main
table of the aedes base, keyed by root ID. So connecto reads annotations from there:
aedes = cn.Aedes()
aedes.connectivity.edges(root_ids) # from CAVE
aedes.ids("class:KC") # from FlyTable — Kenyon cells
aedes.ids("superclass:visual_projection")
aedes.annotations.get().columns # type, side, class, nt, status, + every raw column
FlyTable is lab-internal: it needs a SEATABLE_TOKEN on top of CAVE access, and there
is no public alternative. Because it is the only source, annotations="auto" still
resolves to it rather than giving up — and if you have no token, the fetch says so
plainly rather than handing back an empty frame:
aedes.ids("class:KC") # ConnectoAuthError: No SeaTable credentials found.
# Set one with: cn.set_token("seatable", "<token>")
aedes_main carries both a fine class (KC, CX, ALSN, …) and a coarse superclass
(cb_intrinsic, cb_sensory, …); the fine one is the canonical class, the coarse one
falls in behind it and both stay queryable. Somas still come from the nucleus table in
nanometres (aedes.somas), not from the table's voxel-space soma_xyz column, which
passes through untouched.
Two things worth knowing:
- It uses the
synapsestable, not the newersynapses_v2.synapses_v2is 23% larger and more recent, but CAVE has it registered at the datastack's 16×16×45 voxel size while its coordinates are already in nanometres. connecto asks CAVE for nanometres, so the server scales them up again and hands back a mosquito brain 9.9 mm deep. Edges would be fine; every synapse position would be silently wrong by 16–45×. Correct beats bigger. If the registration is fixed upstream, this becomes a one-line change. - Every materialization expires within weeks, so there is no stable snapshot to pin
to and the default version is
latest. Root IDs churn (~2%/month), which is whatversion="auto"is for.
Anything else¶
You do not need a class. See Adding a dataset: