Coverage for nilearn/glm/tests/_testing.py: 0%
59 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-16 12:32 +0200
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-16 12:32 +0200
1"""Test utilities for glm module."""
3import numpy as np
4import pandas as pd
6from nilearn.conftest import _rng
9def _conditions():
10 return ["c0", "c0", "c0", "c1", "c1", "c1", "c2", "c2", "c2"]
13def _onsets():
14 return [0, 70, 100, 10, 30, 90, 30, 40, 60]
17def _durations():
18 return np.ones(len(_onsets()))
21def modulated_event_paradigm():
22 events = pd.DataFrame(
23 {
24 "trial_type": _conditions(),
25 "onset": _onsets(),
26 "duration": _durations(),
27 "modulation": _rng().uniform(size=len(_onsets())),
28 }
29 )
30 return events
33def block_paradigm():
34 events = pd.DataFrame(
35 {
36 "trial_type": _conditions(),
37 "onset": _onsets(),
38 "duration": 5 * _durations(),
39 }
40 )
41 return events
44def modulated_block_paradigm():
45 durations = 5 + 5 * _rng().uniform(size=len(_onsets()))
46 modulation = 1 + _rng().uniform(size=len(_onsets()))
47 events = pd.DataFrame(
48 {
49 "trial_type": _conditions(),
50 "onset": _onsets(),
51 "duration": durations,
52 "modulation": modulation,
53 }
54 )
55 return events
58def spm_paradigm(block_duration):
59 frame_times = np.linspace(0, 99, 100)
60 conditions = ["c0", "c0", "c0", "c1", "c1", "c1", "c2", "c2", "c2"]
61 onsets = [30, 50, 70, 10, 30, 80, 30, 40, 60]
62 durations = block_duration * np.ones(len(onsets))
63 events = pd.DataFrame(
64 {"trial_type": conditions, "onset": onsets, "duration": durations}
65 )
66 return events, frame_times
69def design_with_null_durations():
70 durations = _durations()
71 durations[2] = 0
72 durations[5] = 0
73 durations[8] = 0
74 events = pd.DataFrame(
75 {
76 "trial_type": _conditions(),
77 "onset": _onsets(),
78 "duration": durations,
79 }
80 )
81 return events
84def design_with_nan_durations():
85 durations = _durations()
86 durations[2] = np.nan
87 durations[5] = np.nan
88 durations[8] = np.nan
89 events = pd.DataFrame(
90 {
91 "trial_type": _conditions(),
92 "onset": _onsets(),
93 "duration": durations,
94 }
95 )
96 return events
99def design_with_nan_onsets():
100 onsets = _onsets()
101 onsets[2] = np.nan
102 onsets[5] = np.nan
103 onsets[8] = np.nan
104 events = pd.DataFrame(
105 {
106 "trial_type": _conditions(),
107 "onset": onsets,
108 "duration": _durations(),
109 }
110 )
111 return events
114def design_with_negative_onsets():
115 onsets = _onsets()
116 onsets[0] = -32
117 events = pd.DataFrame(
118 {
119 "trial_type": _conditions(),
120 "onset": onsets,
121 "duration": _durations(),
122 }
123 )
124 return events
127def duplicate_events_paradigm():
128 conditions = ["c0", "c0", "c0", "c0", "c1", "c1"]
129 onsets = [10, 30, 70, 70, 10, 30]
130 durations = [1.0, 1.0, 1.0, 1.0, 1.0, 1]
131 events = pd.DataFrame(
132 {
133 "trial_type": conditions,
134 "onset": onsets,
135 "duration": durations,
136 "modulation": np.ones(len(onsets)),
137 }
138 )
139 return events