Field | Value |
---|---|
Name | Resting state |
Version | main |
URL / Repository | https://github.com/TaskBeacon/REST |
Short Description | EC + EO |
Created By | Zhipeng Cao (zhipeng30@foxmail.com) |
Date Updated | 2025/06/21 |
PsyFlow Version | 0.1.0 |
PsychoPy Version | 2025.1.1 |
Modality | Behavior/EEG |
Language | Chinese |
Voice Name | zh-CN-YunyangNeural |
This task is a resting‐state paradigm with two conditions—eyes closed (EC) and eyes open (EO)—each presented sequentially in a single block. Participants receive general instructions, complete a brief countdown, then experience alternating EC and EO trials of fixed duration without any active response requirements; triggers mark key events for synchronization.
Step | Description |
---|---|
Load configuration | Call load_config() to read config/config.yaml and parse subform, task, stimulus, and trigger settings. |
Collect subject info | Instantiate SubInfo(cfg['subform_config']) and call .collect() to prompt for subject_id, subname, age, and gender via a form. |
Initialize Task Settings | Create TaskSettings.from_dict(cfg['task_config']) , then settings.add_subinfo(subject_data) to store demographics in settings. |
Setup triggers | Assign settings.triggers = cfg['trigger_config'] ; open a loopback serial port at 115200 baud; create TriggerSender with trigger_func writing bytes [1,225,1,0,code] and post_delay=0.001 s . |
Initialize window & input | Call initialize_exp(settings) to open a PsychoPy window with parameters from window config and enable keyboard input. |
Setup stimulus bank | Instantiate StimBank(win, cfg['stim_config']) ; call .convert_to_voice() on instruction keys (general_instruction , EC_instruction , EO_instruction , good_bye ); then .preload_all() . |
Save settings | Call settings.save_to_json() to export all settings and subject info to a JSON file for record‐keeping. |
Experiment onset | Use trigger_sender.send(settings.triggers.get("exp_onset")) to mark the start of the experiment. |
Present general instructions | Create StimUnit('instruction', win, kb) ; add visual and voice versions of general_instruction ; call .wait_and_continue() to display until spacebar press. |
Countdown | Call count_down(win, 3) to show a 3-second onscreen countdown. |
Run block | Instantiate BlockUnit(block_id='block_0', block_idx=0, settings, window=win, keyboard=kb) ; .generate_conditions(order='sequential') ; .on_start() sends block_onset trigger; .on_end() sends block_end trigger; .run_trial() loops over conditions using run_trial with stim_bank and trigger_sender . |
Present goodbye | Create StimUnit('block', win, kb) ; add visual and voice good_bye stimuli; call .wait_and_continue(terminate=True) to display until final spacebar press and then close. |
Experiment end | Use trigger_sender.send(settings.triggers.get("exp_end")) to mark the end of the experiment. |
Cleanup | Close the serial port (ser.close() ) and call core.quit() to exit PsychoPy. |
Step | Description |
---|---|
Initialize trial data | Create trial_data = {"condition": condition} to record the current condition (“EC” or “EO”). |
Create StimUnit factory | Use make_unit = partial(StimUnit, win=win, kb=kb, triggersender=trigger_sender) to simplify subsequent stimulus calls. |
Present condition instruction | Call make_unit(unit_label='inst') ; add stim_bank.get(f"{condition}_instruction") and its voice (..._instruction_voice ); then .show() to display until a keypress. |
Present stimulus | Call make_unit(unit_label='stim') ; add stim_bank.get(f"{condition}_stim") (EC_stim or EO_stim); then .show(duration=settings.{condition}_duration, onset_trigger=settings.triggers.get(f"{condition}_onset"), offset_trigger=settings.triggers.get(f"{condition}_offset")) ; finally .to_dict(trial_data) to log timestamps. |
Return trial data | Return trial_data , containing condition and any timing/trigger fields added by .to_dict() . |
Field | Meaning |
---|---|
subject_id | Three-digit integer identifier between 101 and 999 |
subname | Subject’s name in Pinyin |
age | Integer age in years (5–60) |
gender | Choice: “Male” or “Female” |
Parameter | Value |
---|---|
size | [1920, 1080] |
units | deg |
screen | 1 |
bg_color | gray |
fullscreen | True |
monitor_width_cm | 60 |
monitor_distance_cm | 72 |
Name | Type | Description |
---|---|---|
EO_stim | text | A black “+” fixation cross shown at screen center. |
EC_stim | text | A black text “请闭眼” (“please close your eyes”) shown at screen center. |
general_instruction | textbox | Initial instructions in Chinese (【静息态任务说明】…), displayed centrally (font = SimHei, color = white, letterHeight = 0.78 deg, box size = [20, 5] deg); prompts participants to follow guidance and press space to start. |
EC_instruction | textbox | Eyes-closed instructions in Chinese (“请您闭上眼睛…直到听到提示为止”), centrally displayed with same font, color, size, and units as above. |
EO_instruction | textbox | Eyes-open instructions in Chinese (“请您睁开眼睛…直到听到提示为止”), centrally displayed with same properties. |
good_bye | textbox | End-of-task screen in Chinese (“任务结束\n\n感谢您的参与\n请按【空格键】键退出”), centrally displayed with same font, color, letterHeight, and box size. |
Phase | Duration |
---|---|
EC | 180 seconds |
EO | 180 seconds |
Event | Code |
---|---|
exp_onset | 98 |
exp_end | 99 |
block_onset | 100 |
block_end | 101 |
EC_onset | 10 |
EC_offset | 11 |
EO_onset | 20 |
EO_offset | 21 |
The experiment consists of one block containing four sequential rest trials: eyes closed (EC), eyes open (EO), eyes closed (EC), and eyes open (EO), each lasting 180 s for a total data collection time of 720 s (12 minutes).Participants first provide demographic information (ID, name in Pinyin, age, gender) via a modal form. After settings and triggers initialize, they view general task instructions in Chinese, followed by a 3‑second on‑screen countdown. Each trial begins with an on‑screen text instruction and its pre‑recorded voice version. Immediately afterward, the resting‑state stimulus (a central fixation cross for EO trials or the text “请闭眼” ("close your eyes") for EC trials) appears for exactly 180 s. The display window is set to 1920×1080 pixels in degrees of visual angle, with a gray background and a viewing distance of 72 cm.