In simple terms
The AX-CPT is a task where people see two letters in a row, first a cue and then a target (or also known as "probe"). The task was originally designed by Rosvold and his colleagues at Yale University.
In this task people must press a target button only when they see A followed by X. All other pairs (e.g., A–Y, B–X, B–Y) require a different or no response. It tests how well people use context (the first letter) to decide how to respond to the second.
Research history
The AX-CPT was designed in the 1950s and the first paper was by Rosvold and colleagues in 1956. In that time, they did have a special apparatus for letter presentation.
They called it simply the Continuous Performance Test (CPT). It was designed to detect brain damage.
Since then, the AX-CPT has been used a lot in different braches of cognitive research, including fMRI research, cognitive psychology, and neuropsychology, and neuroscience.
Polizetti and colleagues (2018) showed the AX-CPT performance across different ages (8 to 22 years old) using a large cross-sectional study. They have many interesting conclusions, such as: "Starting from adolescence, early developing resources appear to become increasingly integrated into optimized performance and it is only in early adulthood that a flexible and continually updated representation of task relevant information mature.". |
Versions
This task has been used a lot and there are now many different variations. Apart from trivial things (such as the colors of stimuli), examples of important things that researchers varied:
-
Whether there is a keyboard response to acknowledge the cue. This can help participants to engage/attend the cue better.
-
The delay (time) between the cue and the probe, ranging from 0 to 6 seconds.
-
The allowed response time window (how long do people get to respond before it is considered a timeout error).
-
Type of stimuli. Instead of letters, researchers can use non-linguistic stimulus, such as shapes, faces, dot-patterns. This can be good for working with different species (e.g., animal research), ages (e.g., small children), cultural contexts (e.g., where the Latin alphabet is not common).
In the current version, we use letters, and we use a cue response as well. |
Task design
In this task, there are multiple trials (typically more than 100) in which the event sequence looks like this (although there are variations).
-
Show white fixation point on black screen
-
Show a cue letter in cyan
-
Optional: Wait for a response to cue (max time 1000 ms)
-
Show a target letter in white
-
Wait for a response to target (max time 1000 ms)
This type of trial comes in four different conditions. In the current implementation we use a response to the cue, but you can decide not to use that.
Trial type / condition | The cue is | The target is | The response to the Cue | The response to the target |
---|---|---|---|---|
A-X |
The letter A |
The letter X |
M |
C |
B-X |
Any letter other than A |
The letter X |
M |
M |
A-Y |
The letter A |
Any letter other than X |
M |
M |
B-Y |
Any letter other than A |
Any letter other than X |
M |
M |
A response to the cue is not necessary per se. It is always the same across conditions. The benefit is that it makes sure people are attending the task and it might increase people’s engagement. |
About our implementation
In this task, we have a practise block of up to 50 trials. Participants need to do at least 10 trials in a row correctly to complete practise or up to 50 trials if they do not reach this. This to ensure people are used to the rules.
Because we use the letters M and C for responses, these are not used as stimulus letters. As described by Servan-Schreiber and colleagues, all other letters except the K (due to its similarity to X) were used.
Run the demo
Data output file
You do not need this information, unless you want to understand the output data file. You can ignore this if you just want to find out your own score. This is only necessary if you want to carry out the experiment with multiple participants. |
In PsyToolkit, the data output file is simply a textfile. The save line of the PsyToolkit experiment script determines what is being saved in the data output file. Typically, for each experimental trial, you would have exactly one line in your text file, and each number/word on that line gives you the information you need for your data analysis, such as the condition, response speed, and whether an error was made. |
Meaning of the columns in the output datafile. You need this information for your data analysis.
Colum | Meaning |
---|---|
1 |
The name of the block |
2 |
Trial type (AX,AY,BX,BY) |
3 |
The status of the trial (1=correct trial, 0=mistake was made) |
4 |
RT to the the cue |
5 |
status of the response to the cue (1=correct, 2=wrong key, 3=timeout) |
6 |
RT to the target |
7 |
status of the response to the target (1=correct, 2=wrong key, 3=timeout) |
8 |
correct count in a row so far |
How to analyze data from experiments
When you embed a AX-CPT in your survey, you need (as always), make sure you set the "analyze" parameters of your experiment. In this case, it is very simple, for the dependent variable you just use value 6. For correct, you choose column 5. For condition you use column 2
This way, you get the response time for each of the four conditions. You can do more sophisticated analyses. For this we recommend the R software.
PsyToolkit code
Click to expand the PsyToolkit script code (part of zip file below)
## AX-CPT
## there are 4 types of trials
## AX : m after cue "a" and "c" after probe "x"
## BX : any letter except A followed by x (press m m)
## AY : A followed by any except X (press m m)
## BY : any pair except A and X (press m m)
bitmaps
instructions1
instructions2
fonts
regularfont arial 20
letterFont courier 60
## this table sets the frequency. A common setup is to have 70% AX trials, and 10% for other trial types
table conditions
"AX" 2 # only in AX trials, the second letter is the c, which is the second letter in the keys line below
"AX" 2
"AX" 2
"AX" 2
"AX" 2
"AX" 2
"AX" 2
"BX" 1 # in other trials, the second letter is letter 1 (the m)
"BY" 1
"AY" 1
part countDownToContinue
font regularfont # makes next show text large
show rectangle 0 0 800 500 yellow
show text %feedback1 0 -50 black
show text %feedback2 0 0 black
show text %feedback3 0 50 black
set $delayCounterInterval 500
set $countDown 20
while $countDown > 0
show text $countDown 0 100 black
delay $delayCounterInterval
clear -1
set $countDown decrease
while-end
show text "Concentrate. Press a key to continue with the task" 0 200 black
readkey 3 99999
task axcpt
keys m c space
# note, we excluded C and M because they are used for the keys, and we excluded K as in original study
set %%otherLetters "B" "D" "E" "F" "G" "H" "I" "J" "L" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "Y" "Z"
set %feedback1 " "
set %feedback2 " "
set %feedback3 " "
# -- first select letters
if @1 = "AX"
set %letter1 "A"
set %letter2 "X"
set %feedback2 "If you see a blue A followed by a white X"
set %feedback3 "then press C"
fi
if @1 = "AY"
set %letter1 "A"
set %letter2 %%otherLetters use random
set %feedback2 "If you see a blue A followed by a letter other than X"
set %feedback3 "then press M"
fi
if @1 = "BX"
set %letter1 %%otherLetters use random
set %letter2 "X"
set %feedback2 "If you see a blue letter that is not an A"
set %feedback3 "followed by an X, then press M"
fi
if @1 = "BY"
set %letter1 %%otherLetters use random
set %%tmpLetters %%otherLetters # make copy of otherLetters
set %%tmpLetters remove value %letter1 # this prevents repeat of same letter in BY trials
set %letter2 %%tmpLetters use random
set %feedback2 "If you see a blue letter that is not an A"
set %feedback3 "followed by a letter other than X, then press M"
fi
## -- now show fixpoint made from two rectangles
show rectangle 0 0 5 30 white
show rectangle 0 0 30 5 white
delay 200
clear -1 -2
font letterFont # makes next show text large
show text %letter1 0 0 0 255 255 # 0,255,255 is cyan
readkey 1 500 # response window 1: 500ms with cue; always need to press m to first cue letter
if STATUS = TIMEOUT # it can be timeout, because this is first part of response window (with letter present)
clear -1
show rectangle 0 0 5 30 white
show rectangle 0 0 30 5 white
readkey 1 500 # response window 2 for the cue, but now the cue not shown
clear -1 -2 # remove fixpoint that was shown during second part of response window
set $rt1 expression 500 + RT
else
clear -1
set $rt1 RT
fi
set $status1 STATUS
if STATUS = WRONG # if people pressed C instead of M to the cue
set %feedback1 "If you see a blue letter, you always need"
set %feedback2 "to press the letter M on the keyboard"
set %feedback3 " "
part countDownToContinue # note that call also changes STATUS
fi
if STATUS = TIMEOUT
set %feedback1 "You failed to respond to the blue letter WITHIN 1 second."
set %feedback2 "If you see any blue letter,"
set %feedback3 "always press the letter M on the keyboard."
part countDownToContinue # note that call also changes STATUS
fi
#
#-- first part done
#
if $status1 = CORRECT # we only continue if response to cue was correct
# -------------------------------------------------------------------------
# In this case, trial continues with further wait and second letter
# -------------------------------------------------------------------------
show rectangle 0 0 5 30 white # fixpoint
show rectangle 0 0 30 5 white # fixpoint
delay 3900
clear -1 -2
## -- now show for the second letter and wait 1000 ms for response
show text %letter2
readkey @2 1000
clear -1
if STATUS = TIMEOUT
set %feedback1 "You responded to the blue letter, but not to the white letter."
part countDownToContinue
fi
if STATUS = WRONG
set %feedback1 "You responded correctly to the blue letter, but not to the white one."
part countDownToContinue
fi
set $rt2 RT
set $status2 STATUS
fi
clear screen
delay 1000 ## added some break
#--so far, we had responses for part of the trials
# good to have complete status
# here 1 means correct, 0 means wrong
if $status1 = 1 and $status2 = 1
set $trialstatus 1
set &correctInRowCounter increase # count up to 10 for practiseblock
else
set &correctInRowCounter 0
fi
save BLOCKNAME $trialstatus %letter1 %letter2 $rt1 $status1 $rt2 $status2 &correctInRowCounter
if &practiseMode = 1 and &correctInRowCounter >= 10
end tasklist # this ends practise block after 10 trials correct in a row
fi
block training
set &practiseMode 1
message instructions1
task axcpt 50 # runs up to 50
block realdata
set &practiseMode 0
message instructions2
task axcpt 150
Download
If you have a PsyToolkit account, you can upload the zipfile directly to your PsyToolkit account. Watch a video on how to do that. If you want to upload the zipfile into your PsyToolkit account, make sure the file is not automatically uncompressed (some browsers, especially Mac Safari, by default uncompress zip files). Read here how to easily deal with this. |
Further reading
-
Rosvold, H. E., Mirsky, A. F., Sarason, I., Bransome Jr, E. D., & Beck, L. H. (1956). A continuous performance test of brain damage. Journal of consulting psychology, 20(5), 343. Link to journal (behind paywall)
-
Polizzotto, N. R., Hill-Jarrett, T., Walker, C., & Cho, R. Y. (2018). Normal development of context processing using the AXCPT paradigm. Plos one, 13(5), e0197812. Open access link