Skip to content

End-of-block summary

Show participants their accuracy and average response time on a summary screen after a block of scored trials.

Use this when participants should see how they performed before moving on: performance summaries keep participants engaged in long sessions, and in practice phases they let people judge for themselves whether they have understood the task. Hard-coding a generic “block complete” page tells them nothing, and per-trial feedback is too granular when what matters is the block-level picture. If you want the numbers to gate what happens next rather than just be displayed, combine this with if and then branching instead of a plain summary page.

typetitlecontentstimFormatstim1keyboardkeybutton1
instructionsAnimal or object?Press A if the word names an animal, and L if it names an object.NEXT
testwordDOGa la
testwordCHAIRa ll
testwordHORSEa la
testwordSPOONa ll
testwordCATa la
testwordTABLEa ll
instructionsBlock completeYou answered %correct.perc[-5_0]%% of trials correctly, with an average response time of %RT.mean[-5_0]% ms.Continue

The six test rows are ordinary scored trials: keyboard collects a or l, key marks the right one, and each trial’s correctness and reaction time land in the running history that variables read. Every row in the block carries a key, which matters because an unscored trial leaves its correctness empty and would drop out of the accuracy figure.

The summary row renders as an instructions screen because its stimFormat is empty; title fills the heading area and content the text below it, and %variable% placeholders in both are substituted before display. %correct.perc[-5_0]% is the percentage of correct answers over the bracketed range and %RT.mean[-5_0]% the mean reaction time in milliseconds over the same range. The range does the real work: at the moment the summary is drawn, [0] is the most recent recorded response, the last test trial, and [-5] reaches back five more, so [-5_0] covers exactly the six-trial block. An aggregate without a bracket index is never filled in, so always write the range. The doubled per cent sign after the accuracy variable leaves a literal % on screen once the variable is substituted.

button1 set to Continue replaces the default NEXT label on the advance button. Because no responseWindow is set, every trial waits for a response, so the block always contributes exactly six reaction times; if you add a timeout, unanswered trials record timeout and count as incorrect wherever a key is set.

  • In a longer file with several blocks, address each block by absolute rows instead: %correct.perc[3_8]% in content covers trial-file rows 3 to 8, counted with the header as row 1.
  • Report a count rather than a percentage: %correct.count[-5_0]% in content gives the number correct, for text like “You got 5 of 6 right”.
  • Turn the summary into a gate by adding if of %correct.perc[-5_0]%<75 and a then destination on the last test row, sending weak performers to extra practice before they ever see the summary.
  • Emphasise the numbers with HTML in content, for example wrapping the accuracy figure in a coloured span; instructions screens render HTML but not Markdown.