Skip to content

Core

Functions:

init_traces_exporter #

init_traces_exporter(resource: Resource, telemetry_config: Telemetry) -> None

Initializes the OpenTelemetry trace exporter with a given resource.

Parameters:

  • resource #

    (Resource) –

    The resource to associate with the trace telemetry.

Source code in core/lomas_core/instrumentation.py
19
20
21
22
23
24
25
26
27
28
29
30
31
32
def init_traces_exporter(resource: Resource, telemetry_config: Telemetry) -> None:
    """
    Initializes the OpenTelemetry trace exporter with a given resource.

    Args:
        resource (Resource): The resource to associate with the trace telemetry.
    """
    exporter = OTLPSpanExporter(
        endpoint=str(telemetry_config.collector_endpoint), insecure=telemetry_config.collector_insecure
    )
    span_processor = BatchSpanProcessor(exporter)
    tracer_provider = TracerProvider(resource=resource)
    tracer_provider.add_span_processor(span_processor)
    trace.set_tracer_provider(tracer_provider)

init_metrics_exporter #

init_metrics_exporter(resource: Resource, telemetry_config: Telemetry) -> None

Initializes the OpenTelemetry metrics exporter with a given resource.

Parameters:

  • resource #

    (Resource) –

    The resource to associate with the metric telemetry.

Source code in core/lomas_core/instrumentation.py
35
36
37
38
39
40
41
42
43
44
45
46
47
def init_metrics_exporter(resource: Resource, telemetry_config: Telemetry) -> None:
    """
    Initializes the OpenTelemetry metrics exporter with a given resource.

    Args:
        resource (Resource): The resource to associate with the metric telemetry.
    """
    exporter = OTLPMetricExporter(
        endpoint=str(telemetry_config.collector_endpoint), insecure=telemetry_config.collector_insecure
    )
    reader = PeriodicExportingMetricReader(exporter)
    meter_provider = MeterProvider(resource=resource, metric_readers=[reader])
    metrics.set_meter_provider(meter_provider)

init_logs_exporter #

init_logs_exporter(resource: Resource, telemetry_config: Telemetry) -> None

Initializes the OpenTelemetry logs exporter with a given resource.

Parameters:

  • resource #

    (Resource) –

    The resource to associate with the log telemetry.

Source code in core/lomas_core/instrumentation.py
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
def init_logs_exporter(resource: Resource, telemetry_config: Telemetry) -> None:
    """
    Initializes the OpenTelemetry logs exporter with a given resource.

    Args:
        resource (Resource): The resource to associate with the log telemetry.
    """
    exporter = OTLPLogExporter(
        endpoint=str(telemetry_config.collector_endpoint), insecure=telemetry_config.collector_insecure
    )
    logger_provider = LoggerProvider(resource=resource)
    set_logger_provider(logger_provider)
    logger_provider.add_log_record_processor(BatchLogRecordProcessor(exporter))

    handler = LoggingHandler(level=logging.NOTSET, logger_provider=logger_provider)
    logging.getLogger().addHandler(handler)

init_telemetry #

init_telemetry(telemetry_config: Telemetry) -> None

Initializes all OpenTelemetry exporters with a shared resource.

Parameters:

  • telemetry_config #

    (Telemetry) –

    Telemetry configuration

Source code in core/lomas_core/instrumentation.py
68
69
70
71
72
73
74
75
76
77
78
79
80
81
def init_telemetry(telemetry_config: Telemetry) -> None:
    """
    Initializes all OpenTelemetry exporters with a shared resource.

    Args:
        telemetry_config (Telemetry): Telemetry configuration
    """
    resource = Resource.create(
        {"service.name": telemetry_config.service_name, "service.instance.id": telemetry_config.service_id}
    )

    init_traces_exporter(resource, telemetry_config)
    init_metrics_exporter(resource, telemetry_config)
    init_logs_exporter(resource, telemetry_config)

Classes:

Functions:

InvalidQueryException #

InvalidQueryException(error_message: str)

              flowchart TD
              lomas_core.error_handler.InvalidQueryException[InvalidQueryException]

              

              click lomas_core.error_handler.InvalidQueryException href "" "lomas_core.error_handler.InvalidQueryException"
            

Custom exception for invalid queries.

For example, this exception will occur when the query: - is not an opendp measurement - cannot be reconstructed properly (for opendp and diffprivlib)

Parameters:

  • error_message #

    (str) –

    description

Source code in core/lomas_core/error_handler.py
29
30
31
32
33
34
35
def __init__(self, error_message: str) -> None:
    """Invalid Query Exception initialisation.

    Args:
        error_message (str): _description_
    """
    self.error_message = error_message

ExternalLibraryException #

ExternalLibraryException(library: DPLibraries, error_message: str)

              flowchart TD
              lomas_core.error_handler.ExternalLibraryException[ExternalLibraryException]

              

              click lomas_core.error_handler.ExternalLibraryException href "" "lomas_core.error_handler.ExternalLibraryException"
            

Custom exception for issues within external libraries.

This exception will occur when the processes fail within the external libraries (smartnoise-sql, opendp, diffprivlib)

Parameters:

  • library #

    (str) –

    description

  • error_message #

    (str) –

    description

Source code in core/lomas_core/error_handler.py
46
47
48
49
50
51
52
53
54
def __init__(self, library: DPLibraries, error_message: str) -> None:
    """External Query Exception initialisation.

    Args:
        library (str): _description_
        error_message (str): _description_
    """
    self.library = library
    self.error_message = error_message

UnauthorizedAccessException #

UnauthorizedAccessException(error_message: str)

              flowchart TD
              lomas_core.error_handler.UnauthorizedAccessException[UnauthorizedAccessException]

              

              click lomas_core.error_handler.UnauthorizedAccessException href "" "lomas_core.error_handler.UnauthorizedAccessException"
            

Custom exception for unauthorized access:

(unknown user, no access to dataset, etc)

Source code in core/lomas_core/error_handler.py
64
65
def __init__(self, error_message: str) -> None:
    self.error_message = error_message

InternalServerException #

InternalServerException(error_message: str)

              flowchart TD
              lomas_core.error_handler.InternalServerException[InternalServerException]

              

              click lomas_core.error_handler.InternalServerException href "" "lomas_core.error_handler.InternalServerException"
            

Custom exception for issues within server internal functionalities.

Source code in core/lomas_core/error_handler.py
71
72
def __init__(self, error_message: str) -> None:
    self.error_message = error_message

add_exception_handlers #

add_exception_handlers(app: FastAPI) -> None

Translates custom exceptions to JSONResponses.

Parameters:

  • app #

    (FastAPI) –

    A fastapi App.

Source code in core/lomas_core/error_handler.py
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
def add_exception_handlers(app: FastAPI) -> None:
    """
    Translates custom exceptions to JSONResponses.

    Args:
        app (FastAPI): A fastapi App.
    """

    @app.exception_handler(InvalidQueryException)
    async def invalid_query_exception_handler(_: Request, exc: InvalidQueryException) -> JSONResponse:
        logger.debug(f"InvalidQueryException raised: {exc.error_message}")
        return JSONResponse(
            status_code=status.HTTP_400_BAD_REQUEST,
            content=jsonable_encoder(InvalidQueryExceptionModel(message=exc.error_message)),
        )

    @app.exception_handler(ExternalLibraryException)
    async def external_library_exception_handler(_: Request, exc: ExternalLibraryException) -> JSONResponse:
        logger.debug(f"ExternalLibraryException raised: {exc.error_message}")
        return JSONResponse(
            status_code=status.HTTP_422_UNPROCESSABLE_CONTENT,
            content=jsonable_encoder(
                ExternalLibraryExceptionModel(message=exc.error_message, library=exc.library)
            ),
        )

    @app.exception_handler(UnauthorizedAccessException)
    async def unauthorized_access_exception_handler(
        _: Request, exc: UnauthorizedAccessException
    ) -> JSONResponse:
        logger.debug(f"UnauthorizedAccessException raised: {exc.error_message}")
        return JSONResponse(
            status_code=status.HTTP_403_FORBIDDEN,
            content=jsonable_encoder(UnauthorizedAccessExceptionModel(message=exc.error_message)),
        )

    @app.exception_handler(InternalServerException)
    async def internal_server_exception_handler(_: Request, exc: InternalServerException) -> JSONResponse:
        logger.debug(f"InternalServerException  raised: {exc.error_message}")
        return JSONResponse(
            status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
            content=jsonable_encoder(InternalServerExceptionModel()),
        )

raise_error_from_model #

raise_error_from_model(error_model: LomasServerExceptionType) -> Never

Raise error message based on Server Error Model.

Parameters:

  • error_model #

    (LomasServerExceptionType) –

    Server Error

Raise: Server Error

