CANDID Canal–tooth ANalysis for Decision-support in Impacted-molar Dentistry Research software · not a medical device

CBCT · mandibular third molar and inferior alveolar canal

It measures the distance. When it cannot, it says so.

CANDID segments the mandibular third molar and the inferior alveolar canal on a CBCT volume, computes the shortest surface-to-surface distance in millimetres, grades that proximity anatomically, and withholds the number when its own topology and anatomy checks fail. It runs on your machine. The scan does not leave it.

The same scan. Two answers.

One real CBCT — a 167-slice DICOM series never used in training or in any evaluation — put through the identical measurement engine twice. Only the segmentation model differs.

Public baseline model

nnU-Net v2, ToothFairy2 Dataset112, as published

No measurement

RED — withheld

no inferior alveolar canal segmented

There was no canal to measure to, so no number was reported and no overlay was drawn. The reason is the output.

CANDID

nnU-Net v2, side-merged relabel of the same 480 public volumes (Dataset113)

1.50 mm

GREEN — reported

topology and anatomy checks clean

Proximity grade (anatomical): high. Canal lingual to the tooth, overlying cortex thinned, 4.55 mm of close approach. Tooth 48, right.

CANDID's actual output for that scan, unretouched. Orange is the third molar, blue the inferior alveolar canal, and the red line is the closest approach, with rings on the tooth-side and canal-side points. Each panel shows the line projected into that plane. The baseline model produced no equivalent picture for this scan, because it segmented no canal to draw.

The overlay is checked against the engine before it is shown: the tool recovers both endpoints back out of the rendered figure and refuses to publish a picture that disagrees with the number. On this case both endpoints came back at zero voxels of offset.

How it works

Three steps, one command.

01

Drop a scan in

Point it at a DICOM folder, or at an .mha or .nii.gz volume. It reads the series and resamples to an isotropic 0.3 mm grid before anything else happens.

02

It segments, then measures

An nnU-Net v2 model segments the mandible, the canal and the molars. The measurement engine then converts those masks to marching-cubes surfaces and computes the minimum tooth-to-canal surface distance at sub-voxel precision. The engine is checked against synthetic known-answer phantoms that ship as a permanent self-test — 16 checks that run without any data.

03

It reports, or it withholds

Rule-based confidence flags are computed from the segmentation itself. GREEN shows the number; AMBER shows it with a badge; RED withholds it and reports the reason instead. Every rule is plain, editable logic with frozen thresholds — there are no learned weights anywhere outside the segmentation stage.

What comes out

A distance in millimetres, an anatomical proximity grade, the confidence flag with its reason, a three-plane colour overlay marking the closest approach, and a machine-readable report.json carrying the full provenance — including where the side label came from and whether the anatomy corroborated it.

Evidence

Ten fresh third molars, never previously measured by the assessor, read blind in a single session without sight of any tool output. The sheet has been compared once and is spent.

0.23 mm

median absolute error against the expert, n = 10

Public baseline on the identical teeth: 1.43 mm

8 of 8

expert-identified contacts detected, within the pre-registered ±0.3 mm tolerance — with no false contacts

Public baseline on the identical teeth: 3 of 8

p = 0.0039

paired Wilcoxon signed-rank on the within-tooth absolute errors (W = 1, n = 10 pairs; nine teeth improved, one worsened)

Describes how consistent the improvement was on these ten teeth — not that it generalises

Below the expert's own repeatability

Four repeat teeth were hidden, unlabelled, in the same reading sheet. Blind to their own earlier values, the assessor differed from themselves by a mean of 0.79 mm, and by 2.39 mm at worst. Every one of the tool's ten errors — largest 0.88 mm — falls inside that range, against six of ten for the baseline. The tool's median error therefore sits below the expert's agreement with themselves, so further gains on these cases could not be distinguished from rater noise under this reference.

No test is reported on those four repeats. At n = 4 the smallest attainable two-sided exact p is 0.125, so a test could not return a meaningful result, and none is manufactured.

Trained on public data only

Segmentation was trained on the 480 publicly released ToothFairy2 CBCT volumes and nothing else. No case, mask or expert value from the patient cohort entered training or validation — the two bodies of data never mix. The segmentation is adapted from published public-data models and is not presented as a contribution; the measurement engine and its governance are.

It withholds

On the development set it returns RED and reports a reason rather than a number when its topology or anatomy checks fail — a missing third molar, no canal anywhere, no canal on the measured side, a canal that stops behind the tooth and so cannot reach the interface, or a canal too short to be real. Abstention is asymmetric by design: it is always cheaper to say nothing than to say something false about a nerve.

What it is not

These boundaries are not disclaimers bolted on at the end. They are what the evidence does and does not support, and they are enforced in the code and in the wording of every report the tool writes.

It does not predict nerve injury

CANDID reports a proximity grade (anatomical): a description of where the canal lies relative to the tooth. The data behind it contain no postoperative outcomes, so no claim about nerve injury, its probability or its prevention is made or implied.

It is not a certified medical device

This is research software, built for an MClinDent (Oral Surgery) thesis at UCL Eastman Dental Institute. It carries no CE mark, no UKCA mark and no FDA clearance, and it is not for clinical use without appropriate regulatory clearance.

It does not decide

Output is advisory. Where the tool suggests a pathway it says so as a suggestion, with its reasons in plain text next to it. Management remains the surgeon's decision.

It is not a validation at scale

The confirmatory evidence is ten fresh cases measured blind by one expert. That is a verification. It is reported as one.

It does not upload your scan

There is no upload path on this site, deliberately, and the tool itself makes no outbound connection. The reasoning is set out below.

Two ways in

See it work on a case we provide, or run it on a scan of your own. Neither involves sending us anything.

Try it

A sample case, already measured

These are four of the ten fresh cases from the blind verification, shown exactly as the tool rendered them. For each one you can see what the tool measured, what the public baseline measured on the same scan, and what the expert measured by hand without sight of either.

Choose a case
CANDID
0.00 mmcontact · flag GREEN
Expert, blind
0.22 mmcontact
Public baseline
2.95 mmsame scan, public model

Case A76 L · tooth 38, left · proximity grade (anatomical): high · canal buccal to the tooth.

Tooth and canal in contact. The baseline put them 2.95 mm apart.

CANDID
0.25 mmcontact · flag GREEN
Expert, blind
0.11 mmcontact
Public baseline
1.22 mmsame scan, public model

Case A100 R · tooth 48, right · proximity grade (anatomical): high · canal inter-radicular to the tooth.

Canal running between the roots. Both readers call contact.

CANDID
0.74 mmno contact · flag GREEN
Expert, blind
0.04 mmcontact
Public baseline
3.71 mmsame scan, public model

Case A1478 R · tooth 48, right · proximity grade (anatomical): moderate · canal inter-radicular to the tooth.

The hardest case in the set: the field of view crops the buccal mandible. This is the tool's largest error among contact cases, 0.70 mm — still inside the expert's own repeatability. Note the two contact definitions pulling apart here: 0.74 mm counts as a detected contact under the pre-registered ±0.3 mm tolerance, which is how it enters the 8 of 8 above, but it sits outside the strict ≤ 0.5 mm band, so the tool's own contact flag reads false. The two are reported separately and never mixed.

CANDID
1.51 mmno contact · flag GREEN
Expert, blind
0.63 mmno contact
Public baseline
7.11 mmsame scan, public model

Case A439 R · tooth 48, right · proximity grade (anatomical): high · canal lingual to the tooth.

Neither reader calls contact. The baseline reads 7.11 mm — 6.48 mm further from the tooth than the expert, the dangerous direction.

