Skip to content

About

What each SlicerAutomatedDentalTools tool actually does, read from the code: one pipeline page per tool plus a user guide, in five languages

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

87 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SADT Atlas

How each tool in SlicerAutomatedDentalTools actually works, tool by tool, read from the code rather than from the documentation.

One page per tool, organised around the pipeline: what is computed, what a network predicts, at which point the model is called, what the preprocessing does, what comes out.

This is neither the extension's official documentation nor a user manual. It is a dated survey, September 2026, of what the code does as of that date.

Reading it

A static site: no dependencies, no build step needed to view it.

python3 serve.py

This serves the site on every interface, filtered by an allowlist of addresses read from serve.conf. The repository ships a template only, serve.conf.example: copy it to serve.conf and put your own addresses in. Without that copy the server falls back to the template: the machine itself and the Tailscale tailnet, nothing more.

The file is reloaded on the fly: add an address, save, and the rule applies to the next request, no restart. An invalid line is reported in the log without bringing the list down. The site's content is read from disk on every request, so a page regenerated by build.py is visible immediately.

This filter is application-level, not a firewall: it answers 403 to addresses that are not listed, but the port stays open on the interfaces. For real isolation, pair it with a ufw/iptables rule.

For purely local use, python3 -m http.server 8080 still does the job, and index.html opens over file:// too, search included.

What is in it

The site has two halves and five languages: English, French, Portuguese (Brazilian), Korean and Thai.

  • The Guide addresses whoever uses the tools: what it is for, what to supply, what to check. No implementation detail.
  • The Atlas addresses whoever reads or modifies the code: the full pipeline, what is predicted, what is computed, and what reading the code brought to light.
index.html              language picker
assets/                 style, script, search index (shared)
<Tool>/                 sources: the original .md, the papers collected
en/  fr/  pt/  ko/  th/
├── index.html          Atlas home
├── findings.html       every finding, collected
├── glossary.html       the glossary
├── guide/
│   ├── index.html      Guide home
│   └── <Tool>.html     one guide per tool
└── <Tool>/
    ├── <Tool>.html     the pipeline page
    └── SOURCES.html    the bibliography, with DOIs

The markdown sources and the papers stay at the root: they belong to no language. Only the rendered pages are duplicated.

assets/themes/ interchangeable style overlays: see below
nav.py the single definition of the navigation, and the THEME variable. The sidebar is identical across a hundred-odd pages: never edit it inside an .html, it will be overwritten
build.py rewrites the sidebars, generates the search index, the findings and the guide indexes, per language
i18n.py translation tracking: which pages lag behind English, plus a structure check
i18n.json the fingerprint of the English version each translated page is aligned with

After editing a page:

python3 build.py

The generated files are committed on purpose: a clone must work without running anything.

Changing the style

The base stylesheet assets/style.css is fully tokenised: colours, fonts, radii and widths are CSS variables. A theme is an overlay that redefines those variables and a few shape rules: it duplicates nothing.

To try one, a single line in nav.py:

THEME = None          # base stylesheet alone
THEME = "ardoise"     # technical, dark, monospace, sharp corners
THEME = "papier"      # editorial, serif, rules rather than frames
THEME = "clinique"    # application-like, bluish, shadowed cards, rounded corners
THEME = "labo"        # lightbox: cold black background, luminous accents, halos
THEME = "carnet"      # graph paper, ink, serif, vermilion
THEME = "signal"      # contemporary: large type, solid shapes, plenty of air

then python3 build.py, which adds or removes the link across all 141 pages.

To compare without editing the file, the option wins for the duration of one run:

python3 build.py --theme papier     # try it
python3 build.py --theme none       # back to the default

Each theme handles its own light and dark variants.

The sidebar is only ever modified in nav.py. build.py then rewrites it into every page. That is what keeps a hundred-odd copies from drifting apart.

Languages

English is the source language. Changes are made in en/ only; fr/, pt/, ko/ and th/ are translations, brought up to date in batches rather than on every change. Between two batches they lag behind, and that is deliberate.

python3 i18n.py stale            # per language: English pages modified since the last translation
python3 i18n.py check pt         # same structure as English: tags, ids, links, code
python3 i18n.py stamp pt         # after translating: record that pt/ is up to date

The fingerprint ignores whatever build.py rewrites (sidebar, references, videos): only a change to written content makes a page "stale".

What is not in the pages gets translated in the code: navigation labels and tool summaries in nav.py, bibliographic notes in papers.py, the text of generated pages in build.py, interface labels in assets/site.js.

To add a language: add it to LANGS and LANG_NAMES in nav.py, then fill in every per-language dictionary (grep -n '"pt"' *.py assets/site.js lists them all), translate the pages, and run python3 i18n.py stamp <language>.

Page conventions

  • Predicted vs computed is the central axis. Badges mark it throughout, and the diagrams outline in purple every step where a network is involved.
  • The callouts distinguish the defect confirmed in the code (red), the pitfall (orange), the verified fact (green) and the note. They feed findings.html.
  • Code/paper discrepancies are flagged at the top of the pages concerned: several modules do not do what their publication describes.
  • The diagrams are hand-written SVG, no library, themed by class so they stay legible in both light and dark.

The papers are not in the repository

The 29 PDFs collected weigh 90 MB and are publisher content: they are excluded by .gitignore and stay on disk. Each SOURCES.html gives the DOI or the canonical link, which is enough to find them again. The .xml (JATS) and .txt files are still committed: same kind of content, a decision still to be made.

Nothing was obtained by circumventing a paywall: arXiv, PLOS, PMC/NCBI, HAL, institutional repositories and author-deposited versions.

Roadmap

The two announced pieces of work are under way. The trade-off has been settled:

  • languages: one tree per language, rather than a client-side switch. The 55 SVG diagrams carry text: a tree per language makes it genuinely translatable, and each page keeps a clean URL.
  • user layer: separate pages, grouped under guide/, rather than a callout at the top of each page. The two audiences share neither the need nor the tone, and a cross-reference between them is enough to connect the two.

Still open:

  • The diagram arrows are labelled on only 6 of the 55. The rest requires understanding each pipeline, so it happens page by page.
  • The name AREG used on its own is linked nowhere: it designates the family of modules, and there is no AREG page, only AREG_CBCT, AREG_IOS and AREG_IOSCBCT.
  • The papers' .xml and .txt are still committed while the PDFs no longer are. Same kind of content, 6.5 MB: a decision to take.

About

What each SlicerAutomatedDentalTools tool actually does, read from the code: one pipeline page per tool plus a user guide, in five languages

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages