Pasteur is a framework for privacy-preserving synthetic data generation built on top of Kedro. It supports tabular and relational datasets with configurable transformation, encoding, synthesis, and evaluation pipelines.
Set AGENT=1 to switch Pasteur to agent-friendly output (disables Rich
tracebacks, progress bars, and interactive formatting; uses plain logging with
full stack traces instead).
AGENT=1 python -m pasteur <command>Run with python -m pasteur <command>. Key commands:
download --accept <dataset>— download raw data from sourceingest_dataset <dataset>— ingest raw data into dataset tables (parquet)ingest_view <view>— ingest dataset tables into denormalized view tablesbootstrap <dataset>— preprocess downloaded datasets that require itsweep <view>.<synth> ...— run synthesis sweep with parameter gridpipe <pipeline>— run a specific pipeline
conf/ Kedro config (base + local overrides)
base/locations.yml Default data/raw paths
local/locations.yml Local overrides for data paths
raw/ Downloaded raw data
data/ Processed data (ds/, view/, synth/, reporting/)
src/
project/settings.py Kedro settings, module registration (PASTEUR_MODULES)
pasteur/
dataset.py Dataset base class
view.py View base class
extras/
__init__.py get_recommended_modules() — registers all datasets/views
datasets/ Dataset implementations
rfel/ CTU Relational Learning Repository datasets
adult/ Adult dataset
mimic/ MIMIC-IV dataset
eicu/ eICU dataset
...
views/ View implementations (denormalized dataset projections)
rfel/ RFEL views + parameters_*.yml files
...
kedro/
pipelines/ Pipeline definitions (dataset.py, views.py, main.py)
runner/ Custom parallel runner
utils/
download.py Download utilities (wget, s3, relational.fel)
A dataset has three parts: a Dataset class (downloads + ingests raw data),
a View class (denormalizes into the shape used by synthesis), and a
parameters YAML (declares field types). Look at existing implementations
under src/pasteur/extras/datasets/ and src/pasteur/extras/views/ for
reference.
- Dataset class — subclass
Dataset(or a helper likeRfelDataset). Defines tables, primary keys, raw sources, and akeys()method returning the top-level entity index. The first table in thetablesdict is used for key generation. - View class — subclass
View(or a helper likeRfelView). Maps view tables to dataset table dependencies viadeps. Theingest()method joins, denormalizes, and casts types. Every child table should carry the top-level key. Cast IDs topd.Int64Dtype(). - Parameters file —
parameters_<short_name>.ymlnext to the view. Declares each table's primary key and field types:id,id:<table>.<field>(foreign key),categorical,ordinal,numerical,date,datetime,time. Append?for nullable. - Register — import and add both to
get_recommended_datasets()insrc/pasteur/extras/__init__.py. - Pipeline parameters — add a section in
conf/base/parameters/for algorithm and metric config (e.g.algs.mare,algs.amalgam,metrics.llmeval). See existing entries in the same file for YAML anchors that can be reused (*mare,*amalgam,*llmeval, etc.). - Download, ingest, verify:
Data lands in
AGENT=1 python -m pasteur download --accept <dataset> AGENT=1 python -m pasteur ingest_dataset <dataset> AGENT=1 python -m pasteur ingest_view <view>
<base_location>/ds/<dataset>/tables/and<base_location>/view/<view>/tables/. Checkconf/local/locations.ymlfor actual paths.