Draft status: the downloadable sample volumes are not published yet. This page shows the tool's real, unretouched output for these cases; releasing the CBCT volumes themselves needs an information-governance decision that has not been taken. Until it is, the try-it demo is what you see here.

Run it locally
Option 1 · simplest In preparation — not yet available to download

Desktop app for Windows

A single installer that carries the model with it: choose a DICOM folder, choose the side, get the report — no Python, no command line, no server. It is listed first because it is the right first thing to try, and it is marked honestly because it does not exist yet.

What is holding it up is not packaging but weight. The segmentation model is 5.1 GB and expects a CUDA GPU; on a laptop without one, a single scan runs in tens of minutes rather than a couple. Shipping an installer that technically runs but takes half an hour per case would be a worse answer than saying it is not ready.

Option 2 · needs the model Weights not released

Your scan, your machine

This is the product, and it is one command over a folder of DICOM files: nothing is transmitted, the tool reads the scan, runs the model locally and writes an HTML report and a report.json next to it. But it needs the trained weights, and those are not released yet — so this path is open today only to someone who already has them. Until the release, the command below will stop immediately and tell you the model is missing rather than failing somewhere deep inside the segmenter.

# works today, no model and no scan needed
pip install -r requirements.txt
python test_geometry.py

# needs the segmentation stack AND the trained weights
pip install -r requirements-seg.txt
python candid.py /path/to/dicom_folder \
    --side right --compare

The first block genuinely works on any machine: requirements.txt carries the geometry and grading stack only, and test_geometry.py runs 16 known-answer checks against synthetic phantoms with no data and no model at all. The second block does not work yet for anyone outside the project — requirements-seg.txt pins torch and nnU-Net to whatever the model release specifies, and that release does not exist publicly. --side is required, not optional: side is not derivable from these volumes, so the tool refuses to assume one.

--compare additionally segments the same scan with the original public model and measures that too, so the report shows what the answer would have been otherwise. That contrast is the point of the project.

Option 3 · from source Works today

Clone it and read it

The measurement engine, the confidence rules and the whole test suite are plain Python with no learned weights outside the segmentation stage. Every threshold sits in one config file. The eleven test suites run without any scan data at all, on synthetic phantoms with known answers, so you can check the geometry is right before you trust it on a patient.

What you need

Python 3.10 or later for the parts that run anywhere. For measurement: a CUDA GPU, the segmentation stack, and the 5.1 GB of trained weights — which are not in the repository and have not been published. There is no download link on this page because there is nothing yet to link to. It is not a laptop tool, and today it is not yet a stranger's tool either.

Why there is no upload button

Accepting patient CBCT over the web would require a regulatory and data-processing position this project does not yet have: a lawful basis, a defined controller and processor with an agreement between them, a security position for identifiable imaging, and a route through the sponsoring institution. None of that exists today, so the honest design is no upload at all. The tool runs where the data already lawfully sits.

This page makes no external request of any kind. No web fonts, no scripts, no stylesheets, no images from anywhere else, no analytics, no cookies, no tracking. Everything you are looking at is inside the single HTML file, and it runs without JavaScript.

Limitations

Stated here rather than in a footnote, because they change how the numbers above should be read.

Left and right come from the referral, not the image

These volumes carry no patient coordinate frame — every image has an identity direction matrix, a property of the upstream DICOM conversion that pre-dates this pipeline — so left and right are not computable from the image. Side identity comes from the referral, and every report says so in a side_provenance field. The measurements themselves are unaffected, but across the wider 65-tooth set the referral side disagreed with the adjudicated side on 16: a wrong-site reporting risk in deployment. All ten verification cases contain exactly one third molar, so the same tooth is measured whichever side is passed.

The confidence flag is the weakest part

The earlier frozen flag over-withheld badly on these same fresh cases, marking six of ten outputs RED despite absolute errors of 0.11 to 0.88 mm — it was describing the old model's failure signature, not the new segmentation. The recalibrated flag set now shipping, which is what produced the GREENs on this page, was designed on development and synthetic data only and has had no gated evaluation on held-out data.

