Synthetic Data SDK
Python client library for the Synthetic Data REST API. Generate high-fidelity synthetic data remotely without running heavy ML models locally.
Requirements
- Running Synthetic Data Server (for API endpoint)
Installation
# Using pip
pip install -e .
# Using uv, by adding dependency
uv sync
Features
- Remote synthesis: No local GPU or heavy dependencies required
- Multiple models: VineCopula, TabularGAN, TabDiff, SMOTE
- Multi-table support: Preserve foreign key relationships
- Privacy evaluation: Built-in privacy attack simulations (MIA, SARP, linkage attacks)
- Causal fidelity evaluation: Validate treatment effects, decision consistency, fairness preservation
- Pandas integration: Works seamlessly with DataFrames
- Quality evaluation: Built-in metrics for fidelity assessment (KS test, correlation, TSTR/TRTR)
- Model inspection: Access model metadata and configuration via
summary() - Unified API: Consistent interface across all synthesizers
Quick Start
Synthetic Data Generation
from synthetic_data_sdk import RemoteVineCopula
import pandas as pd
# Load your data
data = pd.read_csv("customers.csv")
# Initialize remote synthesizer
synth = RemoteVineCopula(
endpoint="http://localhost:8000",
model_version="customer-synth-v1"
)
# Fit model (runs on remote server)
synth.fit(data)
# Generate synthetic data
synthetic_data = synth.transform(n=1000)
# Inspect model configuration
summary = synth.summary()
print(f"Fitted: {summary['fitted']}")
print(f"Continuous cols: {summary['n_continuous']}")
# Evaluate synthetic data quality
metrics = synth.evaluate(
real_data=data,
synthetic_data=synthetic_data,
categorical_cols=['city'],
target_col='churn',
task_type='classification'
)
print(f"Correlation Error: {metrics['correlation_error']:.3f}")
print(f"TSTR Score: {metrics['tstr_score']:.3f}")
Privacy Risk Evaluation
from synthetic_data_sdk import PrivacyEvaluator
import pandas as pd
# Load datasets
train_data = pd.read_csv("train.csv")
test_data = pd.read_csv("test.csv")
synthetic_data = pd.read_csv("synthetic.csv")
# Initialize privacy evaluator
privacy = PrivacyEvaluator(endpoint="http://localhost:8000")
# Run privacy attack simulations
results = privacy.evaluate(
train_real_data=train_data,
test_real_data=test_data,
synthetic_data=synthetic_data,
sensitive_columns=['ssn', 'salary', 'diagnosis']
)
# Check results
print(f"Overall Privacy Risk: {results['overall_risk']}")
print(f"Successful Attacks: {results['summary']['successful_attacks']}/{results['summary']['total_attacks']}")
# Review individual attacks
for attack in results['attacks']:
print(f"{attack['attack_type']}: {attack['risk_level']} risk")
Causal Fidelity Evaluation
from synthetic_data_sdk import CausalEvaluator
import pandas as pd
# Load datasets
real_data = pd.read_csv("real.csv")
synthetic_data = pd.read_csv("synthetic.csv")
# Initialize causal evaluator
causal = CausalEvaluator(endpoint="http://localhost:8000")
# Evaluate treatment effect preservation
results = causal.evaluate(
real_data=real_data,
synthetic_data=synthetic_data,
treatment_col='treatment_assigned',
outcome_col='outcome_value',
covariates=['age', 'income'],
evaluation_type='treatment_effect'
)
# Check results
print(f"Overall Preserved: {results['overall_preserved']}")
print(f"ATE Real: {results['evaluations'][0]['metrics']['ate_real']:.3f}")
print(f"ATE Synthetic: {results['evaluations'][0]['metrics']['ate_synth']:.3f}")
print(f"Relative Error: {results['evaluations'][0]['metrics']['ate_relative_error']:.1%}")
Configuration
Use ClientConfig to configure the SDK, or load settings from environment variables with ClientConfig.from_env().
from synthetic_data_sdk import ClientConfig, RemoteVineCopula
# Explicit configuration
config = ClientConfig(
base_url="https://api.example.com",
username="admin",
password="secret",
verify_ssl=True,
)
# Or load from environment variables
config = ClientConfig.from_env()
synth = RemoteVineCopula(config=config)
The key environment variables are SYNDATA_API_URL, SYNDATA_USERNAME, and SYNDATA_PASSWORD. See ClientConfig.from_env() docstring for the full list.
Available Synthesizers
| Class | Model Type | Best For | Methods |
|---|---|---|---|
RemoteVineCopula |
Vine Copula | General tabular data | fit, transform, fit_transform, summary, evaluate |
RemoteMultiTableVineCopula |
Multi-table Copula | Relational databases | fit, transform, fit_transform, summary, evaluate, validate_relationships, relational_score, get_table_order |
RemoteTabularGAN |
GAN | Complex distributions | fit, transform, fit_transform, summary, evaluate |
RemoteTabDiff |
Diffusion Model | High-fidelity synthesis | fit, transform, fit_transform, summary, evaluate |
RemoteSMOTE |
Oversampling | Imbalanced datasets | fit, transform, fit_transform, summary, evaluate |
PrivacyEvaluator |
Privacy Attacks | Privacy risk assessment | evaluate |
CausalEvaluator |
Causal Fidelity | Treatment effects, fairness | evaluate |
CertificationClient |
Quality Grading | A+ to F scoring | certify |
SyntheticDataClient |
Low-level HTTP client | Direct API interaction | request, get_job_status |
Documentation
API reference is available via docstrings, also refer to Online Documentation
Support
- Issues: Report bugs and request features via issue tracker
- Email: info@protegrity.com
License
MIT License
Metadata
Release files for protegrity-synthetic-data-sdk 2.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| protegrity_synthetic_data_sdk-2.1.1-py3-none-any.whl | Python 3 | none | any | Details for protegrity_synthetic_data_sdk-2.1.1-py3-none-any.whl |
Release files / protegrity_synthetic_data_sdk-2.1.1-py3-none-any.whl
| Download URL | protegrity_synthetic_data_sdk-2.1.1-py3-none-any.whl |
|---|---|
| Size | 39.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
02092a31a1e7995df87ac8829a746967330c3bee7bc2f9302222bed0d6c7e68b
|
|
BLAKE2b-256 checksum How to use checksums |
1adadd6832990891b6708f5f0300921ab9ed993943cd77fda9d2e9ad629231bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for protegrity-synthetic-data-sdk 2.1.1
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.