This repository contains the supplementary materials and analysis code for the LCYA (Locus Coeruleus - Young Adults) study. The study investigates the effects and interactions of concurrent physical and cognitive effort on behavioral performance and pupillometric responses in younger adults.
How do concurrent physical effort (handgrip force) and cognitive effort (task difficulty) affect:
- Behavioral performance (accuracy, reaction time)
- Physiological arousal (pupil responses measured via AUC metrics)
- Individual differences in effort-related effects
- Brain-behavior relationships
Participants performed perceptual discrimination tasks under varying levels of physical and cognitive effort:
- ADT (Auditory Discrimination Task): Frequency discrimination with concurrent handgrip
- VDT (Visual Discrimination Task): Contrast discrimination with concurrent handgrip
- CDT (Change Detection Task): Arrow direction change detection with concurrent handgrip
- MST (Mnemonic Similarity Task): Memory-based similarity judgments
- Cognitive Effort: Stimulus difficulty (Easy vs. Hard discrimination)
- Physical Effort: Handgrip force levels (Low: 5% MVC vs. High: 40% MVC)
- Pupillometry: Continuous pupil diameter measurement for arousal assessment
The repository is organized into four main directories:
LCYA/
├── analysis/ # All analysis scripts
│ ├── main/ # Complete publication workflow (R Markdown)
│ └── manuscript_scripts/ # Individual analysis scripts
│ ├── figures/ # Scripts to generate manuscript figures (Figures 2-4)
│ └── *.R # Statistical analysis scripts
├── code/ # Reusable code components
│ ├── plot_objects/ # ggplot theme and plot definitions
│ ├── preprocessing/ # Data preprocessing utilities (MATLAB, Python)
│ └── utilities/ # Helper functions for data processing
├── documentation/ # Documentation and results
│ ├── results_reports/ # Statistical analysis reports and summaries
│ └── *.md # Documentation files
└── figures/
└── publication/ # Final publication-ready figures (PNG format)
analysis/ - Contains all analysis scripts organized by purpose:
main/: Complete analysis pipeline in R Markdown formatmanuscript_scripts/: Individual R scripts for specific analysesfigures/: Scripts that generate the manuscript figures- Root-level scripts: Statistical models and verification analyses
code/ - Reusable code components:
plot_objects/: ggplot theme definitions and plot templates for each taskpreprocessing/: Tools for converting and aggregating raw eyetracker data- MATLAB scripts for file conversion
- Python notebooks for data aggregation
utilities/: Helper functions used across multiple analyses
documentation/ - Comprehensive documentation:
- Analysis overviews and methodological notes
- Statistical reports and summaries
- Results from various analysis approaches
figures/publication/ - Final publication-ready figures:
- All figures are in PNG format, high resolution (300 DPI)
- Generated by scripts in
analysis/manuscript_scripts/figures/
analysis/main/Aggregated_analysis_publication.Rmd- Complete analysis pipeline and results (R Markdown)
| Figure | Script | Description | Output |
|---|---|---|---|
| Figure 2 – Behavioral performance | analysis/manuscript_scripts/figures/Figure2_Clean_Final_Version.R |
Accuracy and reaction time effects across tasks and conditions | figures/publication/Figure2_Task_Performance_Effects.png |
| Figure 3 – Pupil waveforms | analysis/manuscript_scripts/figures/LCYA_Isolated_Cognitive_AUC_Analysis.R |
Time-locked pupil responses with baseline and AUC period annotations (see details below) | figures/publication/Figure3_Pupil_Waveforms.png |
| Figure 4 – AUC bar plots | analysis/manuscript_scripts/figures/LCYA_Updated_Combined_AUC_Plots.R |
Total AUC and Cognitive AUC effects across tasks | Figure4_Total_AUC.png, Figure4_Cognitive_AUC.png |
| Figure 4 – Combined layout | analysis/manuscript_scripts/figures/LCYA_Figure4_Merged_AUC_Plot.R |
Merged visualization of Total and Cognitive AUC | Figure4_Merged_Total_Cognitive_AUC.png |
Figure 3 Details:
- Baseline correction: 500ms pre-squeeze window (-0.5s to 0s) for optimal separation
- Time range: From -0.5s (baseline period) to response onset for complete trial visualization
- Smoothing: GAM trajectories with 95% confidence intervals
- Task-specific annotations:
- CDT: Shows "Pre-trial Baseline" (grey) and "Total AUC" (blue) only. Cognitive AUC excluded per analytical recommendations.
- ADT/VDT: Shows "Pre-trial Baseline" (grey), "Total AUC" (blue), "Pre-stimulus Baseline" (grey, 500ms before target onset), and "Cognitive AUC" (orange)
- Event markers: Task-specific labels ("Array onset" for CDT, "Target onset" for ADT/VDT, "Probe + Response" for CDT, "Response" for ADT/VDT)
| Analysis | Script | Description | Output Location |
|---|---|---|---|
| Full manuscript pipeline | analysis/manuscript_scripts/LCYA_Final_Corrected_Analysis.R |
Complete statistical analysis (behavioral, physiological, individual differences) | documentation/results_reports/ |
| Pupillometry AUC models | analysis/manuscript_scripts/LCYA_AUC_Analysis.R |
Linear mixed-effects models for Total, Cognitive, and Physical AUC | Model summaries to console/file |
| Bayesian individual differences | analysis/manuscript_scripts/Bivariate_Individual_Differences_brms.R |
Multivariate Bayesian models examining individual-level associations | documentation/results_reports/Individual_Differences_Brms_Report.md |
| Subject-means individual differences | analysis/manuscript_scripts/Updated_Individual_Differences_Accuracy_RT_SubjectMeans.R |
Alternative approach using subject-level means | documentation/results_reports/subject_means/results/ |
| Frequentist verification | analysis/manuscript_scripts/Final_Individual_Differences_Verification.R |
Verification of correlations using frequentist methods | Console output |
| Response bias analysis | analysis/manuscript_scripts/response_bias_analysis.R |
GLMM for Same/Different judgment bias | Console output |
- MATLAB scripts (
code/preprocessing/):eyetracker_mat_to_csv_converter.m- Convert individual MATLAB eyetracker files to CSVbatch_convert_eyetracker_files.m- Batch conversion of all eyetracker files
- Python notebooks (
code/preprocessing/python_notebooks/):- Task-specific aggregation notebooks for trial-level data
- See
code/preprocessing/README.mdfor detailed preprocessing documentation
Core Analysis:
tidyverse- Data manipulation and visualization (dplyr,ggplot2,tidyr,readr,purrr)lme4- Linear mixed-effects modelslmerTest- p-values for mixed-effects modelsbrms- Bayesian regression models (for individual differences)mgcv- Generalized additive models (GAM) for smoothingpatchwork/cowplot- Combining multiple plotsposterior- Bayesian posterior analysis (for brms)
Visualization:
ggplot2- Primary plotting packagegridExtra- Additional plot arrangement toolsviridis- Color palettesggridges- Distribution visualizations
Other:
rmcorr- Repeated measures correlation (optional, for sensitivity analyses)
# Install CRAN packages
install.packages(c("tidyverse", "lme4", "lmerTest", "mgcv",
"patchwork", "cowplot", "viridis", "ggridges",
"rmcorr", "posterior"))
# Install brms (requires compilation)
install.packages("brms")
# Note: brms may require additional system dependencies; see brms documentation-
Set up R environment: Install all required packages (see Dependencies section)
-
Update file paths: Edit the
BASE_DIRvariable in each script to point to your data directory:BASE_DIR <- "/path/to/your/LC–YA"
-
Ensure data files are available:
- Raw pupil data:
100 Hz/directory with*_DS100_merged.csvfiles - Processed AUC data:
PI_Feedback_Outputs/Combined_Dual_AUC_Data.csv(generated by scripts) - Behavioral data:
Complete_Manuscript_Results/complete_analysis_data.csv
- Raw pupil data:
-
Run figure generation scripts (in order):
# Figure 2: Behavioral performance source("analysis/manuscript_scripts/figures/Figure2_Clean_Final_Version.R") # Figure 3: Pupil waveforms source("analysis/manuscript_scripts/figures/LCYA_Isolated_Cognitive_AUC_Analysis.R") # Figure 4: AUC bar plots source("analysis/manuscript_scripts/figures/LCYA_Updated_Combined_AUC_Plots.R")
-
Find outputs: All figures are saved to
figures/publication/
For full reproduction of all analyses:
# Run the complete R Markdown pipeline
rmarkdown::render("analysis/main/Aggregated_analysis_publication.Rmd")Note: Due to data privacy and file size constraints, raw data files are not included in this repository. Data are available for reviewers upon reasonable request. Users who wish to reproduce the analyses will need to provide their own data files with the following structure:
-
Raw pupil data:
100 Hz/directory containing*_DS100_merged.csvfiles with columns:sub(subject ID)trial_index(trial number)time(timestamp)pupil(pupil diameter)duration_label(event labels: "Squeeze", "Arrow"/"Stimulus", "Response", "Confidence")stimLev(stimulus level/difficulty)isStrength(effort condition: 0=Low, 1=High)
-
Behavioral data: Processed behavioral data files (accuracy and reaction time)
File paths: Scripts use absolute paths that need to be adjusted for your local setup. Update the BASE_DIR variable at the top of each script.
- Baseline period: 500ms pre-squeeze (-0.5s to 0s) for optimal separation
- Baseline correction: Global baseline (B0) applied throughout to ensure convergence at squeeze onset
- Task-specific analyses:
- CDT: Physical effort only (Total AUC); Cognitive AUC excluded per analytical recommendations
- ADT/VDT: Full 2×2 ANOVA (difficulty × effort) for both Total AUC and Cognitive AUC
- Pre-stimulus Baseline (B2b): 500ms window before target/stimulus onset, shown only for ADT/VDT (used specifically for Cognitive AUC calculation)
- Pre-trial Baseline (B0): 500ms window (-0.5s to 0s) before squeeze onset, used for global baseline correction
- Pre-stimulus Baseline (B2b): 500ms window before target/stimulus onset, used specifically for Cognitive AUC calculation
- Total AUC: Raw pupil data from squeeze onset (0s) to response onset
- Cognitive AUC: Isolated pupil data (B0-corrected) from 300ms after target/stimulus onset to response onset
- Primary method: Multivariate Bayesian mixed-effects models (brms)
- Target estimand: Correlation between subject-specific effort slopes
- Sensitivity analyses: rmcorr and subject-means correlations
- Statistical approach: Bayesian inference with credible intervals
For detailed documentation, see:
documentation/ANALYSIS_OVERVIEW.md- Comprehensive analysis overviewdocumentation/CODE_DOCUMENTATION.md- Technical documentation for code filesdocumentation/REPOSITORY_STRUCTURE.md- Detailed repository organizationcode/preprocessing/README.md- Data preprocessing instructions
If you use this code or reference these analyses, please cite:
[Manuscript citation - to be updated upon publication]
Mohammad Dastgheib
mdast003@ucr.edu
This project is licensed under the GPLv3 License - see the LICENSE file for details.