One Card Learning Test

Technical Manual

Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond

Created: January 18, 2022

Last Modified: January 10, 2025 by K. Borchert (katjab@millisecond.com), Millisecond

Script Copyright © Millisecond Software, LLC

Background

This script implements Millisecond's version of the One Card Learning Test (OCL), a test of visual memory using a pattern separation paradigm.

Millisecond's implementation is based on the description of the test published by White et al (2021). The Millisecond implementation can be set to run the OCL-80 or the shortened OCL-48 design (White et al, 2021).

The MS-OCL is designed to be run on touchscreens but adapts to mouse use on non-touch screens. Note the script runs with proportional sizing by default. Researchers can select to run the task with an absolute screen size to ensure that distances stay the same across devices. See section Defaults for more info.

References

White, J.P., Schembri, A., Edgar,C.J., Lim, Y.Y., Masters, C.L., & Maruff, P. (2021). A Paradox in Digital Memory Assessment: Increased Sensitivity With Reduced Difficulty. Frontiers in Digital Health, 3, 1-12. https://www.frontiersin.org/article/10.3389/fdgth.2021.780303

Duration

the default set-up of the script takes approx. OCL-80: ~10 minutes OCL-48: ~7 minutes

Description

Participants get presented with a deck of cards (consisting of the regular 4 suits - 13 cards per suit) and the cards will be turned over one by one. Some of the cards will appear only once but some may appear more often.

Participants are asked to decide for each card whether they have seen the card before or not. If they think they have seen the card before, they should press the 'Yes' response button. If they think the card is new, they should press the 'No' response button. If the incorrect response button is pressed it is highlighted in red and the card stays on screen until the correct response button is pressed.

Participants are instructed to respond as quickly and accurately as they can.

Once the correct response button is pressed, the button is highlighted in green and an animation is started that 'returns' the card back to the stack. The next trial is initiated once participants press a 'Home Button'. The 'Home Button' is implemented to ensure that response fingers are roughly equally distanced from both the no and yes button.

Researchers can select whether to run the task with an absolute screen size to ensure that home button-response button distances stay the same across devices. The default settings are optimized for an ipad touchscreen. Go to section Defaults for more information.

Procedure

The Millisecond Implemention of the OCL goes as follows:

1. Target/Lure/Foil Assignment: (See White Et Al, 2021, P.4)

•Targets
The script randomly picks one card from each of the four suits (clubs, diamonds, hearts, spades)
with the following constraint:
- each of the four targets must have a different value

•Lures
For each of the four targets, the script stores the same numerical value card of the remaining
three suits as lures.
Example: Target = ace of clubs => Lures: ace of diamonds, ace of hearts, ace of spades

•Foils
The remaining cards from the deck are assigned to be Foils.


2. Intro:
a self-paced short introduction block that can be repeated as often as needed
The demo card used for the instructions is not used for the actual game

3. Test Block:
OCL-80: 80 trials (32 Target trials, 12 Lure trials, 36 Foil trials; ratio target:distractor = 2:3)
OCL-48: 48 trials (24 Target trials, 6 Lure trials, 18 Foil trials; ratio target:distractor = 1:1)

The test block is divided internally into different rounds (each round presents the four targets once)
OCL-80: 8 Rounds => 10 trials per round: 4 Targets*, 6 distractors (either Foils or Lure** trials); order of trials within round randomly decided
OCL-48: 6 Rounds => 8 trials per round: 4 Targets*, 4 distractors (either Foils or Lure** trials); order of trials within round randomly decided


- *Targets: targets get introduced during the first round at which point they are indistinguishable from foils
(correct response is NO) => target repeats start with round2 (correct response for targets switches to YES)
-**Lures: the script only presents Lures if the corresponding Target has already been presented at least once,
thus valid Lures CAN be presented during round1.
For OCL-48, the selection of the 6 lures is randomly determined from the pool of 12.

Trial Sequence:
- iti-trial: participant is required to press the home button. Pressing the home button
starts the random intertrial interval (500-1500ms)
If the home button is not pressed within 2s, a reminder to press the home button is presented on screen
- card-trial: a new card is revealed; script waits until correct response is made
if incorrect response is made the card keeps sitting in the middle until correct response is made
Also: The correctly pressed button is 'rewarded' with a green frame; the incorrectly pressed button is marked by
a red frame.
- card-feedback: 1000ms -> card is 'turned over and returned to deck'
(if the home button is pressed during the animation feedback, the random intertrial interval is started
immediately after the animation)

Stimuli

provided by Millisecond - can be edited under section 'Editable Stimuli'

Instructions

provided by Millisecond - can be edited under section 'Editable Instructions'
The entire instructions are run by block.intro
You can can replace the instructions by creating your own block.intro or edit
the existing one.

Summary Data

File Name: ms_onecardlearningtest_summary*.iqdat

Data Fields

