Metadata-Version: 2.1
Name: synthyverse
Version: 0.1.6
Summary: Synthetic data generation and evaluation library
Home-page: https://github.com/synthyverse/synthyverse
Author: Jim Achterberg, Saif Ul Islam, Zia Ur Rehman
Author-email: 
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: arf
Requires-Dist: pandas; extra == "arf"
Requires-Dist: numpy; extra == "arf"
Requires-Dist: scikit-learn; extra == "arf"
Requires-Dist: arfpy; extra == "arf"
Provides-Extra: base
Requires-Dist: pandas; extra == "base"
Requires-Dist: numpy; extra == "base"
Requires-Dist: scikit-learn; extra == "base"
Provides-Extra: bn
Requires-Dist: pandas; extra == "bn"
Requires-Dist: numpy; extra == "bn"
Requires-Dist: scikit-learn; extra == "bn"
Requires-Dist: synthcity==0.2.12; extra == "bn"
Requires-Dist: opacus==1.5.3; extra == "bn"
Provides-Extra: cdtd
Requires-Dist: pandas; extra == "cdtd"
Requires-Dist: numpy; extra == "cdtd"
Requires-Dist: scikit-learn; extra == "cdtd"
Requires-Dist: torch; extra == "cdtd"
Requires-Dist: torch-ema; extra == "cdtd"
Requires-Dist: einops; extra == "cdtd"
Requires-Dist: tqdm; extra == "cdtd"
Provides-Extra: ctabgan
Requires-Dist: pandas; extra == "ctabgan"
Requires-Dist: numpy; extra == "ctabgan"
Requires-Dist: scikit-learn; extra == "ctabgan"
Requires-Dist: torch; extra == "ctabgan"
Requires-Dist: dython; extra == "ctabgan"
Requires-Dist: scipy; extra == "ctabgan"
Provides-Extra: ctgan
Requires-Dist: pandas; extra == "ctgan"
Requires-Dist: numpy; extra == "ctgan"
Requires-Dist: scikit-learn; extra == "ctgan"
Requires-Dist: ctgan==0.10.0; extra == "ctgan"
Provides-Extra: eval
Requires-Dist: pandas; extra == "eval"
Requires-Dist: numpy; extra == "eval"
Requires-Dist: scikit-learn; extra == "eval"
Requires-Dist: xgboost; extra == "eval"
Requires-Dist: sdmetrics; extra == "eval"
Requires-Dist: optuna; extra == "eval"
Provides-Extra: forestdiffusion
Requires-Dist: pandas; extra == "forestdiffusion"
Requires-Dist: numpy; extra == "forestdiffusion"
Requires-Dist: scikit-learn; extra == "forestdiffusion"
Requires-Dist: ForestDiffusion; extra == "forestdiffusion"
Requires-Dist: tqdm; extra == "forestdiffusion"
Provides-Extra: full
Requires-Dist: pandas; extra == "full"
Requires-Dist: einops; extra == "full"
Requires-Dist: ctgan==0.10.0; extra == "full"
Requires-Dist: xgboost; extra == "full"
Requires-Dist: opacus==1.5.3; extra == "full"
Requires-Dist: xgboost==2.1.4; extra == "full"
Requires-Dist: scikit-learn; extra == "full"
Requires-Dist: realtabformer; extra == "full"
Requires-Dist: mostlyai-engine; extra == "full"
Requires-Dist: imbalanced-learn; extra == "full"
Requires-Dist: numpy; extra == "full"
Requires-Dist: optuna; extra == "full"
Requires-Dist: torch; extra == "full"
Requires-Dist: python-synthpop; extra == "full"
Requires-Dist: dython; extra == "full"
Requires-Dist: ForestDiffusion; extra == "full"
Requires-Dist: sdmetrics; extra == "full"
Requires-Dist: utrees; extra == "full"
Requires-Dist: joblib; extra == "full"
Requires-Dist: nrgboost; extra == "full"
Requires-Dist: torch-ema; extra == "full"
Requires-Dist: synthcity==0.2.12; extra == "full"
Requires-Dist: tqdm; extra == "full"
Requires-Dist: arfpy; extra == "full"
Requires-Dist: scikit-learn-extra; extra == "full"
Requires-Dist: scipy; extra == "full"
Provides-Extra: nrgboost
Requires-Dist: pandas; extra == "nrgboost"
Requires-Dist: numpy; extra == "nrgboost"
Requires-Dist: scikit-learn; extra == "nrgboost"
Requires-Dist: nrgboost; extra == "nrgboost"
Provides-Extra: permutation
Requires-Dist: pandas; extra == "permutation"
Requires-Dist: numpy; extra == "permutation"
Requires-Dist: scikit-learn; extra == "permutation"
Provides-Extra: realtabformer
Requires-Dist: pandas; extra == "realtabformer"
Requires-Dist: numpy; extra == "realtabformer"
Requires-Dist: scikit-learn; extra == "realtabformer"
Requires-Dist: realtabformer; extra == "realtabformer"
Provides-Extra: smote
Requires-Dist: pandas; extra == "smote"
Requires-Dist: numpy; extra == "smote"
Requires-Dist: scikit-learn; extra == "smote"
Requires-Dist: imbalanced-learn; extra == "smote"
Provides-Extra: synthpop
Requires-Dist: pandas; extra == "synthpop"
Requires-Dist: numpy; extra == "synthpop"
Requires-Dist: scikit-learn; extra == "synthpop"
Requires-Dist: python-synthpop; extra == "synthpop"
Requires-Dist: tqdm; extra == "synthpop"
Provides-Extra: tabargn
Requires-Dist: pandas; extra == "tabargn"
Requires-Dist: numpy; extra == "tabargn"
Requires-Dist: scikit-learn; extra == "tabargn"
Requires-Dist: mostlyai-engine; extra == "tabargn"
Provides-Extra: tabddpm
Requires-Dist: pandas; extra == "tabddpm"
Requires-Dist: numpy; extra == "tabddpm"
Requires-Dist: scikit-learn; extra == "tabddpm"
Requires-Dist: synthcity==0.2.12; extra == "tabddpm"
Requires-Dist: opacus==1.5.3; extra == "tabddpm"
Provides-Extra: tabsyn
Requires-Dist: pandas; extra == "tabsyn"
Requires-Dist: numpy; extra == "tabsyn"
Requires-Dist: scikit-learn; extra == "tabsyn"
Requires-Dist: torch; extra == "tabsyn"
Requires-Dist: tqdm; extra == "tabsyn"
Requires-Dist: scipy; extra == "tabsyn"
Provides-Extra: tvae
Requires-Dist: pandas; extra == "tvae"
Requires-Dist: numpy; extra == "tvae"
Requires-Dist: scikit-learn; extra == "tvae"
Requires-Dist: ctgan==0.10.0; extra == "tvae"
Provides-Extra: unmaskingtrees
Requires-Dist: pandas; extra == "unmaskingtrees"
Requires-Dist: numpy; extra == "unmaskingtrees"
Requires-Dist: scikit-learn; extra == "unmaskingtrees"
Requires-Dist: utrees; extra == "unmaskingtrees"
Provides-Extra: xgenboost
Requires-Dist: pandas; extra == "xgenboost"
Requires-Dist: numpy; extra == "xgenboost"
Requires-Dist: scikit-learn; extra == "xgenboost"
Requires-Dist: xgboost==2.1.4; extra == "xgenboost"
Requires-Dist: scikit-learn-extra; extra == "xgenboost"
Requires-Dist: tqdm; extra == "xgenboost"
Requires-Dist: scipy; extra == "xgenboost"
Requires-Dist: joblib; extra == "xgenboost"

