aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJ08nY2020-07-05 18:37:53 +0200
committerJ08nY2020-07-05 18:37:53 +0200
commit525716254614439cf32e5720bf4c2f2f4aac0f71 (patch)
treeafea64d782bf1f375cd5a0936be0a30e300c50f7
parenta6a4ed2095dcdb3f569726eeea3332644a10699d (diff)
downloadpyecsca-525716254614439cf32e5720bf4c2f2f4aac0f71.tar.gz
pyecsca-525716254614439cf32e5720bf4c2f2f4aac0f71.tar.zst
pyecsca-525716254614439cf32e5720bf4c2f2f4aac0f71.zip
More tests for HDF5 and some codestyle fixes.
-rw-r--r--pyecsca/ec/curve.py2
-rw-r--r--pyecsca/sca/scope/picoscope_sdk.py17
-rw-r--r--pyecsca/sca/trace/combine.py6
-rw-r--r--pyecsca/sca/trace/process.py2
-rw-r--r--pyecsca/sca/trace/sampling.py2
-rw-r--r--test/sca/test_traceset.py8
6 files changed, 21 insertions, 16 deletions
diff --git a/pyecsca/ec/curve.py b/pyecsca/ec/curve.py
index 4e41931..1514c92 100644
--- a/pyecsca/ec/curve.py
+++ b/pyecsca/ec/curve.py
@@ -154,7 +154,7 @@ class EllipticCurve(object):
"""Generate a random affine point on the curve."""
while True:
x = Mod.random(self.prime)
- loc = {**self.parameters, "x":x}
+ loc = {**self.parameters, "x": x}
ysquared = eval(compile(self.model.ysquared, "", mode="eval"), loc)
if ysquared.is_residue():
y = ysquared.sqrt()
diff --git a/pyecsca/sca/scope/picoscope_sdk.py b/pyecsca/sca/scope/picoscope_sdk.py
index 7752450..fe23e5e 100644
--- a/pyecsca/sca/scope/picoscope_sdk.py
+++ b/pyecsca/sca/scope/picoscope_sdk.py
@@ -226,9 +226,9 @@ if isinstance(ps3000, CannotFindPicoSDKError):
def __init__(self, variant: Optional[str] = None):
super().__init__(variant)
raise ps3000
-else:
+else: # pragma: no cover
@public
- class PS3000Scope(PicoScopeSdk): # pragma: no cover
+ class PS3000Scope(PicoScopeSdk): # type: ignore
MODULE = ps3000
PREFIX = "ps3000"
CHANNELS = {
@@ -276,16 +276,15 @@ else:
raise NotImplementedError
-
if isinstance(ps4000, CannotFindPicoSDKError):
@public
class PS4000Scope(PicoScopeSdk): # pragma: no cover
def __init__(self, variant: Optional[str] = None):
super().__init__(variant)
raise ps4000
-else:
+else: # pragma: no cover
@public
- class PS4000Scope(PicoScopeSdk): # pragma: no cover
+ class PS4000Scope(PicoScopeSdk): # type: ignore
MODULE = ps4000
PREFIX = "ps4000"
CHANNELS = {
@@ -336,9 +335,9 @@ if isinstance(ps5000, CannotFindPicoSDKError):
def __init__(self, variant: Optional[str] = None):
super().__init__(variant)
raise ps5000
-else:
+else: # pragma: no cover
@public
- class PS5000Scope(PicoScopeSdk): # pragma: no cover
+ class PS5000Scope(PicoScopeSdk): # type: ignore
MODULE = ps5000
PREFIX = "ps5000"
CHANNELS = {
@@ -381,9 +380,9 @@ if isinstance(ps6000, CannotFindPicoSDKError):
def __init__(self, variant: Optional[str] = None):
super().__init__(variant)
raise ps6000
-else:
+else: # pragma: no cover
@public
- class PS6000Scope(PicoScopeSdk): # pragma: no cover
+ class PS6000Scope(PicoScopeSdk): # type: ignore
MODULE = ps6000
PREFIX = "ps6000"
CHANNELS = {
diff --git a/pyecsca/sca/trace/combine.py b/pyecsca/sca/trace/combine.py
index 26cf19d..04b1a70 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.stack([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, copy=False)
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.stack([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, copy=False)
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.stack([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, copy=False)
return CombinedTrace(result_samples)
diff --git a/pyecsca/sca/trace/process.py b/pyecsca/sca/trace/process.py
index dccccc2..66dfe73 100644
--- a/pyecsca/sca/trace/process.py
+++ b/pyecsca/sca/trace/process.py
@@ -57,7 +57,7 @@ def rolling_mean(trace: Trace, window: int) -> Trace:
:return:
"""
return trace.with_samples(np.mean(rolling_window(trace.samples, window), -1).astype(
- dtype=trace.samples.dtype))
+ dtype=trace.samples.dtype, copy=False))
@public
diff --git a/pyecsca/sca/trace/sampling.py b/pyecsca/sca/trace/sampling.py
index 0a32c28..5a4d271 100644
--- a/pyecsca/sca/trace/sampling.py
+++ b/pyecsca/sca/trace/sampling.py
@@ -16,7 +16,7 @@ def downsample_average(trace: Trace, factor: int = 2) -> Trace:
:return:
"""
resized = np.resize(trace.samples, len(trace.samples) - (len(trace.samples) % factor))
- result_samples = resized.reshape(-1, factor).mean(axis=1).astype(trace.samples.dtype)
+ result_samples = resized.reshape(-1, factor).mean(axis=1).astype(trace.samples.dtype, copy=False)
return trace.with_samples(result_samples)
diff --git a/test/sca/test_traceset.py b/test/sca/test_traceset.py
index ebf6c3d..7adff41 100644
--- a/test/sca/test_traceset.py
+++ b/test/sca/test_traceset.py
@@ -9,7 +9,7 @@ import numpy as np
from pyecsca.sca import (TraceSet, InspectorTraceSet, ChipWhispererTraceSet, PickleTraceSet,
HDF5TraceSet, Trace)
-EXAMPLE_TRACES = [Trace(np.array([20, 40, 50, 50, 10], dtype=np.dtype("i1"))),
+EXAMPLE_TRACES = [Trace(np.array([20, 40, 50, 50, 10], dtype=np.dtype("i1")), {"something": 5}),
Trace(np.array([1, 2, 3, 4, 5], dtype=np.dtype("i1"))),
Trace(np.array([6, 7, 8, 9, 10], dtype=np.dtype("i1")))]
EXAMPLE_KWARGS = {"num_traces": 3, "thingy": "abc"}
@@ -98,11 +98,17 @@ class HDF5TraceSetTests(TestCase):
trace_set = HDF5TraceSet.inplace(path)
self.assertIsNotNone(trace_set)
test_trace = Trace(np.array([6, 7], dtype=np.dtype("i1")), meta={"thing": "ring"})
+ other_trace = Trace(np.array([15, 7], dtype=np.dtype("i1")), meta={"a": "b"})
trace_set.append(test_trace)
+ self.assertEqual(len(trace_set), 4)
+ trace_set.append(other_trace)
+ trace_set.remove(other_trace)
+ self.assertEqual(len(trace_set), 4)
trace_set.save()
trace_set.close()
test_set = HDF5TraceSet.read(path)
+ self.assertEqual(test_set.get(3), test_set[3])
self.assertTrue(np.array_equal(test_set[3].samples, test_trace.samples))
self.assertEqual(test_set[3].meta["thing"], test_trace.meta["thing"])
self.assertEqual(test_set[3], test_trace)