Coverage for partipy/generate_test_data.py: 0%
13 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-16 12:01 +0100
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-16 12:01 +0100
1import numpy as np
4def simulate(
5 n_samples: int,
6 n_archetypes: int,
7 n_dimensions: int,
8 noise_std: float,
9 seed: int = 42,
10):
11 """
12 TODO: Write docstring
13 ...
14 """
15 assert noise_std >= 0
17 rng = np.random.default_rng(seed=seed)
18 Z = rng.uniform(low=-1, high=1, size=(n_archetypes, n_dimensions))
19 A = rng.exponential(scale=1, size=(n_samples, n_archetypes))
20 A /= A.sum(axis=1, keepdims=True)
21 X = A @ Z
22 if noise_std > 0:
23 X += rng.normal(loc=0, scale=noise_std, size=X.shape)
25 assert np.all(np.isclose(A.sum(axis=1), 1))
26 assert A.min() > 0
28 return X, A, Z