<table align="center" border="0">
<tr>
<td align="center">

<img src="https://raw.githubusercontent.com/synthyverse/synthyverse/main/logo/logo.png" alt="Synthyverse logo" width="250" height="auto">

<br/>
<br/>

Welcome to the synthyverse!

An extensive ecosystem for synthetic data generation and evaluation in Python.

[Read the docs](https://synthyverse.readthedocs.io) for in-depth usage.

_The synthyverse is a work in progress. Please provide any suggestions through a GitHub Issue._

</td>
</tr>
</table>

<div style="clear: both;"></div>

# Features
- 🔧 **Highly modular installation.** Install only those modules which you require to keep your installation lightweight.
- 📚 **Extensive library for synthetic data.** Any generator or metric can be quickly added without dependency conflicts due to synthyverse's modular installation. This allows the synthyverse to host a great amount of generators and evaluation metrics. It also allows the synthyverse to wrap around any existing synthetic data library.
- ⚙️ **Benchmarking module for simplified synthetic data pipelines.** The benchmarking module executes a modular pipeline of synthetic data generation and evaluation. Choose a generator, set of evaluation metrics, and pipeline parameters, and obtain results on synthetic data quality.
- 👷 **Minimal preprocessing required.** All preprocessing is handled by the synthyverse, so no need for scaling, one-hot encoding, or handling missing values. Different preprocessing schemes can be used by setting simple parameters.
- 👍 **Set constraints for your synthetic data.** You can specify inter-column constraints which you want your synthetic data to follow. Constraints are modelled explicitly by the synthyverse, not through oversampling. This ensures efficient and reliable constraint setting.

# Installation
The synthyverse is unique in its modular installation set-up. To avoid conflicting dependencies, we provide various installation templates. Each template installs only those dependencies which are required to access certain modules. 

Templates provide installation for specific generators, the evaluation module, and more. Install multiple templates to get access to multiple modules of the synthyverse, e.g., multiple generators and evaluation. 

**We strongly advise to only install templates which you require during a specific run. Installing multiple templates gives rise to potential dependency conflicts. Use separate virtual environments across installations.**

**Note that the core installation without any template doesn't install any modules.**

## Available Installation Templates

The following installation templates are available:

| Template Name | Category | Installation Command |
|---------------|----------|----------------------|
| `arf` | Generator | `pip install synthyverse[arf]` |
| `bn` | Generator | `pip install synthyverse[bn]` |
| `cdtd` | Generator | `pip install synthyverse[cdtd]` |
| `ctabgan` | Generator | `pip install synthyverse[ctabgan]` |
| `ctgan` | Generator | `pip install synthyverse[ctgan]` |
| `forestdiffusion` | Generator | `pip install synthyverse[forestdiffusion]` |
| `nrgboost` | Generator | `pip install synthyverse[nrgboost]` |
| `permutation` | Generator | `pip install synthyverse[permutation]` |
| `realtabformer` | Generator | `pip install synthyverse[realtabformer]` |
| `smote` | Generator | `pip install synthyverse[smote]` |
| `synthpop` | Generator | `pip install synthyverse[synthpop]` |
| `tabargn` | Generator | `pip install synthyverse[tabargn]` |
| `tabddpm` | Generator | `pip install synthyverse[tabddpm]` |
| `tabsyn` | Generator | `pip install synthyverse[tabsyn]` |
| `tvae` | Generator | `pip install synthyverse[tvae]` |
| `unmaskingtrees` | Generator | `pip install synthyverse[unmaskingtrees]` |
| `xgenboost` | Generator | `pip install synthyverse[xgenboost]` |
| `base` | Generator | `pip install synthyverse[base]` |
| `eval` | Evaluation | `pip install synthyverse[eval]` |
| `full` | All | `pip install synthyverse[full]` |

**Note:** You can install multiple templates by separating them with commas, e.g., `pip install synthyverse[ctgan,eval]`
### General Installation Template

```bash
pip install synthyverse[template]
```

### Installation Examples
```bash
pip install synthyverse[ctgan]
```


```bash
pip install synthyverse[arf,bn,ctgan,tvae]
```

```bash
pip install synthyverse[ctgan,eval]
```

# Usage

We refer to the [docs](https://synthyverse.readthedocs.io) to learn how to use the synthyverse!


# Tutorials
- [Tabular Synthetic Data with the synthyverse: Introduction](https://github.com/synthyverse/synthyverse/blob/main/tutorial.ipynb)
