Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: January 11, 2019
Last Modified: January 06, 2024 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements a version of the Rapid Reaching Task for children - a task to study children’s risk-taking in everyday visuomotor situations when wrong choices could be costly - inspired by the published paradigm by Dekker et al (2016).
The script was originally written for and generously shared with the Millisecond library by Dr. Sara Haas.
Dekker TM, Nardini M. Risky visuomotor choices during rapid reaching in childhood. Dev Sci. 2016;19(3):427–439. doi:10.1111/desc.12322
25 minutes
Participants click/touch a Start button that lies below a fixed frame. Soon after touching down on the Start button two overlapping circles, a green circle and a (e.g.) blue circle, appear in the frame. Participants have to release the Start button and click/touch the area within the green circle as fast as they can without landing in the area of the penalty area (e.g. the blue circle). Different costs for touching the penalty circle as well as outside the green circle are tested.
(1) Demo Phase: 20 trials
=> The Demo Phase runs 20 trials with no time limits and additional text reminders on screen
=> the penalty circle is gray (hitting the penalty circle does not result in negative feedback)
=> hitting the green circle results in a point (but the point does not count towards count of total points)
(2) Training Phase: 15 blocks of 20 trials each
=> the Training phase starts with a time limit of 1000s
=> at the end of each training block it is checked whether performance is better or at 90% correct
AND participant has not timed out during any of the trials. In this case, the timeout gets adjusted down:
- the first adjustment will delete 100ms
- any subsequent adjustments will delete 50ms
=> the penalty circle is gray (hitting the penalty circle does not result in negative feedback)
=> hitting the green circle results in a point (but the point does not count towards total points)
=> the last two training blocks are run with the final test timeout (by default - editable parameter)
(3) Test Phase: 10 blocks of 20 trials
a) low penalty blocks: 5 blocks (color of penalty circle is blue; penalty => 1 point deduction)
b) high penalty blocks: 5 blocks (color of penalty circle is yellow; penalty => 5 point deduction)
=> order of low/high penalty blocks is counterbalanced by assigned groupnumber
=> odd groupnumbers run: low penalty -> high penalty
=> even groupnumbers run: high penalty -> low penalty
No Response Penalty: a no response penalty results in deduction of 7 points and a delay of the next trial of 20s
Misses Penalty: clicking/touching anywhere else on the screen does not result in deduction or winning of points
General TrialSequence:
1. Start: fixation cross + Start Button
2. Display: as soon as the start button is pressed down, the fixation frame appears
=> 500ms later the target circle/penalty circle display is presented
(if participant lifts the mouse button/finger of the start button before the display appears or
within 100ms of display presentation, the trial sequence is aborted and a new one is started.
The trial sequence is further aborted if the mouse/finger is moved off the Start Button before the
target display appears.)
3. Response: participants are asked to touch/click on the green circle as fast as possible
within the current time limit
4. Response Feedback: the computer displays a turquoise X where the screen was clicked/touched
and presents the number of points won or lost during this trial
=> if only the green circle was pressed: + 1
=> if only the penalty circle was clicked: -1 or -5
=> if the overlap region was pressed: sum of reward/penalty points
5. TEST only: Reward Meter
A visual reward meter is presented
6. Time out Delay: this trial is only run if a participant did not respond in time and has to wait
20sec for the next trial sequence
Distance Target/Penalty Circle:
this script varies the distance btw. target and penalty circle (within-factor):
two different conditions are run
near: center of penalty circle is 1 radius away from center of target circle
far: center of penalty circle is 1.5 radius away from center of target circle
The order within a block is randomly determined with the constraint that an equal number of each
condition is run within each block
Location Target/Penalty Circle:
The computer randomly jitters the x and y positions of the target circle within 31.5mm (based
on default measurements) of the x and y center position of the fixation frame
(see expressions.maxTargetOffsetMM)
the default height of the fixation frame is 81mm
=> 40.4mm are available on the top and bottom of the center to display the target circle
=> target circle has a radius of 9mm (40.5 - 9 = 31.5mm)
=> the max. displacement for the target center is 31.5mm
1. penalty circle is always to the right or left of target circle
2. it is randomly determined whether the penalty circle is presented to the left or the right of the
target circle
provided by Millisecond (not original) - can be edited under section Editable Stimuli
provided by Millisecond (not original) - can be edited under section Editable Instructions
File Name: rapidreachingtask_child_summary*.iqdat
| Name | Description |
|---|---|
| inquisit.version | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| 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 |
| minScreenHeightMM | The minimum needed screen height in mm to run the task with the current default settings |
| screenHeightMM | The screen height of this device in mm |
| timeout | The time out (in ms) used during the test |
| propCorrect | Proportion correct test trials |
| meanRT | Mean response time (in ms) of touching the screen; measured from target onset |
| meanCorrRT | Mean response time (in ms) of touching the target area only; measured from target onset |
| meanTargetDistancePX | Mean distance btw. response coordinate and center of target (measured in screen pixels) |
| meanTargetDistanceMM | Mean distance btw. response coordinate and center of target (converted to mm) |
| timeoutCounter | The number of times participant did not respond in time during the test phase + summary data by training/low penalty blocks/high penalty blocks |
File Name: rapidreachingtask_child_raw*.iqdat
| Name | Description |
|---|---|
| build | Inquisit version number |
| computer.platform | Device platform: win | mac |ios | android |
| date | Date the session was run |
| time | Time the session was run |
| subject, group, session | With the current subject/groupnumber/sessionnumber |
| minScreenHeightMM | The minimum needed screen height in mm to run the task with the current default settings |
| screenHeightMM | The screen height of this device in mm |
| blockCode | Name of the current block |
| blockNum | Number of the current block |
| trialCode | Name of the current trial |
| trialNum | Number of the current trial |
| blockCounterPerPhase | Tracks the number of blocks run during the current phase |
| trialCounterBlock | Tracks the number of trials run during the current block |
| phase | "training" vs. "test" |
| timeout | The timeOut (in ms) for the current trial |
| penaltyDisplacementCondition | 1 = small displacement btw. target circle and penalty ('near') 2 = far displacement btw. target circle and penalty |
| penaltyPointsCondition | 1 = low penalty point condition; 2 = high penalty point condition |
| penaltyPoints | The currently assigned penalty points if participant touches penalty area |
| selectPenaltyStim | Stores the itemnumber of the stimulus used for the penalty circle in the current trial 1 = blue (low penalty condition); 2 = yellow (high penalty condition); 3 = gray (training) |
| response | The participant's response (will be generic such as mouse.lButtonDown; 0 = noResponse) |
| mouse.x | The horizontal screen coordinate of the response (not valid for no responses) |
| mouse.y | The vertical screen coordinate of the response (not valid for no responses) |
| responseRegion | Stores the response region target only (= within the green circle only) target-penalty overlap (= within the overlap of green circle and penalty circle) penalty only (=within the penalty circle only) miss (= somewhere else on the screen) NR = no response |
| correct | 1 = participant touched target area only 0 = any other response |
| targetOnsetScriptElapsedTime | Stores the script.elapsedTime at time of target appearance |
| startButtonLiftOffScriptElapsedTime | Stores the script.elapsedTime at time of start-button lift-off |
| responseTimeScriptElapsedTime | Stores the script.elapsedTime at time of touch response rtTargetOnset: the difference (in ms) in the script.elapsedTime of the response and target onset => time it took after target onset to respond by touching the screen |
| rtLiftOffStartButton: the difference (in ms) in the script.elapsedTime of the response and lift-off of the start button | => time it took after lifting figer off the start button to respond by touching the screen |
| redoCounter | Counts the number of times during the test that a trial sequence had to restart due to a premature lift-off the Start button or a lift-off within 100ms of target onset (considered a anticipatory response) |
| trialPoints | Stores the trial points earned (or lost) during the current trial |
| totalPoints | Stores the total points earned |
| timeoutCounter | Tracks the number of times a participant did not respond within the time limit within the current block (resets for each block) |
| xCenterPX | Horizontal x-coordinate in screen pixels |
| yCenterPX | Vertical y-coordinate in screen pixels |
| xTargetPX | Stores the horizontal position of the target in pixels |
| yTargetPX | Stores the vertical position of the target in pixels |
| xPenaltyPX | Stores the horizontal position of the penalty circle in pixels |
| yPenaltyPX | Stores the vertical position of the penalty circle in pixels |
| targetRadiusPX | The radius of the target (image)in screen pixels |
| responseDistanceTargetPX | The calculated distance (in pixels) btw. mouse/touch response and center of target circle |
| responseDistancePenaltyPX | The calculated distance (in pixels) btw. mouse/touch response and center of penalty circle |
| responseDistanceTargetMM | The mm-distance of mouse response and center of target circle |
| responseDistancePenaltyMM | The mm-distance of mouse response and center of penalty circle |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
| distanceScreenCenterToFrameCenterMM | The distance (in mm) of the fixation frame center to the center of the screen the center of the frame will always be at (default) or above the center of the screen | 0mm |
| fixationCrossHeightMM | The height of the fixation cross in mm | 10mm |
| fixationFrameWidthMM | The width of the fixation frame in mm | 115mm |
| fixationFrameHeightMM | The height of the fixation frame in mm | 81mm |
| fixationFrameBorderMM | The width of the fixation frame border in mm | 5mm |
| targetRadiusMM | The radius of target circle in mm | 9mm => diameter: 18mm |
| distanceFrameCenterToStartButtonMM | The distance (in mm) of the center of the start button to the center of the fixation frame (default: 70mm) the start button will always be located at or below the center of the fixation frame | |
| startButtonSizeMM | The size of the square Start button in mm Experimental Design Parameters | 15mm |
| penaltyDisplacementFactor1 | The 'close' displacement btw. target center and penalty circle center as a factor of the circle radius (default: 1) => center of penalty circle lies on target radius | |
| penaltyDisplacementFactor2 | The 'far' displacement btw. target center and penalty circle center as a factor of the circle radius (default: 1.5) => center of penalty circle lies outside the target radius | |
| targetPoints | The number of points awarded for pressing the target circle | 1 |
| penaltyPointsLow | The number of points lost for pressing the penalty circle in the low penalty condition | 1 |
| penaltyPointsHigh | The number of points lost for pressing the penalty circle in the high penalty condition | 5 |
| missPenaltyPoints | The number of points lost for pressing outside the target and/or penalty circle = miss | 0 |
| timeoutPenaltyPoints | The number of points lost for not responding in time | 7 |
| timeoutDelayPenaltyMSTraining | The delay of the next trial after a timed-out response during training | 20s |
| timeoutDelayPenaltyMSLowpenalty | The delay of the next trial after a timed-out response during low penalty | 20s |
| timeoutDelayPenaltyMSHighpenalty | The delay of the next trial after a timed-out response during high penalty | 20s |
| trialsPerBlockDemo | Number of demo trials per block | 20 |
| trialsPerBlockTraining | Number of training trials per block | 20 |
| trialsPerBlockLowpenalty | Number of low penalty trials per block | 20 |
| trialsPerBlockHighpenalty | Number of high penalty trials per block | 20 |
| numberTimedTrainingBlocks | Number of timed training blocks | 15 |
| numberOfTrainingBlocksToRunWithTestTimeout | By default the last two training blocks are run with the final test timeout | |
| numberHighPenaltyBlocks | Number of high penalty blocks | 5 |
| numberLowPenaltyBlocks | Number of low penalty blocks | 5 |
| targetOnsetMS | The time (in ms) btw. pressing on start-button and onset of target | 500ms |
| anticipatoryResponseMS | The time (in ms) after onset of target that is considered the timeframe for an anticipatory response | 100ms |