Commit 5123d833 authored by Rémi Huguet's avatar Rémi Huguet
Browse files

feat: add private _Analysis API to create analysis objects from standalone...

feat: add private _Analysis API to create analysis objects from standalone distinguishers instances.
parent 1e1f58eb
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -62,3 +62,4 @@ docs/build/*
out/*
__pycache__/*
.venv/*
.devcontainer
+2 −1
Original line number Diff line number Diff line
@@ -20,7 +20,8 @@ from .ttest import TTestAccumulator, TTestAnalysis, TTestError, TTestContainer
from .analysis import (  # noqa:F401
    BaseAnalysis, CPAAnalysis, DPAAnalysis,
    ANOVAAnalysis, NICVAnalysis, SNRAnalysis,
    BasePartitionedAnalysis, MIAAnalysis
    BasePartitionedAnalysis, MIAAnalysis,
    _Analysis
)
from .preprocesses import preprocess, Preprocess, PreprocessError  # noqa:F401
from . import preprocesses  # noqa: F401
+20 −0
Original line number Diff line number Diff line
from . import selection_functions as _sf, container as _container, models, distinguishers
import inspect
import numpy as _np
import logging

@@ -233,3 +234,22 @@ class MIAAnalysis(BasePartitionedAnalysis, distinguishers.MIADistinguisherMixin)
    def __init__(self, bins_number=128, bin_edges=None, *args, **kwargs):
        distinguishers.mia._set_histogram_parameters(self, bins_number=bins_number, bin_edges=bin_edges)
        return super().__init__(*args, **kwargs)


class _Analysis:
    """Returns an analysis object created from a standalone distinguisher.

    It has been implemented for backward compatibility with previous eshard libraries and is not intented as a public API.

    """

    def __new__(cls, distinguisher, *args, **kwargs):
        klass = type.__new__(type, f'{distinguisher.__class__.__name__}Analysis', (BaseAnalysis, type(distinguisher).__bases__[1]), {})
        obj = klass(*args, **kwargs)
        init_args = inspect.getfullargspec(type(distinguisher)).args
        values = inspect.getmembers(distinguisher)
        for arg in init_args[1:]:
            val = list(filter(lambda t: t[0] == arg, values))[0]
            if val:
                setattr(obj, arg, val[1])
        return obj
+2.95 MiB (2.95 MiB)

File changed.

No diff preview for this file type.

Loading