Source code in core/lomas_core/error_handler.py
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
def raise_error_from_model(error_model: LomasServerExceptionType) -> Never:
    """Raise error message based on Server Error Model.

    Args:
        error_model (LomasServerExceptionType): Server Error
    Raise:
        Server Error
    """
    match error_model:
        case InvalidQueryExceptionModel():
            raise InvalidQueryException(error_model.message)
        case ExternalLibraryExceptionModel():
            raise ExternalLibraryException(error_model.library, error_model.message)
        case UnauthorizedAccessExceptionModel():
            raise UnauthorizedAccessException(error_model.message)
        case InternalServerExceptionModel():
            raise InternalServerException("Internal Server Exception.")

Classes:

DPLibraries #


              flowchart TD
              lomas_core.constants.DPLibraries[DPLibraries]

              

              click lomas_core.constants.DPLibraries href "" "lomas_core.constants.DPLibraries"
            

Name of DP Library used in the query.

SSynthMarginalSynthesizer #


              flowchart TD
              lomas_core.constants.SSynthMarginalSynthesizer[SSynthMarginalSynthesizer]

              

              click lomas_core.constants.SSynthMarginalSynthesizer href "" "lomas_core.constants.SSynthMarginalSynthesizer"
            

Marginal Synthesizer models for smartnoise synth.

SSynthGanSynthesizer #


              flowchart TD
              lomas_core.constants.SSynthGanSynthesizer[SSynthGanSynthesizer]

              

              click lomas_core.constants.SSynthGanSynthesizer href "" "lomas_core.constants.SSynthGanSynthesizer"
            

GAN Synthesizer models for smartnoise synth.

Scopes #


              flowchart TD
              lomas_core.constants.Scopes[Scopes]

              

              click lomas_core.constants.Scopes href "" "lomas_core.constants.Scopes"
            

List of security scopes for the server endpoints.

Classes:

DatasetOfUser #


              flowchart TD
              lomas_core.models.collections.DatasetOfUser[DatasetOfUser]

              

              click lomas_core.models.collections.DatasetOfUser href "" "lomas_core.models.collections.DatasetOfUser"
            

BaseModel for informations of a user on a dataset.

UserId #


              flowchart TD
              lomas_core.models.collections.UserId[UserId]

              

              click lomas_core.models.collections.UserId href "" "lomas_core.models.collections.UserId"
            

BaseModel for user identification.

User #


              flowchart TD
              lomas_core.models.collections.User[User]

              

              click lomas_core.models.collections.User href "" "lomas_core.models.collections.User"
            

BaseModel for a user in a user collection.

UserCollection #


              flowchart TD
              lomas_core.models.collections.UserCollection[UserCollection]

              

              click lomas_core.models.collections.UserCollection href "" "lomas_core.models.collections.UserCollection"
            

BaseModel for users collection.

DSPathAccess #


              flowchart TD
              lomas_core.models.collections.DSPathAccess[DSPathAccess]

              

              click lomas_core.models.collections.DSPathAccess href "" "lomas_core.models.collections.DSPathAccess"
            

BaseModel for a local dataset.

DSS3Access #


              flowchart TD
              lomas_core.models.collections.DSS3Access[DSS3Access]

              

              click lomas_core.models.collections.DSS3Access href "" "lomas_core.models.collections.DSS3Access"
            

BaseModel for a dataset on S3.

DSInfo #


              flowchart TD
              lomas_core.models.collections.DSInfo[DSInfo]

              

              click lomas_core.models.collections.DSInfo href "" "lomas_core.models.collections.DSInfo"
            

BaseModel for a dataset.

DatasetsCollection #


              flowchart TD
              lomas_core.models.collections.DatasetsCollection[DatasetsCollection]

              

              click lomas_core.models.collections.DatasetsCollection href "" "lomas_core.models.collections.DatasetsCollection"
            

BaseModel for datasets collection.

Classes:

TimeAttack #


              flowchart TD
              lomas_core.models.config.TimeAttack[TimeAttack]

              

              click lomas_core.models.config.TimeAttack href "" "lomas_core.models.config.TimeAttack"
            

BaseModel for configs to prevent timing attacks.

Telemetry #


              flowchart TD
              lomas_core.models.config.Telemetry[Telemetry]

              

              click lomas_core.models.config.Telemetry href "" "lomas_core.models.config.Telemetry"
            

Telemetry config.

Methods:

options_set_if_enabled #

options_set_if_enabled() -> Self

Ensures that if enabled is set to True, all other fields are specified.

Raises:

  • ValueError

    If any of the fields is not specified while enabled is True.

Source code in core/lomas_core/models/config.py
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
@model_validator(mode="after")
def options_set_if_enabled(self) -> Self:
    """Ensures that if enabled is set to True, all other fields are specified.

    Raises:
        ValueError: If any of the fields is not specified while enabled is True.
    """
    if self.enabled:
        missing = [k for k, v in dict(self).items() if v is None]
        if len(missing) > 0:
            raise ValueError(
                f"If enabled set to True, all other fields must be specified. Missing fields: {missing}"
            )

    return self

OIDCConfig #


              flowchart TD
              lomas_core.models.config.OIDCConfig[OIDCConfig]

              

              click lomas_core.models.config.OIDCConfig href "" "lomas_core.models.config.OIDCConfig"
            

Base model for oidc config returned from discovery endpoint.

OIDCDeviceCodeResponse #


              flowchart TD
              lomas_core.models.config.OIDCDeviceCodeResponse[OIDCDeviceCodeResponse]

              

              click lomas_core.models.config.OIDCDeviceCodeResponse href "" "lomas_core.models.config.OIDCDeviceCodeResponse"
            

Base model for oidc device code response.

Classes:

Functions:

  • init_logging

    Sets basic logging config to level and creates a logger named after name with log level lomas_level.

  • get_lomas_logger

    Get a logger with set level.

TimeAttackMethod #


              flowchart TD
              lomas_core.models.constants.TimeAttackMethod[TimeAttackMethod]

              

              click lomas_core.models.constants.TimeAttackMethod href "" "lomas_core.models.constants.TimeAttackMethod"
            

Possible methods against timing attacks.

PrivateDatabaseType #


              flowchart TD
              lomas_core.models.constants.PrivateDatabaseType[PrivateDatabaseType]

              

              click lomas_core.models.constants.PrivateDatabaseType href "" "lomas_core.models.constants.PrivateDatabaseType"
            

Type of Private Database for the private data.

AuthenticationType #


              flowchart TD
              lomas_core.models.constants.AuthenticationType[AuthenticationType]

              

              click lomas_core.models.constants.AuthenticationType href "" "lomas_core.models.constants.AuthenticationType"
            

Type of Authenticator to identify users.

ExceptionType #


              flowchart TD
              lomas_core.models.constants.ExceptionType[ExceptionType]

              

              click lomas_core.models.constants.ExceptionType href "" "lomas_core.models.constants.ExceptionType"
            

Lomas server exception types.

To be used as discriminator when parsing corresponding models

init_logging #

init_logging(name: str, level: str = 'INFO', lomas_level: str = 'INFO') -> None

Sets basic logging config to level and creates a logger named after name with log level lomas_level.

This function is meant to set a parent logger for the lomas_* module with a different log level than the root logger.

Parameters:

  • name #

    (str) –

    Name of the parent logger to create

  • level #

    (str, default: 'INFO' ) –

    Log level for the root logger.

  • lomas_level #

    (str, default: 'INFO' ) –

    Log level for the parent logger.

Source code in core/lomas_core/models/constants.py
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
def init_logging(name: str, level: str = "INFO", lomas_level: str = "INFO") -> None:
    """Sets basic logging config to level and creates a logger named after name with log level lomas_level.

    This function is meant to set a parent logger for the lomas_* module with a different
    log level than the root logger.

    Args:
        name (str): Name of the parent logger to create
        level (str): Log level for the root logger.
        lomas_level (str): Log level for the parent logger.
    """
    logging.basicConfig(
        format="%(message)s %(name)s",
        datefmt="[%X]",
        handlers=[RichHandler(rich_tracebacks=True, tracebacks_show_locals=True)],
        level=level,
    )

    logging.getLogger(name).setLevel(lomas_level)

get_lomas_logger #

get_lomas_logger(name: str, level: str = 'NOTSET') -> Logger

Get a logger with set level.

Default level is always unset (getLogger default is warning).

Parameters:

  • name #

    (str) –

    Name of the logger.

  • level #

    (str, default: 'NOTSET' ) –

    Logging level. Defaults to "NOTSET".

Returns:

  • Logger

    logging.Logger: Named logger with correct level.

Source code in core/lomas_core/models/constants.py
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
def get_lomas_logger(name: str, level: str = "NOTSET") -> logging.Logger:
    """Get a logger with set level.

    Default level is always unset (getLogger default is warning).

    Args:
        name (str): Name of the logger.
        level (str, optional): Logging level. Defaults to "NOTSET".

    Returns:
        logging.Logger: Named logger with correct level.
    """
    logging.getLogger(name).setLevel(level)

    return logging.getLogger(name)

