Zoo Task

Technical Manual

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

Background

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'.

References

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/)

Duration

8 minutes

Description

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).

Note On Finger/Stylus Use For Task
The script can be run via finger/stylus use on touchscreens or by using the computer mouse.dragDrop Safe-guards are built into the current script version that require participants to return to the screen location that was last tracked if the computer logs a suspicious jump in coordinates.

Procedure

(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

Stimuli

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

Instructions

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'

Scoring

Accuracy Calculations
See file 'ZooAccuracyCoding_MoreDetails.pdf' downloaded from https://osf.io/c6aq7/

"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

This script bases path accuracy calculations on the above documents.
The script
- calculates the net-weightage for each target location visited
- calculates the path length based on all locations (FEEDING stations of animal enclosures as well as
Start and Finish buttons) visited (including non-target feeding stations)

the script only clocks visits to feeding stations (the black dots) and start and finish button

- calculates the final pathACC by adjusting the path length by the net-weightage of visited target locations
=> if the path chosen is the shortest possible (see editable parameters) AND all target locations
are visited, path acc will be 1.
This script bases the pathlength taken on all visited locations (not just the target locations).
In many cases, this will lengthen the path taken and thus 'punish' the pathACC. However, in some cases
(e.g. when the non-target locations are on the way to the next target location) the pathlength does not
actually increase. In these cases, pathACC is not 'punished' by the extra animals.
Researcher can decide how to adjust pathACC in these cases individually.

Summary Data

File Name: zootask_summary*.iqdat

Data Fields

NameDescription
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

Raw Data

File Name: zootask_raw*.iqdat

Data Fields

NameDescription
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)

Parameters

The procedure can be adjusted by setting the following parameters.

NameDescriptionDefault
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 canvasblack
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, snakes23
minPathLengthRound2 One possible shortest path: seals, zebras, horses, cheetahs, lions, monkeys23
minPathLengthRound3 One possible shortest path: jellyfish, walrus, fish, llamas, goats, pandas, cows, elephants25
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