Read-only mirror of https://github.com/dscc-admin-ch/smartnoise-synth-logger — Data Science Competence Center DSCC. Issues & pull requests at the source.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2024-08-20 09:42:57 +02:00
.github/workflows styling and deserialiser 2024-08-08 13:53:27 +02:00
smartnoise_synth_logger prettify code 2024-08-19 14:59:58 +02:00
tests add tests for detetime 2024-08-19 14:48:51 +02:00
LICENSE adding setup, requirements 2024-08-09 10:10:22 +02:00
pyproject.toml styling and deserialiser 2024-08-08 13:53:27 +02:00
README.md add datetime to readme 2024-08-19 14:57:57 +02:00
requirements.txt adding setup, requirements 2024-08-09 10:10:22 +02:00
setup.py increase version 2024-08-19 14:49:56 +02:00

Smartnoise Synth Logger

Logger for Smartnoise Synth Transformers

License: MIT Python ci tests

Serialize and deserialize Smartnoise Synth constraints to and from JSON. Constraints as specified in the Smartnoise Synth Transforms documentation: https://docs.smartnoise.org/synth/transforms/index.html with tt = TableTransformer(constraint).

Installation

Install with pip:

pip install smartnoise-synth-logger

Example

from snsynth.transform import (
    AnonymizationTransformer,
    BinTransformer,
    ChainTransformer,
    ClampTransformer,
    DropTransformer,
    LabelTransformer,
    LogTransformer,
    MinMaxTransformer,
    OneHotEncoder,
    StandardScaler,
)
from snsynth.transform.datetime import DateTimeTransformer


constraints = {
    "id": AnonymizationTransformer("uuid4"),
    "email": "email", # also possible
    "income": ChainTransformer(
        [
            LogTransformer(),
            BinTransformer(bins=20, lower=0, upper=50),
        ]
    ),
    "height": ChainTransformer(
        [
            StandardScaler(lower=0, upper=1),
            BinTransformer(bins=20, lower=0, upper=1),
        ]
    ),
    "weight": ChainTransformer(
        [ClampTransformer(lower=10, upper=200), BinTransformer(bins=20)]
    ),
    "age": MinMaxTransformer(lower=0, upper=100),
    "sex": ChainTransformer(
        [LabelTransformer(nullable=True), OneHotEncoder()]
    ),
    "rank": LabelTransformer(nullable=False),
    "job": DropTransformer(),
    "date": DateTimeTransformer(epoch="1993-06-04"),
}

Serialise

from smartnoise_synth_logger import serialise_constraints

serialised_constraints = serialise_constraints(constraints)

Deserialise

from smartnoise_synth_logger import deserialise_constraints

deserialised_constraints = deserialise_constraints(serialised_constraints)
tt = TableTransformer(deserialised_constraints)

It can now be expected that the deserialised_constraints has the same constraints as constraints.

NOTE: lambda function in AnonymizationTransformer are not supported.