Skip to content

Commit 6a2083c

Browse files
refactor: remove unnecessary private _standard_normal function (#95)
1 parent 4036fb8 commit 6a2083c

2 files changed

Lines changed: 29 additions & 42 deletions

File tree

src/smsfusion/noise/_noise.py

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,26 @@
11
import numpy as np
22
from numpy.typing import NDArray
33

4-
5-
def _standard_normal(
6-
n: int, seed: int | np.random.Generator | None = None
7-
) -> NDArray[np.float64]:
8-
"""
9-
Draw i.i.d. samples from a standard Normal distribution (mean=0, stdev=1).
10-
11-
Parameters
12-
----------
13-
n : int
14-
Number of samples to generate.
15-
seed : int, np.random.Generator or None, optional
16-
A seed used to initialize a random number generator. If passed a Generator,
17-
it will be used unaltered.
18-
19-
Returns
20-
-------
21-
numpy.ndarray, shape (n,)
22-
Sequence of i.i.d. samples.
23-
"""
24-
return np.random.default_rng(seed).standard_normal(n)
4+
# def _standard_normal(
5+
# n: int, seed: int | np.random.Generator | None = None
6+
# ) -> NDArray[np.float64]:
7+
# """
8+
# Draw i.i.d. samples from a standard Normal distribution (mean=0, stdev=1).
9+
10+
# Parameters
11+
# ----------
12+
# n : int
13+
# Number of samples to generate.
14+
# seed : int, np.random.Generator or None, optional
15+
# A seed used to initialize a random number generator. If passed a Generator,
16+
# it will be used unaltered.
17+
18+
# Returns
19+
# -------
20+
# numpy.ndarray, shape (n,)
21+
# Sequence of i.i.d. samples.
22+
# """
23+
# return np.random.default_rng(seed).standard_normal(n)
2524

2625

2726
def white_noise(
@@ -66,8 +65,10 @@ def white_noise(
6665
--------
6766
smsfusion.gauss_markov, smsfusion.random_walk
6867
"""
68+
rng = np.random.default_rng(seed)
6969
sigma_wn = N * np.sqrt(fs)
70-
return sigma_wn * _standard_normal(n, seed=seed) # type: ignore[no-any-return]
70+
wn = sigma_wn * rng.standard_normal(n) # type: ignore[no-any-return]
71+
return wn
7172

7273

7374
def random_walk(
@@ -116,10 +117,12 @@ def random_walk(
116117
--------
117118
smsfusion.gauss_markov, smsfusion.white_noise
118119
"""
120+
rng = np.random.default_rng(seed)
121+
119122
sigma_wn = K / np.sqrt(fs)
120123

121124
x = np.zeros(n)
122-
epsilon = _standard_normal(n - 1, seed=seed)
125+
epsilon = rng.standard_normal(n - 1)
123126
for i in range(1, n):
124127
x[i] = x[i - 1] + sigma_wn * epsilon[i - 1]
125128

@@ -184,14 +187,16 @@ def gauss_markov(
184187
--------
185188
smsfusion.random_walk, smsfusion.white_noise
186189
"""
190+
rng = np.random.default_rng(seed)
191+
187192
dt = 1.0 / fs
188193
beta = 1.0 / tau_c
189194

190195
phi = np.exp(-beta * dt)
191196
sigma_wn = sigma * np.sqrt(1.0 - np.exp(-2 * beta * dt))
192197

193198
x = np.zeros(n)
194-
epsilon = _standard_normal(n - 1, seed=seed)
199+
epsilon = rng.standard_normal(n - 1)
195200
for i in range(1, n):
196201
x[i] = phi * x[i - 1] + sigma_wn * epsilon[i - 1]
197202

tests/test_noise.py

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,10 @@
1414
random_walk,
1515
white_noise,
1616
)
17-
from smsfusion.noise._noise import _standard_normal
1817

1918
TEST_PATH = Path(__file__).parent
2019

2120

22-
def test__standard_normal():
23-
x = _standard_normal(100)
24-
25-
assert len(x) == 100
26-
assert np.mean(x) == pytest.approx(0.0, abs=0.3) # mean value is zero
27-
assert np.std(x) == pytest.approx(1.0, abs=0.2) # std is 1
28-
29-
30-
def test__standard_normal_seeds():
31-
x0 = _standard_normal(100, seed=0)
32-
x1 = _standard_normal(100, seed=0)
33-
x2 = _standard_normal(100, seed=1)
34-
35-
np.testing.assert_array_almost_equal(x0, x1)
36-
assert not np.array_equal(x0, x2)
37-
38-
3921
def test_white_noise():
4022
N, fs, n = 3, 10.0, 100_000
4123
wn_out = white_noise(N, fs, n, seed=123)

0 commit comments

Comments
 (0)