Skip to main content
Ctrl K

Syndat Dashboard

A Dashboard for evaluation & visualization of synthetic patient level data.

28
mentions
2
contributors
Get started
127 commitsLast commit ≈ 2 days ago4 stars1 fork

Cite this software

Description

SYNDAT compares synthetic patient-level data with the original tabular data. The dashboard brings together quality metrics, privacy risk estimates, and plots for examining where the datasets agree and where they differ.

Developed as part of TA6.4 of the NFDI4Health Initiative.

The dashboard

The dashboard presents three quality scores and three privacy risk estimates. Distribution plots, correlation heatmaps, and an interactive embedding help identify outliers and features that differ between original and synthetic data.

Using SYNDAT

  1. Upload the original and synthetic datasets as CSV files with matching column names on the Input page.
  2. Start evaluation to compute the metrics and plots.
  3. Open Results to inspect the scores, distributions, outliers, and correlations.
  4. Save results under a dataset name to revisit them or compare scores from different synthetic data generation runs on the Datasets Summary page.

SYNDAT Dashboard does not store real data and will only use it for score calculation during runtime.

Running locally

The dashboard can be deployed locally at data-holding institutions.

Docker

From the repository root:

docker compose up --build

Open the dashboard at localhost:3000 and the API documentation at localhost:8000/docs.

Local development

CI uses Node.js 24 and Python 3.12.

From the repository root, create a Python environment and start the backend:

python3.12 -m venv .venv
source .venv/bin/activate
pip install --requirement backend/requirements.txt
cd backend
uvicorn api.routes:app --reload

In a second terminal, also from the repository root:

cd frontend
npm ci --legacy-peer-deps
REACT_APP_API_BASE_URL=http://localhost:8000 npm run dev

Open localhost:3000. The API URL can also be set in frontend/.env; it is read when Vite starts or builds the frontend.

Python package

For evaluation and visualization directly in Python, use the separate syndat package:

pip install syndat

API authentication

The /datasets/import and /datasets/export endpoints use HTTP Basic Authentication. Change the development credentials before exposing the API outside your local machine.

For local development, set these variables before starting the backend; otherwise it reads the defaults from backend/.env:

export SYNDAT_ADMIN_USERNAME=your_username
export SYNDAT_ADMIN_PASSWORD=your_password

For Docker, change the backend service's environment settings in docker-compose.yml. The Compose file sets the container credentials explicitly; exporting variables in your shell does not override them.

Citation

If you use SYNDAT in your research, please cite:

@article{Adams_On_the_fidelity_2025,
  author  = {Adams, Tim and Birkenbihl, Colin and Otte, Karen and
             Ng, Hwei Geok and Rieling, Jonas Adrian and
             Näher, Anatol-Fiete and Sax, Ulrich and Prasser, Fabian and Fröhlich, Holger},
  title   = {On the fidelity versus privacy and utility trade-off of synthetic patient data},
  journal = {iScience},
  volume  = {28},
  year    = {2025},
  doi     = {10.1016/j.isci.2025.112382}
}

Support and license

For questions or support, contact the NFDI4Health helpdesk at helpdesk@nfdi4health.de. For bugs and feature requests, use the issue tracker.

The repository is licensed under CC BY-NC-ND 4.0.

Keywords
Badges
DOILatest ReleaseLicense: CC BY-NC-ND 4.0
Programming languages
  • TypeScript 56%
  • Python 35%
  • CSS 7%
  • HTML 2%
  • Dockerfile 1%
  • Makefile 1%
License
</>Source code
Packages

Participating organisations

Fra

Reference papers

Mentions

Contributors

TA
Author, Maintainer
Fraunhofer Institute for Algorithms and Scientific Computing
0000-0002-2823-0102
HF
Holger Fröhlich

Related software

Syndat

SY

Syndat is a python package that provides functionalities for the evaluation and visualization of synthetic data.

Updated 2 months ago
28 4