FENRIS: Federated Extensible Norwegian Research Interface for Synthetic data
Project description
FENRIS: Federated Extensible Norwegian Research Interface for Synthetic data
Example Pipelines | CLI Reference | Extension Guide | Contributing | Changelog
FENRIS is an extensible benchmarking framework for federated synthetic tabular data generators. Built on Flower, it provides a reproducible pipeline covering dataset preparation, client partitioning, federated training, multi-dimensional evaluation, and artifact generation.
The framework is designed to be extended with new algorithms, partitioning strategies and evaluation metrics through a plugin system that allows new components to be added without modifying the core system. Algorithms are conceptualized as a combination of a synthesizer (the generative model) and a coordinator (the federated training strategy), allowing for flexible combinations and comparisons.
FENRIS ships with two literature-based reference implementations (Fed-TGAN and FedTabDiff) and evaluates algorithms across fidelity, utility, privacy, fairness, and scalability.
This framework was initially developed during Spring 2026 as part of a bachelor thesis at OsloMet in collaboration with the Norwegian Institute of Public Health (Folkehelseinstituttet, FHI) and the Cancer Registry of Norway (Kreftregisteret).
The following sections provide a quickstart guide to using the framework, including prerequisites, setting up the environment, verifying the installation, and running a benchmarking pipeline. For more detailed documentation and examples, please refer to the links at the top of this README.
Quickstart Guide
Prerequisites
FENRIS v0.1.0 supports Python 3.12 and 3.13. Linux and macOS are the recommended platforms; Windows support is on a best-effort basis due to constraints imposed by Flower's Ray backend. WSL may be used as a workaround.
Installation
The recommended installation method is pipx, which installs FENRIS into an isolated environment and exposes the fenris command globally without requiring a virtual environment:
pipx install fenris
To install pipx itself, follow the official installation instructions.
Alternatively, FENRIS can be installed into a virtual environment via pip:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install fenris
To verify a successful installation:
fenris --version
Acquiring the reference datasets
The reference datasets used in the examples are available at the following URLs, pinned to a stable commit:
- https://raw.githubusercontent.com/Gubbeklubben/FENRIS/6aac5c5/datasets/breast_cancer.csv
- https://raw.githubusercontent.com/Gubbeklubben/FENRIS/6aac5c5/datasets/heart_disease.csv
- https://raw.githubusercontent.com/Gubbeklubben/FENRIS/6aac5c5/datasets/lung_cancer.csv
Executing a pipeline
The following command runs a complete end-to-end benchmark pipeline on the Breast Cancer dataset using FedTabDiff, with the default seed of 42:
fenris run fedtabdiff fedavg iid_partitioner datasets/breast_cancer.csv
Once the run completes, FENRIS creates a timestamped output directory, for example:
out/2026-05-01-14-11-26-fedtabdiff-breast_cancer-<uuid>/
This directory contains the following artifacts:
| File | Description |
|---|---|
synthetic.csv |
The synthetic dataset sampled from the final global model state, with the same columns as the input. |
metrics.centralized.json |
Metric values computed in centralized mode, where the synthetic data is evaluated against the global holdout set on the server. |
metrics.federated.json |
Metric values computed in federated mode, where each client evaluates the synthetic data against its local partitions and the results are aggregated server-side. |
config_snapshot.json |
A complete snapshot of the resolved configuration used for the run, including all default values and derived seeds. |
schema.json |
The resolved column schema, classifying each column by kind (continuous, categorical, binary, integer). |
components.json |
Metadata for each component used in the run, including plugin name, entry point, and version. |
platform_info.json |
A snapshot of the hardware and software environment, including OS, CPU, Python version, and relevant library versions. |
A successful run produces non-null fidelity metric values in both metrics files. Utility, fairness, and attribute inference metrics require --target-col and/or --sensitive-cols to be specified and will evaluate to null otherwise, as in this minimal example.
Further documentation
Example Pipelines | CLI Reference | Extension Guide | Contributing | Changelog
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fenris-0.1.0.tar.gz.
File metadata
- Download URL: fenris-0.1.0.tar.gz
- Upload date:
- Size: 91.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b53de7fecd383aa641b904902c558d40e449ddd3d563ad689ff489a13c635089
|
|
| MD5 |
51f8266391deae68cfbd834de23bb44f
|
|
| BLAKE2b-256 |
8e09a870d0e22f2181bb9eabd9619b16aa40567ce763560425eb781e7d37d386
|
Provenance
The following attestation bundles were made for fenris-0.1.0.tar.gz:
Publisher:
publish.yml on Gubbeklubben/FENRIS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fenris-0.1.0.tar.gz -
Subject digest:
b53de7fecd383aa641b904902c558d40e449ddd3d563ad689ff489a13c635089 - Sigstore transparency entry: 1568232830
- Sigstore integration time:
-
Permalink:
Gubbeklubben/FENRIS@7e26ba196bcd80b2e38b252f13a82b72dd92812e -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/Gubbeklubben
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7e26ba196bcd80b2e38b252f13a82b72dd92812e -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file fenris-0.1.0-py3-none-any.whl.
File metadata
- Download URL: fenris-0.1.0-py3-none-any.whl
- Upload date:
- Size: 127.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e46443d3ce3e3dfb45344a9586019c04a90559ca5af7e16f5b8061086b8ba0fb
|
|
| MD5 |
250e936a3bd21f7aac8133607a614aca
|
|
| BLAKE2b-256 |
5d26194a4400f3052b1db7506448384bd6a7a53f8d6f1dd8673d76bbddacdcc0
|
Provenance
The following attestation bundles were made for fenris-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on Gubbeklubben/FENRIS
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fenris-0.1.0-py3-none-any.whl -
Subject digest:
e46443d3ce3e3dfb45344a9586019c04a90559ca5af7e16f5b8061086b8ba0fb - Sigstore transparency entry: 1568232946
- Sigstore integration time:
-
Permalink:
Gubbeklubben/FENRIS@7e26ba196bcd80b2e38b252f13a82b72dd92812e -
Branch / Tag:
refs/tags/0.1.0 - Owner: https://github.com/Gubbeklubben
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7e26ba196bcd80b2e38b252f13a82b72dd92812e -
Trigger Event:
workflow_dispatch
-
Statement type: