Nasa Dragging Task

Technical Manual

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

Created: January 07, 2022

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

Script Copyright © Millisecond Software, LLC

Background

This script implements Millisecond's version of the NASA developed 'Dragging Task', which measures manual dexterity, or the speed of arm movements (Beard, 2020).

The NASA developed tasks can be downloaded as a free app from the Apple App Store.

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.

Disclaimer: the NASA ipad App data/implementation may differ from the one collected by the Inquisit script.

References

Bettina L. Beard (2020). The Cognition and Fine Motor Skills Test Batteries: Normative Data and Interdependencies Technical Memorandum (TM) 20205008023. https://ntrs.nasa.gov/citations/20205008023 Public Access

Duration

10 minutes

Description

For the dragging task participants are asked to repeatedly drag a white square back and forth or up and down from one end of the screen ('gray wall') to the opposite one ('blue wall'). Once the blue wall has been reached, the square needs to be briefly dropped, the walls change color and the square can be dragged bag. The white square can be dragged with a finger, stylus or the mouse (on non-touch devices)

Procedure

By default, this script runs 2 conditions (horizontal vs. vertical) with 1 repetition per condition:
The order of 2 conditions is selected at random.

Horizontal Orientation:
• 6 blocks of 16 trials per block (16 left-to-right and 16 right-to-left trials; one trial is a successful left and right movement)
• start direction: right-to-left
There is a short break inbetween each block

Vertical Orientation:
• 6 blocks of 16 trials per block (16 top-to-bottom and 16 bottom-to-top trials; one trial is a successful up and down movement)
=> start direction: bottom-to-top
There is a short break inbetween each block

By default, participants receive optional performance feedback at script conclusion.

Check section 'Editable Parameters' for parameters that control
- circle diameter conditions to run
- rotation (clockwise, counterclockwise) conditions to run
- block/trial/repetition numbers
- performance feedback settings
- automated task demo

You can easily customize the experimental design by changing them.

Task
Square needs to grabbed from the gray wall and dropped off within the blue wall otherwise
the wall doesn't change from blue to gray and the script still waits for a valid drop-off

-The script records the time it takes participants to grap the square and
how long the dragging movement takes
-script continuously logs the divergence from the optimal dragging line in px (pixel)
as well as all 'down' ('grab') and 'up' ('drop') responses made
- in the streaming data file, the responses (down-up) are recorded)

Stimuli

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

Instructions

provided by Millisecond - can be edited under section 'Editable Instructions'
The instructions are based on the ones published in Beard (2020, p.58 - Appendix D)

Scoring

Pxpermm
To convert pixel distances into absolute 'mm' units, use 'pxPerMM':
=> distance_inMM = distance_inPX / pxPerMM

Summary Data

File Name: draggingtask_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
draggingMechanism "finger" vs. "stylus" (parameter)
draggingHand "dominant" vs. "nondominant" vs. "left" vs. "right" (parameter)
canvasHeightMM The width of the active canvas in mm
canvasWidthMM The height of the active canvas in mm
squareHeightMM The size of the square in mm
distanceWallToWallMM The distance between left (top) and right (bottom) wall (from center of wall to center of wall) in mm
wallWidthMM The length of the short side of the wall in mm
wallHeightMM The length of the long side of the wall in mm
display.canvasHeight The height of the active canvas ('canvas') in pixels
display.canvasWidth The width of the active canvas ('canvas') in pixels
pxPerMM The conversion factor to convert pixel data into mm-results for the current monitor
( the higher resolution of the current monitor
the more pixels cover the same absolute screen distance)
This factor is needed if you want to convert pixel data into absolute mm data
Latency Performance (Based On Draggingrt Only)
medianRTLR Median time (in ms) it took participant to move from left to right (and drop off square in appropriate wall space)
meanRTLR Mean time (in ms) it took participant to move from left to right (and drop off square in appropriate wall space)
sdRTLR Standard deviation of mean time (in ms) it took participant to move from left to right (and drop off square in appropriate wall space)
medianRTRL Median time (in ms) it took participant to move from right to left (and drop off square in appropriate wall space)
meanRTRL Mean time (in ms) it took participant to move from right to left (and drop off square in appropriate wall space)
sdRTRL Standard deviation of mean time (in ms) it took participant to move from right to left (and drop off square in appropriate wall space)
medianRTH Median time (in ms) it took participant to move one side to the other in horizontal condition (and drop off square in appropriate wall space)
meanRTH Mean time (in ms) it took participant to move one side to the other in horizontal condition (and drop off square in appropriate wall space)
sdRTH Standard deviation of mean time (in ms) it took participant to move one side to the other (and drop off square in appropriate wall space)
medianRTTB Median time (in ms) it took participant to move from top to bottom (and drop off square in appropriate wall space)
meanRTTB Mean time (in ms) it took participant to move from top to bottom (and drop off square in appropriate wall space)
sdRTTB Standard deviation of mean time (in ms) it took participant to move from top to bottom (and drop off square in appropriate wall space)
medianRTBT Median time (in ms) it took participant to move from bottom to top (and drop off square in appropriate wall space)
meanRTBT Mean time (in ms) it took participant to move from bottom to top (and drop off square in appropriate wall space)
sdRTBT Standard deviation of mean time (in ms) it took participant to move from bottom to top (and drop off square in appropriate wall space)
medianRTV Median time (in ms) it took participant to move one side to the other in vertical condition (and drop off square in appropriate wall space)
meanRTV Mean time (in ms) it took participant to move one side to the other in vertical condition (and drop off square in appropriate wall space)
sdRTV Standard deviation of mean time (in ms) it took participant to move one side to the other (and drop off square in appropriate wall space)
Movement Performance (Divergence From Optimal Path In Pixels)
medianHOOptimalLineDivergenceDropoffPX Median pixel distance from drop-off coordinate to optimal y-line in HO condition
meanHOOptimalLineDivergenceDropoffPX Mean pixel distance from drop-off coordinate to optimal y-line in HO condition
sdHOOptimalLineDivergenceDropoffPX Standarddeviation of the pixel distance from drop-off coordinate to the optimal y-line in HO condition
medianHOOptimalLineDivergenceMeanPX Overall median distance (in canvas pixels) of the finger from the 'optimal' y-line (based on all trial means)
meanHOOptimalLineDivergenceMeanPX Overall mean distance (in canvas pixels) of the finger from the 'optimal' y-line (averaged across all trial means)
meanHOOptimalLineDivergenceSDPX The overall mean (in canvas pixels) of all the trial standarddeviations of the vertical distances
btw. the finger and the 'optimal' y-line
'optimal' in this sense means the y-coordinate of the square at
the start of the trial. Moving the square along this y-coordinate
is the shortest (thus fastest) way btw. the walls.
medianVOOptimalLineDivergenceDropoffPX Median pixel distance from drop-off coordinate to optimal x-line in VO condition
meanVOOptimalLineDivergenceDropoffPX Mean pixel distance from drop-off coordinate to optimal x-line in VO condition
sdVOOptimalLineDivergenceDropoffPX Standarddeviation of the pixel distance from drop-off coordinate to the optimal y-line in VO condition
medianVOOptimalLineDivergenceMeanPX Overall median distance (in canvas pixels) of the finger from the 'optimal' x-line (based on all trial means)
meanVOOptimalLineDivergenceMeanPX Overall mean distance (in canvas pixels) of the finger from the 'optimal' x-line (averaged across all trial means)
meanVOOptimalLineDivergenceSDPX The overall mean (in canvas pixels) of all the trial standarddeviations of the vertical distances
btw. the finger and the 'optimal' x-line
'optimal' in this sense means the x-coordinate of the square at
the start of the trial. Moving the square along this x-coordinate
is the shortest (thus fastest) way btw. the walls.
(3) Mouse Coordinates file: 'draggingtask_stream*.iqdat'
this data file stores data every ~17ms (=> records a line of data every ~17ms)
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
draggingMechanism "finger" vs. "stylus" (parameter)
draggingHand "dominant" vs. "nondominant" vs. "left" vs. "right" (parameter)
canvasHeightMM The width of the active canvas in mm
canvasWidthMM The height of the active canvas in mm
squareHeightMM The size of the square in mm
distanceWallToWallMM The distance between left (top) and right (bottom) wall (from center of wall to center of wall) in mm
wallWidthMM The length of the short side of the wall in mm
wallHeightMM The length of the long side of the wall in mm
display.canvasHeight The height of the active canvas ('canvas') in pixels
display.canvasWidth The width of the active canvas ('canvas') in pixels
pxPerMM The conversion factor to convert pixel data into mm-results for the current monitor
( the higher resolution of the current monitor
the more pixels cover the same absolute screen distance)
blockCode Name of the current block
blockNum Number of the current block
trialCode Name of the current trial
trialNum Number of the current trial
trialCounter Counts the number of trials in a block
one trial: one right to left AND left to right swipe (same for vertical movement)
startComputing 0 = the square has not been grabbed yet on the gray wall
1 = the square has been grabbed (though might still be on gray wall) and performance data should be collected from this point on
Response Performance Metrics
rsp 1 = a down or up response was made
0 = no down or up response was made
respStatus The data file will note 'down' and 'up' responses
down = participants moved the finger down to grab the square
up-miss = the square was dropped somewhere on the canvas (but not on the target wall)
up-partial-miss = the square was dropped partially on the target wall
up-corrected = the square was correctly dropped on the target wall after previously making an a (partially) missed drop
up = the square was correctly dropped on the target wall without any previous errors
respRTMS The response time for the current response
Example
first 'down' response: by definition this response time is 0 as measurements start with grabbing the square for the first time on the gray wall
all 'up' responses: RespRTMS will store the time it took from previously grabbing the square until dropping it at the current location
'down' (after error response): stores the time it took participant to grab the stimulus again after erroneously dropping it somewhere on the canvas
Ideally, participants' records show one 'down' response, followed by an 'up' response.
sumRespRTMS Sum of all RespRTMS in a block
Pathway Performance Metrics
mouse.x The current horizontal mousefinger coordinate
mouse.y The current vertical mousefinger coordinate
lastDown The critical down coordinate from the last down response
horizontal dragging: the critical down coordinate is the x-coordinate
vertical dragging: the critical down coordinate is the y-coordinate
dstPX Calculates distance travelled from last 'down' response to current 'up' response
horizontal dragging: the distance only takes into account horizontal coordinate changes
vertical dragging: the distance only takes into account vertical coordinate changes
Separate For Ho And Vo Condition
hoOptimallineYPX The optimal y-coordinate (= y-coordinate of the white square at start of each trial)
(= if participant does not diverge from this coordinate, they use the fastest way from A to B)
this optimal line depends on where the square is dropped off. In this script it is NOT
automatically the center line but is reset to the drop-off coordinates
hoOptimalLineDivergencePX The current divergence (in pixels) from the optimal y-coordinate (measured roughly every 16ms or so)

