Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: September 26, 2022
Last Modified: September 18, 2026 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements Millisecond's version of the 'Pinatatask' (Helfinstein et al, 2013), a child friendly monetary incentive delay task to induce anticipation of reward (and punishment) within a simple reaction time task.
The Inquisit implementation is based on the publicly available eprime script published at: https://osf.io/43hfq/ Disclaimer: While we try to stay as faithful as possible to the original eprime script, the Inquisit implementation of the Pinata Task may still differ from it.
Helfinstein SM, Kirwan ML, Benson BE, Hardin MG, Pine DS, Ernst M, Fox NA. Validation of a child-friendly version of the monetary incentive delay task. Soc Cogn Affect Neurosci. 2013 Aug;8(6):720-6. doi: 10.1093/scan/nss057. Epub 2012 May 7. PMID: 22569186; PMCID: PMC3739918.
Dennison MJ, Rosen ML, Sambrook KA, Jenness JL, Sheridan MA, McLaughlin KA. Differential Associations of Distinct Forms of Childhood Adversity With Neurobehavioral Measures of Reward Processing: A Developmental Pathway to Depression. Child Dev. 2019 Jan;90(1):e96-e113. doi: 10.1111/cdev.13011. Epub 2017 Dec 21. PMID: 29266223; PMCID: PMC6013316.
5 minutes
Participants are asked to whack a Pinata as fast as they can to 'open' it and win its content (here: a varying number of stars: 0,1,2, or 4). Before they can hit the Pinata, only half the Pinata is revealed to the participant to show how many stars they can win ('cue'). Once the entire Pinata is revealed, participants have to be very fast to press the spacebar to whack the pinata. If they succeed, they win the stars. If they don't succeed, no starts are won.
E-prime task as well as stimuli downloaded from:
https://osf.io/43hfq/
Instructions are based on the instructions provided by the original eprime script.
See script pinatatask_practice_instructions_inc.iqjs
File Name: pinatatask_practice_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 |
Parameter Settings |
|
| numberOfBlocks | The number of blocks to run |
| trialsPerBlock | The number of trials per block |
| totalTrials | The total number of trials to run based on parameters.trialsPerBlock x parameters.numberOfBlocks |
| numberStimuli | The number of different animal stimuli used for this experimental setup (10, 11, or 12) depends on number of trialsPerBlock (see section Editable Parameters for more info) |
| numberTrialTypes | The number of different trialtypes to run (= 4 levels * number of stimuli) either 40, 44, or 48 |
| balancedDesignTrialTypes | 1 = the chosen number of trialsPerBlock and numberOfBlocks results in a balanced design that runs each of the (40/44/48)trialtypes equally often 0 = the chosen number of trialsPerBlock and numberOfBlocks does not result in a balanced design in regard to trialtypes. The (40/44/48) trialtypes are not run equally often. |
| targetDuration | The duration (in ms) of the target used for practice trials practicePerformanceCategory: the practice performance category (based on practice hit rate) used to calibrate target duration during the test participants are grouped into practice performance groups 1-5 at the end of practice group5: practice hit rate > 79% group4: 54% < practice hit rate <= 79% group3: 29% < practice hit rate <= 54% group2: 4%< practice hit rate <= 29% group1: practice hit rate <= 4% (hit rates from eprime script) |
File Name: pinatatask_practice_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 |
Parameter Settings |
|
| numberOfBlocks | The number of blocks to run |
| trialsPerBlock | The number of trials per block |
| totalTrials | The total number of trials to run based on parameters.trialsPerBlock x parameters.numberOfBlocks |
| numberStimuli | The number of different animal stimuli used for this experimental setup (10, 11, or 12) depends on number of trialsPerBlock (see section Editable Parameters for more info) |
| numberTrialTypes | The number of different trialtypes to run (= 4 levels * number of stimuli) either 40, 44, or 48 |
| balancedDesignTrialTypes | 1 = the chosen number of trialsPerBlock and numberOfBlocks results in a balanced design that runs each of the (40/44/48)trialtypes equally often 0 = the chosen number of trialsPerBlock and numberOfBlocks does not result in a balanced design in regard to trialtypes. The (40/44/48) trialtypes are not run equally often. |
| targetDuration | The duration (in ms) of the target used for practice trials practicePerformanceCategory: the practice performance category (based on practice hit rate) used to calibrate target duration during the test participants are grouped into practice performance groups 1-5 at the end of practice group5: practice hit rate > 79% group4: 54% < practice hit rate <= 79% group3: 29% < practice hit rate <= 54% group2: 4%< practice hit rate <= 29% group1: practice hit rate <= 4% (hit rates from eprime script) |
| 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) the final/complete trial outcome variables are stored in trial.feedbackDelay |
| 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. |
| blockCounter | Tracks the number of blocks run |
| trialCounterPerBlock | Tracks the trial count per block |
| trialCounterTotal | Tracks the trial count across entire task |
| cueAnimal | The itemnumber of the current cue animal |
| level | The level (number of stars that can be won) of the current trial (0,1,2,4) |
| anticipatoryDelay | The duration (in ms) of the current anticipatory delay |
| itiDuration | The duration (in ms) of the current iti |
| image | The current target image presented |
Custom Dvs |
|
| responseCategory | the accurate responseCategory will only be known in trial.feedbackDelay if the responseCategory is empty during trial.pinata, a response can still be made during the feedbackdelay trial which is counted as a 'miss' - if no response is given at all, it's a 'no response' hit: spacebar was pressed during target duration miss: spacebar was pressed after target duration too early: spacebar was pressed during cue presentation OR anticipatory delay (before target was presented) no response: spacebar was not pressed at all |
| acc | 1 = spacebar was pressed during target duration; 0 = otherwise |
| targetDuration | The duration (in ms) of the target |
| rt | The response time (in ms) relative to target onset negative values: spacebar was pressed before target appeared |
| feedbackDelay | The duration (in ms) assigned to the feedback delay period based on previous responses |
| total | The total number of stars collected across experiment |
| starCounter | The total number of stars that could be collected across experiment |
Built-In Dvs |
|
| response | The response of participant (scancode of response button) |
| latency | Response latency (in ms); measured from: onset of trial |
| picture.target.stimulusOnset | The stimulusonset time (in ms) of the last target in trial.pinata |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
Design |
||
| trialsPerBlock | Choose from multiples of 10, 11, 12 (others result in the script choosing 12 by default) If multiple of 10 => the script uses animal itemnumbers 1-10 (and runs 10*4 = 40 different trialtypes) If multiple of 11 => the script uses animal itemnumber 1-11 (and runs 11*4 = 44 different trialtypes) If multiple of 12 => the script uses animal itemnumber 1-12 (and runs 12*4 = 48 different trialtypes) | 10 |
| numberOfBlocks | Choose a number of blocks that balances the number of trialtypes to run Example: trialsPerBlock = 22 (multiple of 11) => the numberOfBlocks need to be even to balance the 44 different trialtypes Example: trialsPerBlock = 33 (multiple of 11) => the number of Blocks need to be multiples of 4 to balance out the 44 different trialtypes Example: trialsPerBlock = 24 (multiple of 12) => the numberOfBlocks need to be even to balance the 48 different trialtypes Example: trialsPerBlock = 36 (multiple of 12) => the number of Blocks need to be multiples of 4 to balance out the 48 different trialtypes Bonus: if the total trial number ('numberOfBlocks * trialsPerBlock') can be evenly divided by 3, the 3 itis/3 anticipatory delay values will be balanced across all blocks | 4 |
| allowPracticeRepeats | True = practice can be repeated as often as indicated false = practice is run only once | true |
| startCapital | The start amount allocated to participant | 0 |
| penalizeIncorrectResponses | True = incorrect responses (no responses, anticipatory responses, misses) get penalized by subtracting the number of stars from the total false = incorrect responses do not get penalized by subtracting from the total | false |
Timing Parameters |
||
| getReadyDurationMS | The duration (in ms) of the get-ready-trial | 2000 |
| cueDurationMS | The duration (in ms) of the cue | 1500 |
| feedbackDurationMS | The duration (in ms) of the feedback animation | 1500 |
| combinedTargetDelayDurationMS | The combined duration (in ms) of the target and the feedback delay period | 1500 |
| iti1Duration | Intertrial interval 1 (in ms) | 1000 |
| iti2Duration | Intertrial interval 2 (in ms) | 1500 |
| iti3Duration | Intertrial interval 3 (in ms) the 3 iti values get randomly assigned to each trial in a block (script attempts to balance their frequency across the experiment) | 2000 |
| anticipatory1Duration | AnticipatoryDuration 1 (in ms) - anticipatory delay: time (in ms) between offset of cue and onset of target | 1000 |
| anticipatory2Duration | AnticipatoryDuration 2 (in ms) | 1500 |
| anticipatory3Duration | AnticipatoryDuration 3 (in ms) the 3 values get randomly assigned to each trial in a block (script attempts to balance their frequency across the experiment) | 2000 |
Target Settings |
||
| targetDurationMS | Sets a fixed target duration | 275 |
Sizing Parameters |
||
| fixationSize | Sizes the fixation cross relative to canvas height | 15% |
Performance Categories |
||
| group5MinPropCorrect | Group5: 0.79 < hit rate | 0.79 |
| group4MinPropCorrect | Group4: 0.54 < hit rate <= 0.79 | 0.54 |
| group3MinPropCorrect | Group3: 0.29 < hit rate <= 0.54 | 0.29 |
| group2MinPropCorrect | Group2: 0.04 < hit rate <= 0.29 by default: group1: hitrate <= 0.04 hit rates from eprime script | 0.04 |