Skip to content

Commit 3b7047a

Browse files
authored
Feedback&refactoring (#96)
* fix links * add privacy folder * update tutorials * cleanup * update tutorials * bugfixing * drop sdv * TimeSeriesTabularVAE * observation_times * drop ctimegan * update PBC * improve docs * improve time series docs * cleanup * improve docs * add docs template with UML * cleanup * cleanup
1 parent 14c703e commit 3b7047a

File tree

121 files changed

+1750
-1967
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+1750
-1967
lines changed

README.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ $ pip install .
5454
```python
5555
from synthcity.plugins import Plugins
5656

57-
Plugins(categories=["generic"]).list()
57+
Plugins(categories=["generic", "privacy"]).list()
5858
```
5959

6060
* Load and train a tabular generator
@@ -113,7 +113,7 @@ Benchmarks.print(score)
113113
```python
114114
from synthcity.plugins import Plugins
115115

116-
Plugins(categories=["generic", "survival_analysis"]).list()
116+
Plugins(categories=["generic", "privacy", "survival_analysis"]).list()
117117
```
118118

119119
* Generate new data
@@ -144,7 +144,7 @@ syn_model.generate(count=10)
144144
```python
145145
from synthcity.plugins import Plugins
146146

147-
Plugins(categories=["generic", "time_series"]).list()
147+
Plugins(categories=["generic", "privacy", "time_series"]).list()
148148
```
149149

150150
* Generate new data
@@ -158,7 +158,7 @@ from synthcity.utils.datasets.time_series.google_stocks import GoogleStocksDatal
158158
static_data, temporal_data, horizons, outcome = GoogleStocksDataloader().load()
159159
data = TimeSeriesDataLoader(
160160
temporal_data=temporal_data,
161-
temporal_horizons=horizons,
161+
observation_times=horizons,
162162
static_data=static_data,
163163
outcome=outcome,
164164
)
@@ -201,12 +201,12 @@ assert syn_model.name() == reloaded.name()
201201

202202
## 📓 Tutorials
203203

204-
- [![Test In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1Vr2PJswgfFYBkJCm3hhVkuH-9dXnHeYV?usp=sharing) [ Tutorial 0: Getting started with tabular data](https://github.com/vanderschaarlab/synthcity/blob/use_cases/tutorials/tutorial0_basic_examples.ipynb)
205-
- [![Test In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1rTTvV4FT-Ut-rIHoBPXQimiBlZ7zCv59?usp=sharing) [ Tutorial 1: Writing a new plugin](https://github.com/vanderschaarlab/synthcity/blob/use_cases/tutorials/tutorial1_add_a_new_plugin.ipynb)
206-
- [![Test In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1FXpnQ9bpHzEgJgD-9pf_PPN4D80ENilE?usp=sharing) [ Tutorial 2: Benchmarking models](https://github.com/vanderschaarlab/synthcity/blob/use_cases/tutorials/tutorial2_benchmarks.ipynb)
207-
- [![Test In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1Wa2CPsbXzbKMPC5fSBhKl00Gi7QqVkse?usp=sharing) [ Tutorial 3: Generating Survival Analysis data](https://github.com/vanderschaarlab/synthcity/blob/use_cases/tutorials/tutorial3_survival_analysis.ipynb)
208-
- [![Test In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1jN36GCAKEkjzDlczmQfR7Wbh3yF3cIz5?usp=sharing) [ Tutorial 4: Generating Time Series](https://github.com/vanderschaarlab/synthcity/blob/use_cases/tutorials/tutorial4_time_series.ipynb)
209-
- [![Test In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1Nf8d3Y6sXr1uco8MsJA4wb33iFvReL59?usp=sharing) [ Tutorial 5: Generating Data with Differential Privacy Guarantees](https://github.com/vanderschaarlab/synthcity/blob/use_cases/tutorials/tutorial5_differential_privacy.ipynb)
204+
- [![Test In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1Vr2PJswgfFYBkJCm3hhVkuH-9dXnHeYV?usp=sharing) [ Tutorial 0: Getting started with tabular data](https://github.com/vanderschaarlab/synthcity/blob/main/tutorials/tutorial0_basic_examples.ipynb)
205+
- [![Test In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1rTTvV4FT-Ut-rIHoBPXQimiBlZ7zCv59?usp=sharing) [ Tutorial 1: Writing a new plugin](https://github.com/vanderschaarlab/synthcity/blob/main/tutorials/tutorial1_add_a_new_plugin.ipynb)
206+
- [![Test In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1FXpnQ9bpHzEgJgD-9pf_PPN4D80ENilE?usp=sharing) [ Tutorial 2: Benchmarking models](https://github.com/vanderschaarlab/synthcity/blob/main/tutorials/tutorial2_benchmarks.ipynb)
207+
- [![Test In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1Wa2CPsbXzbKMPC5fSBhKl00Gi7QqVkse?usp=sharing) [ Tutorial 3: Generating Survival Analysis data](https://github.com/vanderschaarlab/synthcity/blob/main/tutorials/tutorial3_survival_analysis.ipynb)
208+
- [![Test In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1jN36GCAKEkjzDlczmQfR7Wbh3yF3cIz5?usp=sharing) [ Tutorial 4: Generating Time Series](https://github.com/vanderschaarlab/synthcity/blob/main/tutorials/tutorial4_time_series.ipynb)
209+
- [![Test In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1Nf8d3Y6sXr1uco8MsJA4wb33iFvReL59?usp=sharing) [ Tutorial 5: Generating Data with Differential Privacy Guarantees](https://github.com/vanderschaarlab/synthcity/blob/main/tutorials/tutorial5_differential_privacy.ipynb)
210210

211211

212212
## 🔑 Methods
@@ -238,7 +238,7 @@ assert syn_model.name() == reloaded.name()
238238
|--- | --- | --- |
239239
|**nflow**| Normalizing Flows are generative models which produce tractable distributions where both sampling and density evaluation can be efficient and exact.| [Neural Spline Flows](https://arxiv.org/abs/1906.04032) |
240240

241-
### Survival analysis methods
241+
### Static Survival analysis methods
242242

243243
| Method | Description | Reference |
244244
|--- | --- | --- |
@@ -247,7 +247,7 @@ assert syn_model.name() == reloaded.name()
247247
|**survae** | SurvivalGAN version using VAE | --- |
248248
|**survival_nflow** | SurvivalGAN version using normalizing flows | --- |
249249

250-
### Time Series methods
250+
### Time-Series and Time-Series Survival Analysis methods
251251

252252
| Method | Description | Reference |
253253
|--- | --- | --- |

docs/README.md

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ $ pip install .
4040
```python
4141
from synthcity.plugins import Plugins
4242

43-
Plugins(categories=["generic"]).list()
43+
Plugins(categories=["generic", "privacy"]).list()
4444
```
4545

4646
* Load and train a generator
@@ -63,19 +63,6 @@ syn_model.fit(X)
6363
syn_model.generate(count = 10)
6464
```
6565

66-
* Generate new synthetic data under some constraints
67-
68-
```python
69-
# Constraint: target <= 100
70-
from synthcity.plugins.core.constraints import Constraints
71-
72-
constraints = Constraints(rules=[("target", "<=", 100)])
73-
74-
generated = syn_model.generate(count=10, constraints=constraints)
75-
76-
assert (generated["target"] <= 100).any()
77-
```
78-
7966
* Benchmark the quality of the plugins
8067

8168
```python
@@ -105,14 +92,14 @@ score = Benchmarks.evaluate(
10592
Benchmarks.print(score)
10693
```
10794

108-
### Survival analysis
95+
### Static Survival analysis
10996

11097
* List the available generators
11198

11299
```python
113100
from synthcity.plugins import Plugins
114101

115-
Plugins(categories=["survival_analysis"]).list()
102+
Plugins(categories=["generic", "privacy", "survival_analysis"]).list()
116103
```
117104

118105
* Generate new data
@@ -136,14 +123,14 @@ syn_model.fit(data)
136123
syn_model.generate(count=10)
137124
```
138125

139-
### Time series
126+
### Time-Series & Time-Series Survival Analysis
140127

141128
* List the available generators
142129

143130
```python
144131
from synthcity.plugins import Plugins
145132

146-
Plugins(categories=["time_series"]).list()
133+
Plugins(categories=["generic", "privacy", "time_series"]).list()
147134
```
148135

149136
* Generate new data
@@ -157,7 +144,7 @@ from synthcity.utils.datasets.time_series.google_stocks import GoogleStocksDatal
157144
static_data, temporal_data, horizons, outcome = GoogleStocksDataloader().load()
158145
data = TimeSeriesDataLoader(
159146
temporal_data=temporal_data,
160-
temporal_horizons=horizons,
147+
observation_times=horizons,
161148
static_data=static_data,
162149
outcome=outcome,
163150
)

docs/_templates/module.rst_t

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{%- if show_headings %}
2+
{{- [basename, "module"] | join(' ') | e | heading }}
3+
4+
{% endif -%}
5+
.. uml:: {{ qualname }}
6+
:classes:
7+
.. automodule:: {{ qualname }}
8+
9+
{%- for option in automodule_options %}
10+
:{{ option }}:
11+
{%- endfor %}

docs/advanced.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Core components
88
:glob:
99
:maxdepth: 2
1010

11+
Plugin <generated/synthcity.plugins.core.plugin.rst>
1112
Dataloader <generated/synthcity.plugins.core.dataloader.rst>
1213
Constraints <generated/synthcity.plugins.core.constraints.rst>
1314
Distribution <generated/synthcity.plugins.core.distribution.rst>

docs/conf.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
"-f",
4242
"-o",
4343
"generated",
44+
"-t", "_templates",
4445
"../src/synthcity/",
4546
]
4647
)
@@ -81,8 +82,12 @@
8182
"sphinx.ext.autosummary",
8283
"sphinx.ext.napoleon",
8384
"m2r2",
84-
"sphinxemoji.sphinxemoji",
85+
#"sphinxemoji.sphinxemoji",
8586
"nbsphinx",
87+
"sphinx_diagrams",
88+
'IPython.sphinxext.ipython_console_highlighting',
89+
'sphinx.ext.graphviz','sphinx.ext.inheritance_diagram',
90+
"sphinx_pyreverse",
8691
]
8792

8893
autodoc_default_options = {
@@ -111,7 +116,7 @@
111116
# a list of builtin themes.
112117
#
113118
html_theme = "sphinx_rtd_theme"
114-
sphinxemoji_style = "twemoji"
119+
#sphinxemoji_style = "twemoji"
115120

116121

117122
# Add any paths that contain custom static files (such as style sheets) here,
@@ -126,9 +131,6 @@
126131
.. only:: html
127132
.. role:: raw-html(raw)
128133
:format: html
129-
.. nbinfo::
130-
:raw-html:`<a href="https://colab.research.google.com/github/DTUWindEnergy/PyWake/blob/master/{{ docname }}"><img alt="Open and run in Colab (interactive)" src="https://colab.research.google.com/assets/colab-badge.svg" style="vertical-align:text-bottom"></a>
131-
<a href="https://gitlab.windenergy.dtu.dk/TOPFARM/PyWake/-/tree/master/{{ docname }}"><img alt="Edit on Gitlab" src="https://img.shields.io/badge/Edit%20on-Gitlab-blue?style=flat&logo=gitlab" style="vertical-align:text-bottom"></a>`
132134
"""
133135

134136
autodoc_mock_imports = [

docs/examples.rst

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,9 @@ General-purpose generators
2020
:glob:
2121
:maxdepth: 2
2222

23-
AdsGAN <tutorials/plugins/generic/plugin_adsgan.ipynb>
2423
Bayesian Network <tutorials/plugins/generic/plugin_bayesian_network.ipynb>
2524
CTGAN <tutorials/plugins/generic/plugin_ctgan.ipynb>
2625
Normalizing Flows <tutorials/plugins/generic/plugin_nflow.ipynb>
27-
PATEGAN <tutorials/plugins/generic/plugin_pategan.ipynb>
28-
PrivBayes <tutorials/plugins/generic/plugin_privbayes.ipynb>
2926
TVAE <tutorials/plugins/generic/plugin_tvae.ipynb>
3027

3128

@@ -45,11 +42,11 @@ Privacy-related generators
4542
:glob:
4643
:maxdepth: 2
4744

48-
DECAF <tutorials/plugins/fairness/plugin_decaf.ipynb>
49-
DP-GAN <tutorials/plugins/generic/plugin_dpgan.ipynb>
50-
AdsGAN <tutorials/plugins/generic/plugin_adsgan.ipynb>
51-
PATEGAN <tutorials/plugins/generic/plugin_pategan.ipynb>
52-
PrivBayes <tutorials/plugins/generic/plugin_privbayes.ipynb>
45+
DECAF <tutorials/plugins/privacy/plugin_decaf.ipynb>
46+
DP-GAN <tutorials/plugins/privacy/plugin_dpgan.ipynb>
47+
AdsGAN <tutorials/plugins/privacy/plugin_adsgan.ipynb>
48+
PATEGAN <tutorials/plugins/privacy/plugin_pategan.ipynb>
49+
PrivBayes <tutorials/plugins/privacy/plugin_privbayes.ipynb>
5350

5451
Domain adaptation generators
5552
------------------------------

docs/generators.rst

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,9 @@ General purpose
77
:glob:
88
:maxdepth: 2
99

10-
AdsGAN <generated/synthcity.plugins.generic.plugin_adsgan.rst>
1110
Bayesian Network <generated/synthcity.plugins.generic.plugin_bayesian_network.rst>
1211
CTGAN <generated/synthcity.plugins.generic.plugin_ctgan.rst>
1312
Normalizing Flows <generated/synthcity.plugins.generic.plugin_nflow.rst>
14-
PATEGAN <generated/synthcity.plugins.generic.plugin_pategan.rst>
15-
PrivBayes <generated/synthcity.plugins.generic.plugin_privbayes.rst>
1613
RTVAE <generated/synthcity.plugins.generic.plugin_rtvae.rst>
1714
TVAE <generated/synthcity.plugins.generic.plugin_tvae.rst>
1815

@@ -22,22 +19,22 @@ Privacy-focused
2219
:glob:
2320
:maxdepth: 2
2421

25-
AdsGAN <generated/synthcity.plugins.generic.plugin_adsgan.rst>
26-
PATEGAN <generated/synthcity.plugins.generic.plugin_pategan.rst>
27-
PrivBayes <generated/synthcity.plugins.generic.plugin_privbayes.rst>
28-
DP-GAN <generated/synthcity.plugins.generic.plugin_dpgan.rst>
29-
DECAF <generated/synthcity.plugins.fairness.plugin_decaf.rst>
22+
AdsGAN <generated/synthcity.plugins.privacy.plugin_adsgan.rst>
23+
PATEGAN <generated/synthcity.plugins.privacy.plugin_pategan.rst>
24+
PrivBayes <generated/synthcity.plugins.privacy.plugin_privbayes.rst>
25+
DP-GAN <generated/synthcity.plugins.privacy.plugin_dpgan.rst>
26+
DECAF <generated/synthcity.plugins.privacy.plugin_decaf.rst>
3027

3128
Domain adaptation
32-
-----------------
29+
-------------------
3330
.. toctree::
3431
:glob:
3532
:maxdepth: 2
3633

3734
RadialGAN <generated/synthcity.plugins.domain_adaptation.plugin_radialgan.rst>
3835

39-
Survival Analysis
40-
-----------------
36+
Static Survival Analysis
37+
--------------------------
4138
.. toctree::
4239
:glob:
4340
:maxdepth: 2
@@ -47,8 +44,8 @@ Survival Analysis
4744
SurVAE <generated/synthcity.plugins.survival_analysis.plugin_survae.rst>
4845
Surival NFlows <generated/synthcity.plugins.survival_analysis.plugin_survival_nflow.rst>
4946

50-
Time-series
51-
-----------------
47+
Time-series & Time-Series Survival Analysis
48+
----------------------------------------------
5249
.. toctree::
5350
:glob:
5451
:maxdepth: 2

docs/index.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ Examples
2020

2121
examples.rst
2222

23+
Dataloaders
24+
============
25+
.. toctree::
26+
:glob:
27+
:maxdepth: 3
28+
29+
Dataloaders <generated/synthcity.plugins.core.dataloader.rst>
30+
2331
Generators
2432
==========
2533
.. toctree::

docs/metrics.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
Metrics
2-
============
1+
Metrics and benchmarks
2+
=======================
33
.. toctree::
44
:glob:
55
:maxdepth: 2
@@ -11,3 +11,4 @@ Metrics
1111
Privacy Metrics <generated/synthcity.metrics.eval_privacy.rst>
1212
Attacks <generated/synthcity.metrics.eval_attacks.rst>
1313
Weighted metrics <generated/synthcity.metrics.weighted_metrics.rst>
14+
Benchmarks <generated/synthcity.benchmark.rst>

docs/requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ Pillow==9.3.0
1313
seaborn
1414
sphinx==4.3.1
1515
sphinx-autopackagesummary
16+
sphinx-pyreverse
17+
sphinx_diagrams
1618
sphinx_gallery==0.10.1
1719
sphinx_rtd_theme==1.0.0
1820
sphinxcontrib-napoleon

0 commit comments

Comments
 (0)