You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Generalized pro/anti reach task with eye/hand reference-frame manipulation and keyboard proxy responses.
Created By
TaskBeacon
Date Updated
2026-04-16
PsyFlow Version
0.1.12
PsychoPy Version
2025.2.4
Modality
Behavior
Language
Chinese
Voice Name
zh-CN-YunyangNeural (voice disabled by default)
1. Task Overview
This task implements a generalized anti-reach paradigm. Each trial combines a color-coded rule cue with a spatial cue, while the participant responds left or right as a portable proxy for reach direction relative to the hand anchor. Pro trials require a same-direction response relative to the spatial cue; anti trials require the opposite direction.
The trial display keeps the eye fixation point and hand anchor visually separated so both reference frames remain legible on a desktop monitor. Standard trials place eye and hand anchors on the same horizontal side; generalized trials place them on opposite sides. The cue and response windows are timed to mirror the published anti-reach protocol, while the local runtime uses deterministic sampling so the full trial sequence can be replayed and audited.
2. Task Flow
Block-Level Flow
Step
Description
1. Load config
Load the mode-specific YAML config (config.yaml, config_qa.yaml, or sim config).
2. Collect subject info
Collect participant info in human mode; inject deterministic IDs in QA/sim mode.
3. Initialize runtime
Set triggers, create the PsychoPy window, build the stimulus bank, and preload the config-defined stimuli.
4. Show instructions
Present the Chinese instruction screen and, in human mode, the voice-rendered instruction copy.
5. Run blocks
Call BlockUnit.generate_conditions() to schedule the 16 anti-reach condition tokens across the block.
6. Show block break
Present block accuracy, correct-response RT, and timeout counts after each block except the last.
7. Save data
Write trial-level CSV output and the runtime settings JSON.
8. Finalize
Emit the end trigger, close the trigger runtime, and quit PsychoPy.
Trial-Level Flow
Step
Description
fixation
Show the eye fixation spot and the hand anchor in the trial-specific left/right positions.
context_cue
Show a green pro frame or blue anti frame around the eye fixation spot.
memory_hold
Remove the context frame and hold fixation before the go signal.
go_cue
Flash the white spatial cue at the eye-centered cue location.
reach_response
Keep the cue visible while capturing the left/right reach-direction proxy response.
feedback
Show the correct goal marker and a brief Chinese outcome label.
iti
Show a neutral fixation cross before the next trial.
Controller Logic
Feature
Description
Condition Scheduling
Uses the built-in BlockUnit.generate_conditions(...) path instead of a custom scheduler.
Determinism
Trial tokens are parsed into positions, cue sides, and correct keys with a seeded helper in src/utils.py.
Balance
The 16 trial tokens are evenly sampled within each block.
Other Logic
Component
Description
Trial-spec builder
build_antireach_trial_spec(...) derives eye/hand positions, cue location, goal location, and deterministic durations from the block seed and trial id.
Summary helpers
summarizeBlock(...) and summarizeOverall(...) compute accuracy, mean RT, timeout count, and total trials from the reduced rows.
Sampler responder
responders/task_sampler.py emits plausible QA/sim responses using the correct key from runtime factors.
3. Configuration Summary
Settings are loaded from config/config.yaml in human mode and from the QA/sim variants in automated modes.
a. Subject Info
Field
Meaning
subject_id
3-digit participant identifier.
b. Window Settings
Parameter
Value
size
[1024, 768]
units
pix
screen
0
bg_color
black
fullscreen
false
monitor_width_cm
35.5
monitor_distance_cm
60
c. Stimuli
Core task parameters and visible stimuli are listed below.
Core Task Parameters
Parameter
Value
conditions
16 tokens spanning standard/generalized x pro/anti x cue left/right
total_blocks
Human 4; QA/sim 1
trial_per_block
Human 32; QA/sim 16
overall_seed
2026
position_step_px
145
eye_row_y_px
120
hand_row_y_px
-120
cue_row_y_px
120
goal_row_y_px
-120
Visible Stimuli
Stimulus ID
Type
Description
instruction_text
text
Chinese instruction block describing the red eye fixation spot, white hand anchor, green pro frame, blue anti frame, and F/J response mapping.
fixation_cross
text
Neutral white cross used during the ITI.
eye_fixation
circle
Red fixation spot in the eye row.
hand_anchor
circle
White hand anchor in the hand row.
context_frame
rect
Square rule frame rebuilt as green for pro and blue for anti.
spatial_cue
circle
White spatial cue at the eye-centered cue location.
goal_marker
circle
Colored endpoint marker used on the feedback screen.
feedback_text
text
Brief Chinese outcome label shown above the goal marker.
block_break
text
Block summary with accuracy, mean RT, and timeout count.
good_bye
text
End-of-task summary screen.
d. Timing
Phase
Duration
fixation
0.5-1.0 s
context cue
0.2 s
memory hold
0.5-1.5 s
go cue
0.17 s
response window
1.0 s
feedback
0.3 s
ITI
0.6 s
e. Triggers
Event
Code
exp_onset
1
exp_end
2
block_onset
10
block_end
11
fixation_onset
20
context_cue_onset
21
memory_hold_onset
22
go_cue_onset
23
response_window_onset
24
feedback_hit_onset
40
feedback_miss_onset
41
response_left
50
response_right
51
response_timeout
60
iti_onset
70
f. Adaptive Controller
Parameter
Value
Controller
None
Block scheduling
Built-in BlockUnit.generate_conditions(...)
Simulation policy
TaskSamplerResponder for sampler sim; built-in scripted responder for smoke sim
4. Methods (for academic publication)
Participants completed a generalized anti-reach task implemented in PsychoPy/PsyFlow. Each trial began with a fixation display showing an eye fixation spot and a hand anchor on separate rows. A colored square frame then indicated whether the participant should respond in the same direction as the spatial cue (pro) or the opposite direction (anti). After a memory delay, a brief white spatial cue appeared and the participant made a left/right keyboard response that served as a portable proxy for reach direction relative to the hand anchor.
The design preserves the published reference-frame logic by manipulating both cue side and eye/hand arrangement. Standard trials keep the eye and hand anchors on the same horizontal side, whereas generalized trials place them on opposite sides. This allows the runtime to audit compatibility in eye-centered and hand-centered frames while keeping the participant interface simple enough for desktop execution.
All participant-facing text lives in the YAML configs, while the state machine, stimulus placement, and trial timing are handled in code. Trial-specific positions and durations are derived deterministically from the block seed and trial id, which makes the task reproducible across human, QA, and simulation modes. This structure supports both experimental use and traceable validation of the anti-reach logic.