Skip to content

Repository files navigation

Tsimane Oral Health Heatmap

TL;DR

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.


Live Site

View the published page and full-resolution figure at:

https://mschwar.github.io/data-visualization/


Inputs, Checks, and Outputs

For the contributor branch and verification workflow, read docs/agentic-first-buildout-plan.md and AGENTS.md.

About the Visualization

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).

Repository Contents

Historical Artifacts

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.

Validate the Repository

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 -v

After building the Jekyll site, run the homepage HTML smoke test:

bundle exec jekyll build
python scripts/check_homepage.py

You 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/

Rebuild Locally

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.py

scripts/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.

Publication Context

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.

Releases

Packages

Contributors

Languages