Coverage for src/evutils/augment/_drop.py: 100%

10 statements  

« prev     ^ index     » next       coverage.py v7.15.1, created at 2026-07-15 09:33 +0000

1"""Module for augmenting events by dropping random events.""" 

2 

3import numpy as np 

4 

5 

6 

7def drop_random_events(events: np.ndarray, drop_rate: float = 0.1) -> np.ndarray: 

8 """Drops a percentage of events randomly using slicing. 

9  

10 Parameters 

11 ---------- 

12 events : np.ndarray 

13 Array of events to drop from. 

14 drop_rate : float, optional 

15 Percentage of events to drop, by default 0.1 (10%). 

16  

17 Returns 

18 ------- 

19 np.ndarray 

20 Array of events with the specified percentage dropped. 

21 

22 """ 

23 if drop_rate <= 0 or drop_rate >= 1: 

24 raise ValueError("drop_rate must be between 0 and 1") 

25 

26 n_events = len(events) 

27 indices = np.arange(n_events) 

28 np.random.shuffle(indices) 

29 

30 drop_count = int(n_events * drop_rate) 

31 keep_indices = indices[drop_count:] 

32 

33 return events[keep_indices]