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
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-19 14:58 +0000
1import sys
2import numpy as np
5class HyperPars:
6 def gen(self):
7 return 0.1
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()
18 self.rng = rng
20 def gen(self, num_samples):
21 noise = self.rng.normal(0, self.noise_std, num_samples)
22 return noise
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
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
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)
56 def gen(self, num_samples):
57 noise = self.noise.gen(num_samples)
58 return noise