Metadata-Version: 2.1
Name: synthyverse
Version: 0.2.3
Summary: Synthetic data generation and evaluation library
Author: Jim Achterberg, Saif Ul Islam, Zia Ur Rehman
License: MIT License
Project-URL: Homepage, https://github.com/synthyverse/synthyverse
Project-URL: Documentation, https://synthyverse.readthedocs.io
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
License-File: NOTICE
License-File: THIRD_PARTY_NOTICES.md
License-File: LICENSES/Apache-2.0.txt
License-File: LICENSES/CTGAN-BSL-1.1.txt
License-File: LICENSES/MIT.txt
Requires-Dist: pandas
Requires-Dist: numpy
Requires-Dist: scikit-learn
Requires-Dist: tqdm
Requires-Dist: scipy
Requires-Dist: xgboost
Requires-Dist: optuna
Requires-Dist: seaborn
Requires-Dist: numba
Requires-Dist: psutil
Requires-Dist: torch
Requires-Dist: torch-ema
Requires-Dist: einops
Requires-Dist: imbalanced-learn
Provides-Extra: ctgan
Requires-Dist: ctgan; extra == "ctgan"
Provides-Extra: docs
Requires-Dist: sphinx; extra == "docs"
Requires-Dist: furo; extra == "docs"
Requires-Dist: myst-parser; extra == "docs"
Requires-Dist: sphinx-copybutton; extra == "docs"
Requires-Dist: sphinx-autodoc-typehints; extra == "docs"
Requires-Dist: sphinxcontrib-mermaid; extra == "docs"
Requires-Dist: linkify-it-py; extra == "docs"

<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
- **Tabular synthetic data generators.** Use low-level generators directly, or wrap them with shared preprocessing through `SynthyverseGenerator`.
- **Evaluation metrics.** Compare synthetic data with fidelity, utility, and privacy metrics through individual metric classes or `TabularMetricEvaluator`.
- **Benchmarking workflows.** Train, sample, evaluate, and save benchmark artifacts with `TabularSynthesisBenchmark`.
- **Shared preprocessing.** Reuse `DataProcessor` for missing-value handling, schema restoration, and column constraints.

# Installation
Install synthyverse from PyPI:

```bash
pip install synthyverse
```

The base package is MIT licensed and does not install the `ctgan` package.
`CTGANGenerator` and `TVAEGenerator` are only available when installing the
optional CTGAN extra:

```bash
pip install "synthyverse[ctgan]"
```

That extra installs the `ctgan` dependency, which is distributed under the
Business Source License. Review that license before using CTGAN or TVAE
functionality.

Third-party attribution, license, NOTICE, and modification details are listed
in `THIRD_PARTY_NOTICES.md`.

For local development from a clone:

```bash
pip install -e .
```

# Usage

Use a high-level wrapper when you want preprocessing and schema restoration handled for you:

```python
from synthyverse.generators import SynthyverseGenerator

generator = SynthyverseGenerator(
    "univariate",
    missing_imputation_method="median",
    random_state=42,
)
generator.fit(X, discrete_features=["category", "target"])
X_syn = generator.generate(1000)
```

Use the lower-level APIs when you want explicit control over preprocessing, generator fitting, metrics, or benchmarking. See the [docs](https://synthyverse.readthedocs.io) for complete examples.


