diff options
| -rw-r--r-- | pyecsca/sca/scope/picoscope_sdk.py | 10 | ||||
| -rw-r--r-- | pyecsca/sca/trace/combine.py | 9 | ||||
| -rw-r--r-- | pyecsca/sca/trace_set/hdf5.py | 1 |
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 |