Classes:

LomasServerExceptionModel #


              flowchart TD
              lomas_core.models.exceptions.LomasServerExceptionModel[LomasServerExceptionModel]

              

              click lomas_core.models.exceptions.LomasServerExceptionModel href "" "lomas_core.models.exceptions.LomasServerExceptionModel"
            

Base model for lomas server exceptions.

Attributes:

type instance-attribute #

type: str

Exception type.

InvalidQueryExceptionModel #


              flowchart TD
              lomas_core.models.exceptions.InvalidQueryExceptionModel[InvalidQueryExceptionModel]
              lomas_core.models.exceptions.LomasServerExceptionModel[LomasServerExceptionModel]

                              lomas_core.models.exceptions.LomasServerExceptionModel --> lomas_core.models.exceptions.InvalidQueryExceptionModel
                


              click lomas_core.models.exceptions.InvalidQueryExceptionModel href "" "lomas_core.models.exceptions.InvalidQueryExceptionModel"
              click lomas_core.models.exceptions.LomasServerExceptionModel href "" "lomas_core.models.exceptions.LomasServerExceptionModel"
            

Exception directly related to the query.

For example if it does not contain a DP mechanism or there is not enough DP budget.

Attributes:

type class-attribute instance-attribute #

type: Literal[INVALID_QUERY] = INVALID_QUERY

Exception type.

message instance-attribute #

message: str

Exception error message.

This is for exceptions directly related to the query. For example if it does not contain a DP mechanism or there is not enough DP budget.

ExternalLibraryExceptionModel #


              flowchart TD
              lomas_core.models.exceptions.ExternalLibraryExceptionModel[ExternalLibraryExceptionModel]
              lomas_core.models.exceptions.LomasServerExceptionModel[LomasServerExceptionModel]

                              lomas_core.models.exceptions.LomasServerExceptionModel --> lomas_core.models.exceptions.ExternalLibraryExceptionModel
                


              click lomas_core.models.exceptions.ExternalLibraryExceptionModel href "" "lomas_core.models.exceptions.ExternalLibraryExceptionModel"
              click lomas_core.models.exceptions.LomasServerExceptionModel href "" "lomas_core.models.exceptions.LomasServerExceptionModel"
            

For exceptions from libraries external to the lomas packages.

Attributes:

type class-attribute instance-attribute #

type: Literal[EXTERNAL_LIBRARY] = EXTERNAL_LIBRARY

Exception type.

library instance-attribute #

library: DPLibraries

The external library that caused the exception.

message instance-attribute #

message: str

Exception error message.

For exceptions from libraries external to the lomas packages.

UnauthorizedAccessExceptionModel #


              flowchart TD
              lomas_core.models.exceptions.UnauthorizedAccessExceptionModel[UnauthorizedAccessExceptionModel]
              lomas_core.models.exceptions.LomasServerExceptionModel[LomasServerExceptionModel]

                              lomas_core.models.exceptions.LomasServerExceptionModel --> lomas_core.models.exceptions.UnauthorizedAccessExceptionModel
                


              click lomas_core.models.exceptions.UnauthorizedAccessExceptionModel href "" "lomas_core.models.exceptions.UnauthorizedAccessExceptionModel"
              click lomas_core.models.exceptions.LomasServerExceptionModel href "" "lomas_core.models.exceptions.LomasServerExceptionModel"
            

Exception related to rights with regards to the query.

(e.g. no user access for this dataset).

Attributes:

type class-attribute instance-attribute #

type: Literal[UNAUTHORIZED_ACCESS] = UNAUTHORIZED_ACCESS

Exception type.

message instance-attribute #

message: str

Exception error message.

Exception related to rights with regards to the query. (e.g. no user access for this dataset).

InternalServerExceptionModel #


              flowchart TD
              lomas_core.models.exceptions.InternalServerExceptionModel[InternalServerExceptionModel]
              lomas_core.models.exceptions.LomasServerExceptionModel[LomasServerExceptionModel]

                              lomas_core.models.exceptions.LomasServerExceptionModel --> lomas_core.models.exceptions.InternalServerExceptionModel
                


              click lomas_core.models.exceptions.InternalServerExceptionModel href "" "lomas_core.models.exceptions.InternalServerExceptionModel"
              click lomas_core.models.exceptions.LomasServerExceptionModel href "" "lomas_core.models.exceptions.LomasServerExceptionModel"
            

For any unforseen internal exception.

Attributes:

type class-attribute instance-attribute #

type: Literal[INTERNAL_SERVER] = INTERNAL_SERVER

Exception type.

For any unforseen internal exception.

Functions:

  • make_dummy

    Make dummy example dummy query based on example query.

make_dummy #

make_dummy(example_query: dict[str, JsonValue]) -> dict[str, JsonValue]

Make dummy example dummy query based on example query.

Source code in core/lomas_core/models/requests_examples.py
38
39
40
41
42
43
def make_dummy(example_query: dict[str, JsonValue]) -> dict[str, JsonValue]:
    """Make dummy example dummy query based on example query."""
    example_query_dummy = dict(example_query)
    example_query_dummy["dummy_nb_rows"] = DUMMY_NB_ROWS
    example_query_dummy["dummy_seed"] = DUMMY_SEED
    return example_query_dummy

Classes:

Functions:

LomasRequestModel #


              flowchart TD
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

              

              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Base class for all types of requests to the lomas server.

We differentiate between requests and queries
  • a request does not necessarily require an algorithm to be executed on the private dataset (e.g. some cost requests).
  • a query requires executing an algorithm on a private dataset (or a potentially a dummy).

Attributes:

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

