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

1import numpy as np 

2 

3 

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 

16 

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) 

24 

25 assert np.all(np.isclose(A.sum(axis=1), 1)) 

26 assert A.min() > 0 

27 

28 return X, A, Z