aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--pyecsca/sca/scope/picoscope_sdk.py10
-rw-r--r--pyecsca/sca/trace/combine.py9
-rw-r--r--pyecsca/sca/trace_set/hdf5.py1
3 files changed, 11 insertions, 9 deletions
diff --git a/pyecsca/sca/scope/picoscope_sdk.py b/pyecsca/sca/scope/picoscope_sdk.py
index 17eb3b4..7752450 100644
--- a/pyecsca/sca/scope/picoscope_sdk.py
+++ b/pyecsca/sca/scope/picoscope_sdk.py
@@ -32,17 +32,19 @@ from ..trace import Trace
def adc2volt(adc: Union[np.ndarray, ctypes.c_int16],
volt_range: float, adc_minmax: int) -> Union[np.ndarray, float]: # pragma: no cover
if isinstance(adc, ctypes.c_int16):
- adc = adc.value
+ return (adc.value / adc_minmax) * volt_range
if isinstance(adc, np.ndarray):
- adc = adc.astype(np.dtype("f2"))
- return (adc / adc_minmax) * volt_range
+ return ((adc / adc_minmax) * volt_range).astype(np.float16, copy=False)
+ raise ValueError
def volt2adc(volt: Union[np.ndarray, float],
volt_range: float, adc_minmax: int) -> Union[np.ndarray, ctypes.c_int16]: # pragma: no cover
if isinstance(volt, float):
return ctypes.c_int16(int((volt / volt_range) * adc_minmax))
- return (volt / volt_range) * adc_minmax
+ if isinstance(volt, np.ndarray):
+ return ((volt / volt_range) * adc_minmax).astype(np.int16, copy=False)
+ raise ValueError
@public
diff --git a/pyecsca/sca/trace/combine.py b/pyecsca/sca/trace/combine.py
index df5def6..26cf19d 100644
--- a/pyecsca/sca/trace/combine.py
+++ b/pyecsca/sca/trace/combine.py
@@ -19,7 +19,7 @@ def average(*traces: Trace) -> Optional[CombinedTrace]:
if len(traces) == 1:
return CombinedTrace(traces[0].samples.copy())
dtype = traces[0].samples.dtype
- result_samples = np.mean(np.array([trace.samples for trace in traces]), axis=0).astype(dtype)
+ result_samples = np.mean(np.stack([trace.samples for trace in traces]), axis=0).astype(dtype)
return CombinedTrace(result_samples)
@@ -46,7 +46,7 @@ def standard_deviation(*traces: Trace) -> Optional[CombinedTrace]:
if not traces:
return None
dtype = traces[0].samples.dtype
- result_samples = np.std(np.array([trace.samples for trace in traces]), axis=0).astype(dtype)
+ result_samples = np.std(np.stack([trace.samples for trace in traces]), axis=0).astype(dtype)
return CombinedTrace(result_samples)
@@ -63,7 +63,7 @@ def add(*traces: Trace) -> Optional[CombinedTrace]:
if len(traces) == 1:
return CombinedTrace(traces[0].samples.copy())
dtype = traces[0].samples.dtype
- result_samples = np.sum(np.array([trace.samples for trace in traces]), axis=0).astype(dtype)
+ result_samples = np.sum(np.stack([trace.samples for trace in traces]), axis=0).astype(dtype)
return CombinedTrace(result_samples)
@@ -76,5 +76,4 @@ def subtract(one: Trace, other: Trace) -> CombinedTrace:
:param other:
:return:
"""
- result_samples = one.samples - other.samples
- return CombinedTrace(result_samples)
+ return CombinedTrace(np.subtract(one.samples, other.samples))
diff --git a/pyecsca/sca/trace_set/hdf5.py b/pyecsca/sca/trace_set/hdf5.py
index 66b1413..cf5dd46 100644
--- a/pyecsca/sca/trace_set/hdf5.py
+++ b/pyecsca/sca/trace_set/hdf5.py
@@ -121,6 +121,7 @@ class HDF5TraceSet(TraceSet):
index = self._traces.index(value)
key = self._ordering[index]
self._ordering.remove(key)
+ self._traces.remove(value)
if self._file:
self._file.pop(key)
self._file.attrs["_ordering"] = self._ordering