Skip to content

Commit 3e944e6

Browse files
committed
added fibonacci frolov
1 parent 60dcd09 commit 3e944e6

File tree

4 files changed

+89
-0
lines changed

4 files changed

+89
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import numpy as np
2+
from deterministic_gaussian_sampling_fibonacci import sample_gaussian_fibonacci
3+
4+
from util.selectors.silder_log import LogSlider
5+
from model.distributions.cylinder.cylinder_sampling_schema import CylinderSamplingSchema
6+
from util.selectors.silder_manual_input_wrapper import SliderManualInputWrapper as MI
7+
from util.gaus_util import GausUtil as gu
8+
9+
10+
class FFrolovPWNSampling(CylinderSamplingSchema):
11+
def __init__(self):
12+
def _check_input(val):
13+
return val >= 1 and val <= 100003 and isinstance(val, int)
14+
15+
self.sample_options = [
16+
MI(LogSlider("Number of Samples", 10, 100, 10000))
17+
]
18+
19+
def get_name(self):
20+
return "Fibonacci Frolov"
21+
22+
def sample(self, sample_options, distribution_options):
23+
sample_count = sample_options[0].state
24+
25+
mean_x = distribution_options[0].state
26+
mean_y = distribution_options[1].state
27+
sigma_t = distribution_options[2].state
28+
sigma_p = distribution_options[3].state
29+
correlation = distribution_options[4].state
30+
31+
mu = np.array([mean_x, mean_y])
32+
33+
Cov = np.array([
34+
[sigma_t**2, correlation * sigma_t * sigma_p],
35+
[correlation * sigma_t * sigma_p, sigma_p**2]
36+
])
37+
38+
gaus_grid = sample_gaussian_fibonacci(mu, Cov, sample_count, "Fibonacci")
39+
40+
# wrapp
41+
gaus_grid[:,0] = gaus_grid[:,0] % (2 * np.pi)
42+
return gaus_grid

model/distributions/cylinder/partially_wraped_normal/partially_warpped_normal.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from model.distributions.cylinder.partially_wraped_normal.cartesian import CylinderFibCartPWNSampling
1111
from model.distributions.cylinder.partially_wraped_normal.frolov import CFrolovPWNSampling
1212
from model.distributions.cylinder.partially_wraped_normal.improved_frolov import IFrolovPWNSampling
13+
from model.distributions.cylinder.partially_wraped_normal.fibonacci_frolov import FFrolovPWNSampling
1314

1415
from model.cylinder.cylinder import Cylinder
1516

@@ -29,6 +30,7 @@ def __init__(self):
2930
CylinderFibCartPWNSampling(),
3031
CFrolovPWNSampling(),
3132
IFrolovPWNSampling(),
33+
FFrolovPWNSampling(),
3234
]
3335

3436
def get_name(self):
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import numpy as np
2+
from deterministic_gaussian_sampling_fibonacci import sample_gaussian_fibonacci
3+
4+
from util.selectors.silder_log import LogSlider
5+
from model.distributions.torus.torus_sampling_schema import TorusSamplingSchema
6+
from util.selectors.silder_manual_input_wrapper import SliderManualInputWrapper as MI
7+
from util.gaus_util import GausUtil as gu
8+
9+
10+
class FFrolovWNSampling(TorusSamplingSchema):
11+
def __init__(self):
12+
def _check_input(val):
13+
return val >= 1 and val <= 100003 and isinstance(val, int)
14+
15+
self.sample_options = [
16+
MI(LogSlider("Number of Samples", 10, 100, 10000))
17+
]
18+
19+
def get_name(self):
20+
return "Fibonacci Frolov"
21+
22+
def sample(self, sample_options, distribution_options):
23+
sample_count = sample_options[0].state
24+
25+
mean_x = distribution_options[0].state
26+
mean_y = distribution_options[1].state
27+
sigma_t = distribution_options[2].state
28+
sigma_p = distribution_options[3].state
29+
correlation = distribution_options[4].state
30+
31+
mu = np.array([mean_x, mean_y])
32+
33+
Cov = np.array([
34+
[sigma_t**2, correlation * sigma_t * sigma_p],
35+
[correlation * sigma_t * sigma_p, sigma_p**2]
36+
])
37+
38+
gaus_grid = sample_gaussian_fibonacci(mu, Cov, sample_count, "Fibonacci")
39+
40+
# wrapp
41+
gaus_grid[:,0] = gaus_grid[:,0] % (2 * np.pi)
42+
gaus_grid[:,1] = gaus_grid[:,1] % (2 * np.pi)
43+
return gaus_grid

model/distributions/torus/wrapped_normal/wrapped_normal.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from model.distributions.torus.wrapped_normal.cartesian import TorusFibCartWNSampling
1111
from model.distributions.torus.wrapped_normal.frolov import CFrolovWNSampling
1212
from model.distributions.torus.wrapped_normal.improved_frolov import IFrolovWNSampling
13+
from model.distributions.torus.wrapped_normal.fibonacci_frolov import FFrolovWNSampling
1314
from model.torus.torus import Torus
1415
class WrappedNormalTorusDistribution(TorusDistribution):
1516
def __init__(self):
@@ -27,6 +28,7 @@ def __init__(self):
2728
TorusFibCartWNSampling(),
2829
CFrolovWNSampling(),
2930
IFrolovWNSampling(),
31+
FFrolovWNSampling(),
3032
]
3133

3234

0 commit comments

Comments
 (0)