Raw Data

File Name: draggingtask_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
draggingMechanism "finger" vs. "stylus" (parameter)
draggingHand "dominant" vs. "nondominant" vs. "left" vs. "right" (parameter)
canvasHeightMM The width of the active canvas in mm
canvasWidthMM The height of the active canvas in mm
squareHeightMM The size of the square in mm
distanceWallToWallMM The distance between left (top) and right (bottom) wall (from center of wall to center of wall) in mm
wallWidthMM The length of the short side of the wall in mm
wallHeightMM The length of the long side of the wall in mm
display.canvasHeight The height of the active canvas ('canvas') in pixels
display.canvasWidth The width of the active canvas ('canvas') in pixels
pxPerMM The conversion factor to convert pixel data into mm-results for the current monitor
( the higher resolution of the current monitor
the more pixels cover the same absolute screen distance)
This factor is needed if you want to convert pixel data into absolute mm data
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.
conditionCounter Counts the number of conditions run
blockCounter Counts the number of blocks run in the current condition
draggingDirection "horizontal" vs. "vertical"
conditionRepetition Counts the number of times the current condition has run
trialCounter Counts the number of trials in a block
one trial: one right to left AND left to right swipe (same for vertical movement)
stimulusItem Presented stimuli
response The response of participant (the valid drop-off response area)
latency Response latency (in ms); measured from: onset of trial until the lift-off response
on the currently valid response area is registered.
if the drop-off happens not in the valid response area, the wall does NOT
change colors
rtMovementInitiation The time in ms from beginning of trial until the square was grabbed
rtDragTime The time in ms that the square was dragged until a valid drop was achieved
mouse.x The horizontal mousefinger coordinate at square drop-off (in valid drop-off)
mouse.y The vertical mousefinger coordinate at square drop-off (in valid drop-off)
Ho = Horizontal Orientation
hoOptimallineYPX The optimal y-coordinate in the Horizontal Orientation Condition (= y-coordinate of the white square at start of each trial)
(= if participant does not diverge from this coordinate, they use the fastest way from A to B)
this optimal line depends on where the square is dropped off. In this script it is NOT
automatically the center line but is reset to the drop-off coordinates
hoOptimalLineDivergenceDropoffonlyPX Calculates the absolute pixel difference btw.
(HOOptimallineYPX - mouse.y) at drop-off only
Vo = Vertical Orientation
voOptimallineXPX The optimal x-coordinate in the Vertical Orientation Condition (= x-coordinate of the white square at start of each trial)
(= if participant does not diverge from this coordinate, they use the fastest way from A to B)
voOptimalLineDivergenceDropoffonlyPX Calculates the absolute pixel difference btw. (VOOptimalline_xPX - mouse.x) at drop-off only
Additional Measures, Separately For Ho/Vo Conditions
medianHOOptimalLineDivergencePerTrialPX The median vertical distance (in canvas pixels) of the finger from the 'optimal' y-coordinate from pick-up to drop-off
meanHOOptimalLineDivergencePerTrialPX The mean vertical distance (in canvas pixels) of the finger from the 'optimal' y-coordinate from pick-up to drop-off
sdHOOptimalLineDivergencePerTrialPX The mean standard deviation of the vertical distance (in canvas pixels)
btw. the finger and 'optimal' y-coordinate from pick-up to drop-off
'optimal' in this sense means the y-coordinate of the square at
the start of the trial. Moving the square along this y-coordinate
is the shortest (thus fastest) way btw. the walls.

