This static site publishes an oral-health heatmap (oral-health-heatmap.png) and summary page (index.md) covering 28 permanent teeth across 1,176 Tsimane adults in Bolivia. Local scripts rasterize the committed source figure (Figure2-Teeth_v4.1.pdf) into a 200 DPI PNG, validate repository links and site metadata, and smoke-test the rendered HTML page.
View the published page and full-resolution figure at:
https://mschwar.github.io/data-visualization/
- Inputs: Narrative copy in
index.md, site settings in_config.yml, custom styles inassets/css/style.scss.css, and the committed figureFigure2-Teeth_v4.1.pdf. The raw source dataset behind the figure is not published in this repository. - Checks: Structural and link validation via
scripts/validate_repo.py, documentation hygiene checks viatests/test_doc_hygiene.py, and rendered HTML checks viascripts/check_homepage.py. - Outputs: The 1700 x 2200 raster image
oral-health-heatmap.pngand the static Jekyll site rendered into_site/index.html.
For the contributor branch and verification workflow, read docs/agentic-first-buildout-plan.md and AGENTS.md.
The heatmap displays dental status across 1,176 adults (543 men and 633 women) from the Tsimane Health and Life History Project. Over 32,000 tooth-level observations are organized across four visual dimensions:
- 28 permanent teeth: Incisors, canines, premolars, and first and second molars.
- Age groups: Adults sorted from ages 15-24 through 75+.
- Sex: Side-by-side panels comparing men and women.
- Anatomy: Separate upper (maxilla) and lower (mandible) dental arches.
A five-point ordinal color scale encodes tooth condition from healthy (blue) to missing (dark red).
index.md: Main GitHub Pages content and figure narrative.oral-health-heatmap.png: Published 200 DPI heatmap image.Figure2-Teeth_v4.1.pdf: Committed vector source figure used to regenerate the PNG._config.yml: Jekyll theme, metadata, and public-site file exclusions.Gemfileand.ruby-version: Pinned Ruby 3.3.4 andgithub-pages232 build toolchain.scripts/validate_repo.py: Repository structure, config, and local link validator.scripts/render_heatmap.py: PDF-to-PNG rasterization script for the heatmap image.scripts/check_homepage.py: Smoke test for rendered homepage HTML.tests/test_doc_hygiene.py: Zero-dependency standard-library documentation hygiene test suite.CURRENT_STATE.md: Operational status, verification evidence, and known constraints.docs/heatmap-provenance.md: Figure provenance boundary and local rebuild notes.docs/historical-artifacts.md: Retention policy for historical repository snapshots.README.CRAWL.md: Retained historical crawl snapshot kept for audit comparison only.
README.CRAWL.md is retained as a historical snapshot, not as active documentation. _config.yml excludes it from the public site, and docs/historical-artifacts.md defines the retention rules.
Run the structure validator and documentation hygiene gate from the repository root:
python scripts/validate_repo.py
/usr/bin/python3 -m unittest tests/test_doc_hygiene.py -vAfter building the Jekyll site, run the homepage HTML smoke test:
bundle exec jekyll build
python scripts/check_homepage.pyYou can also pass an explicit HTML file path or live site URL:
python scripts/check_homepage.py _site/index.html
python scripts/check_homepage.py https://mschwar.github.io/data-visualization/This repository pins Ruby 3.3.4 and github-pages 232 to match GitHub Pages. Run these commands to build the site or regenerate the PNG locally:
bundle install
bundle exec jekyll build
bundle exec jekyll serve --baseurl=""
python scripts/render_heatmap.pyscripts/render_heatmap.py exports Figure2-Teeth_v4.1.pdf at 200 DPI to match the published 1700 x 2200 pixel PNG. Only PNG encoder metadata headers differ across PDF rasterizers.
On an earlier Windows audit host, MiKTeX pdftoppm failed with temporary log permission errors. Read docs/heatmap-provenance.md for the exact provenance boundary and rebuild details.
This figure accompanies the published study:
Trumble, B., Schwartz, M., Kaplan, H., Gurven, M., and coauthors (2024). Poor Oral Health Is Associated With Inflammation, Aortic Valve Calcification, and Brain Volume Among Forager-Farmers. The Journals of Gerontology. Digital Object Identifier (DOI): 10.1093/gerona/glae013
Created by Matthew Schwartz.