Skip to main content

FENRIS: Federated Extensible Norwegian Research Interface for Synthetic data

CI PyPI Python Version License: MIT

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:

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

Metadata

Release files for fenris 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fenris 0.1.0
File Size Uploaded Provenance Actions
fenris-0.1.0.tar.gz 91.7 kB With provenance Details for fenris-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for fenris 0.1.0
File Interpreter ABI Platform Actions
fenris-0.1.0-py3-none-any.whl Python 3 none any Details for fenris-0.1.0-py3-none-any.whl

Total release size: 218.6 kB

Release files / fenris-0.1.0.tar.gz

Download URL fenris-0.1.0.tar.gz
Size 91.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b53de7fecd383aa641b904902c558d40e449ddd3d563ad689ff489a13c635089
BLAKE2b-256 checksum
How to use checksums
8e09a870d0e22f2181bb9eabd9619b16aa40567ce763560425eb781e7d37d386
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 18, 2026.

Transparency log

Release files / fenris-0.1.0-py3-none-any.whl

Download URL fenris-0.1.0-py3-none-any.whl
Size 127.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e46443d3ce3e3dfb45344a9586019c04a90559ca5af7e16f5b8061086b8ba0fb
BLAKE2b-256 checksum
How to use checksums
5d26194a4400f3052b1db7506448384bd6a7a53f8d6f1dd8673d76bbddacdcc0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 May 18, 2026.

Transparency log

Security for fenris 0.1.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for fenris-0.1.0.tar.gz

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 May 18, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page