Skip to main content

FENRIS: Federated Extensible Norwegian Research Interface for Synthetic data

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fenris-0.1.0.tar.gz (91.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fenris-0.1.0-py3-none-any.whl (127.0 kB view details)

Uploaded Python 3

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

Hashes for fenris-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b53de7fecd383aa641b904902c558d40e449ddd3d563ad689ff489a13c635089
MD5 51f8266391deae68cfbd834de23bb44f
BLAKE2b-256 8e09a870d0e22f2181bb9eabd9619b16aa40567ce763560425eb781e7d37d386

See more details on using hashes here.

Provenance

The following attestation bundles were made for fenris-0.1.0.tar.gz:

Publisher: publish.yml on Gubbeklubben/FENRIS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for fenris-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e46443d3ce3e3dfb45344a9586019c04a90559ca5af7e16f5b8061086b8ba0fb
MD5 250e936a3bd21f7aac8133607a614aca
BLAKE2b-256 5d26194a4400f3052b1db7506448384bd6a7a53f8d6f1dd8673d76bbddacdcc0

See more details on using hashes here.

Provenance

The following attestation bundles were made for fenris-0.1.0-py3-none-any.whl:

Publisher: publish.yml on Gubbeklubben/FENRIS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page