NameDescription
inquisit.version Inquisit version number
computer.platform Device platform: win | mac |ios | android
computer.touch 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities
computer.hasKeyboard 0 = no external keyboard detected; 1 = external keyboard detected
startDate Date the session was run
startTime Time the session was run
subjectId Participant ID
groupId Group number
sessionId Session number
elapsedTime Session duration in ms
completed 0 = Test was not completed
1 = Test was completed
canvasHeightMM The width of the play area in mm
canvasWidthMM The height of the play area in mm
distanceHomeButtonResponseButtonMM The calculated distance (in mm) between center of homeButton and center of one of the response buttons
oclVersion The OCL version (OCL-80 or OCL-48) run by the script
numberTargetTrials The number of trials to present targets (across test block)
numberLureTrials The number of trials to present lures (across test block)
numberFoilTrials The number of trials to present foils (across test block)
numberDistractors The number of distractor trials (lures + foils) (across test block)
target1 Stores the filename of target1 (club target)
target2 Stores the filename of target2 (diamond target)
target3 Stores the filename of target3 (hearts target)
target4 Stores the filename of target4 (spade target)
Measures
propCorrect Proportion correct responses across all test trials
meanRT Mean correct response time (in ms) across all test trials
propCorrectAllTargets Proportion correct responses across all trials that present the target cards
for the first four target presentations, the response is 'no'.
For the remaining presentations, the correct response is 'yes'
propCorrectActiveTargets Proportion correct responses across all trials that present active targets
(active = previously seen at least once; starting from round2)
propCorrectLures Proportion correct responses across all lure trials
propCorrectFoils Proportion correct responses across all foil trials

Raw Data

File Name: ms_onecardlearningtest_raw*.iqdat

Data Fields

NameDescription
build Inquisit version number
computer.platform Device platform: win | mac |ios | android
computer.touch 0 = device has no touchscreen capabilities; 1 = device has touchscreen capabilities
computer.hasKeyboard 0 = no external keyboard detected; 1 = external keyboard detected
date Date the session was run
time Time the session was run
subject Participant ID
group Group number
session Session number
canvasHeightMM The width of the play area in mm
canvasWidthMM The height of the play area in mm
distanceHomeButtonResponseButtonMM The calculated distance (in mm) between center of homeButton and center of one of the response buttons
oclVersion The OCL version (OCL-80 or OCL-48) run by the script
numberTargetTrials The number of trials to present targets across test block
numberLureTrials The number of trials to present lures across test block
numberFoilTrials The number of trials to present foils across test block
numberDistractors The number of distractor trials (lures + foils) across test block
numberTargetsPerRound The number of target trials per round
numberDistractorsPerRound: the number of distractor trials per round
numberRounds The number of rounds per test block
blockcode The name the current block (built-in Inquisit variable)
blocknum The number of the current block (built-in Inquisit variable)
trialcode The name of the currently recorded trial (built-in Inquisit variable)
trialnum The number of the currently recorded trial (built-in Inquisit variable)
trialnum is a built-in Inquisit variable; it counts all trials run
even those that do not store data to the data file.
target1 Stores the filename of target1 (club target)
target2 Stores the filename of target2 (diamond target)
target3 Stores the filename of target3 (hearts target)
target4 Stores the filename of target4 (spade target)
iti The randomly selected intertrial interval (in ms) of the current trial
iti is added after participant presses the home button to start next trial
roundCounter The round counter
trialCounter The trial counter across the entire test (does not reset per round)
countTargets Counts the number of targets run so far
countLures Counts the number of lures run so far
countFoils Counts the number of foils run so far
trialType 1 = target trial
2 = lure trial
3 = foil trial
(trial type is selected randomly with constraint that active lure stimuli can be selected)
cardType "new target" (for round1), "target", "lure", "foil"
cardItemNumber The itemnumber of the currently presented card
card The filename of the currently presented card
corrRsp The correct response for the current card ("yes" or "no")
targets in round1 ('new target') have the correct response of 'no'.
Starting with round2 the correct response for targets is 'yes'.
For any other card, the correct response is always 'no'
firstResponse The first response button pressed in a trial (determines accuracy)
Built-In Dvs
response The response of participant (button pressed)
By design, this script will store the FINAL (corrected) response
correct Correctness of response (1 = correct, 0 = error)
By design, 'correct' refers to the FIRST response made (see values.firstResponse)
latency Response latency (in ms); measured from: onset of card (NOT from last response)
until FINAL (corrected) response

Parameters

The procedure can be adjusted by setting the following parameters.

NameDescriptionDefault
Design Parameters
oclVersion Choose from: "OCL-80" (runs as default) or "OCL-48"
OCL-80: runs 32 target trials (28 'real' targets + 4 new targets), 12 lure trials, 36 foil trials
OCL-48: runs 24 target trials (20 'real' targets + 4 new targets), 6 lure trials, 18 foil trials
"OCL-80"
Timing Parameters
minITIMs Iti is randomly determined, the minimum value is 'minITIMS'500
maxITIMs And the max iti is 'maxITI-ms' (both in ms) - defaults: 500-1500ms
in this script: the ITI is added AFTER the home button is pressed
to receive a new card
1500
Color Parameter
canvasColor Display color of the actively used portion of the screen (the 'canvas')
if set to a color other than the screenColor, you can distinguish the active canvas
from the inactive portion of the screen
black
screenColor Color of the screen not used by the canvas ('inactive screen')black
defaultTextColor Default color of text itemswhite
Sizing Parameters
cardSizePct The height of the cards in canvas height percentage 40%