How to use
This is the main source code for the experiment. If you want to use it, you should copy the actual zip file to your own PsyToolkit account, because often there are other files included for stimuli.
The source code for touch_nback2
options
bitmapdir stimuli
sounddir stimuli
set &maxrt 760 # stimulus presentation
set &iti 2000 # intertrial interval
set &choosechance 3 # 1 in 4 are matching
mouse on
sounds
sound_good good.mp3
sound_bad wrong.mp3
fonts
arial 18
bitmaps
letterA ## 15 letters
letterB
letterC
letterD
letterE
letterH
letterI
letterK
letterL
letterM
letterO
letterP
letterR
letterS
letterT
overlay
instruction1
instruction2
instruction3
## a part is a reusable piece of code. In this case, it gives for the
## 3 blocks the feedback
part myfeedback
feedback
text align left
set &Total1 count ; select c8 == 1 && c1 == BLOCKNUMBER ## number of trials where there was a 2back item
set &Total2 count ; select c8 > 1 && c1 == BLOCKNUMBER ## number of trials where there was NOT a 3back item
set &Matches count ; select c4 == 1 && c1 == BLOCKNUMBER ## number of matches
set &Misses count ; select c5 == 1 && c1 == BLOCKNUMBER ## number of misses
set &FalseAlarms count ; select c6 == 1 && c1 == BLOCKNUMBER ## number of false alarms
set &MatchesPerc expression &Matches / &Total1 * 100.0
set &MissesPerc expression &Misses / &Total1 * 100.0
set &FalseAlarmsPerc expression &FalseAlarms / &Total2 * 100.0
text -250 -200 "There were 25 trials in total in this block"
text -250 -150 &Total1 ; prefix "Total trials that had a match:"
text -250 -100 &Total2 ; prefix "Total trials that had no match:"
text -250 -50 &Matches ; prefix "Number of correctly matched items:"
text -250 -0 &Misses ; prefix "Number of missed items:"
text -250 50 &FalseAlarms ; prefix "Number of false alarms:"
text -250 100 &MatchesPerc ; prefix "Percentage correct matches:" ; postfix " %"
text -250 150 &MissesPerc ; prefix "Percentage missed items:" ; postfix " %"
text -250 200 &FalseAlarmsPerc ; prefix "Percentage false alarms:" ; postfix " %"
text -250 250 "Click mouse to continue and show data"
wait_for_key mouse
end
task nback_learning
set &trialcount increase
set $currentletter random 1 15 ## choose randomw letter, might be overridden
############################################################################
## is this condition a yes condition?
set $memory random 1 &choosechance ## 1 in &choosechance trials will be matching trial
## if a 2back trial (there must have been at least 2 trials before for this to be possible)
if $memory == 1 && &trialcount > 2
set $currentletter &nback2
set $requiredresponse 1 ## this is a MATCH, so response is required
fi
## if a NON 2back trial
if $memory != 1 || &trialcount <= 2 ## chose a letter but not that of 2 trials ago
set $currentletter random 1 15
while $currentletter == &nback2 ## choose anything but NOT that of 2 back
set $currentletter random 1 15
while-end
set $requiredresponse 2 ## this is a NON-match, so people need to withhold
fi
############################################################################
## this part is the only part that is different between learning and non-learning
draw off
show bitmap $currentletter ## stimulus 1
## now show previous trials
if &trialcount > 1
show bitmap &nback1 -100 0 # show 1-back left of stimulus
show bitmap overlay -100 0 # greyed out
fi
if &trialcount > 2
show bitmap &nback2 -200 0 # show 2-back left of stimulus
show bitmap overlay -200 0 # greyed out
fi
draw on
######################################################################
readmouse l 1 &maxrt ## click the first bitmap in this task
############################################################################
## the different possible response outcomes
##
if $requiredresponse == 1 and STATUS != TIMEOUT
set $score 1 ## means good
set $match 1
sound sound_good
fi
if $requiredresponse == 1 and STATUS == TIMEOUT
set $score 0 ## means wrong -- miss
set $miss 1
sound sound_bad
fi
if $requiredresponse == 2 and STATUS == TIMEOUT
set $score 1 ## means good
fi
if $requiredresponse == 2 and STATUS != TIMEOUT
set $score 0 ## means wrong
set $false_alarm 1
sound sound_bad
fi
#
######################################################################
#
set $extrawait expression &maxrt - RT ## how much time is left between max RT and now?
delay $extrawait ## wait until letter has been on screen total of 2000 ms
clear screen
delay 2000 ## wait 2000 ms
#
### now save the letter for next trial
#
set &nback2 &nback1
set &nback1 $currentletter
### save the data
save BLOCKNUMBER &trialcount $score $match $miss $false_alarm RT $memory $currentletter &nback1 &nback2
task nback_normal
set &trialcount increase
set $currentletter random 1 15 ## choose randomw letter, might be overridden
############################################################################
## is this condition a yes condition?
set $memory random 1 &choosechance ## 1 in &choosechance trials will be matching trial
## if a 2back trial (there must have been at least 2 trials before for this to be possible)
if $memory == 1 && &trialcount > 2
set $currentletter &nback2
set $requiredresponse 1 ## this is a MATCH, so response is required
fi
## if a NON 2back trial
if $memory != 1 || &trialcount <= 2 ## chose a letter but not that of 2 trials ago
set $currentletter random 1 15
while $currentletter == &nback2 ## choose anything but NOT that of 2 back
set $currentletter random 1 15
while-end
set $requiredresponse 2 ## this is a NON-match, so people need to withhold
fi
############################################################################
## this part is the only part that is different between learning and non-learning
draw off
show bitmap $currentletter ## stimulus 1
draw on
######################################################################
readmouse l 1 &maxrt ## click the first bitmap in this task
############################################################################
## the different possible response outcomes
##
if $requiredresponse == 1 and STATUS != TIMEOUT
set $score 1 ## means good
set $match 1
sound sound_good
fi
if $requiredresponse == 1 and STATUS == TIMEOUT
set $score 0 ## means wrong -- miss
set $miss 1
sound sound_bad
fi
if $requiredresponse == 2 and STATUS == TIMEOUT
set $score 1 ## means good
fi
if $requiredresponse == 2 and STATUS != TIMEOUT
set $score 0 ## means wrong
set $false_alarm 1
sound sound_bad
fi
#
######################################################################
#
set $extrawait expression &maxrt - RT ## how much time is left between max RT and now?
delay $extrawait ## wait until letter has been on screen total of 2000 ms
clear screen
delay 2000 ## wait 2000 ms
#
### now save the letter for next trial
#
set &nback2 &nback1
set &nback1 $currentletter
### save the data
save BLOCKNUMBER &trialcount $score $match $miss $false_alarm RT $memory $currentletter &nback1 &nback2
block training
set &trialcount 0 # make sure you use this again if you have another block
message instruction1 mouse
message instruction2 mouse
tasklist
nback_learning 25
end
part myfeedback
block normal1
set &trialcount 0 # make sure you use this again if you have another block
message instruction3 mouse
tasklist
nback_normal 25
end
part myfeedback
block normal2
set &trialcount 0 # make sure you use this again if you have another block
message instruction3 mouse
tasklist
nback_normal 25
end
part myfeedback