Script Author: Katja Borchert, Ph.D. (katjab@millisecond.com), Millisecond
Created: January 04, 2022
Last Modified: January 12, 2025 by K. Borchert (katjab@millisecond.com), Millisecond
Script Copyright © Millisecond Software, LLC
This script implements Millisecond's computerized version of the 'Zoo Task' by Patel et al (2021). The Zoo Task is a paper and pencil meta-cognitive problem-solving task -using an animal feeding game at the zoo- designed for children.
The default settings of the script run the task with proportional screen sizing. However, this script allows researchers to run the original paper and pencil task on the computer (with mouse use) or touchscreens. See section Defaults for more information.
A computerized version of the Zoo Task has the advantage that pathlength and path Accuracy are calculated automatically using the published guidelines by Patel et al (2021). This script also takes a screenshot of the final zoo pathways that can be used for further (manual) analyses. However, this computerized approach limits certain analyses such as 'strategy used'.
Patel, J., Aldercotte, A., Tsapali, M., Serpell, Z. N., Parr, T., & Ellefson, M. R. (2021). The Zoo Task: A novel metacognitive problem-solving task developed with a sample of African American children from schools in high poverty communities. Psychological Assessment, 33(8), 795–802. https://doi.org/10.1037/pas0001033 (when using the Zoo Task, please use this citation)
Additional information as well as original materials can be downloaded here: source: https://osf.io/c6aq7/ https://osf.io/gkac3/
ZooTask_Booklet.pdf: document that contains the actual task materials ZooAccuracyCoding_moreDetails.pdf: document that describes how to calculate Trial Accuracy Scores
The Zoo Task is licensed under a Creative Commons Attribution 4.0 International License. (https://creativecommons.org/licenses/by/4.0/)
8 minutes
Participants are given a map of a zoo with 21 animal enclosures as well as a START and FINISH button. Their task is to find the shortest path to a provided list of animals (3 rounds with 4,6,8 animals). Before (after) they can start tracing their path through the zoo, they are asked about their confidence that they will find (found) the best path on a 5-point Likert scale using a set of five smiley faces.
In this script: Participants see the zoo map as well as the list of animals when making the prospective confidence judgment. However, The Start button of the zoo map is inactived until a prosepective judgment is made. Once the zoo map is activated, the prospective judgment cannot be changed anymore. When tracing the path through the zoo, participants are asked to keep to the zoo's pathways and not take shortcuts through the animal enclosures. This scripts will alert participants if a perimeter breach is detected and participants are asked to return to a red circle (back on the zoo's pathway).
(1) Intro
(2) Practice: 2 rounds
During practice, participants are given 2 animals each and are asked to find the best pathway to these 2 animals
No prospective/retrospective judgments are collected and path accuracy is not calculated.
Practice feedback is optional (see editable parameters.)
(3) Test: 3 rounds (increasing in difficulty, all participants receive the same list of animals)
Round1: 4 animals
Round2: 6 animals
Round3: 8 animals
Participants are asked to make a
- PROSPECTIVE JUDGMENT about their confidence to find the shortest path at the start of each round and
- RETROSSPECTIVE JUDGEMENT about their confidence at the end of each round
The judgments are made on a 5-point Likert scale with visual anchors.
(4) Finish
The stimuli used in this script are based on the original provided materials: https://osf.io/c6aq7/
(ZooTask_Booklet.pdf: document that contains the actual task materials)
To be able to present clear animal images, Millisecond attempted to find
the original used animal images. This was possible in many instances, however,
giraffes, pandas and jellyfish are presented by different images in this script
(other animals may be presented in slightly different colors).
All animal images used in this script were downloaded from: https://pixabay.com/
Pixabay license: Free for commercial use, No attribution required
The instructions used in this script are based on the original provided materials: https://osf.io/c6aq7/
(ZooTask_Booklet.pdf: document that contains the actual task materials)
In some cases, Millisecond added some additional information and/or added some verbal (English)
instructions.
All images presented for instruction purposes are either based on the original provided material or downloaded
from https://pixabay.com/ (Pixabay license: Free for commercial use, No attribution required).
Millisecond used Audacity to create the verbal soundfiles used in this script.
see script 'zootask_instructions_inc.iqjs'
File Name: zootask_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 |
Trial Data By Round: 1-3 (Explained For Round1) |
|
| prospectiveJudgmentRound1 | Stores the final prospective judgment rating for round1 (1= definitely no to 5 = definitely yes) |
| retrospectiveJudgmentRound1 | Stores the final retrospective judgment rating for round1 (1= definitely no to 5 = definitely yes) |
| numberOfTargetsRound1 | Stores the number of target animals to feed in round1 |
| targetsRound1 | A string variable that stores all the target animals to visit in round1 |
| visitedLocationsRound1 | A string variable that stores all visited locations (including start and finish) in the order they were visited in round1 |
| visitedTargetsRound1 | A string variable that stores all the visited target animals in the order they were visited in round1 |
| visitedNontargetsRound1 | A string variable that stores all the visited nontarget animals in the order they were visited in round1 visited animal = feeding circle of that animal was reached |
| targetCounterRound1 | Tracks the number of target animals visited in round1 |
| targetRepeatCounterRound1 | Tracks how often participant revisited a target animal in round1 |
| nontargetCounterRound1 | Tracks how often participant visited (including revisits) a nontarget animal in round1 |
| pathCorrectionCounterRound1 | Tracks how often participant came too close to an animal in round1 This could be because they tried to shortcut through the enclosure or simply because they reached the computer-enforced enclosure boundaries by accident |
Accuracy Calculations |
|
| startPercentWeightageRound1 | The %weightage assigned to reaching the start and finish buttons in round1 "Start and Finish have both been given an average weightage for any given trial and is equal to weightage of 1/(total number of points to visit) (p.4, also see table2)" see raw data for more info |
| unitWeightRound1 | The %weightage assigned to a horizontal distance of 1 in trial 1 see raw data for more info |
| netWeightageRound1 | The sum of all %weightages of the actually visited target animals for trial 1 see raw data for more info |
| pathLengthRound1 | The calculated pathlength taken for round1, based on the length of the path segments from one visited target animal to the next. see raw data for more info |
| minPathLengthRound1 | The shortest path length for trial 1 see raw data for more info |
| pathAccRound1 | Path Accuracy for round1 Source: see file 'ZooAccuracyCoding_MoreDetails.pdf' "The accuracy score is based on the path-length chosen, the number of required animals visited and their relative distance from the start point. (p.1)" => the accuracy score depends on 'pathlength' adjusted by 'net_weightage' pathACC = 1 IF: the shortest path was chosen AND all the target animals were visited |
Timing Variables |
|
| aRound1 | Time (in ms) it took participant to make last/final prospective judgment in round1 |
| bRound1 | Time (in ms) it took for participant to press the Start button (after making final prospective judgment) in round1 |
| cRound1 | Time (in ms) it took for participant to reach the Finish Button (after starting the zoo visit) in round1 |
| dRound1 | Time (in ms) it took for participant to make final retrospective judgment (after finishing the zoo visit) in round1 |
| eRound1 | Time (in ms) it took for participant to submit retrospective judgment (after making final retrospective judgment) in round1 |
File Name: zootask_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. |
Inquisit Built-In Dv Variables |
|
| response | The response of participant for the recorded trial |
| correct | Correctness of response (1 = correct, 0 = error) |
| latency | Response latency (in ms); measured from: onset of trial |
Custom Variables |
|
| roundCounter | Tracks the number of rounds run |
Ratings Dvs |
|
| prospectiveJudgment | Stores the final prospective judgment rating (1= definitely no to 5 = definitely yes) |
| retrospectiveJudgment | Stores the final retrospective judgment rating (1= definitely no to 5 = definitely yes) |
Animal Feeding Task |
|
| numberOfTargets | Stores the number of target animals to feed in the current round |
| remainingTargets | A string variable that stores all the target animals that still need to be feed |
| animal | If an animal feeding circle is hit, this variable stores the animal name |
| visitedLocations | A string variable that stores all visited locations (including start and finish) in the order they were visited |
| visitedTargets | A string variable that stores all the visited target animals in the order they were visited |
| visitedNontargets | A string variable that stores all the visited nontarget animals in the order they were visited visited animal = feeding circle of that animal was reached |
| targetCounter | Tracks the number of target animals visited |
| targetRepeatCounter | Tracks how often participant revisited a target animal this script only counts revisits as repeated visits if a different location was registered in the meantime. |
| nontargetCounter | Tracks how often participant visited (including revisits) a nontarget animal |
| pathCorrectionCounter | Tracks how often participant receive a 'perimeter breach' warning This could be because they tried to shortcut through the enclosure or simply because they reached the computer-enforced enclosure boundaries by accident |
| pathCorrection | 1 = this trial resulted in a path correction (perimeter breach); 0 = otherwise |
| pathJumping | 0 = no path jumping has been detected; 1 = path jumping has been detected ( this could happen on touchscreens when fingers/stylus pens are used) |
| rsp | Stores the current response made (e.g. FeedingStation reached) |
| rspTimestamp | The timestamp (in ms) of the response (relative to script onset) |
| rspRT | The response time (in ms) of the current response (relative to round onset) |
Accuracy Calculations |
|
| startPercentWeightage | The %weightage assigned to reaching the start and finish buttons "Start and Finish have both been given an average weightage for any given trial and is equal to weightage of 1/(total number of points to visit) (p.4, also see table2)" Example: Round1 points to visit = 4 animals + Start + Finish = 6 %weightage = 1/(number of target animals + start + Finish) = 1/6 |
| unitWeight | The %weightage assigned to a horizontal distance of 1 in the current round This number is used to calculate the %weightage of all TARGET animals (as well as start button and finish button) in a given round. The further an animal is too the start-finishline, the higher the %weightage for this particular animal. Example: round1 has 4 target animals (see table2 for H-Distances) Penguins: H-Dist = 6 Polar bears: H-Dist = 5 Birds: H-Dist= 1 Snakes: H-Dist = 3 Sum of all H-Dist = 6 + 5 + 1 + 3 = 15 Mean=15/4 = 3.75 = start_hdist; assigned to Start and Finish for round1 unitweight = startPercentweightage/start_hdist = 0.167/3.75 = 0.044 => this unitweight can now by multiplied by the H-Dist for each animal Penguins: H-Dist = 6 => %weightage = 6*0.044 = 0.26 Polar bears: H-Dist = 5 => %weightage = 5*0.044 = 0.22 Birds: H-Dist= 1 => %weightage = 1*0.044 = 0.044 Snakes: H-Dist = 3 => %weightage = 3*0.044 = 0.13 |
| netWeightage | The sum of all %weightages of the actually visited TARGET animals for the given round See table 2 for all theoretical %weightages assigned to each target animal in the default trials. The net_weightage is 1 if all target animals (as well as start and finish button) are visited |
| pathLength | The calculated pathlength the calculation of pathlength takes advantage of the horizontal/vertical locations of the animals' feeding stations posted in table1 (and based on figure 3). For each round, the script calculates the lengths of each path segment from one visited LOCATION (!not just the target animals plus start and finish!) to the next by adding the horizontal and vertical differences '(horizontal differences) + (vertical differences)' of the two locations and then sums up all path segment lengths to calculate the final pathlength. Example: participants visits Start->Penguins->Polar Bears->Birds->Snakes->Finish (round1) Start: V7, H2 Penguins: V2, H4 => Segment1 = abs(7-2) + abs(2-4) = 5 + 2 = 7 Polar bears: V3,H6 => Segment2 = abs(2-3) + abs(4-6) = 1 + 2 = 3 Birds: V7,H6 => Segment2 = abs(3-7) + abs(6-6) = 4 + 0 = 4 Snakes: V5,H9 => Segment3 = abs(7-5) + abs(6-9) = 2 + 3 = 5 Finish: V7,H11 => Segment2 = abs(5-7) + abs(9-11) = 2 + 2 = 4 Total Length = 7 + 3 + 4 + 5 + 4 = 23 The pathlength in this script is based on all locations visited. If participants visit more than just the target animals, the probability is higher that the chosen pathlength will be longer than the shortest possible one (BUT: this is NOT the case if the extra nontarget locations are on the direct path to the next target location!). A longer path length will penalize the Accuracy Score. |
| minPathLength | The shortest path length for the current round the shortest path lengths for the three default trials are provided in document 'ZooAccuracyCoding_MoreDetails.pdf' (p.6) minPathLengthRound1 = 23, one possible shortest path: penguins, polarbears, birds, snakes minPathLengthRound2 = 23, one possible shortest path: seals, zebras, horses, cheetahs, lions, monkeys minPathLengthRound3 = 25, one possible shortest path: jellyfish, walrus, fish, llamas, goats, pandas, cows, elephants |
| pathAcc | Path Accuracy Source: see file 'ZooAccuracyCoding_MoreDetails.pdf' "The accuracy score is based on the path-length chosen, the number of required animals visited and their relative distance from the start point. (p.1)" => the accuracy score depends on 'pathlength' adjusted by 'net_weightage' pathACC = 1 IF: the shortest path was chosen AND all the target animals were visited |
Timing Variables |
|
| a | Time (in ms) it took participant to make last/final prospective judgment |
| b | Time (in ms) it took for participant to press the Start button (after making final prospective judgment) |
| c | Time (in ms) it took for participant to reach the Finish Button (after starting the zoo visit) |
| d | Time (in ms) it took for participant to make final retrospective judgment (after finishing the zoo visit) |
| e | Time (in ms) it took for participant to submit retrospective judgment (after making final retrospective judgment) |
The procedure can be adjusted by setting the following parameters.
| Name | Description | Default |
|---|---|---|
Color Parameter |
||
| canvasColor | Display color of the actively used portion of the screen (the 'canvas') if set to a color other than the screenColor, the active canvas appears 'anchored' on the screen regardless of monitor size | white |
| screenColor | Color of the screen not used by the canvas ('inactive screen') | white |
| defaultTextColor | Default color of text items presented on active canvas | black |
Design Parameter |
||
| feedingStationFeedback | True: once a feeding station (the black dot) has been successfully reached, it will turn gray and the computer will play a short chirp to alert participants that their visit was noted by the computer false: no feedback is given to participants ( not giving feedback is more similar to the paper and pencil version, however if participants visit an enclosure but don't actually hit the black dot, the computer will not count this as a successful visit. A manual re-coding of the path screenshots may be necessary in these circumstances) | true |
| practiceFeedback | True: computer gives feedback. If target animals are missing OR nontarget animals were visited, participants are asked to try again. false: no practice feedback is provided | true |
Optimal/Minimum Path Lengths |
||
| minPathLengthRound1 | One possible shortest path: penguins, polarbears, birds, snakes | 23 |
| minPathLengthRound2 | One possible shortest path: seals, zebras, horses, cheetahs, lions, monkeys | 23 |
| minPathLengthRound3 | One possible shortest path: jellyfish, walrus, fish, llamas, goats, pandas, cows, elephants | 25 |
| selectZooImage | 1 = slightly altered zoo image without labels the layout of the animal enclosures is the same as in the original by Patel et al (2021) but some animals are represented by different images. The animal names are removed from the map to make it easier to run the map in languages other than English. 2 = image of the original zoo by Patel et al (2021) with English animal names if the original map is used, the script will still use the slightly different animal images to tell participants which animals to feed. | 0 |