Coverage for  / usr / local / lib / python3.14 / site-packages / twinpad_backend / post_processing.py: 100%

28 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2025-12-15 16:34 +0000

1import numpy as np 

2 

3 

4def cumul(values: list): 

5 return np.nancumsum(np.array(values, dtype=np.float64)) 

6 

7 

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 

14 

15 

16def delta(values: list): 

17 return np.insert(np.diff(np.array(values, dtype=np.float64)), 0, [0]) 

18 

19 

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 ) 

25 

26 

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 

35 

36 

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")) 

39 

40 

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)) 

43 

44 

45def mean(*values_list: list): 

46 return np.array(values_list, dtype=np.float64).mean(axis=0) 

47 

48 

49def norm(*values_list: list): 

50 values = np.array(values_list, dtype=np.float64) 

51 return np.linalg.norm(values, axis=0)