Session 5 · Similarity / NBLAST
What's the morphological match in another dataset?
NBLAST via VFB / navis; rank matches with scores across datasets.
Key question: What’s the morphological match to this neuron in another dataset?
Route A: Python API
First time? Set up Python → Open this session in Colab
NBLAST scores are pre-computed — one call returns the ranked table with dataset provenance.
from vfb_connect import vfb
m = vfb.get_similar_neurons("VFB_jrchjtdb",
similarity_score='NBLAST_score',
return_dataframe=True)
print(len(m), "neighbours")
print(m[['id', 'score', 'label', 'source_id']].head(7))
Verified output (Aug 2026):
107 neighbours
id score label source_id
VFB_jrchjtde 0.80 DA1_lPN_R (FlyEM-HB:754534424) neuprint_JRC_Hemibrain_1point2point1
VFB_jrchjtdg 0.76 DA1_lPN_R (FlyEM-HB:754538881) neuprint_JRC_Hemibrain_1point2point1
VFB_jrchjtdf 0.76 DA1_lPN_R (FlyEM-HB:1734350788) neuprint_JRC_Hemibrain_1point2point1
VFB_jrchjtda 0.75 DA1_lPN_R (FlyEM-HB:722817260) neuprint_JRC_Hemibrain_1point2point1
VFB_jrchjtdd 0.75 DA1_lPN_R (FlyEM-HB:5813039315) neuprint_JRC_Hemibrain_1point2point1
VFB_00101201 0.68 Uniglomerular mALT DA1 lPN#R1 (FAFB:57323) catmaid_fafb
VFB_fw036329 0.68 AL.MB_CA.111 (FlyWire:720575940605102694) flywire783
Sisters in the same volume top the list (0.75–0.80); the first cross-dataset matches arrive at 0.68, and morphologically similar other types appear further down with no clean score gap — sort, inspect, judge.
Route B: R (via reticulate)
First time? Set up R + vfb_connect → Open this session in Colab (R)
m <- vfb$get_similar_neurons("VFB_jrchjtdb",
similarity_score = "NBLAST_score",
return_dataframe = TRUE)
nrow(m)
head(m[, c("id", "score", "label")], 7)
Verified output (Aug 2026): 107 neighbours; hemibrain sisters at 0.80–0.75, then VFB_00101201 (FAFB) and VFB_fw036329 (FlyWire) tied at 0.68 — the same table as the Python route, ready for dplyr. Split it by dataset with m |> dplyr::mutate(dataset = sub("_.*", "", source_id)) and compare score distributions per volume.
Route C: MCP Tool
First time? Connect the VFB MCP to your AI →
NBLAST similarity is served ranked, with dataset provenance on every row:
You: Run an NBLAST query for neuron VFB_jrchjtdb and return the top matches with scores across datasets.
Assistant →
run_query(VFB_jrchjtdb, SimilarMorphologyTo)→ 107 neighbours, score-sortedAssistant: Top matches: DA1_lPN_R (FlyEM-HB:754534424) 0.80, DA1_lPN_R (FlyEM-HB:754538881) 0.76, DA1_lPN_R (FlyEM-HB:1734350788) 0.76, DA1_lPN_R (FlyEM-HB:722817260) 0.75, DA1_lPN_R (FlyEM-HB:5813039315) 0.75 — all hemibrain. The first cross-dataset hits arrive at 0.68: Uniglomerular mALT DA1 lPN#R1 (FAFB) and AL.MB_CA.111 (FlyWire). Scores fall smoothly, and morphologically similar other types appear further down — there is no clean threshold, so treat the ranking as evidence to inspect, not a verdict.
Ask “load the top 5 into the 3D viewer” and the assistant can build the scene URL from the IDs in the same result.
Example Prompt
Run an NBLAST query for neuron VFB_jrchjtdb and return the top matches with scores across datasets; note which come from BANC or male-CNS.
Route D: VFB Chat
Nothing to install — tips before you start →
Chat can help you find similar neurons.
Optimized prompt: Ask for top matches with scores and dataset names.
Route E: 3D Circuit Browser
Nothing to install — how the viewer works →
NBLAST similarity is a stored query in the browser — no R, no registration, instant answer.
Open the query neuron. Use the button below for hemibrain DA1_lPN_R (FlyEM-HB:1734350908) (VFB_jrchjtdb), aligned to the JRC2018Unisex template so every match can be compared in the same space.
Find the query. Click the Queries for DA1_lPN_R… bar and hover Neurons with ▸:

Read the ranked matches. 107 neighbours, Score column pre-sorted (top hits ≈0.8). Type, dataset (Template_Space) and imaging technique come along for each row, with thumbnails.

Overlay the top hits. Tick the query neuron plus the top few matches — they load aligned in the 3D viewer so you can see why they scored high, and where the lower-scoring ones diverge.
Worth noticing: scores fall smoothly with no clean threshold, and a morphologically similar different type (DL3 lPN, ≈0.65) sits among the DA1 matches — sort, look, and judge rather than trusting a cut-off.
Try It Next
- Does the ranking replicate? Run the identical query from another hemibrain sister,
VFB_jrchjtdd— it returns ~112 neighbours. Do the FlyWire and FAFB matches keep their order? - Find the impostor: somewhere below the DA1 matches sits DL3_lPN_R (a different glomerulus) at ≈0.65 — locate it in your table and compare its score with the genuine cross-dataset matches above it. What threshold would you have had to pick?
- Close the loop in 3D: tick the query neuron plus the 0.68 FlyWire match in the browser and rotate — can you see why the score dropped from the 0.80 in-dataset match?
When to Reach for Which Route
- API when scores and thresholds matter for your analysis
- MCP/Chat for a fast shortlist of candidates
- 3D Browser for interactive similarity exploration