The shipped configuration is a single fold

A five-fold ensemble is trained and improves the aggregate figures — median error 0.23 to 0.18 mm on these ten teeth — but on the one scan whose field of view crops the buccal mandible it moves 0.74 to 0.93 mm, leaving the ±0.3 mm tolerance, so contact detections fall from 8 of 8 to 7 of 8. Since the claim is about not missing contacts, fold 0 ships. That is a judgement, not a further evaluation.

The cohort is enriched, and the thresholds are provisional

The referral cohort is high-risk-enriched by selection — around 74% of referrals cite a radiographic risk sign — and the expert-measured sets contain no distance above 4 mm, so behaviour at distant canals is unassessed by design. The clinical thresholds (contact ≤ 0.5 mm, close approach ≤ 2 mm) are provisional pending clinical-team sign-off, and every gate is frozen against them, so revising one would change outcomes and not only wording.

The statistics are post-hoc

Every test quoted on this page is post-hoc and describes a within-unit change on a fixed set of teeth. None was pre-registered and none is a test of generalisation to a population. Separately, the project ran a pre-registered evaluation budget on a held-out set; two of its three permitted evaluations were spent and both failed their gates, and both are reported in full in the paper rather than dropped.

Where this is up to

A validation study, then a repair, then a blind re-test. Everything under Delivered has happened; everything under Ahead has not. The dates are the dates.

Delivered

  1. The pipeline, frozen

    An end-to-end measurement pathway, then frozen and hash-pinned before any reference measurement was taken, so it could not be tuned to the answer.

  2. A blinded reference standard

    768 cases reviewed and adjudicated, distilled to 65 third molars hand-traced in three dimensions, blind to all tool output, with the side verified independently. Intra-observer re-read 0.035 mm.

  3. The baseline audited

    Agreement was absent (ICC 0.03) and the error ran one way: the tool read the tooth 2.36 mm farther from the canal than it was, in 62 of the 65 teeth. That is the reassuring direction, which is the dangerous one.

  4. The mechanism found

    Under-segmentation of the root apex and canal wall at the point of closest approach. Error scaled 5.6-fold with how much correction an assessor judged the mask to need — so the failure is visible in the segmentation itself.

  5. Two data-integrity faults

    Side labels scrambled on bilateral referrals, and identical distances emitted for both sides of every two-sided case. Neither was visible to any internal check; both were found by verifying laterality independently.

  6. Retrained, on public data only

    The segmenter was retrained on a side-merged relabelling of the 480 public ToothFairy2 volumes. No study case, no patient scan and no expert measurement entered training.

  7. Two failed gates, reported

    Of three pre-registered evaluations, two were spent and both failed their gates. They are published rather than buried; the third is still unspent.

  8. Re-tested blind

    On ten fresh cases measured blind by the assessor, median absolute error was 0.23 mm against 1.43 mm for the frozen baseline on the same teeth — a six-fold reduction. This is the confirmatory step; the larger evaluation set is already drawn and still untouched.

  9. Thesis submitted

    Submitted to UCL Eastman Dental Institute on 1 September 2026, and under examination.

  10. Runs on an ordinary machine

    Measured at 1 min 13 s per case with no graphics card, on a 40 mm field of view of the kind a referral scan gives. 236 MB of weights and an eight-step install.