Parameters

The procedure can be adjusted by setting the following parameters.

NameDescriptionDefault
Design Parameters
draggingMechanism Choose from: "finger" vs. "stylus"
if "finger", the index finger is assumed
"finger"
draggingHand Choose from: "dominant", "non-dominant", "left", "right""dominant"
skipPerformanceFeedback True: participants won't receive any performance feedback at the end
false: participants will receive performance feedback at the end
false
runDemo True: the script runs an demonstration of the task
false: the script skips the demonstration (e.g. if task administrator wants to demonstrate themselves)
true
runHorizontalOrientation True = run the task in the Horizontal Orientation
false = do not run the task in the Horizontal Orientation
true
runVerticalOrientation True = run the task in the Vertical Orientation
false = do not run the task in the Vertical Orientation
true
numberOfBlocksPerCondition Number of blocks per orientation condition ; Beard (2020) report 12 blocks per condition6
trialsPerBlock One trial = one left and right movement 16
repetitionsPerCondition The number of repetitions for each condition
in this script: conditions repeat once they have all run
Example for a condition: 'horizontal orientation'
1
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
lightGray
screenColor Color of the screen not used by the canvas ('inactive screen')lightGray
defaultTextColor Default color of text itemsblack
Sizing Parameters
squareHeightPct The proportional size of the square to canvas HEIGHT10.5%
distanceWallTowallPct The proportional distance from one wall to the other wall relative to canvas HEIGHT86%
wallShortsidePct The length of the short side of the wall relative to canvas HEIGHT17%
wallLongsidePct The length of the long side of the wall relative to canvas HEIGHT93%