Coverage for causalspyne/noise_idiosyncratic.py: 71%

34 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-02-19 14:58 +0000

1import sys 

2import numpy as np 

3 

4 

5class HyperPars: 

6 def gen(self): 

7 return 0.1 

8 

9 

10class Gaussian: 

11 def __init__(self, rng, params): 

12 self.mean = 0 

13 if "gaussian_std" in params: 

14 self.noise_std = params["gaussian_std"] 

15 else: 

16 self.noise_std = HyperPars().gen() 

17 

18 self.rng = rng 

19 

20 def gen(self, num_samples): 

21 noise = self.rng.normal(0, self.noise_std, num_samples) 

22 return noise 

23 

24 

25class Gamma: 

26 def __init__(self, rng, params): 

27 # shape: The shape parameter of the gamma distribution (k > 0) 

28 # scale: The scale parameter of the gamma distribution 

29 # (theta > 0, default is 1.0) 

30 if "gamma_shape" in params: 

31 self.par_shape = params["gamma_shape"] 

32 else: 

33 self.par_shape = 1 

34 if "gamma_scale" in params: 

35 self.par_scale = params["gamma_scale"] 

36 else: 

37 self.par_scale = 2.0 

38 self.rng = rng 

39 

40 def gen(self, num_samples): 

41 """ 

42 size: The number of samples to generate (optional) 

43 """ 

44 noise = self.rng.gamma(shape=self.par_shape, 

45 scale=self.par_scale, 

46 size=num_samples) 

47 return noise 

48 

49 

50class Idiosyncratic: 

51 def __init__(self, rng, class_name="Gamma", **additional_info): 

52 """ """ 

53 class_gen = getattr(sys.modules[__name__], class_name) 

54 self.noise = class_gen(rng, additional_info) 

55 

56 def gen(self, num_samples): 

57 noise = self.noise.gen(num_samples) 

58 return noise