Dot Memory Task

Technical Manual

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

Created: January 11, 2022

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

Script Copyright © Millisecond Software, LLC

Background

This script implements Millisecond's version of the Dot Memory Task (Sliwinski et al, 2018), a brief visual spatial memory test used to assess working memory.

The task is intended for touchscreens such as ipads but can also be run with the mouse on non-touchscreens.

References

Sliwinski MJ, Mogle JA, Hyun J, Munoz E, Smyth JM, Lipton RB. (2018). Reliability and Validity of Ambulatory Cognitive Assessments. Assessment. 2018 Jan;25(1):14-30. doi: 10.1177/1073191116643164.

Siedlecki KL. (2007). Investigating the structure and age invariance of episodic memory across the adult lifespan. Psychology and Aging, 22(2):251–268. https://doi.org/10.1037/0882-7974.22.2.251

Duration

2 minutes

Description

The Dot Memory Task consists of 3 phases:

(1) Encoding Phase: Presents a 5x5 matrix with 3 dots for 3s. Participants are asked to remember the dot location for a later memory test .

(2) Distractor Phase: Presents several rows of letters E and F for 8s. Participants are asked to find all the hidden Fs by clicking on them.

(3) Retrieval Phase: Presents an empty 5x5 matrix. Participants are asked to click on dot positions of the three dots.

The default script runs 2 trials (see Sliwinski et al, 2018).

Procedure

(1) Instructions with Demo Trial: The computer provides an automated demo through the three
stages of the task. The intro can be repeated as often as needed.

(2) Test: runs 2 trial sequences (editable parameter)
with fixed dot positions (by default - see parameters.runFixedDotPositions for more info)

•Encoding Phase*
Script presents a 5x5 matrix with 3 dots for 3000ms (editable parameter).

•Distractor Phase*
The Distractor Phase starts immediately after the the Encoding Phase.
Script presents a 5x8 matrix filled with 'E's and 'F' (number of Fs can be controlled
via editable parameters) and participants are asked to select all 'F's.
Selected letters get highlighted. Letters can be unselected by pressing a highlighted letter
(=> corrections possible). The distractor task lasts for 8s.

•Retrieval Phase/Recall*
The Retrieval Phase starts immediately after the Distractor Phase.
Script provides an empty 5x5 matrix and asks participants to select the matrix positions of the 3 dots
Any time participants touches an empty box, a dot is placed. Once 3 dots are placed, no further dots
are added. Dots can be erased by touching a previously placed dot (=> corrections possible).
The recall trial ends when participants select 'done'.
Done button is activated right from the start (participants place 0 to 3 dots).
The screen goes blank for 1000ms (iti, editable parameter) before the next trial is started.


Dependent Variable Calculation
The main Dependent variable is the 'RecallError Score' that is based on distance measures from
placed dots to the target dots.

The Inquisit script uses the following algorithm to calculate the distances (see expressions.recallErrorScorePX
for actual code):

(1) the script collects all 9 possible distances
=> Euklidean Distances from Target1, 2, 3 to placed dot 1, 2, 3 are calculated (in pixels);
the maximum possible error distance is substituted for missing dots.

(2) the smallest of these distances is interpreted as the first target dot-placed dot pair (values.min1)
=> distances from this target dot/this placed dot are not further taken into consideration

(3) the next smallest of these distances is interpreted as the second target dot-placed dot pair (values.min2)
=> distances from this target dot/this placed dot are not further taken into consideration

(4) the remaining distance is interpreted as the last match between the last target dot-placed dot pair (values.min3)

(5) The minimum distances (in pixels) are summed up and set relative to the pixel distance btw. 2 adjacent matrix boxes
=> monitor-independent score with the unit 'box height'

Stimuli

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

Instructions

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

Scoring

Recallerrorscore:
The script matches each placed dot with a target dot using pixel Euklidean distance measures.
The distances btw. matched dots are summed up to present the recall Error Score.
Higher scores indicating less accurate placement and poorer performance
for perfectly placed dots, the score = 0.

Summary Data

File Name: dotMemoryTask_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
Recall Task
adjacentBoxDistancePX For debug purposes and manual calculations: stores the horizontal/vertical distance in pixels of
the center of two adjacent boxes on the current monitor
=> used to calculate the relative Euklidean differences btw. target dots and placed dots
meanRecallErrorScorePX Mean Euklidean Distance Recall Error Score (in pixels - monitor dependent)
meanRecallErrorScore Mean Euklidean Distance Recall Error Score in px set relative to to the pixel distance between the center of two
adjacent boxes in the 5x5 matrix (see expressions.adjacentBoxDistancePX) (monitor independent)
=> main DV
=> Higher scores indicating less accurate placement and poorer performance
meanRecallRT Mean recall response time (in ms); measured from onset of matrix until Done button was pressed
Distractor Task
meanPropAdjustCorrectDistractors The mean of the adjusted proportions of selecting 'F's
( the individual correct proportions are adjusted by subtracting the number of incorrect
selections from the correct one before setting the difference relative to the number of hidden 'F')

