aboutsummaryrefslogtreecommitdiff
path: root/pyecsca/edit.py
diff options
context:
space:
mode:
authorJ08nY2018-11-20 00:36:46 +0100
committerJ08nY2019-03-14 18:03:54 +0100
commite0a6e7c452cd55365096bc3e4b8f36f5f9660ae7 (patch)
treebf1c80e015cdfd47d864665946f44a072f7b38db /pyecsca/edit.py
downloadpyecsca-e0a6e7c452cd55365096bc3e4b8f36f5f9660ae7.tar.gz
pyecsca-e0a6e7c452cd55365096bc3e4b8f36f5f9660ae7.tar.zst
pyecsca-e0a6e7c452cd55365096bc3e4b8f36f5f9660ae7.zip
Diffstat (limited to 'pyecsca/edit.py')
-rw-r--r--pyecsca/edit.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/pyecsca/edit.py b/pyecsca/edit.py
new file mode 100644
index 0000000..7fe364d
--- /dev/null
+++ b/pyecsca/edit.py
@@ -0,0 +1,31 @@
+from copy import copy
+from typing import Union, Tuple, Any
+from public import public
+import numpy as np
+
+from .trace import Trace
+
+
+@public
+def trim(trace: Trace, start: int = None, end: int = None) -> Trace:
+ if start is None:
+ start = 0
+ if end is None:
+ end = len(trace.samples)
+ if start > end:
+ raise ValueError("Invalid trim arguments.")
+ return Trace(copy(trace.title), copy(trace.data), trace.samples[start:end].copy())
+
+
+@public
+def reverse(trace: Trace) -> Trace:
+ return Trace(copy(trace.title), copy(trace.data), np.flipud(trace.samples))
+
+
+@public
+def pad(trace: Trace, lengths: Union[Tuple[int, int], int], values: Union[Tuple[Any, Any], Any] = (0, 0)) -> Trace:
+ if not isinstance(lengths, tuple):
+ lengths = (lengths, lengths)
+ if not isinstance(values, tuple):
+ values = (values, values)
+ return Trace(copy(trace.title), copy(trace.data), np.pad(trace.samples, lengths, "constant", constant_values=values))