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

1"""Test utilities for glm module.""" 

2 

3import numpy as np 

4import pandas as pd 

5 

6from nilearn.conftest import _rng 

7 

8 

9def _conditions(): 

10 return ["c0", "c0", "c0", "c1", "c1", "c1", "c2", "c2", "c2"] 

11 

12 

13def _onsets(): 

14 return [0, 70, 100, 10, 30, 90, 30, 40, 60] 

15 

16 

17def _durations(): 

18 return np.ones(len(_onsets())) 

19 

20 

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 

31 

32 

33def block_paradigm(): 

34 events = pd.DataFrame( 

35 { 

36 "trial_type": _conditions(), 

37 "onset": _onsets(), 

38 "duration": 5 * _durations(), 

39 } 

40 ) 

41 return events 

42 

43 

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 

56 

57 

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 

67 

68 

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 

82 

83 

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 

97 

98 

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 

112 

113 

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 

125 

126 

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