Ahead

  1. Segmentation weighted at the interface

    Train for the few voxels that decide the distance rather than for average overlap. The hand-traced annotations this study produced are the training data that refinement needs.

  2. Orientation and laterality safeguards

    An orientation frame derived from each scan instead of assumed, and the side carried explicitly from the referral and checked against the image, so neither integrity fault can recur.

  3. A confidence signal that ships

    The tool already withholds a number it cannot support. The next version should decide that from the segmentation itself, because the study showed a human can.

  4. Faster expert annotation

    Promptable foundation models were assessed for this and set aside: they have no native three-dimensional segmentation, and the best published interactive result for this canal carries about 2.3 mm of boundary error, several times the threshold that matters. The route is a three-dimensional interactive tool aimed at the coarse failures, with hand tracing still setting the standard at the interface.

  5. A larger, multi-reader standard

    53 cases of the blinded package are still untouched and a 46-tooth hold-out is still unspent, so the standard can grow without re-randomisation. A second blinded assessor is the single most valuable addition.

The goal

A measurement a surgeon can rely on at the distances where management is decided — or, when the imaging will not support one, a refusal that says so plainly. Not a number that is merely confident.

Publications

Each item carries its current status. The thesis is submitted and under examination; the manuscript is written, with its full evaluation record, and is ready to go out.

  • Submitted 1 Sep 2026

    Validating automated measurement of the mandibular third molar to inferior alveolar canal relationship on CBCT

    I. Alroudhan. MClinDent (Oral Surgery) thesis, UCL Eastman Dental Institute. Supervisor: Prof Rachel Leeson.

    Under examination. The validation described across this page is the work reported in it.

  • Pending submission

    Automated measurement of the third molar to inferior alveolar canal relationship: audit, public-data retraining and blind verification

    Manuscript prepared, with a STARD checklist and the full evaluation record. Venue under consideration between a specialty surgical and a dentomaxillofacial radiology journal.

    Next step is the venue decision, then submission. The status above moves when that does.

Preprints, data and code will be linked here as they become available.

Who made this, and from what

Two people built it, one supervised it, and it stands on public data and open software that other people made. Naming which part is whose is not a courtesy — an examiner and a reviewer will both ask.

People

  • Ibrahim AlroudhanStudy design, clinical framing, the reference-standard protocol and the interpretation. Performed the blinded expert assessments that the tool is measured against.
  • Adam AlroudhanImplemented the measurement pipeline, its evaluation harness, and the figure- and table-generating scripts.
  • Prof Rachel LeesonAcademic supervision.

Data

  • ToothFairy2480 public CBCT volumes, and the only data the segmentation model was ever trained on. No study case, no patient scan and no expert measurement went into training — the separation is the point, not a detail.
  • The referral cohortA retrospective cohort of about 1,669 referred patients, from which 768 cases were reviewed and a 65-tooth blinded reference standard distilled. It is not public, it is not distributed with the tool, and no part of it appears on this page beyond the four cropped sample overlays.

Software this is built on

  • nnU-Net v2 — Isensee et al., Nature Methods 2021;18(2):203–211. The segmentation framework. Imported, not a contribution of this work.
  • 3D Slicer — Fedorov et al., Magnetic Resonance Imaging 2012;30(9):1323–1341. Used for mask review and the blinded expert measurements.
  • Segment Anything (Meta) — used only in an off-path annotation prototype, never in the measurement path. Assessed again in September 2026 for speeding up expert annotation and set aside: no native three-dimensional segmentation, and interactive results on this canal are not precise enough at the interface to serve as ground truth.

The segmentation is imported and improved, not invented here. What is new is the measurement engine that turns masks into a millimetre, and the governance that decides when that millimetre may be shown at all.

Feedback and suggestions

This is research software under active development, and the most useful thing anyone can send is a case where it got the answer wrong. Disagreement is data.

  • Something looks wrong

    A distance that does not match what you see on the scan, a case the tool refused that it should have measured, or one it measured that it should have refused. Say what you expected and what you got.

  • A suggestion

    An output that would be more useful in a different form, a variable worth adding, or a step in your workflow this does not fit.

  • Collaboration or access

    Research collaboration, questions about the method, or running the measurement on your own data. A second blinded assessor would be especially welcome.

Write to Ibrahim@candidlabs.org

On GitHub github.com/ibrahimalroudhan-cmyk