aboutsummaryrefslogtreecommitdiff
path: root/pyecsca/sca/ttest.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyecsca/sca/ttest.py')
-rw-r--r--pyecsca/sca/ttest.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/pyecsca/sca/ttest.py b/pyecsca/sca/ttest.py
index 34e631c..329f37d 100644
--- a/pyecsca/sca/ttest.py
+++ b/pyecsca/sca/ttest.py
@@ -1,13 +1,13 @@
+import numpy as np
from public import public
from scipy.stats import ttest_ind
-import numpy as np
from typing import Sequence, Optional
from .trace import Trace, CombinedTrace
def ttest_func(first_set: Sequence[Trace], second_set: Sequence[Trace],
- equal_var: bool) -> Optional[CombinedTrace]:
+ equal_var: bool) -> Optional[CombinedTrace]:
if not first_set or not second_set or len(first_set) == 0 or len(second_set) == 0:
return None
first_stack = np.stack([first.samples for first in first_set])
@@ -15,8 +15,9 @@ def ttest_func(first_set: Sequence[Trace], second_set: Sequence[Trace],
result = ttest_ind(first_stack, second_stack, axis=0, equal_var=equal_var)
return CombinedTrace(None, None, result[0], parents=[*first_set, *second_set])
+
@public
-def welch_ttest(first_set: Sequence[Trace], second_set: Sequence[Trace]) -> CombinedTrace:
+def welch_ttest(first_set: Sequence[Trace], second_set: Sequence[Trace]) -> Optional[CombinedTrace]:
"""
Perform the Welch's t-test sample wise on two sets of traces `first_set` and `second_set`.
Useful for Test Vector Leakage Analysis (TVLA).
@@ -27,8 +28,9 @@ def welch_ttest(first_set: Sequence[Trace], second_set: Sequence[Trace]) -> Comb
"""
return ttest_func(first_set, second_set, False)
+
@public
-def student_ttest(first_set: Sequence[Trace], second_set: Sequence[Trace]) -> CombinedTrace:
+def student_ttest(first_set: Sequence[Trace], second_set: Sequence[Trace]) -> Optional[CombinedTrace]:
"""
Perform the Students's t-test sample wise on two sets of traces `first_set` and `second_set`.
Useful for Test Vector Leakage Analysis (TVLA).