One Streamlit workbench that hosts these tools behind a common entry point with structured logging, a plugin-style QC registry for figure checks, and a multi-file TFL version-comparison tool.
Conformance tools check data, not figures. This checks a figure against the dataset that produced it — a class of QC that neither a standard checker nor a manual eyeball reliably catches.
How it works
Typical layout
By the numbers
Screenshots
clinical-data-toolkit-01-home.png into/public/screenshots/clinical-data-toolkit/
clinical-data-toolkit-02-figureqc.png into/public/screenshots/clinical-data-toolkit/
clinical-data-toolkit-03-compare.png into/public/screenshots/clinical-data-toolkit/
Data flow
Several recurring clinical-programming chores — checking figures against their data, comparing two versions of a TFL, inspecting datasets — were scattered across ad-hoc scripts with no shared logging or structure.
Entry point: app.py (one logging setup for all tools)
|
+----------------------------+----------------------------+
v v v
Figure QC TFL Version Compare Dataset utilities
(figureqc/)
ingestion -> extractor
|
v
QC Registry (qc/registry.py) plugin checks:
| axis / legend / unit / errorbar / structural /
| metadata / cross-figure / advanced_*
v
Issue Aggregator -> Export (Excel / PDF) Engineering trade-offs
At a glance
A quick visual read of the countable facts; full detail in the table.
Relative scale · values labelled · unit: count
Processing characteristics
| Metric | Value | Notes |
|---|---|---|
| Test functions | 209 | Counted across the test suite |
| Version | v25 | From app.py header and changelog |
| Figure QC check groups | 10+ | axis, legend, unit, errorbar, structural, metadata, cross-figure, advanced_* |
| Tools hosted | Figure QC, TFL Compare, utilities | Multi-file TFL version compare added in this line |
| Exports | Excel, PDF | Issue export from Figure QC |
| Logging | Structured, downloadable | Per-session run log buffer |
Functional wins
Module dependencies
- Python
- pydantic
- pyyaml
- Pillow
- streamlit
- pandas
- numpy
- openpyxl
- XlsxWriter
- pyreadstat
- pytest