[ICLR 2026 Oral] TabStruct – Tabular Structural Fidelity
📌 Overview
TabStruct is an end‑to‑end benchmark for tabular data generation, prediction, and evaluation. It ships with ready‑to‑use pipelines for
- generating high‑quality synthetic tables,
- predicting with machine learning models, and
- analysing results with a rich suite of metrics – especially those that quantify structural fidelity.
The benchmark is designed for both research and applied workflows: you can run standard baselines out of the box, or plug in custom generators/predictors and fairly evaluate them under the same protocol. All components are designed to plug‑and‑play, so you can mix, match, and extend them to suit your own workflow.
📚 Key Features
- Generate tables: SMOTE, CTGAN, TVAE, Bayesian networks, ARF, normalizing flows, diffusion models, and additional registered wrappers.
- Evaluate synthetic data: density estimation, privacy preservation, ML efficacy, and structural fidelity.
- Predict: classification and regression with linear models, random forests, KNN, XGBoost, neural networks, TabPFN, and TabFORGE adapters.
- Compare consistently: shared dataset loading, split IDs, preprocessing, saved CSVs/checkpoints, W&B summaries, and Optuna tuning.
📐 Evaluation dimensions
- Density estimation – How well does the synthetic data approximate the real distribution?
- Privacy preservation – Does the generator leak sensitive records?
- ML efficacy – How do models trained on synthetic data perform compared to real data?
- Structural fidelity – Does the generator respect the causal structures of real data?
The model reference lists current registry identifiers and dependencies. The registry extends beyond the models evaluated in the paper.
🚀 Installation
Use Python 3.10 or later, and run commands from a Git checkout of the public repository. The runtime locates its output directory through the checkout's .git directory.
git clone https://github.com/SilenceX12138/TabStruct.git
cd TabStruct
conda create -n tabstruct python=3.10.18
conda activate tabstruct
bash scripts/utils/install.sh
For an already prepared environment, python -m pip install -e . installs the checkout in editable mode; individual generators may need additional packages. See Getting started for requirements and CPU execution.
📊 Logging with W&B
Configure your W&B entity and project in src/tabstruct/common/__init__.py, then authenticate with wandb login. Logging is online by default; --disable_wandb disables it for a local check.
✅ Quick sanity check
Train and save a linear classifier on the Credit dataset:
python -m src.tabstruct.experiment.run_experiment \
--pipeline prediction \
--task classification \
--model lr \
--dataset credit-g \
--device cpu \
--save_model \
--tags tutorial-prediction
TabCamel loads the named dataset, so the first run may download data. The runner reports metrics for the training, validation, and test splits. Saved models are written to logs/<configured-project>/<run-id>/lr.pkl, and W&B records the path as best_model_path.
--task, --model, and --dataset are required. Validation is split from the rows remaining after the test split: the default --test_size 0.2 --valid_size 0.1 gives approximately 72% training, 8% validation, and 20% test data.
💥 Example Workflows: Generate and evaluate synthetic data
Generate a classification table without running the metric suite:
bash docs/tutorial/example_scripts/generation/train.sh
The runner saves synthetic_samples.csv in the run directory and records generated_data_path. Pass that file to the evaluation tutorial:
bash docs/tutorial/example_scripts/generation/eval.sh \
logs/<configured-project>/<run-id>/synthetic_samples.csv
This enables structural fidelity evaluation with --enable_eval_structure. TabEval evaluates the synthetic table, while a separate prediction run on synthetic training rows measures ML efficacy. See the evaluation guide for all four dimensions, split behavior, and evaluator configuration.
📖 Documentation
| Start here | Contents |
|---|---|
| Getting started | Install, configure logging, run and restore a model |
| Overview | Public modules and implemented workflow |
| Data and preprocessing | Dataset schema, split semantics, curation, transforms |
| Workflows | Generation, prediction, checkpoints, tuning |
| Evaluation | Four evaluation dimensions and TabEval integration |
| Tutorials | Complete scripts and expected outputs |
| CLI · API · Models | Supported flags, interfaces, identifiers |
| Developer guide | Add a model and build the public documentation |
📖 Citation
@inproceedings{jiang2026tabstruct,
title={TabStruct: Measuring Structural Fidelity of Tabular Data},
author={Jiang, Xiangjian and Simidjievski, Nikola and Jamnik, Mateja},
booktitle={The Fourteenth International Conference on Learning Representations},
year={2026}
}
@inproceedings{jiang2025well,
title={How Well Does Your Tabular Generator Learn the Structure of Tabular Data?},
author={Jiang, Xiangjian and Simidjievski, Nikola and Jamnik, Mateja},
booktitle={ICLR 2025 Workshop on Deep Generative Model in Machine Learning: Theory, Principle and Efficacy},
year={2025}
}
Metadata
Release files for tabstruct 2026.10.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tabstruct-2026.10.8.tar.gz | 560.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tabstruct-2026.10.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 736.8 kB
Release files / tabstruct-2026.10.8.tar.gz
| Download URL | tabstruct-2026.10.8.tar.gz |
|---|---|
| Size | 560.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
665da7716bd535840a17a05aa72e06cdaaf2ffdadb828f1d0cc81c6188c171da
|
|
BLAKE2b-256 checksum How to use checksums |
b4940cddc288ab66e1c3c8b8e42f3ab744a817d2ee8cfe8a4dd47476d82a708e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency logRelease files / tabstruct-2026.10.8-py3-none-any.whl
| Download URL | tabstruct-2026.10.8-py3-none-any.whl |
|---|---|
| Size | 176.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
46877f182f21ee614fcb27f3600bf033fcfbf780597acf3aeebcd23888ef70ec
|
|
BLAKE2b-256 checksum How to use checksums |
d049b33ee510dbc6517daf6d50e2b744c6d5ec9f60bc8077fe1d4662505c068f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency log