aboutsummaryrefslogtreecommitdiffhomepage
path: root/pyecsca/sca/trace/combine.py
diff options
context:
space:
mode:
authorJ08nY2020-03-05 14:40:05 +0100
committerJ08nY2020-03-05 14:40:05 +0100
commit79de2bbc6f099b0bd1d79427aabd6113e87c31d3 (patch)
tree8d4cb9f762006eb59fb6e6ca1693f241683cc24f /pyecsca/sca/trace/combine.py
parent0c3c4a8d6725c01d8c4ba7b4a4e5f43922ec1e65 (diff)
downloadpyecsca-79de2bbc6f099b0bd1d79427aabd6113e87c31d3.tar.gz
pyecsca-79de2bbc6f099b0bd1d79427aabd6113e87c31d3.tar.zst
pyecsca-79de2bbc6f099b0bd1d79427aabd6113e87c31d3.zip
Add proper plotting.
Diffstat (limited to 'pyecsca/sca/trace/combine.py')
-rw-r--r--pyecsca/sca/trace/combine.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/pyecsca/sca/trace/combine.py b/pyecsca/sca/trace/combine.py
index 2ab552a..0e7f325 100644
--- a/pyecsca/sca/trace/combine.py
+++ b/pyecsca/sca/trace/combine.py
@@ -1,6 +1,7 @@
+from typing import Callable, Optional
+
import numpy as np
from public import public
-from typing import Callable, Optional
from .trace import Trace, CombinedTrace
@@ -23,7 +24,8 @@ def average(*traces: Trace) -> Optional[CombinedTrace]:
@public
-def conditional_average(*traces: Trace, condition: Callable[[Trace], bool]) -> Optional[CombinedTrace]:
+def conditional_average(*traces: Trace, condition: Callable[[Trace], bool]) -> Optional[
+ CombinedTrace]:
"""
Average `traces` for which the `condition` is True, sample-wise.
@@ -47,3 +49,16 @@ def standard_deviation(*traces: Trace) -> Optional[CombinedTrace]:
dtype = traces[0].samples.dtype
result_samples = np.std(np.array([trace.samples for trace in traces]), axis=0).astype(dtype)
return CombinedTrace(result_samples, None, None)
+
+
+@public
+def subtract(one: Trace, other: Trace) -> CombinedTrace:
+ """
+ Subtract `other` from `one`, sample-wise.
+
+ :param one:
+ :param other:
+ :return:
+ """
+ result_samples = one.samples - other.samples
+ return CombinedTrace(result_samples, None, None)