AddDatasetModel #


              flowchart TD
              lomas_core.models.requests.AddDatasetModel[AddDatasetModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.AddDatasetModel
                


              click lomas_core.models.requests.AddDatasetModel href "" "lomas_core.models.requests.AddDatasetModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Model input to add a private dataset with metadata.

Attributes:

database_type instance-attribute #

database_type: PrivateDatabaseType

Type of Private Database for the private data.

metadata_database_type instance-attribute #

metadata_database_type: PrivateDatabaseType

Type of Private Database for the private data.

dataset_path instance-attribute #

dataset_path: str

Path to the dataset.

metadata_path instance-attribute #

metadata_path: str

Path to the metadata.

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

GetDummyDataset #


              flowchart TD
              lomas_core.models.requests.GetDummyDataset[GetDummyDataset]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.GetDummyDataset
                


              click lomas_core.models.requests.GetDummyDataset href "" "lomas_core.models.requests.GetDummyDataset"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Model input to get a dummy dataset.

Attributes:

dummy_nb_rows instance-attribute #

dummy_nb_rows: int

The number of dummy rows to generate.

dummy_seed instance-attribute #

dummy_seed: int

The seed for the random generation of the dummy dataset.

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

GetDummyContext #


              flowchart TD
              lomas_core.models.requests.GetDummyContext[GetDummyContext]
              lomas_core.models.requests.GetDummyDataset[GetDummyDataset]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.GetDummyDataset --> lomas_core.models.requests.GetDummyContext
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.GetDummyDataset
                



              click lomas_core.models.requests.GetDummyContext href "" "lomas_core.models.requests.GetDummyContext"
              click lomas_core.models.requests.GetDummyDataset href "" "lomas_core.models.requests.GetDummyDataset"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Model input to get a dummy dataset.

Attributes:

  • epsilon (float | None) –

    The epsilon parameter used for pure ε-DP or approximate-DP.

  • delta (float | None) –

    The delta parameter.

  • rho (float | None) –

    Privacy loss paramater for zCDP (or approximate-zCDP).

  • approx_zcdp (bool) –

    If False, delta is used to compute the epsilon consumption equivalent when user wants to use zCDP.

  • dataset_name (str) –

    The name of the dataset the request is aimed at.

  • dummy_nb_rows (int) –

    The number of dummy rows to generate.

  • dummy_seed (int) –

    The seed for the random generation of the dummy dataset.

epsilon instance-attribute #

epsilon: float | None

The epsilon parameter used for pure ε-DP or approximate-DP.

delta instance-attribute #

delta: float | None

The delta parameter.

rho instance-attribute #

rho: float | None

Privacy loss paramater for zCDP (or approximate-zCDP).

Using this parameter instead of epsilon switches to a Gaussian mechansim.

approx_zcdp instance-attribute #

approx_zcdp: bool

If False, delta is used to compute the epsilon consumption equivalent when user wants to use zCDP.

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

dummy_nb_rows instance-attribute #

dummy_nb_rows: int

The number of dummy rows to generate.

dummy_seed instance-attribute #

dummy_seed: int

The seed for the random generation of the dummy dataset.

QueryModel #


              flowchart TD
              lomas_core.models.requests.QueryModel[QueryModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.QueryModel
                


              click lomas_core.models.requests.QueryModel href "" "lomas_core.models.requests.QueryModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Base input model for any query on a dataset.

We differentiate between requests and queries
  • a request does not necessarily require an algorithm to be executed on the private dataset (e.g. some cost requests).
  • a query requires executing an algorithm on a private dataset (or a potentially a dummy).

Attributes:

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

LomasBudgetRequest #


              flowchart TD
              lomas_core.models.requests.LomasBudgetRequest[LomasBudgetRequest]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.LomasBudgetRequest
                


              click lomas_core.models.requests.LomasBudgetRequest href "" "lomas_core.models.requests.LomasBudgetRequest"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Attributes:

epsilon instance-attribute #

epsilon: float

Privacy parameter (e.g., 0.1).

delta instance-attribute #

delta: float

Privacy parameter (e.g., 1e-5).

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

DummyQueryModel #


              flowchart TD
              lomas_core.models.requests.DummyQueryModel[DummyQueryModel]
              lomas_core.models.requests.QueryModel[QueryModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.QueryModel --> lomas_core.models.requests.DummyQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.QueryModel
                



              click lomas_core.models.requests.DummyQueryModel href "" "lomas_core.models.requests.DummyQueryModel"
              click lomas_core.models.requests.QueryModel href "" "lomas_core.models.requests.QueryModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Input model for a query on a dummy dataset.

Attributes:

  • dummy_nb_rows (int) –

    The number of rows in the dummy dataset.

  • dummy_seed (int) –

    The seed to set at the start of the dummy dataset generation.

  • dataset_name (str) –

    The name of the dataset the request is aimed at.

dummy_nb_rows instance-attribute #

dummy_nb_rows: int

The number of rows in the dummy dataset.

dummy_seed instance-attribute #

dummy_seed: int

The seed to set at the start of the dummy dataset generation.

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

SmartnoiseSQLRequestModel #


              flowchart TD
              lomas_core.models.requests.SmartnoiseSQLRequestModel[SmartnoiseSQLRequestModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.SmartnoiseSQLRequestModel
                


              click lomas_core.models.requests.SmartnoiseSQLRequestModel href "" "lomas_core.models.requests.SmartnoiseSQLRequestModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Base input model for a smarnoise-sql request.

Attributes:

query_str instance-attribute #

query_str: str

The SQL query to execute.

NOTE: the table name is "df", the query must end with "FROM df"

epsilon instance-attribute #

epsilon: float

Privacy parameter (e.g., 0.1).

delta instance-attribute #

delta: float

Privacy parameter (e.g., 1e-5).

mechanisms instance-attribute #

mechanisms: dict

Dictionary of mechanisms for the query.

See Smartnoise-SQL mechanisms documentation at https://docs.smartnoise.org/sql/advanced.html#overriding-mechanisms.

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

SmartnoiseSQLQueryModel #


              flowchart TD
              lomas_core.models.requests.SmartnoiseSQLQueryModel[SmartnoiseSQLQueryModel]
              lomas_core.models.requests.SmartnoiseSQLRequestModel[SmartnoiseSQLRequestModel]
              lomas_core.models.requests.QueryModel[QueryModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.SmartnoiseSQLRequestModel --> lomas_core.models.requests.SmartnoiseSQLQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.SmartnoiseSQLRequestModel
                

                lomas_core.models.requests.QueryModel --> lomas_core.models.requests.SmartnoiseSQLQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.QueryModel
                



              click lomas_core.models.requests.SmartnoiseSQLQueryModel href "" "lomas_core.models.requests.SmartnoiseSQLQueryModel"
              click lomas_core.models.requests.SmartnoiseSQLRequestModel href "" "lomas_core.models.requests.SmartnoiseSQLRequestModel"
              click lomas_core.models.requests.QueryModel href "" "lomas_core.models.requests.QueryModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Base input model for a smartnoise-sql query.

Attributes:

postprocess instance-attribute #

postprocess: bool

Whether to postprocess the query results (default: True).

See Smartnoise-SQL postprocessing documentation https://docs.smartnoise.org/sql/advanced.html#postprocess.

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

query_str instance-attribute #

query_str: str

The SQL query to execute.

NOTE: the table name is "df", the query must end with "FROM df"

epsilon instance-attribute #

epsilon: float

Privacy parameter (e.g., 0.1).

delta instance-attribute #

delta: float

Privacy parameter (e.g., 1e-5).

mechanisms instance-attribute #

mechanisms: dict

Dictionary of mechanisms for the query.

See Smartnoise-SQL mechanisms documentation at https://docs.smartnoise.org/sql/advanced.html#overriding-mechanisms.

SmartnoiseSQLDummyQueryModel #


              flowchart TD
              lomas_core.models.requests.SmartnoiseSQLDummyQueryModel[SmartnoiseSQLDummyQueryModel]
              lomas_core.models.requests.SmartnoiseSQLQueryModel[SmartnoiseSQLQueryModel]
              lomas_core.models.requests.SmartnoiseSQLRequestModel[SmartnoiseSQLRequestModel]
              lomas_core.models.requests.DummyQueryModel[DummyQueryModel]
              lomas_core.models.requests.QueryModel[QueryModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.SmartnoiseSQLQueryModel --> lomas_core.models.requests.SmartnoiseSQLDummyQueryModel
                                lomas_core.models.requests.SmartnoiseSQLRequestModel --> lomas_core.models.requests.SmartnoiseSQLQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.SmartnoiseSQLRequestModel
                

                lomas_core.models.requests.QueryModel --> lomas_core.models.requests.SmartnoiseSQLQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.QueryModel
                


                lomas_core.models.requests.DummyQueryModel --> lomas_core.models.requests.SmartnoiseSQLDummyQueryModel
                                lomas_core.models.requests.QueryModel --> lomas_core.models.requests.DummyQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.QueryModel
                




              click lomas_core.models.requests.SmartnoiseSQLDummyQueryModel href "" "lomas_core.models.requests.SmartnoiseSQLDummyQueryModel"
              click lomas_core.models.requests.SmartnoiseSQLQueryModel href "" "lomas_core.models.requests.SmartnoiseSQLQueryModel"
              click lomas_core.models.requests.SmartnoiseSQLRequestModel href "" "lomas_core.models.requests.SmartnoiseSQLRequestModel"
              click lomas_core.models.requests.DummyQueryModel href "" "lomas_core.models.requests.DummyQueryModel"
              click lomas_core.models.requests.QueryModel href "" "lomas_core.models.requests.QueryModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Input model for a smartnoise-sql query on a dummy dataset.

Attributes:

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

dummy_nb_rows instance-attribute #

dummy_nb_rows: int

The number of rows in the dummy dataset.

dummy_seed instance-attribute #

dummy_seed: int

The seed to set at the start of the dummy dataset generation.

query_str instance-attribute #

query_str: str

The SQL query to execute.

NOTE: the table name is "df", the query must end with "FROM df"

epsilon instance-attribute #

epsilon: float

Privacy parameter (e.g., 0.1).

delta instance-attribute #

delta: float

Privacy parameter (e.g., 1e-5).

mechanisms instance-attribute #

mechanisms: dict

Dictionary of mechanisms for the query.

See Smartnoise-SQL mechanisms documentation at https://docs.smartnoise.org/sql/advanced.html#overriding-mechanisms.

postprocess instance-attribute #

postprocess: bool

Whether to postprocess the query results (default: True).

See Smartnoise-SQL postprocessing documentation https://docs.smartnoise.org/sql/advanced.html#postprocess.

SmartnoiseSynthRequestModel #


              flowchart TD
              lomas_core.models.requests.SmartnoiseSynthRequestModel[SmartnoiseSynthRequestModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.SmartnoiseSynthRequestModel
                


              click lomas_core.models.requests.SmartnoiseSynthRequestModel href "" "lomas_core.models.requests.SmartnoiseSynthRequestModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Base input model for a SmartnoiseSynth request.

Attributes:

synth_name instance-attribute #

Name of the synthesizer model to use.

epsilon instance-attribute #

epsilon: float

Privacy parameter (e.g., 0.1).

delta instance-attribute #

delta: float | None

Privacy parameter (e.g., 1e-5).

select_cols instance-attribute #

select_cols: list

List of columns to select.

synth_params instance-attribute #

synth_params: dict

Keyword arguments to pass to the synthesizer constructor.

See https://docs.smartnoise.org/synth/synthesizers/index.html#, provide all parameters of the model except epsilon and delta.

nullable instance-attribute #

nullable: bool

True if some data cells may be null.

constraints instance-attribute #

constraints: str

Dictionnary for custom table transformer constraints.

Column that are not specified will be inferred based on metadata.

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

SmartnoiseSynthQueryModel #


              flowchart TD
              lomas_core.models.requests.SmartnoiseSynthQueryModel[SmartnoiseSynthQueryModel]
              lomas_core.models.requests.SmartnoiseSynthRequestModel[SmartnoiseSynthRequestModel]
              lomas_core.models.requests.QueryModel[QueryModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.SmartnoiseSynthRequestModel --> lomas_core.models.requests.SmartnoiseSynthQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.SmartnoiseSynthRequestModel
                

                lomas_core.models.requests.QueryModel --> lomas_core.models.requests.SmartnoiseSynthQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.QueryModel
                



              click lomas_core.models.requests.SmartnoiseSynthQueryModel href "" "lomas_core.models.requests.SmartnoiseSynthQueryModel"
              click lomas_core.models.requests.SmartnoiseSynthRequestModel href "" "lomas_core.models.requests.SmartnoiseSynthRequestModel"
              click lomas_core.models.requests.QueryModel href "" "lomas_core.models.requests.QueryModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Base input model for a smarnoise-synth query.

Attributes:

return_model instance-attribute #

return_model: bool

True to get Synthesizer model, False to get samples.

condition instance-attribute #

condition: str

Sampling condition in model.sample (only relevant if return_model is False).

nb_samples instance-attribute #

nb_samples: int

Number of samples to generate.

(only relevant if return_model is False)

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

synth_name instance-attribute #

Name of the synthesizer model to use.

epsilon instance-attribute #

epsilon: float

Privacy parameter (e.g., 0.1).

delta instance-attribute #

delta: float | None

Privacy parameter (e.g., 1e-5).

select_cols instance-attribute #

select_cols: list

List of columns to select.

synth_params instance-attribute #

synth_params: dict

Keyword arguments to pass to the synthesizer constructor.

See https://docs.smartnoise.org/synth/synthesizers/index.html#, provide all parameters of the model except epsilon and delta.

nullable instance-attribute #

nullable: bool

True if some data cells may be null.

constraints instance-attribute #

constraints: str

Dictionnary for custom table transformer constraints.

Column that are not specified will be inferred based on metadata.

SmartnoiseSynthDummyQueryModel #


              flowchart TD
              lomas_core.models.requests.SmartnoiseSynthDummyQueryModel[SmartnoiseSynthDummyQueryModel]
              lomas_core.models.requests.SmartnoiseSynthQueryModel[SmartnoiseSynthQueryModel]
              lomas_core.models.requests.SmartnoiseSynthRequestModel[SmartnoiseSynthRequestModel]
              lomas_core.models.requests.DummyQueryModel[DummyQueryModel]
              lomas_core.models.requests.QueryModel[QueryModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.SmartnoiseSynthQueryModel --> lomas_core.models.requests.SmartnoiseSynthDummyQueryModel
                                lomas_core.models.requests.SmartnoiseSynthRequestModel --> lomas_core.models.requests.SmartnoiseSynthQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.SmartnoiseSynthRequestModel
                

                lomas_core.models.requests.QueryModel --> lomas_core.models.requests.SmartnoiseSynthQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.QueryModel
                


                lomas_core.models.requests.DummyQueryModel --> lomas_core.models.requests.SmartnoiseSynthDummyQueryModel
                                lomas_core.models.requests.QueryModel --> lomas_core.models.requests.DummyQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.QueryModel
                




              click lomas_core.models.requests.SmartnoiseSynthDummyQueryModel href "" "lomas_core.models.requests.SmartnoiseSynthDummyQueryModel"
              click lomas_core.models.requests.SmartnoiseSynthQueryModel href "" "lomas_core.models.requests.SmartnoiseSynthQueryModel"
              click lomas_core.models.requests.SmartnoiseSynthRequestModel href "" "lomas_core.models.requests.SmartnoiseSynthRequestModel"
              click lomas_core.models.requests.DummyQueryModel href "" "lomas_core.models.requests.DummyQueryModel"
              click lomas_core.models.requests.QueryModel href "" "lomas_core.models.requests.QueryModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Input model for a smarnoise-synth query on a dummy dataset.

Attributes:

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

dummy_nb_rows instance-attribute #

dummy_nb_rows: int

The number of rows in the dummy dataset.

dummy_seed instance-attribute #

dummy_seed: int

The seed to set at the start of the dummy dataset generation.

synth_name instance-attribute #

Name of the synthesizer model to use.

epsilon instance-attribute #

epsilon: float

Privacy parameter (e.g., 0.1).

delta instance-attribute #

delta: float | None

Privacy parameter (e.g., 1e-5).

select_cols instance-attribute #

select_cols: list

List of columns to select.

synth_params instance-attribute #

synth_params: dict

Keyword arguments to pass to the synthesizer constructor.

See https://docs.smartnoise.org/synth/synthesizers/index.html#, provide all parameters of the model except epsilon and delta.

nullable instance-attribute #

nullable: bool

True if some data cells may be null.

constraints instance-attribute #

constraints: str

Dictionnary for custom table transformer constraints.

Column that are not specified will be inferred based on metadata.

return_model instance-attribute #

return_model: bool

True to get Synthesizer model, False to get samples.

condition instance-attribute #

condition: str

Sampling condition in model.sample (only relevant if return_model is False).

nb_samples instance-attribute #

nb_samples: int

Number of samples to generate.

(only relevant if return_model is False)

OpenDPRequestModel #


              flowchart TD
              lomas_core.models.requests.OpenDPRequestModel[OpenDPRequestModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.OpenDPRequestModel
                


              click lomas_core.models.requests.OpenDPRequestModel href "" "lomas_core.models.requests.OpenDPRequestModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Base input model for an opendp request.

Attributes:

  • opendp_json (str) –

    The OpenDP pipeline for the query.

  • epsilon (float | None) –

    The epsilon parameter used for pure ε-DP or approximate-DP.

  • delta (float | None) –

    If the pipeline measurement is of type "ZeroConcentratedDivergence".

  • rho (float | None) –

    Privacy loss parameter for zCDP (or approximate zCDP).

  • approx_zcdp (bool) –

    If false, delta is used to compute the epsilon consumption equivalent when user wants to use zCDP.

  • dataset_name (str) –

    The name of the dataset the request is aimed at.

opendp_json instance-attribute #

opendp_json: str

The OpenDP pipeline for the query.

epsilon instance-attribute #

epsilon: float | None

The epsilon parameter used for pure ε-DP or approximate-DP.

delta instance-attribute #

delta: float | None

If the pipeline measurement is of type "ZeroConcentratedDivergence".

(e.g. with "make_gaussian") then it is converted to "SmoothedMaxDivergence" with "make_zCDP_to_approxDP" (see "opendp measurements documentation at https://docs.opendp.org/en/stable/api/python/opendp.combinators.html#opendp.combinators.make_zCDP_to_approxDP). In that case a "delta" must be provided by the user.

rho instance-attribute #

rho: float | None

Privacy loss parameter for zCDP (or approximate zCDP).

Using this parameter instead of epsilon switches to a Gaussian mechansim.

approx_zcdp instance-attribute #

approx_zcdp: bool

If false, delta is used to compute the epsilon consumption equivalent when user wants to use zCDP.

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

OpenDPQueryModel #


              flowchart TD
              lomas_core.models.requests.OpenDPQueryModel[OpenDPQueryModel]
              lomas_core.models.requests.OpenDPRequestModel[OpenDPRequestModel]
              lomas_core.models.requests.QueryModel[QueryModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.OpenDPRequestModel --> lomas_core.models.requests.OpenDPQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.OpenDPRequestModel
                

                lomas_core.models.requests.QueryModel --> lomas_core.models.requests.OpenDPQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.QueryModel
                



              click lomas_core.models.requests.OpenDPQueryModel href "" "lomas_core.models.requests.OpenDPQueryModel"
              click lomas_core.models.requests.OpenDPRequestModel href "" "lomas_core.models.requests.OpenDPRequestModel"
              click lomas_core.models.requests.QueryModel href "" "lomas_core.models.requests.QueryModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Base input model for an opendp query.

Attributes:

  • dataset_name (str) –

    The name of the dataset the request is aimed at.

  • opendp_json (str) –

    The OpenDP pipeline for the query.

  • epsilon (float | None) –

    The epsilon parameter used for pure ε-DP or approximate-DP.

  • delta (float | None) –

    If the pipeline measurement is of type "ZeroConcentratedDivergence".

  • rho (float | None) –

    Privacy loss parameter for zCDP (or approximate zCDP).

  • approx_zcdp (bool) –

    If false, delta is used to compute the epsilon consumption equivalent when user wants to use zCDP.

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

opendp_json instance-attribute #

opendp_json: str

The OpenDP pipeline for the query.

epsilon instance-attribute #

epsilon: float | None

The epsilon parameter used for pure ε-DP or approximate-DP.

delta instance-attribute #

delta: float | None

If the pipeline measurement is of type "ZeroConcentratedDivergence".

(e.g. with "make_gaussian") then it is converted to "SmoothedMaxDivergence" with "make_zCDP_to_approxDP" (see "opendp measurements documentation at https://docs.opendp.org/en/stable/api/python/opendp.combinators.html#opendp.combinators.make_zCDP_to_approxDP). In that case a "delta" must be provided by the user.

rho instance-attribute #

rho: float | None

Privacy loss parameter for zCDP (or approximate zCDP).

Using this parameter instead of epsilon switches to a Gaussian mechansim.

approx_zcdp instance-attribute #

approx_zcdp: bool

If false, delta is used to compute the epsilon consumption equivalent when user wants to use zCDP.

OpenDPDummyQueryModel #


              flowchart TD
              lomas_core.models.requests.OpenDPDummyQueryModel[OpenDPDummyQueryModel]
              lomas_core.models.requests.OpenDPRequestModel[OpenDPRequestModel]
              lomas_core.models.requests.DummyQueryModel[DummyQueryModel]
              lomas_core.models.requests.QueryModel[QueryModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.OpenDPRequestModel --> lomas_core.models.requests.OpenDPDummyQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.OpenDPRequestModel
                

                lomas_core.models.requests.DummyQueryModel --> lomas_core.models.requests.OpenDPDummyQueryModel
                                lomas_core.models.requests.QueryModel --> lomas_core.models.requests.DummyQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.QueryModel
                




              click lomas_core.models.requests.OpenDPDummyQueryModel href "" "lomas_core.models.requests.OpenDPDummyQueryModel"
              click lomas_core.models.requests.OpenDPRequestModel href "" "lomas_core.models.requests.OpenDPRequestModel"
              click lomas_core.models.requests.DummyQueryModel href "" "lomas_core.models.requests.DummyQueryModel"
              click lomas_core.models.requests.QueryModel href "" "lomas_core.models.requests.QueryModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Input model for an opendp query on a dummy dataset.

Attributes:

  • dataset_name (str) –

    The name of the dataset the request is aimed at.

  • dummy_nb_rows (int) –

    The number of rows in the dummy dataset.

  • dummy_seed (int) –

    The seed to set at the start of the dummy dataset generation.

  • opendp_json (str) –

    The OpenDP pipeline for the query.

  • epsilon (float | None) –

    The epsilon parameter used for pure ε-DP or approximate-DP.

  • delta (float | None) –

    If the pipeline measurement is of type "ZeroConcentratedDivergence".

  • rho (float | None) –

    Privacy loss parameter for zCDP (or approximate zCDP).

  • approx_zcdp (bool) –

    If false, delta is used to compute the epsilon consumption equivalent when user wants to use zCDP.

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

dummy_nb_rows instance-attribute #

dummy_nb_rows: int

The number of rows in the dummy dataset.

dummy_seed instance-attribute #

dummy_seed: int

The seed to set at the start of the dummy dataset generation.

opendp_json instance-attribute #

opendp_json: str

The OpenDP pipeline for the query.

epsilon instance-attribute #

epsilon: float | None

The epsilon parameter used for pure ε-DP or approximate-DP.

delta instance-attribute #

delta: float | None

If the pipeline measurement is of type "ZeroConcentratedDivergence".

(e.g. with "make_gaussian") then it is converted to "SmoothedMaxDivergence" with "make_zCDP_to_approxDP" (see "opendp measurements documentation at https://docs.opendp.org/en/stable/api/python/opendp.combinators.html#opendp.combinators.make_zCDP_to_approxDP). In that case a "delta" must be provided by the user.

rho instance-attribute #

rho: float | None

Privacy loss parameter for zCDP (or approximate zCDP).

Using this parameter instead of epsilon switches to a Gaussian mechansim.

approx_zcdp instance-attribute #

approx_zcdp: bool

If false, delta is used to compute the epsilon consumption equivalent when user wants to use zCDP.

DiffPrivLibRequestModel #


              flowchart TD
              lomas_core.models.requests.DiffPrivLibRequestModel[DiffPrivLibRequestModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.DiffPrivLibRequestModel
                


              click lomas_core.models.requests.DiffPrivLibRequestModel href "" "lomas_core.models.requests.DiffPrivLibRequestModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Base input model for a diffprivlib request.

Attributes:

diffprivlib_json instance-attribute #

diffprivlib_json: str

The DiffPrivLib pipeline for the query (See diffprivlib_logger package.).

feature_columns instance-attribute #

feature_columns: list

The list of feature columns to train.

target_columns instance-attribute #

target_columns: list | None

The list of target columns to predict.

test_size instance-attribute #

test_size: float

The proportion of the test set.

test_train_split_seed instance-attribute #

test_train_split_seed: int

The seed for the random train/test split.

imputer_strategy instance-attribute #

imputer_strategy: str

The imputation strategy.

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

DiffPrivLibQueryModel #


              flowchart TD
              lomas_core.models.requests.DiffPrivLibQueryModel[DiffPrivLibQueryModel]
              lomas_core.models.requests.DiffPrivLibRequestModel[DiffPrivLibRequestModel]
              lomas_core.models.requests.QueryModel[QueryModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.DiffPrivLibRequestModel --> lomas_core.models.requests.DiffPrivLibQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.DiffPrivLibRequestModel
                

                lomas_core.models.requests.QueryModel --> lomas_core.models.requests.DiffPrivLibQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.QueryModel
                



              click lomas_core.models.requests.DiffPrivLibQueryModel href "" "lomas_core.models.requests.DiffPrivLibQueryModel"
              click lomas_core.models.requests.DiffPrivLibRequestModel href "" "lomas_core.models.requests.DiffPrivLibRequestModel"
              click lomas_core.models.requests.QueryModel href "" "lomas_core.models.requests.QueryModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Base input model for a diffprivlib query.

Attributes:

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

diffprivlib_json instance-attribute #

diffprivlib_json: str

The DiffPrivLib pipeline for the query (See diffprivlib_logger package.).

feature_columns instance-attribute #

feature_columns: list

The list of feature columns to train.

target_columns instance-attribute #

target_columns: list | None

The list of target columns to predict.

test_size instance-attribute #

test_size: float

The proportion of the test set.

test_train_split_seed instance-attribute #

test_train_split_seed: int

The seed for the random train/test split.

imputer_strategy instance-attribute #

imputer_strategy: str

The imputation strategy.

DiffPrivLibDummyQueryModel #


              flowchart TD
              lomas_core.models.requests.DiffPrivLibDummyQueryModel[DiffPrivLibDummyQueryModel]
              lomas_core.models.requests.DiffPrivLibQueryModel[DiffPrivLibQueryModel]
              lomas_core.models.requests.DiffPrivLibRequestModel[DiffPrivLibRequestModel]
              lomas_core.models.requests.DummyQueryModel[DummyQueryModel]
              lomas_core.models.requests.QueryModel[QueryModel]
              lomas_core.models.requests.LomasRequestModel[LomasRequestModel]

                              lomas_core.models.requests.DiffPrivLibQueryModel --> lomas_core.models.requests.DiffPrivLibDummyQueryModel
                                lomas_core.models.requests.DiffPrivLibRequestModel --> lomas_core.models.requests.DiffPrivLibQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.DiffPrivLibRequestModel
                

                lomas_core.models.requests.QueryModel --> lomas_core.models.requests.DiffPrivLibQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.QueryModel
                


                lomas_core.models.requests.DummyQueryModel --> lomas_core.models.requests.DiffPrivLibDummyQueryModel
                                lomas_core.models.requests.QueryModel --> lomas_core.models.requests.DummyQueryModel
                                lomas_core.models.requests.LomasRequestModel --> lomas_core.models.requests.QueryModel
                




              click lomas_core.models.requests.DiffPrivLibDummyQueryModel href "" "lomas_core.models.requests.DiffPrivLibDummyQueryModel"
              click lomas_core.models.requests.DiffPrivLibQueryModel href "" "lomas_core.models.requests.DiffPrivLibQueryModel"
              click lomas_core.models.requests.DiffPrivLibRequestModel href "" "lomas_core.models.requests.DiffPrivLibRequestModel"
              click lomas_core.models.requests.DummyQueryModel href "" "lomas_core.models.requests.DummyQueryModel"
              click lomas_core.models.requests.QueryModel href "" "lomas_core.models.requests.QueryModel"
              click lomas_core.models.requests.LomasRequestModel href "" "lomas_core.models.requests.LomasRequestModel"
            

Input model for a DiffPrivLib query on a dummy dataset.

Attributes:

dataset_name instance-attribute #

dataset_name: str

The name of the dataset the request is aimed at.

dummy_nb_rows instance-attribute #

dummy_nb_rows: int

The number of rows in the dummy dataset.

dummy_seed instance-attribute #

dummy_seed: int

The seed to set at the start of the dummy dataset generation.

diffprivlib_json instance-attribute #

diffprivlib_json: str

The DiffPrivLib pipeline for the query (See diffprivlib_logger package.).

feature_columns instance-attribute #

feature_columns: list

The list of feature columns to train.

target_columns instance-attribute #

target_columns: list | None

The list of target columns to predict.

test_size instance-attribute #

test_size: float

The proportion of the test set.

test_train_split_seed instance-attribute #

test_train_split_seed: int

The seed for the random train/test split.

imputer_strategy instance-attribute #

imputer_strategy: str

The imputation strategy.

model_input_to_lib #

model_input_to_lib(request: LomasRequestModel) -> DPLibraries

Return the type of DP library given a LomasRequestModel.

Parameters:

Raises:

Returns:

  • DPLibraries ( DPLibraries ) –

    The type of library for the request.

Source code in core/lomas_core/models/requests.py
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
def model_input_to_lib(request: LomasRequestModel) -> DPLibraries:
    """Return the type of DP library given a LomasRequestModel.

    Args:
        request (LomasRequestModel): The user request

    Raises:
        InternalServerException: If the library type cannot be determined.

    Returns:
        DPLibraries: The type of library for the request.
    """
    match request:
        case SmartnoiseSQLRequestModel():
            return DPLibraries.SMARTNOISE_SQL
        case SmartnoiseSynthRequestModel():
            return DPLibraries.SMARTNOISE_SYNTH
        case OpenDPRequestModel():
            return DPLibraries.OPENDP
        case DiffPrivLibRequestModel():
            return DPLibraries.DIFFPRIVLIB
        case _:
            raise InternalServerException("Cannot find library type for given model.")

Classes:

ResponseModel #


              flowchart TD
              lomas_core.models.responses.ResponseModel[ResponseModel]

              

              click lomas_core.models.responses.ResponseModel href "" "lomas_core.models.responses.ResponseModel"
            

Base model for any response from the server.

InitialBudgetResponse #


              flowchart TD
              lomas_core.models.responses.InitialBudgetResponse[InitialBudgetResponse]
              lomas_core.models.responses.ResponseModel[ResponseModel]

                              lomas_core.models.responses.ResponseModel --> lomas_core.models.responses.InitialBudgetResponse
                


              click lomas_core.models.responses.InitialBudgetResponse href "" "lomas_core.models.responses.InitialBudgetResponse"
              click lomas_core.models.responses.ResponseModel href "" "lomas_core.models.responses.ResponseModel"
            

Model for responses to initial budget queries.

Attributes:

initial_epsilon instance-attribute #

initial_epsilon: float

The initial epsilon privacy loss budget.

initial_delta instance-attribute #

initial_delta: float

The initial delta privacy loss budget.

SpentBudgetResponse #


              flowchart TD
              lomas_core.models.responses.SpentBudgetResponse[SpentBudgetResponse]
              lomas_core.models.responses.ResponseModel[ResponseModel]

                              lomas_core.models.responses.ResponseModel --> lomas_core.models.responses.SpentBudgetResponse
                


              click lomas_core.models.responses.SpentBudgetResponse href "" "lomas_core.models.responses.SpentBudgetResponse"
              click lomas_core.models.responses.ResponseModel href "" "lomas_core.models.responses.ResponseModel"
            

Model for responses to spent budget queries.

Attributes:

total_spent_epsilon instance-attribute #

total_spent_epsilon: float

The total spent epsilon privacy loss budget.

total_spent_delta instance-attribute #

total_spent_delta: float

The total spent delta privacy loss budget.

RemainingBudgetResponse #


              flowchart TD
              lomas_core.models.responses.RemainingBudgetResponse[RemainingBudgetResponse]
              lomas_core.models.responses.ResponseModel[ResponseModel]

                              lomas_core.models.responses.ResponseModel --> lomas_core.models.responses.RemainingBudgetResponse
                


              click lomas_core.models.responses.RemainingBudgetResponse href "" "lomas_core.models.responses.RemainingBudgetResponse"
              click lomas_core.models.responses.ResponseModel href "" "lomas_core.models.responses.ResponseModel"
            

Model for responses to remaining budget queries.

Attributes:

remaining_epsilon instance-attribute #

remaining_epsilon: float

The remaining epsilon privacy loss budget.

remaining_delta instance-attribute #

remaining_delta: float

The remaining delta privacy loss budget.

DummyDsResponse #


              flowchart TD
              lomas_core.models.responses.DummyDsResponse[DummyDsResponse]
              lomas_core.models.responses.ResponseModel[ResponseModel]

                              lomas_core.models.responses.ResponseModel --> lomas_core.models.responses.DummyDsResponse
                


              click lomas_core.models.responses.DummyDsResponse href "" "lomas_core.models.responses.DummyDsResponse"
              click lomas_core.models.responses.ResponseModel href "" "lomas_core.models.responses.ResponseModel"
            

Model for responses to dummy dataset requests.

Methods:

Attributes:

  • dtypes (Any) –

    The dummy_df column data types.

  • dummy_df (DataFrame) –

    The dummy dataframe.

dtypes instance-attribute #

dtypes: Any

The dummy_df column data types.

dummy_df instance-attribute #

dummy_df: DataFrame

The dummy dataframe.

deserialize_dummy_df classmethod #

deserialize_dummy_df(v: DataFrame | dict, info: ValidationInfo) -> DataFrame

Decodes the dict representation of the dummy df with correct types.

Only does so if the input value is not already a dataframe. Args: v (pd.DataFrame | dict): The dataframe to decode. info (ValidationInfo): Validation info to access other model fields.

Returns:

  • DataFrame

    pd.DataFrame: The decoded dataframe.

Source code in core/lomas_core/models/responses.py
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
@field_validator("dummy_df", mode="before")
@classmethod
def deserialize_dummy_df(cls, v: pd.DataFrame | dict, info: ValidationInfo) -> pd.DataFrame:
    """Decodes the dict representation of the dummy df with correct types.

    Only does so if the input value is not already a dataframe.
    Args:
        v (pd.DataFrame | dict): The dataframe to decode.
        info (ValidationInfo): Validation info to access other model fields.

    Returns:
        pd.DataFrame: The decoded dataframe.
    """
    if isinstance(v, pd.DataFrame):
        return v

    dtypes = info.data["dtypes"]
    dummy_df = dataframe_from_dict(v)
    dummy_df = dummy_df.astype(dtypes)
    return dummy_df

CostResponse #


              flowchart TD
              lomas_core.models.responses.CostResponse[CostResponse]
              lomas_core.models.responses.ResponseModel[ResponseModel]

                              lomas_core.models.responses.ResponseModel --> lomas_core.models.responses.CostResponse
                


              click lomas_core.models.responses.CostResponse href "" "lomas_core.models.responses.CostResponse"
              click lomas_core.models.responses.ResponseModel href "" "lomas_core.models.responses.ResponseModel"
            

Model for responses to cost estimation requests or queries.

Attributes:

epsilon instance-attribute #

epsilon: float

The epsilon cost of the query.

delta instance-attribute #

delta: float

The delta cost of the query.

DiffPrivLibQueryResult #


              flowchart TD
              lomas_core.models.responses.DiffPrivLibQueryResult[DiffPrivLibQueryResult]

              

              click lomas_core.models.responses.DiffPrivLibQueryResult href "" "lomas_core.models.responses.DiffPrivLibQueryResult"
            

Model for diffprivlib query result.

Attributes:

  • type (Literal[DIFFPRIVLIB]) –

    Result type description.

  • score (float) –

    The trained model score.

  • model (DiffprivlibMixin) –

    The trained model.

type class-attribute instance-attribute #

type: Literal[DIFFPRIVLIB] = DIFFPRIVLIB

Result type description.

score instance-attribute #

score: float

The trained model score.

model instance-attribute #

model: DiffprivlibMixin

The trained model.

SmartnoiseSQLQueryResult #


              flowchart TD
              lomas_core.models.responses.SmartnoiseSQLQueryResult[SmartnoiseSQLQueryResult]

              

              click lomas_core.models.responses.SmartnoiseSQLQueryResult href "" "lomas_core.models.responses.SmartnoiseSQLQueryResult"
            

Type for smartnoise_sql result type.

Attributes:

  • type (Literal[SMARTNOISE_SQL]) –

    Result type description.

  • df (DataFrame) –

    Dataframe containing the query result.

type class-attribute instance-attribute #

type: Literal[SMARTNOISE_SQL] = SMARTNOISE_SQL

Result type description.

df instance-attribute #

df: DataFrame

Dataframe containing the query result.

SmartnoiseSynthModel #


              flowchart TD
              lomas_core.models.responses.SmartnoiseSynthModel[SmartnoiseSynthModel]

              

              click lomas_core.models.responses.SmartnoiseSynthModel href "" "lomas_core.models.responses.SmartnoiseSynthModel"
            

Type for smartnoise_synth result when it is a pickled model.

Attributes:

model_config class-attribute instance-attribute #

model_config = ConfigDict(arbitrary_types_allowed=True)

Result type description.

type class-attribute instance-attribute #

type: Literal[SMARTNOISE_SYNTH] = SMARTNOISE_SYNTH

Synthetic data generator model.

SmartnoiseSynthSamples #


              flowchart TD
              lomas_core.models.responses.SmartnoiseSynthSamples[SmartnoiseSynthSamples]

              

              click lomas_core.models.responses.SmartnoiseSynthSamples href "" "lomas_core.models.responses.SmartnoiseSynthSamples"
            

Type for smartnoise_synth result when it is a dataframe of samples.

Attributes:

  • type (Literal['sn_synth_samples']) –

    Result type description.

  • df_samples (DataFrame) –

    Dataframe containing the generated synthetic samples.

type class-attribute instance-attribute #

type: Literal['sn_synth_samples'] = 'sn_synth_samples'

Result type description.

df_samples instance-attribute #

df_samples: DataFrame

Dataframe containing the generated synthetic samples.

OpenDPQueryResult #


              flowchart TD
              lomas_core.models.responses.OpenDPQueryResult[OpenDPQueryResult]

              

              click lomas_core.models.responses.OpenDPQueryResult href "" "lomas_core.models.responses.OpenDPQueryResult"
            

Type for opendp result.

Attributes:

type class-attribute instance-attribute #

type: Literal[OPENDP] = OPENDP

Result type description.

value instance-attribute #

value: int | float | list[int | float]

The result value of the query.

OpenDPPolarsQueryResult #


              flowchart TD
              lomas_core.models.responses.OpenDPPolarsQueryResult[OpenDPPolarsQueryResult]

              

              click lomas_core.models.responses.OpenDPPolarsQueryResult href "" "lomas_core.models.responses.OpenDPPolarsQueryResult"
            

Type for opendp Polars result.

Attributes:

  • type (Literal[OPENDP_POLARS]) –

    Result type description.

  • value (DataFrame) –

    The result value of the query.

type class-attribute instance-attribute #

type: Literal[OPENDP_POLARS] = OPENDP_POLARS

Result type description.

value instance-attribute #

value: DataFrame

The result value of the query.

QueryResponse #


              flowchart TD
              lomas_core.models.responses.QueryResponse[QueryResponse]
              lomas_core.models.responses.CostResponse[CostResponse]
              lomas_core.models.responses.ResponseModel[ResponseModel]

                              lomas_core.models.responses.CostResponse --> lomas_core.models.responses.QueryResponse
                                lomas_core.models.responses.ResponseModel --> lomas_core.models.responses.CostResponse
                



              click lomas_core.models.responses.QueryResponse href "" "lomas_core.models.responses.QueryResponse"
              click lomas_core.models.responses.CostResponse href "" "lomas_core.models.responses.CostResponse"
              click lomas_core.models.responses.ResponseModel href "" "lomas_core.models.responses.ResponseModel"
            

Response to Lomas queries.

Attributes:

requested_by instance-attribute #

requested_by: str

The user that triggered the query.

result instance-attribute #

result: QueryResultT

The query result object.

epsilon instance-attribute #

epsilon: float

The epsilon cost of the query.

delta instance-attribute #

delta: float

The delta cost of the query.

Job #


              flowchart TD
              lomas_core.models.responses.Job[Job]
              lomas_core.models.responses.ResponseModel[ResponseModel]

                              lomas_core.models.responses.ResponseModel --> lomas_core.models.responses.Job
                


              click lomas_core.models.responses.Job href "" "lomas_core.models.responses.Job"
              click lomas_core.models.responses.ResponseModel href "" "lomas_core.models.responses.ResponseModel"
            

Scheduled Job Response.

Attributes:

uid class-attribute instance-attribute #

uid: UUID = Field(default_factory=uuid4)

Job unique identifier.

requested_by class-attribute instance-attribute #

requested_by: str | None = None

Name of the user that requested this job.

status class-attribute instance-attribute #

status: Literal['in_progress', 'failed', 'complete'] = 'in_progress'

Job status.

result class-attribute instance-attribute #

result: QueryResponse | CostResponse | None = None

Job result, if available.

error class-attribute instance-attribute #

error: LomasServerExceptionType | None = None

Job error, if any.

status_code class-attribute instance-attribute #

status_code: int = 200

Status code for job response.

Functions:

dataframe_to_dict #

dataframe_to_dict(df: DataFrame) -> dict

Transforms pandas dataframe into a dictionary.

Parameters:

  • df #

    (DataFrame) –

    The dataframe to "serialize".

Returns:

  • dict ( dict ) –

    The pandas dataframe in dictionary format.

Source code in core/lomas_core/models/utils.py
12
13
14
15
16
17
18
19
20
21
def dataframe_to_dict(df: pd.DataFrame) -> dict:
    """Transforms pandas dataframe into a dictionary.

    Args:
        df (pd.DataFrame): The dataframe to "serialize".

    Returns:
        dict: The pandas dataframe in dictionary format.
    """
    return df.to_dict(orient=PANDAS_SERIALIZATION_ORIENT)

dataframe_from_dict #

dataframe_from_dict(serialized_df: DataFrame | dict) -> DataFrame

Transforms input dict into pandas dataframe.

If the input is already a dataframe, it is simply returned unmodified.

Parameters:

  • serialized_df #

    (DataFrame | dict) –

    Dataframe in dict format. Or pd.Dataframe.

Returns:

  • DataFrame

    pd.DataFrame: The transformed dataframe.

Source code in core/lomas_core/models/utils.py
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
def dataframe_from_dict(serialized_df: pd.DataFrame | dict) -> pd.DataFrame:
    """Transforms input dict into pandas dataframe.

    If the input is already a dataframe, it is simply returned unmodified.

    Args:
        serialized_df (pd.DataFrame | dict): Dataframe in dict format.
            Or pd.Dataframe.

    Returns:
        pd.DataFrame: The transformed dataframe.
    """
    if isinstance(serialized_df, pd.DataFrame):
        return serialized_df

    return pd.DataFrame.from_dict(serialized_df, orient=PANDAS_SERIALIZATION_ORIENT)

polars_df_to_str #

polars_df_to_str(df_pl: DataFrame) -> str

Convert a Polars DataFrame to a JSON string.

Source code in core/lomas_core/models/utils.py
42
43
44
def polars_df_to_str(df_pl: pl.DataFrame) -> str:
    """Convert a Polars DataFrame to a JSON string."""
    return df_pl.write_json()

polars_df_from_str #

polars_df_from_str(serialized_pl: str | DataFrame) -> DataFrame

Convert a Polars DataFrame from a JSON string.

Source code in core/lomas_core/models/utils.py
47
48
49
50
51
52
53
def polars_df_from_str(serialized_pl: str | pl.DataFrame) -> pl.DataFrame:
    """Convert a Polars DataFrame from a JSON string."""
    if isinstance(serialized_pl, pl.DataFrame):
        return serialized_pl

    df_pl = json.loads(serialized_pl)
    return pl.DataFrame(df_pl)

serialize_model #

serialize_model(model: Any) -> str

Serialise a python object into an utf-8 string.

Fitted Smartnoise Synth synthesizer or fitted DiffPrivLib pipeline.

Parameters:

  • model #

    (Any) –

    An object to serialise

Returns:

  • str ( str ) –

    string of serialised model

Source code in core/lomas_core/models/utils.py
56
57
58
59
60
61
62
63
64
65
66
67
68
69
def serialize_model(model: Any) -> str:
    """
    Serialise a python object into an utf-8 string.

    Fitted Smartnoise Synth synthesizer or fitted DiffPrivLib pipeline.

    Args:
        model (Any): An object to serialise

    Returns:
        str: string of serialised model
    """
    serialized = b64encode(pickle.dumps(model))
    return serialized.decode("utf-8")

deserialize_model #

deserialize_model(serialized_model: Any) -> Any

Deserialize a base64 encoded byte string into a python object.

Parameters:

  • serialized_model #

    (Any) –

    Encoded python object.

Returns:

  • Any ( Any ) –

    Deserialized python object.

Source code in core/lomas_core/models/utils.py
72
73
74
75
76
77
78
79
80
81
82
83
84
85
def deserialize_model(serialized_model: Any) -> Any:
    """Deserialize a base64 encoded byte string into a python object.

    Args:
        serialized_model (Any): Encoded python object.

    Returns:
        Any: Deserialized python object.
    """
    if isinstance(serialized_model, str):
        raw_bytes = b64decode(serialized_model)
        return pickle.loads(raw_bytes)

    return serialized_model