Skip to content

Commit 1888e44

Browse files
committed
ADD: added functionality to happy slider for faster if held longer movement
1 parent 6d905a8 commit 1888e44

File tree

10 files changed

+152
-59
lines changed

10 files changed

+152
-59
lines changed

config.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,12 @@
5656
TIME_BETWEEN_HAPPY = 15
5757
TIME_JITTER_HAPPY = 10
5858
HAPPY_FONT_SIZE = 25
59-
HAPPY_SPEED = .5
59+
HAPPY_INC_BASE = .02
60+
HAPPY_INC_START = .2
61+
HAPPY_MOD = 20.
62+
HAPPY_RANGE = 10
63+
NON_PRESS_INT = .1
64+
PRESS_INT = .016
6065
SLIDER_WIDTH = 1000
6166
RESP_HAPPY = ["F", "J"]
6267

@@ -173,7 +178,7 @@
173178
'group_id':"1"},
174179
{'type':'TI',
175180
'question':"2. Your Age: ",
176-
'multiline':1},
181+
'multiline':2},
177182
{'type':'LI',
178183
'question':"3. I was bothered by things that usually don't bother me.",
179184
'ans':['Rarely or none\nof the time\n(less than 1 day)',

main.py

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
Button, Label, Loop, If, Elif, Else, KeyPress, Ref,\
1212
Parallel, Slider, MouseCursor, Rectangle, Meanwhile,\
1313
Serial, Debug, Screenshot, Questionnaire, UpdateWidget
14+
from smile.clock import clock
1415
from smile.lsl import init_lsl_outlet, LSLPush
1516
from smile.scale import scale as s
1617
from supreme_demo import Demographics
@@ -217,22 +218,38 @@ def ToOut(message, exp, post_urlFULL):
217218
top=sld.bottom - s(250), font_size=s(CogBatt_config.HAPPY_FONT_SIZE))
218219

219220
with UntilDone():
221+
exp.happy_start_time = Ref(clock.now)
222+
exp.last_check = exp.happy_start_time
223+
exp.happy_dur = 0.0
224+
exp.HAPPY_SPEED = CogBatt_config.HAPPY_INC_BASE
220225
exp.first_press_time = None
221226
with Loop():
222227
ans = KeyPress(keys=CogBatt_config.RESP_HAPPY)
223228
with If(exp.first_press_time == None):
224229
exp.first_press_time = ans.press_time
230+
with If(ans.press_time['time'] - exp.last_check <
231+
CogBatt_config.NON_PRESS_INT):
232+
exp.HAPPY_SPEED = (CogBatt_config.HAPPY_INC_BASE * (Ref(clock.now) -
233+
exp.happy_start_time) * CogBatt_config.HAPPY_MOD) + CogBatt_config.HAPPY_INC_START
234+
235+
with Else():
236+
exp.HAPPY_SPEED = CogBatt_config.HAPPY_INC_START
237+
exp.happy_start_time = Ref(clock.now)
238+
exp.last_check = Ref(clock.now)
239+
Debug(a=exp.HAPPY_SPEED, b=exp.happy_start_time, c=ans.press_time['time'],
240+
d=ans.press_time['time'] - exp.happy_start_time < CogBatt_config.NON_PRESS_INT)
225241
with If(ans.pressed == CogBatt_config.RESP_HAPPY[0]):
226-
with If(sld.value - CogBatt_config.HAPPY_SPEED <= -10):
227-
UpdateWidget(sld, value=-10)
242+
with If(sld.value - exp.HAPPY_SPEED <= (-1 * CogBatt_config.HAPPY_RANGE)):
243+
UpdateWidget(sld, value=(-1 * CogBatt_config.HAPPY_RANGE))
228244
with Else():
229-
UpdateWidget(sld, value=sld.value - CogBatt_config.HAPPY_SPEED)
245+
UpdateWidget(sld, value=sld.value - exp.HAPPY_SPEED)
230246
with Elif(ans.pressed == CogBatt_config.RESP_HAPPY[1]):
231-
with If(sld.value + CogBatt_config.HAPPY_SPEED >= 10):
232-
UpdateWidget(sld, value=10)
247+
with If(sld.value + exp.HAPPY_SPEED >= CogBatt_config.HAPPY_RANGE):
248+
UpdateWidget(sld, value=CogBatt_config.HAPPY_RANGE)
233249
with Else():
234-
UpdateWidget(sld, value=sld.value + CogBatt_config.HAPPY_SPEED)
235-
Wait(.05)
250+
UpdateWidget(sld, value=sld.value + exp.HAPPY_SPEED)
251+
252+
#Wait(.005)
236253
with UntilDone():
237254
submit = KeyPress(keys=['SPACEBAR'])
238255
Log(name="happy",

tasks/AssBind/config.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,13 @@
120120

121121
TIME_BETWEEN_HAPPY = 15
122122
TIME_JITTER_HAPPY = 10
123-
HAPPY_FONT_SIZE = 35
124-
HAPPY_SPEED = .5
123+
HAPPY_FONT_SIZE = 25
124+
HAPPY_INC_BASE = .02
125+
HAPPY_INC_START = .2
126+
HAPPY_MOD = 20.
127+
HAPPY_RANGE = 10
128+
NON_PRESS_INT = .1
129+
PRESS_INT = .016
125130
SLIDER_WIDTH = 1000
126131
RESP_HAPPY = ["F", "J"]
127132

tasks/AssBind/happy.py

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from smile.common import *
22
from smile.scale import scale as s
3-
3+
from smile.clock import clock
44

55
@Subroutine
66
def HappyQuest(self, config, task, block_num, trial_num):
@@ -16,24 +16,36 @@ def HappyQuest(self, config, task, block_num, trial_num):
1616
center_x=sld.right, center_y=sld.center_y - s(100))
1717
Label(text='Press Spacebar to lock-in your response.',
1818
top=sld.bottom - s(250), font_size=s(config.HAPPY_FONT_SIZE))
19-
2019
with UntilDone():
20+
self.happy_start_time = Ref(clock.now)
21+
self.last_check = self.happy_start_time
22+
self.happy_dur = 0.0
23+
self.HAPPY_SPEED = config.HAPPY_INC_BASE
2124
self.first_press_time = None
2225
with Loop():
2326
ans = KeyPress(keys=config.RESP_HAPPY)
2427
with If(self.first_press_time == None):
2528
self.first_press_time = ans.press_time
29+
with If(ans.press_time['time'] - self.last_check <
30+
config.NON_PRESS_INT):
31+
self.HAPPY_SPEED = (config.HAPPY_INC_BASE * (Ref(clock.now) -
32+
self.happy_start_time) * config.HAPPY_MOD) + config.HAPPY_INC_START
33+
34+
with Else():
35+
self.HAPPY_SPEED = config.HAPPY_INC_START
36+
self.happy_start_time = Ref(clock.now)
37+
self.last_check = Ref(clock.now)
38+
2639
with If(ans.pressed == config.RESP_HAPPY[0]):
27-
with If(sld.value - config.HAPPY_SPEED <= -10):
28-
UpdateWidget(sld, value=-10)
40+
with If(sld.value - self.HAPPY_SPEED <= (-1*config.HAPPY_RANGE)):
41+
UpdateWidget(sld, value=(-1*config.HAPPY_RANGE))
2942
with Else():
30-
UpdateWidget(sld, value=sld.value - config.HAPPY_SPEED)
43+
UpdateWidget(sld, value=sld.value - self.HAPPY_SPEED)
3144
with Elif(ans.pressed == config.RESP_HAPPY[1]):
32-
with If(sld.value + config.HAPPY_SPEED >= 10):
33-
UpdateWidget(sld, value=10)
45+
with If(sld.value + self.HAPPY_SPEED >= config.HAPPY_RANGE):
46+
UpdateWidget(sld, value=config.HAPPY_RANGE)
3447
with Else():
35-
UpdateWidget(sld, value=sld.value + config.HAPPY_SPEED)
36-
Wait(.05)
48+
UpdateWidget(sld, value=sld.value + self.HAPPY_SPEED)
3749
with UntilDone():
3850
submit = KeyPress(keys=['SPACEBAR'])
3951
Log(name="happy",

tasks/BARTUVA/config.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,13 @@
8181

8282
TIME_BETWEEN_HAPPY = 15
8383
TIME_JITTER_HAPPY = 10
84-
HAPPY_FONT_SIZE = 35
85-
HAPPY_SPEED = .5
84+
HAPPY_FONT_SIZE = 25
85+
HAPPY_INC_BASE = .02
86+
HAPPY_INC_START = .2
87+
HAPPY_MOD = 20.
88+
HAPPY_RANGE = 10
89+
NON_PRESS_INT = .1
90+
PRESS_INT = .016
8691
SLIDER_WIDTH = 1000
8792
RESP_HAPPY = ["F", "J"]
8893

tasks/BARTUVA/happy.py

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from smile.common import *
22
from smile.scale import scale as s
3-
3+
from smile.clock import clock
44
@Subroutine
55
def HappyQuest(self, config, task, block_num, trial_num):
66
with Parallel():
@@ -17,23 +17,35 @@ def HappyQuest(self, config, task, block_num, trial_num):
1717
top=sld.bottom - s(250), font_size=s(config.HAPPY_FONT_SIZE))
1818

1919
with UntilDone():
20+
self.happy_start_time = Ref(clock.now)
21+
self.last_check = self.happy_start_time
22+
self.happy_dur = 0.0
23+
self.HAPPY_SPEED = config.HAPPY_INC_BASE
2024
self.first_press_time = None
2125
with Loop():
2226
ans = KeyPress(keys=config.RESP_HAPPY)
2327
with If(self.first_press_time == None):
2428
self.first_press_time = ans.press_time
25-
with If(ans.pressed == config.RESP_HAPPY[0]):
29+
with If(ans.press_time['time'] - self.last_check <
30+
config.NON_PRESS_INT):
31+
self.HAPPY_SPEED = (config.HAPPY_INC_BASE * (Ref(clock.now) -
32+
self.happy_start_time) * config.HAPPY_MOD) + config.HAPPY_INC_START
2633

27-
with If(sld.value - config.HAPPY_SPEED <= -10):
28-
UpdateWidget(sld, value=-10)
34+
with Else():
35+
self.HAPPY_SPEED = config.HAPPY_INC_START
36+
self.happy_start_time = Ref(clock.now)
37+
self.last_check = Ref(clock.now)
38+
39+
with If(ans.pressed == config.RESP_HAPPY[0]):
40+
with If(sld.value - self.HAPPY_SPEED <= (-1*config.HAPPY_RANGE)):
41+
UpdateWidget(sld, value=(-1*config.HAPPY_RANGE))
2942
with Else():
30-
UpdateWidget(sld, value=sld.value - config.HAPPY_SPEED)
43+
UpdateWidget(sld, value=sld.value - self.HAPPY_SPEED)
3144
with Elif(ans.pressed == config.RESP_HAPPY[1]):
32-
with If(sld.value + config.HAPPY_SPEED >= 10):
33-
UpdateWidget(sld, value=10)
45+
with If(sld.value + self.HAPPY_SPEED >= config.HAPPY_RANGE):
46+
UpdateWidget(sld, value=config.HAPPY_RANGE)
3447
with Else():
35-
UpdateWidget(sld, value=sld.value + config.HAPPY_SPEED)
36-
Wait(.05)
48+
UpdateWidget(sld, value=sld.value + self.HAPPY_SPEED)
3749
with UntilDone():
3850
submit = KeyPress(keys=['SPACEBAR'])
3951
Log(name="happy",

tasks/RDM/config.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,12 @@
5858

5959
TIME_BETWEEN_HAPPY = 15
6060
TIME_JITTER_HAPPY = 10
61-
HAPPY_FONT_SIZE = 35
62-
HAPPY_SPEED = .5
61+
HAPPY_FONT_SIZE = 25
62+
HAPPY_INC_BASE = .02
63+
HAPPY_INC_START = .2
64+
HAPPY_MOD = 20.
65+
HAPPY_RANGE = 10
66+
NON_PRESS_INT = .1
67+
PRESS_INT = .016
6368
SLIDER_WIDTH = 1000
6469
RESP_HAPPY = ["F", "J"]

tasks/RDM/happy.py

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from smile.common import *
22
from smile.scale import scale as s
3-
3+
from smile.clock import clock
44
@Subroutine
55
def HappyQuest(self, config, task, block_num, trial_num):
66
with Parallel():
@@ -16,23 +16,36 @@ def HappyQuest(self, config, task, block_num, trial_num):
1616
Label(text='Press Spacebar to lock-in your response.',
1717
top=sld.bottom - s(250), font_size=s(config.HAPPY_FONT_SIZE))
1818

19-
with UntilDone():
20-
self.first_press_time = None
21-
with Loop():
22-
ans = KeyPress(keys=config.RESP_HAPPY)
23-
with If(self.first_press_time == None):
24-
self.first_press_time = ans.press_time
25-
with If(ans.pressed == config.RESP_HAPPY[0]):
26-
with If(sld.value - config.HAPPY_SPEED <= -10):
27-
UpdateWidget(sld, value=-10)
28-
with Else():
29-
UpdateWidget(sld, value=sld.value - config.HAPPY_SPEED)
30-
with Elif(ans.pressed == config.RESP_HAPPY[1]):
31-
with If(sld.value + config.HAPPY_SPEED >= 10):
32-
UpdateWidget(sld, value=10)
19+
with UntilDone():
20+
self.happy_start_time = Ref(clock.now)
21+
self.last_check = self.happy_start_time
22+
self.happy_dur = 0.0
23+
self.HAPPY_SPEED = config.HAPPY_INC_BASE
24+
self.first_press_time = None
25+
with Loop():
26+
ans = KeyPress(keys=config.RESP_HAPPY)
27+
with If(self.first_press_time == None):
28+
self.first_press_time = ans.press_time
29+
with If(ans.press_time['time'] - self.last_check <
30+
config.NON_PRESS_INT):
31+
self.HAPPY_SPEED = (config.HAPPY_INC_BASE * (Ref(clock.now) -
32+
self.happy_start_time) * config.HAPPY_MOD) + config.HAPPY_INC_START
33+
3334
with Else():
34-
UpdateWidget(sld, value=sld.value + config.HAPPY_SPEED)
35-
Wait(.05)
35+
self.HAPPY_SPEED = config.HAPPY_INC_START
36+
self.happy_start_time = Ref(clock.now)
37+
self.last_check = Ref(clock.now)
38+
39+
with If(ans.pressed == config.RESP_HAPPY[0]):
40+
with If(sld.value - self.HAPPY_SPEED <= (-1*config.HAPPY_RANGE)):
41+
UpdateWidget(sld, value=(-1*config.HAPPY_RANGE))
42+
with Else():
43+
UpdateWidget(sld, value=sld.value - self.HAPPY_SPEED)
44+
with Elif(ans.pressed == config.RESP_HAPPY[1]):
45+
with If(sld.value + self.HAPPY_SPEED >= config.HAPPY_RANGE):
46+
UpdateWidget(sld, value=config.HAPPY_RANGE)
47+
with Else():
48+
UpdateWidget(sld, value=sld.value + self.HAPPY_SPEED)
3649
with UntilDone():
3750
submit = KeyPress(keys=['SPACEBAR'])
3851
Log(name="happy",

tasks/flanker/config.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,13 @@
133133

134134
TIME_BETWEEN_HAPPY = 15
135135
TIME_JITTER_HAPPY = 10
136-
HAPPY_FONT_SIZE = 35
137-
HAPPY_SPEED = .5
136+
HAPPY_FONT_SIZE = 25
137+
HAPPY_INC_BASE = .02
138+
HAPPY_INC_START = .2
139+
HAPPY_MOD = 20.
140+
HAPPY_RANGE = 10
141+
NON_PRESS_INT = .1
142+
PRESS_INT = .016
138143
SLIDER_WIDTH = 1000
139144
RESP_HAPPY = ["F", "J"]
140145

tasks/flanker/happy.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from smile.common import *
22
from smile.scale import scale as s
3+
from smile.clock import clock
34
@Subroutine
45
def HappyQuest(self, config, task, block_num, trial_num):
56
with Parallel():
@@ -16,22 +17,35 @@ def HappyQuest(self, config, task, block_num, trial_num):
1617
top=sld.bottom - s(250), font_size=s(config.HAPPY_FONT_SIZE))
1718

1819
with UntilDone():
20+
self.happy_start_time = Ref(clock.now)
21+
self.last_check = self.happy_start_time
22+
self.happy_dur = 0.0
23+
self.HAPPY_SPEED = config.HAPPY_INC_BASE
1924
self.first_press_time = None
2025
with Loop():
2126
ans = KeyPress(keys=config.RESP_HAPPY)
2227
with If(self.first_press_time == None):
2328
self.first_press_time = ans.press_time
29+
with If(ans.press_time['time'] - self.last_check <
30+
config.NON_PRESS_INT):
31+
self.HAPPY_SPEED = (config.HAPPY_INC_BASE * (Ref(clock.now) -
32+
self.happy_start_time) * config.HAPPY_MOD) + config.HAPPY_INC_START
33+
34+
with Else():
35+
self.HAPPY_SPEED = config.HAPPY_INC_START
36+
self.happy_start_time = Ref(clock.now)
37+
self.last_check = Ref(clock.now)
38+
2439
with If(ans.pressed == config.RESP_HAPPY[0]):
25-
with If(sld.value - config.HAPPY_SPEED <= -10):
26-
UpdateWidget(sld, value=-10)
40+
with If(sld.value - self.HAPPY_SPEED <= (-1*config.HAPPY_RANGE)):
41+
UpdateWidget(sld, value=(-1*config.HAPPY_RANGE))
2742
with Else():
28-
UpdateWidget(sld, value=sld.value - config.HAPPY_SPEED)
43+
UpdateWidget(sld, value=sld.value - self.HAPPY_SPEED)
2944
with Elif(ans.pressed == config.RESP_HAPPY[1]):
30-
with If(sld.value + config.HAPPY_SPEED >= 10):
31-
UpdateWidget(sld, value=10)
45+
with If(sld.value + self.HAPPY_SPEED >= config.HAPPY_RANGE):
46+
UpdateWidget(sld, value=config.HAPPY_RANGE)
3247
with Else():
33-
UpdateWidget(sld, value=sld.value + config.HAPPY_SPEED)
34-
Wait(.05)
48+
UpdateWidget(sld, value=sld.value + self.HAPPY_SPEED)
3549
with UntilDone():
3650
submit = KeyPress(keys=['SPACEBAR'])
3751
Log(name="happy",

0 commit comments

Comments
 (0)