Coverage for src/km3modules/fit.py: 20%

20 statements  

« prev     ^ index     » next       coverage.py v7.5.1, created at 2024-05-08 03:14 +0000

1# Filename: fit.py 

2# -*- coding: utf-8 -*- 

3# pylint: disable=locally-disabled 

4""" 

5A collection of fit functions and modules. 

6 

7""" 

8import numpy as np 

9import km3pipe.extras 

10 

11 

12def fit_delta_ts(data, time_s): 

13 """Fits gaussians to delta t for each PMT pair. 

14 

15 Parameters 

16 ---------- 

17 data: 2d np.array: x = PMT combinations (465), y = time, entry = frequency 

18 time_s: length of data taking in seconds 

19 

20 Returns 

21 ------- 

22 numpy arrays with rates and means for all PMT combinations 

23 """ 

24 scipy = km3pipe.extras.scipy() 

25 from scipy import optimize 

26 

27 data = data / time_s 

28 

29 xs = np.arange(-20, 21) 

30 

31 def gaussian(x, mean, sigma, rate, offset): 

32 return ( 

33 rate / np.sqrt(2 * np.pi) / sigma * np.exp(-((x - mean) ** 2) / sigma**2) 

34 + offset 

35 ) 

36 

37 rates = [] 

38 means = [] 

39 for combination in data: 

40 try: 

41 popt, _ = optimize.curve_fit(gaussian, xs, combination, p0=[0, 2, 1000, 20]) 

42 except RuntimeError: 

43 popt = (0, 0, 0, 0) 

44 rates.append(popt[2]) 

45 means.append(popt[0]) 

46 return np.array(rates), np.array(means)