Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Credits:
script is based on the existing framework of the Inquisit OSPAN/SYMMSPAN tasks programmed by David Nitz.
Last Modified: January 02, 2026 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements the Rotation Span Task, a measure of spatial working memory, originally developed by Shah & Miyake (1996). The Inquisit implementation is based on the procedural description by Kane et al (2004) and uses a similar setup as the span tasks described by Conway et al (2005).
All responses in this script are collected as touch/mouse responses.
By default, the script is run with proportional stimuli sizing; however it can also be run with absolute stimulus sizing if needed. Go to section DEFAULTS for more info.
Kane MJ, Hambrick DZ, Tuholski SW, Wilhelm O, Payne TW, Engle RW (2004). The generality of working memory capacity: a latent-variable approach to verbal and visuospatial memory span and reasoning. J Exp Psychol Gen, 133(2):189-217. doi: 10.1037/0096-3445.133.2.189. PMID: 15149250.
Shah, P., & Miyake, A. (1996). The separability of working memory resources for spatial thinking and language processing: An individual differences approach. Journal of Experimental Psychology: General, 125, 4–27.
20 minutes
Participants are presented a visual sequences of arrows ranging from 2-5 arrows (default) that need to be recalled at the end.
Each arrow in the sequence is preceded by a rotated letter (F,G, or H) followed by the question "Is this a normal letter?" and participants have to decide whether the letter is a 'normal' letter or a mirrored version of one.
Arrow recall is tested by asking participants to selected arrows from a provided arrow matrix.
by setting parameters.debugMode = 1, the script runs in debug mode and presents the correct responses
Arrows: provided by Millisecond Software; can be replaced under Editable Stimuli
2 types of arrows: long and short (the short arrow shaft is about 50% of the long arrow shaft)
8 arrow rotations: 0,45,90,135,180,225,270,315
=> 16 arrow stimuli total
Rotation Letters: provided by Millisecond Software; can be replaced under Editable Stimuli
3 letters: F,G,R and their mirrored counterparts (Typeface: Arial)
8 rotation angles: 0,45,90,135,180,225,270,315
=> 48 letter stimuli total
see section Editable Instructions in script "rotationspan_instructions_inc.iqjs"
File Name: rotationspan_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 |
| rotationSpan | The RotationSpan score, uses the traditional "absolute ospan" scoring method (see Conway et al, 2005). It is the sum of all perfectly recalled sets. So, for example, if an individual recalled correctly 2 arrows in a set size of 2, 3 arrows in a set size of 3, and 3 arrows in a set size of 4, their RotationSpan score would be 5 (2 + 3 + 0). |
| rotationSpanPcu | Partial credit unit for the rotationSpan task number of correct recalled arrows (in any position) relative to all presented arrows |
| totalArrows | The total arrow count (across all sets) |
| totalCorrectArrowsAP | The total number of correct arrows recalled in any position (AP) |
| totalCorrectArrowsCP | The total number of correct arrows recalled in the correct position (CP) |
| totalRecalledSets | The number of correctly recalled sets |
| rotationTotalErrors | Counts number of any errors (speed or accuracy) made during rotation problems within the current block |
| rotationSpeedErrors | Counts the number of times participant ran out of time when solving the rotation problems within the current block |
| rotationAccErrors | Counts the number of times participant ran out of time when solving the rotation problems within the current block |
File Name: rotationspan_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. |
| response | The participant's response |
| correct | Accuracy of response: 1 = correct response; 0 = otherwise |
| latency | The response latency (in ms) |
| currentSetSize | The number of arrows to recall for the current problem |
| picture.arrow.currentItem | The currently presented arrow image |
| rotationProblemCount | Counts the number of rotation problems in a given block |
| picture.rotationProblem.currentItem | The currently presented rotation problem |
| corrRotationResp | The correct rotation answer |
| rotationAnswer | The rotation response given |
| rotationCorrect | 1 = correct rotation response 0 = incorrect rotation response |
| rotationAccuracy | Percentage of correctly solved rotation problems within the current block |
| rotationTotalErrors | Counts number of any errors (speed or accuracy) made during rotation problems within the current block |
| rotationAccErrors | Counts the number of incorrectly solved rotation problems within the current block |
| rotationSpeedErrors | Counts the number of times participant ran out of time when solving the rotation problems within the current block |
| rotationTimeout | Duration (in ms) after which the rotation problem disappears (for test block: calculated for each participant based on average performance during practice) |
| presentedArrows | The presented arrows in order |
| setArrowCount | The current arrow count (for this set) |
| totalArrows | The total arrow count (across all sets) |
| recalledArrows | The number of arrows recalled of the current problem/set |
| totalCorrectArrowsAP | The total number of correct arrows recalled in any position (AP) |
| totalCorrectArrowsCP | The total number of correct arrows recalled in the correct position (CP) |
| totalRecalledSets | The number of correctly recalled sets |
| rotationSpan | The RotationSpan score, uses the traditional "absolute ospan" scoring method (see Conway et al, 2005). It is the sum of all perfectly recalled sets. So, for example, if an individual recalled correctly 2 arrows in a set size of 2, 3 arrows in a set size of 3, and 3 arrows in a set size of 4, their RotationSpan score would be 5 (2 + 3 + 0). |
| rotationSpanPcu | Partial credit unit for the rotationSpan task number of correct recalled arrows (in any position) relative to all presented arrows |
| trialCount | Trial counter (updated under trial 'arrow_feedback') |
| recalledArrowsPerTrial | The number of recalled arrows for the current trial only (updated under trial 'arrow_feedback') |
| recalledArrowsAccPerTrial | Proportion correct recalled arrows for the current trial only (updated under trial 'arrow_feedback') |
| correctRotationPerTrial | The number of correctly categorized rotation problems for the current trial only (updated under trial 'arrow_feedback') |
| rotationAccPerTrial | Proportion correctly categorized rotation problems for the current trial only (updated under trial 'arrow_feedback') |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
Ui |
||
| inactiveScreenColor | The color of the screen not currently used by the script ('inactive') the color of the currently used screen portion ('active') is hardcoded to be 'white' | white |
Sizing Parameters |
||
| arrowSize | Proportional size (relative to canvas height) of the arrow images | 15% |
| letterSize | Proportional size (relative to canvas height) of the letter images check section Defaults if you wish to run the task with absolute sizing | 15% |
Timing Parameters |
||
| learningInterval | Duration (in ms) of the arrows | 1000 |
| startRotationTimeout | Start duration (in ms) of the rotation presentation trials the duration is adjusted for the test trials based on practice performance | 5000 |
| itiMS | Intertrial interval (in ms) btw. feedback and next rotation stimulus or next arrow | 500 |
Debugging |
||
| debugMode | 0 = testmode => no debug information is presented 1 = debugMode => debug information is presented on screen | 0 |