Skip to main content

Exploring the Effects of Disjoint Generation of Synthetic Tabular Data.

Project description

PyPI version

Disjoint Generative Models

Disjoint Generative Models (DGMs) is a framework for generating synthetic data by distributing the generation of different attributes to different generative models. DGMs unlock mixed model generation, allowing the user to choose ``correct tool for the correct job'' and infers increased privacy by not having a single model that has access to all the data.

The library provides a simple API for generating synthetic data using a variety of generative models and joining strategies. The library has access to a variety of generative model backends namely SynthCity, DataSynthesizer and Synthpop, but additional backends can be added in the adapters module. Similarly several methods for joining are available for combining the generated data, and more can be added in the joining strategies module.

Installation

We recommend cloning and working with the repository directly due to challenging dependencies, but the library is also available on PyPI. To install the library, run the following command:

pip install disjoint-generation

One of the generative model backends "synthpop" requires a working R installation on the system. Access is handled through subprocess to run an Rscript command, so make sure that the Rscript command works in the terminal.

Tutorial and Codebooks

Below is codebooks that can be used to replicate the results shown in the paper.

Link Description Fig. refs.
Tutorial A simple tutorial on how to use the library NA
Codebook 1 Introductionary experiments, random joining, incresing number of partitions Fig. 3, 10
Codebook 2 High-dimensional dataset example vith validation, correlated partitions study Fig. 4, 5, 6, 13
Codebook 3 Mixed-model generation and combinatorics Fig. 7, 8, Tab. 2, 3
Codebook 4 Study of the joining validator model, optimisation and calibration Fig. 11, 12, 14
--- --- ---
TabDiff Baseline We compare to TabDiff, a state-of-the-art method for synthetic data generation. Our code and adapters for making this baseline work is provided here. Tab. 3, Fig. 8

Additional examples for how to use the library can be seen in the documentation in the source code folder.

Requirements

The codebase requires Python ~3.10 (we use version 3.10.11) and the following packages:

  • numpy ~= 1.26
  • pandas ~= 2.2.3
  • scipy ~= 1.12
  • scikit-learn ~= 1.5
  • synthcity >= 0.2.11
  • DataSynthesizer ~= 0.1.13
  • pyod >= 2.0

Because Synthcity sometimes causes compatibility issues we also provide an environment.txt file with a pip freeze of a working installation, which can be downloaded and installed using pip install -r environment.txt and should work on Python ~3.10.11.

Additonally, the synthpop generative model is accessed through R (we used version 4.1.2), and requires the following R packages:

  • synthpop ~= 1.8.0

Citing

If you use our library in your work, you can reference us by citing our paper:

@misc{Lautrup2025,
      title={Disjoint Generative Models}, 
      author={Anton Danholt Lautrup and Muhammad Rajabinasab and Tobias Hyrup and Arthur Zimek and Peter Schneider-Kamp},
      year={2025},
      eprint={2507.19700},
      archivePrefix={arXiv},
}

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

disjoint_generation-1.1.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

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

disjoint_generation-1.1-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file disjoint_generation-1.1.tar.gz.

File metadata

  • Download URL: disjoint_generation-1.1.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for disjoint_generation-1.1.tar.gz
Algorithm Hash digest
SHA256 630676552757d6adb9d1f55cffdf370ad899418332278df3b90d058c7c330c24
MD5 395fd5a2435ce257ef970f84c12c1313
BLAKE2b-256 bff4bc267c249f4f0032a169025a8802973f254d86b528578c1d148e8d88efe1

See more details on using hashes here.

Provenance

The following attestation bundles were made for disjoint_generation-1.1.tar.gz:

Publisher: release.yml on notna07/disjoint-synthetic-data-generation

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

File details

Details for the file disjoint_generation-1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for disjoint_generation-1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3aa29a3ab41234b9e913f0b4605b7029050f63b38494ee24a9776bd9f27db7a5
MD5 64798ef487356f655a594222d929093b
BLAKE2b-256 71d2842e7545559f334041bc2c10cbb21c96b476f737821171ad135ae43845dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for disjoint_generation-1.1-py3-none-any.whl:

Publisher: release.yml on notna07/disjoint-synthetic-data-generation

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