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
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.
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
the default set-up of the script takes approx. OCL-80: ~10 minutes OCL-48: ~7 minutes
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.
The Millisecond Implemention of the OCL goes as follows:
provided by Millisecond - can be edited under section 'Editable Stimuli'
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.
File Name: ms_onecardlearningtest_summary*.iqdat
| Name | Description |
|---|---|
| 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 |
File Name: ms_onecardlearningtest_raw*.iqdat
| Name | Description |
|---|---|
| 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 |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
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 items | white |
Sizing Parameters |
||
| cardSizePct | The height of the cards in canvas height percentage | 40% |