Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: January 27, 2020
Last Modified: January 10, 2025 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements a 'Progressive Ratio Button Press Task' to investigate approach-avoidance behavior towards different stimulus categories. The implemented template is based on the procedure described by Driscoll et (2018).
Disclaimer: the implemented procedure is Millisecond's best guess effort
Driscoll, R., Quinn de Launay, K. & Fenske, M.J. (2018). Less approach, more avoidance: Response inhibition has motivational consequences for sexual stimuli that reflect changes in affective value not a lingering global brake on behavior. Psychon Bull Rev (2018) 25:463–471 DOI 10.3758/s13423-017-1291-y
12 minutes
Participants view images of two different categories (here: images depicting a positive or a negative scene). The images are originally somewhat blurry. Participants get the option to press one button to 'see more' of the image (aka make them more clear) or press another button to 'see less' of the image (aka make them more blurry).
At the beginning of each round it will take few button presses to get to the extremes (aka 'fully clear' or 'fully obscured'). However, as time goes one more and more button presses will be needed to reach one of the extremes.
For example, if a participant has selected to see a fully clear picture of a 'positive' image, the next time the participant wants to see a fully clear view of a positive image DOUBLE the number of button presses are required. And so on and so on.
Any button press is acceptable and participants can always change their minds, but they will eventually have to reach one of the extremes to move on the next image.
In this script:
- 2 categories of images tested (here: positive vs. negative)
- 8 block/rounds (editable parameter) each presenting 12 images (6 positive, 6 negative)
Category1/Category2 Stimuli:
6 category1 images (positive images) and 6 category2 images (negative images)
are provided by Millisecond as example stimuli.
The images can be edited under section Editable stimuli. Additional images can be edited to
item.category1Images/item.category2Images. The script will automatically adapt to the
increased pool of stimuli.
Example: to run 8 blocks with 6 positive images each => 48 different positive images
would be required. Thus, if item.category1Images contains 48 images, each image would
only presented once.
Noise Filters:
This script provides 65 noise filters.
Noise Filter 33 is the starting noise filter that is superimposed over the target image at the start of each
trial sequence. There are 32 increasing noise filters to get to 65 (most blurry) and 32 decreasing noise filters
to get to 1 (no noise at all = completely transparent noise image).
32 noise filters in either direction are necessary for 6 trials per category
with a doubling ratio of key presses.
If more trials should be run, increase the number of noise filters accordingly and change parameters.numberTrials_perblock.
For example, for 7 trials per category, use 129 noise filters; for 8 trials per category use 257 noise filters etc.
(the scripts will automatically adapt the starting noise filter).
noise images: created in paint.net with added plugin
Millisecond attempted to evenly space the noise on a transparent background across 65 noise images.
Exchange filter images under section Editable Stimuli
provided by Millisecond - can be edited
in script "progressiveratio_driscoll_instructions_inc.iqjs"
File Name: progressiveratio_driscoll_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 |
Summary Data By Category: Here Explained For Category 1 (Positive Images) |
|
| category1CountAllClear | Counts the number of 'clear' presses ('see more') recorded for category1 images across the entire task (independent of final outcomes) |
| category1CountAllBlurry | Counts the number of 'blurry' presses ('see less') recorded for category1 images across the entire task (independent of final outcomes) |
| countFinalCategory1Clear | Counts the number of times a participant reached the 'most clear' stage for category1 images across the entire task |
| countFinalCategory1Blurry | Counts the number of times a participant reached the 'most blurry' stage for category1 images across the entire task |
| meanRTCategory1Blurry | Mean reaction time (in ms) of selecting the 'blurry' button for a category1 image across all 'blurry' selections |
| meanRTCategory1Clear | Mean reaction time (in ms) of selecting the 'clear' button for a category1 image across all 'clear' selections |
File Name: progressiveratio_driscoll_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 |
| 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. |
| round | Round/Block Count |
| trialCount | Trialcounter per round (counts the trialsequences) |
| category | 1 = category1 trial (here: positive scene) 2 = category2 trial (here: negative scene) |
| image | The presented image during this trial sequence |
| imageItemNumber | The itemnumber of the base image presented for the current category |
| noiseItemNumber | The itemumber of the noise filter presented over the base image during the current trial |
| response | The participant's response (scancode of response button) 46 = C (for clear -> see more of the image) 48 = B (for blurry -> see less of the image) |
| latency | The response latency (in ms); measured from: onset of trial |
| interpretedResponse | 1 = participant selected to see 'more' (aka more clear) of the category1 image 2 = participant selected to see 'less' (aka more blurry) of the category1 image 3 = participant selected to see 'more' (aka more clear) of the category2 image 4 = participant selected to see 'less' (aka more blurry) of the category2 image |
| finalResponse | The last response made for the current trial (the result) 1 = participant selected to see 'clearest' view of the category1 image 2 = participant selected to see 'the most blurry' view of the category1 image 3 = participant selected to see 'clearest' view of the category2 image 4 = participant selected to see 'the most blurry' view of the category2 image |
Category Information: Here Explained For Category 1 (Positive Images) |
|
| category1MinimumBlurry | The current/last recorded number of button presses required to see the most blurry view of a category1 image |
| category1MinimumClear | The current/last recorded number of button presses required to see the clearest view of a category1 image |
| category1CountClear | Counts the number of 'clear' presses ('see more') recorded for category1 images for the current trial sequence. Reset back to 0 for each new trial sequence. |
| category1CountBlurry | Counts the number of 'blurry' presses ('see less') recorded for category1 images for the current trial sequence. Reset back to 0 for each new trial sequence. |
| category1CountAllClear | Counts the number of 'clear' presses ('see more') recorded for category1 images across the entire task |
| category1CountAllBlurry | Counts the number of 'blurry' presses ('see less') recorded for category1 images across the entire task |
| itemNumberStepSizeBlurryCategory1 | The current/last recorded itemnumber stepsize with which category1 images get incrementally more blurry |
| itemNumberStepSizeClearCategory1 | The current/last recorded itemnumber stepsize with which category1 images get incrementally more clear |
| countFinalCategory1Clear | Counts the number of times a participant reached the 'most clear' stage for category1 images across the entire task |
| countFinalCategory1Blurry | Counts the number of times a participant reached the 'most blurry' stage for category1 images across the entire task |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
Design |
||
| blockNumber | The number of blocks ('rounds') to run each block will run 6 category1 and 6 category2 trials | 8 |
| numberTrialsPerBlock | The number of trials to run per block this number depends in large parts on the number of noise filters available Example: for 65 noise filters, there are 32 steps in either direction If a participant only chooses one category, the maximum steps are reached on trial 6. Thus, 6 trials per category (12 trials total) are used for 65 noise filters If 7 trials per category should be used (14 trials total), the number of noise filters need to be increased to 129. The script will automatically adjust the number of noise filters available. | 12 |
Sizing Parameters |
||
| imageSize | The proportional size of the images presented | 50% |
Timing Parameters |
||
| iti | The intertrial interval (in ms) btw. trial sequences the intertrial interval presents a blank screen | 500 |
Response Keys |
||
| leftKey | The left response key | "C" |
| rightKey | The right response key key C is left of key B on a QWERTY keyboard | "B:" |
| clearKey | The left response key is the 'CLEAR' response key | parameters.leftKey |
| blurryKey | The right response key is the 'BLURRY' response key | parameters.rightKey |