Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: January 25, 2017
Last Modified: August 03, 2026 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements the German UNRAVEL paradigm called WORTKLAU. The UNRAVEL/WORTKLAU task is a test of placekeeping ability: the ability to perform the steps of a complex task in a prescribed order without skipping or repeating steps.
Because the UNRAVEL paradigm relies entirely on an English mnemonic acronym to help participants memorize the order of the cognitive operations, researchers in other languages may have to completely redesign the acronym and the corresponding ruleset to fit their own language. The German WORTKLAU version was published by Radovic & Manzey (2019).
Each letter in the acronym WORTKLAU ('word-theft') stands for one of eight distinct categorization tasks that need to be performed in repeated sequences without external reminders of the target task at any one point - even after distractor tasks. Each of the tasks has designated response keys. The use of a particular response key is thus indicative of the task being performed.
This task requires the use of a keyboard. If the script cannot find a keyboard, an alert is given and the script is automatically terminated.
Note: the Inquisit WORTKLAU version uses the framework of the original UNRAVEL task (including the type of interruption tasks used by Altmann et al, 2014). The individual tasks, however, follow the logic of the Radovic & Manzey (2019) WORTKLAU task.
30 minutes
On each trial participants see a character (a digit or a letter) inside a box and another character (letter or digit) outside of it (above or below the box). The character inside the box is placed on the left side of the box. A black or white dot rests on the right side of the box. The outside character is presented above or below the dot.
One of the characters is a letter (default letters used: A, B, U, X) and the other a digit (default digits: 1, 2, 8, 9). One of the characters is colorful (red or blue), the other is black. The letter is either underlined or not. The dot is either black or white. The box is either framed by a continuous line or by a dotted line.
Participants are asked to work through 8 categorization tasks in sequence without prompts telling them which task to perfrom on any given trial other than the acronym 'WORTKLAU' as a sequence guide: 1 W: Dot is white or black? W (weiss/White) S (schwarz/black) 2 O: Letter is without or with line? O (ohne/without) M (mit/with) 3 R: Letter/number is red or blue? R (rot/red) B (blau/blue) 4 T: Letter/number is below or above the box? T (tiefer/below) H (hoeher/above) 5 K: Letter is consonant or vowel? K (Konsonant/consonant) V (Vokal/vowel) 6 L: Box consists of lines or dots? L (Linien/lines) P (Punkte/dots) 7 A: Letter is at the beginning or end of alphabet? A (Anfang/beginning) E (Ende/end) 8 U: Number is odd or even? U (ungerade/odd), G (gerade/even)
Because each task uses unique response keys, the choice of response key on any given trial indicates the type of task (and its place in the WORTKLAU sequence) performed. On average, every 6 trials a distractor task (interruption) is presented: twice participants are asked to enter a displayed code into a textbox. Only if the code is entered correctly, is the participant returned to the current place in the WORTKLAU trial sequence.
1. WORTKLAU trials:
each trial
- randomly (with replacement) samples whether the trial is a W(eiss) or a S(schwarz) trial (white or black dot)
- randomly (with replacement) samples whether the trial is a O(hne) or a M(it) trial (letter without or with line)
- randomly (with replacement) samples whether the trial is a R(ot) or a B(lau) trial (red or blue character)
- randomly (with replacement) samples whether the trial is a T(ief) or a H(och) trial (below or above box)
- randomly (with replacement) samples whether the trial is a K(onsonant) or a V(okal) trial (consonant or vowel)
- randomly (with replacement) samples whether the trial is a L(inie) or a P(unkt) trial (line or dot)
- randomly (with replacement) samples whether the trial is a A(nfang) or an E(nde) trial (start or end of alphabet)
- randomly (with replacement) samples whether the trial is a U(ngerade) or a G(erade) trial (odd digit or even one)
letter selection: based on the selected value for the A-task AND the selected value for the K-task, a specific letter is selected
(Example: the letter needs to be at the start of the alphabet and needs to be a consonant: B is selected)
digit selection: based on the selected value for the U-task:
(Example: the digit needs to be odd: 9 or 1 is selected)
Letter/Digit Location: the nature of the character inside the box is selected randomly (with replacement):
If the letter is selected to be inside the box, the digit is placed outside the box.
- the inside character in the german WORTKLAU task is always to the left of the box and the dot is placed to the right
- the outside character in the german WORTKLAU task is always to the right of the box (opposite the inside one)
Placement of Colored Character: it is randomly (with replacement) decided whether the colorful character is the inside
or the outside character.
!!! ALL random selections are done independently of each other
2. Interruption Code:
The code to enter is assembled based on a randomly sampled length of characters (default: always 4) and a random
assortment of characters (default: letters used in WORTKLAU) -> Example code: 'lura'
The length as well as the character selection can be manipulated under section Editable Lists:
list.lengthInterruptCode (stores the lengths) and list.interruptCode (stores the pool of possible characters)
- follow the original English UNRAVEL tutorial generously provided by Dr. Eric Altmann
with changes made for the respective German tasks
- can be edited under section Editable Instructions
File Name: unravel_summary*.iqdat
| Name | Description |
|---|---|
| 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 |
| 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 |
| completed | 0 = Test was not completed 1 = Test was completed |
| list.interruptions.mean | Mean number of trials before an interruption (across all testblocks) |
| acca1 | Proportion correct (response correct AND in sequence) of all WORTKLAU test trials in block 1 |
| acca2 | Proportion correct (response correct AND in sequence) of all WORTKLAU test trials in block 2 |
| acca3 | Proportion correct (response correct AND in sequence) of all WORTKLAU test trials in block 3 |
| acca4 | Proportion correct (response correct AND in sequence) of all WORTKLAU test trials in block 4 |
| pass | 0=failed accuracy check (default: less than 3 test blocks with WORTKLAU performance >= 0.7), 1=passed accuracy check |
| blkAcc | Number of ok (=blocks with WORTKLAU performance >= 0.7) test blocks |
| totalTrialCount | The number of all test WORTKLAU trials run |
| okTrials | Number of ok test trials (ok = trials from blocks with block performance >= 70% correct) |
| acc1 | Proportion correct (response correct AND in sequence) of ok WORTKLAU test trials in block 1 |
| acc2 | Proportion correct (response correct AND in sequence) of ok WORTKLAU test trials in block 2 |
| acc3 | Proportion correct (response correct AND in sequence) of ok WORTKLAU test trials in block 3 |
| acc4 | Proportion correct (response correct AND in sequence) of ok WORTKLAU test trials in block 4 |
| p1Acc | Number of ALL post-interruption WORTKLAU trials without sequence errors (regardless of task performance) ( trials where participant made a correct response (errorType = 0) or a nonsequence Error (errorType = 3)) |
| pracEr | Number of incorrect (but valid) keystrokes during practice (regardless of type of error) does not count using keys other than the response keys |
| invKey | Number of invalid keystrokes on All WORTKLAU test trials (neither trial response nor help) |
| introT | Time for introduction (tutorial + practice) (in seconds) |
| testT | Time for test blocks (in s) |
| totalT | Total time for session in s (IntroT + TestT) |
| serrA | Proportion of All WORTKLAU test trials with sequence errors |
| nErrA | Proportion of All WORTKLAU test trials with nonsequence errors |
| serr | Proportion of ok WORTKLAU trials with sequence errors (ok = trials from blocks with block performance >= 70% correct) |
| nerr | Proportion of ok WORTKLAU trials with nonsequence errors (ok = trials from blocks with block performance >= 70% correct) |
| pserr | Proportion of ok WORTKLAU post-interruption trials with sequence errors (ok = trials from blocks with block performance >= 70% correct) |
| bserr | Proportion of ok WORTKLAU baseline trials with sequence errors (ok = trials from blocks with block performance >= 70% correct) |
| rta | Mean correct latency (in ms) of All WORTKLAU test trials |
| rt | Mean correct latency (in ms) of ok WORTKLAU test trials |
| prt | Mean correct latency (in ms) of ok WORTKLAU post-interruption test trials |
| brt | Mean correct latency (in ms) of ok WORTKLAU baseline test trials |
| intLag | Mean lag time (in ms) between onset of interruption and input of first char ( if interruption trial repeats due to errors, only the lag from the first interruption trial is measured) |
| helps | Number of (ok) test trials on which the rule list was displayed at least once |
| helpP | Proportion of correct ok test trials on which the rule list was displayed at least once |
| intErr | Mean number of entered passcodes that contained some error (in ok blocks, across code1/code2 trials) => interpreted as: mean number of entered passcodes PER INTERRUPTION that contained some error (in ok blocks) |
| intErrCount1 | Mean number of entered passcodes that contained some error (in ok blocks, code1 trials only) => interpreted as: mean number of entered passcodes PER INTERRUPTION that contained some error (in ok blocks) |
| intErrCount2 | Mean number of entered passcodes that contained some error (in ok blocks, code2 trials only) => interpreted as: mean number of entered passcodes PER INTERRUPTION that contained some error (in ok blocks) |
| intDur | Mean interruption duration (seconds) (in ok blocks) |
Per Block Performance (Block 2-4; Explained Only For Block 1) |
|
| ok1 | 1 = block performance >= 70%correct; 0 = otherwise |
| trials1 | Number of test trials block1 |
| serr1 | Proportion of WORTKLAU trials with sequence errors in block1 |
| nerr1 | Proportion of WORTKLAU trials with nonsequence errors in block1 |
| pserr1 | Proportion of WORTKLAU post-interruption trials with sequence errors in block1 |
| bserr1 | Proportion of WORTKLAU baseline trials with sequence errors in block1 |
| rt1 | Mean correct latencies of WORTKLAU test trials in block1 |
| prt1 | Mean correct latencies of WORTKLAU post-interruption test trials in block1 |
| brt1 | Mean correct latencies of WORTKLAU baseline test trials in block1 |
| intLag1 | Mean time (in ms) between interruption onset and first passcode key in block1 |
| helps1 | Number of WORTKLAU test trials on which the rule list was displayed at least once in block1 |
| helpP1 | Proportion of correct ok WORTKLAU test trials on which the rule list was displayed at least once in block1 |
Interruption Errors: Mean Number Of Entered Passcodes That Contained Some Error Interpreted As: Mean Number Of Entered Passcodes Per Interruption That Contained Some Error In Block1 |
|
| IntErr1 | Collects errors across code1/code2 |
| IntErr1_1 | Collects errors for code1 |
| IntErr1_2 | Collects errors for code2 |
Duration |
|
| intDur1 | Mean interruption duration (seconds) in block1 |
File Name: unravel_raw*.iqdat
| Name | Description |
|---|---|
| date | Date the session was run |
| time | Time the session was run |
| subject | Participant ID |
| group | Group number |
| session | Session number |
| 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 |
| 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. |
| testBlockCount | Counts the number of WORTKLAU test blocks run |
| trialCount | Counts the WORTKLAU trials in each block (demo, practice, testblocks) during practice and test, the same WORTKLAU trial can be called several times due to errors made (practice) or help menu calls (test). The actual trialCount is only updated for each new trial. Only WORTKLAU test trials with testTrialCode < 3 (baseline and post-interruption trials) are considered for summary data. |
| testTrialCode | 1 = baseline WORTKLAU test trial (WORTKLAU trials that follows a WORTKLAU trial OR is the first trial in a block) 2 = post-interruption WORTKLAU test trial (after code-interruption) 3 = 'invalid' WORTKLAU test trial (no WORTKLAU response: participant pressed Tab-key to see RULES) 4 = code-interruption during testing "" (empty) for demo trials and practice trials |
Stimulus Make-Up Variables |
|
| w | 1 = dot is white (weiss); 2 = dot is black |
| o | 1 = letter is not underlined (ohne); 2 = letter is underlined |
| r | 1 = character is red (rot); 2 = character is blue |
| t | 1 = character is below the box (tief); 2 = character is above the box |
| k | 1 = letter is a consonant (konsonant); 2 = letter is a vowel |
| l | 1 = line around box (linie); 2 = punkte |
| a | 1 = letter is at start of alphabet (anfang); 2 = end |
| u | 1 = digit is odd (ungerade); 2 = digit is even |
| letter | Stores the sampled letter for the current trial (letter needs to be in accordance with K and A) |
| digit | Stores the sampled digit for the current trial (digit needs to be in accordance with U) |
| inside | Stores the actual character (letter or digit) that is selected to be presented inside the box |
| outside | Stores the actual character (letter or digit) that is selected to be presented outside the box |
| locationColorChar | 1 = colored character is inside character 2 = colored character is outside character |
| outsideY | Stores the y-coordinate of the outside character (needs to be in accordance with T) |
| descInsideChar | Stores a description of the inside characters (Example: letter:X,blue,withLine| dot:white) |
| descOutsideChar | Stores a description of the outside character (Example: digit:9,black,below) |
Interruption-Related Variables |
|
| code | The code of the current Interruption Trial |
| interruption | 1 = an interruption should be run after this WORTKLAU trial; 0 = no interruption will be run |
| counterUninterruptedTrials | Counts the number of consecutive trials run without an interruption |
| uninterruptedTrials | Stores the current number of trials that should be run in between interruptions |
| countBlockInterruptions | Counts the number of interruptions run in a block DV-Variables |
| response | The participant's response: scancode of response button (or entered code for interruption trials) |
| responseKeyLabel | The interpreted key response (Example: 22 = U) |
| latency | The response latency (in ms) WORTKLAU Trials: measured from onset of trial until response key is hit Interruption Trials: measured from onset of trial until the Return button is hit |
| correct | The correctness of the response (1 = correct (no sequence error and no nonsequence error); 0 = otherwise) |
| performedTaskAcc | 1 = currently performed task is performed correctly (regardless of sequence) 0 = otherwise |
| blockAcc | Proportion of trials in a block where response was correct AND in sequence (per block) |
| lastTask | Stores the preceding task that participant performed (W, O, R, T, K, L, A, U) |
| expectedTask | The expected task based on the last Task performed (W, O, R, T, K, L, A, U) |
| currentTask | Stores the currently performed task (W, O, R, T, K, L, A, U) based on response key used |
| wrongTask | 1 = the currently performed task is out of sequence with the preceding task (regardless of accuracy) 0 = otherwise |
| errorType | 0 = correct response (sequence correct & task performance correct) 1 = sequence Error (correct): wrong task (out of sequence) was performed BUT the task was performed correctly 2 = sequence Error (incorrect): wrong task was performed AND it was performed incorrectly 3 = insequence Error: in sequence task was performed BUT the task was performed incorrectly |
| sequenceError | 1 = sequence Error; -> errorType = 1 and 2 0 = otherwise |
| nonSequenceError | 1 = nonsequence Error; -> errorType = 3 0 = otherwise |
| performedTaskSequence | Stores the performed tasks in sequence (per block) |
| intLag | Time (in ms) between interruption onset and first passcode key |
| showRule | 0 = WORTKLAU test trial without a rule call 1 = WORTKLAU test trial with at least one rule call |
| invKey | Cumulative sum of invalid keystrokes on WORTKLAU test trials (neither trial response nor help) |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
Design |
||
| minProportionCorrect | Sets the minimum proportion correct that a participant has to obtain in a testblocks to pass | 0.7 |
| minNrPassedBlocks | The minimum number of passed Testblocks that needs to be obtained to pass Accuracy check | 3 |
| minRunLength | Minimum number of trials to run before the next interruption | 3 |
| testTrialRuns | Number of interruptions in the test block | 11 |
Sizing Parameters |
||
| charSize | The size of the presented characters in canvas height percentage | 12% |
Response Key Assignments |
||
| keyLine | Letter is without or with line: O (ohne/without) M (mit/with) | "M" |
| keyNoLine | "O" | |
| keyStart | Letter is at the beginning or end of alphabet: A (Anfang/beginning) E (Ende/end) | "A" |
| keyEnd | "E" | |
| keyRed | Colorful character is red or blue: R (rot/red) B (blau/blue) | "R" |
| keyBlue | "B" | |
| keyAbove | Character is below or above the box: T (tiefer/below) H (hoeher/above) | "H" |
| keyBelow | "T" | |
| keyVowel | Letter is consonant or vowel: K (Konsonant/consonant) V (Vokal/vowel) | "V" |
| keyConsonant | "K" | |
| keyEven | Number is odd or even: U (ungerade/odd) G (gerade/even) | "G" |
| keyOdd | "U" | |
| keyDotWhite | Dot is white or black: W (weiss/White) S (schwarz/black) | "W" |
| keyDotBlack | "S" | |
| keyBoxLine | Box consists of lines or dots: L (Linien/lines) P (Punkte/dots) | "L" |
| keyBoxDots | "P" | |
Debugging |
||
| debugmode | 1 = script runs in debugmode and presents a text stimulus that contains the expected task and correct response key 0 = no debug stim is presented | 0 |