Raw Data

File Name: dotMemoryTask_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
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.
response The response of participant
by default, the dot placement procedure does not generate its own line of data.
The final placements are stored by trial.dotRecallEnd.
Similarly the distractor task procedure only records one line of data at the end of
the distractor task during trial.distractorEnd
correct Correctness of response (1 = correct, 0 = error)
trial.dotRecallEnd: 1 = all three dots were correctly placed; 0 = otherwise
trial.distractorEnd: 1 = all 'F' were correctly placed; 0 = otherwise
latency Response latency (in ms)
Dot Recall Task: 5 X 5 Matrix (Numbering From Left To Right, Top To Bottom)
dot1 Stores the box location (1-25) for the first target dot
dot2 Stores the box location (1-25) for the second target dot
dot3 Stores the box location (1-25) for the third target dot
dotRecallRT The time (in ms) it took to make dot placements during the recall trial (measured from onset of matrix until done button is pressed)
dotRecallAcc 1 = all three dots were correctly placed; 0 = otherwise
countCorrectDots The number of correctly placed dots
targetDotPositions A string variable that contains the positions of the target dots
placedDotPositions A string variable that contains the positions of the placed recall dots
lastDot1 Stores the box number of the currently placed dot1
lastDot2 Stores the box number of the currently placed dot2
lastDot3 Stores the box number of the currently placed dot3
Error Score
dist11,dist12,dist13 Distances (in px) from target dot1 to placed dot1, placed dot2, placed dot3
dist21,dist22,dist23 Distances (in px) from target dot2 to placed dot1, placed dot2, placed dot3
dist31,dist32,dist33 Distances (in px) from target dot3 to placed dot1, placed dot2, placed dot3
min1 The first minimum distance (matches the first target dot with a placed dot -> these dots are then removed from the selection for the next minimum distance)
min2 The second minimum distance (matches the first target dot with a placed dot -> these dots are then removed from the selection for the next minimum distance)
min3 The third minimum distance (at this point, only one distance is left)
recallErrorScorePX The sum of all three minimum placed dot-target dot distances in pixels (monitor dependent)
recallErrorScore The recallErrorScorePX set relative to the pixel distance between the center of two
adjacent boxes in the 5x5 matrix (see expressions.adjacentBoxDistancePX) (monitor independent)
Example: recallErrorScorePX = 489px (monitor dependent)
adjacentBoxDistancePX = 346px (monitor dependent)
recallErrorScore = 489px/346px = 1.41 => monitor independent => the dot was placed 1.41 boxes away from the target dot
adjacentBoxDistancePX For debug purposes and manual calculations: stores the horizontal/vertical distance in pixels of
the center of two adjacent boxes on the current monitor
=> used to calculate the relative Euklidean differences btw. target dots and placed dots
Distractor Task: 5 X 8 Matrix (Numbering From Left To Right, Top To Bottom)
numberF The number of selected F's
targetDistractorPositions Distractor task variable: stores the box positions (1-40) of all presented 'F'
selectedDistractors Distractor task variable: stores the box positions (1-40) of all selected 'F'
countSelectedDistractors Count the number of selected distractors
countCorrectDistractors Count the number of correctly selected 'F'
adjustPropCorrectDistractors: adjusted proportion of correctly selected 'F'
= [(number of correctly selected 'F's) - (number of selected 'E's)]/number of hidden Fs
=> correct proportions are adjusted by subtracting the number of incorrect
selections from the correct one before setting the difference relative to the number of hidden 'F'

Parameters

The procedure can be adjusted by setting the following parameters.

NameDescriptionDefault
Recall Task
runFixedDotPositions True = the script runs fixed dot positions (see below for list.fixedDotPositions)
With fixed dot placements, you have complete control over the selected positions
of the dots and can, e.g., eliminate boxes sitting in the same row,column or diagonal
the default setup only provides dot positions for 2 trials; for more trials
edit list.fixedDotPositions below
false = the script runs randomly determined dot positions for each trial
true
numberOfTrials Number of trial sequences (encoding, distractor, retrieval) to run2
Distractor Task
minNumberF Sets the minimum number of F's that should be hidden (Range: 0-40)8
maxNumberF Sets the maximum number of F's that should be hidden (Range: Min-40)
if both numbers are the same, the number of 'F' stays constant
across trials
8
Timing Parameters
dotPresentationDurationMS The duration (in ms) of the dot matrix before the distractor task3000
distractorTaskDurationMS The duration (in ms) of the distractor task8000
itiMS The intertrial interval (in ms) in between trial sequences1000