Coverage for / usr / local / lib / python3.14 / site-packages / twinpad_backend / post_processing.py: 100%
28 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-23 14:42 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-23 14:42 +0000
1import numpy as np
4def cumul(values: list):
5 return np.nancumsum(np.array(values, dtype=np.float64))
8def cumul_distrib(values: list):
9 # Computed using the second method on the answer: https://stackoverflow.com/a/30460089
10 array = np.array(values, dtype=np.float64)
11 x_array = np.sort(array)
12 y_array = np.array(range(array.size)) / float(array.size)
13 return x_array, y_array
16def delta(values: list):
17 return np.insert(np.diff(np.array(values, dtype=np.float64)), 0, [0])
20def derive(time_vector: list, values: list):
21 return np.divide(
22 np.insert(np.diff(np.array(values, dtype=np.float64)), 0, [0]),
23 np.insert(np.diff(np.array(time_vector, dtype=np.float64)), 0, [1]),
24 )
27def integ(time_vector: list, values: list):
28 result = [0]
29 for i in range(1, len(time_vector)):
30 if values[i] is None or values[-1] is None:
31 result.append(np.nan)
32 else:
33 result.append(values[i] * (time_vector[i] - time_vector[i - 1]) + result[i - 1])
34 return result
37def align_x(first_time_vector: list, first_values: list, second_time_vector: list):
38 return np.interp(second_time_vector, first_time_vector, np.array(first_values, dtype="float64"))
41def atan2(values_1: list, values_2: list):
42 return np.arctan2(np.array(values_1, dtype=np.float64), np.array(values_2, dtype=np.float64))
45def mean(*values_list: list):
46 return np.array(values_list, dtype=np.float64).mean(axis=0)
49def norm(*values_list: list):
50 values = np.array(values_list, dtype=np.float64)
51 return np.linalg.norm(values, axis=0)