Package: eyeris 3.2.0.9001

eyeris: Flexible, Extensible, & Reproducible Pupillometry Preprocessing

Pupillometry offers a non-invasive window into the mind and has been used extensively as a psychophysiological readout of arousal signals linked with cognitive processes like attention, stress, and emotional states [Clewett et al. (2020) <doi:10.1038/s41467-020-17851-9>; Kret & Sjak-Shie (2018) <doi:10.3758/s13428-018-1075-y>; Strauch (2024) <doi:10.1016/j.tins.2024.06.002>]. Yet, despite decades of pupillometry research, many established packages and workflows to date lack design patterns based on Findability, Accessibility, Interoperability, and Reusability (FAIR) principles [see Wilkinson et al. (2016) <doi:10.1038/sdata.2016.18>]. 'eyeris' provides a modular, performant, and extensible preprocessing framework for pupillometry data with BIDS-like organization and interactive output reports [Esteban et al. (2019) <doi:10.1038/s41592-018-0235-4>; Gorgolewski et al. (2016) <doi:10.1038/sdata.2016.44>]. Development was supported, in part, by the Stanford Wu Tsai Human Performance Alliance, Stanford Ric Weiland Graduate Fellowship, Stanford Center for Mind, Brain, Computation and Technology, NIH National Institute on Aging Grants (R01-AG065255, R01-AG079345), NSF GRFP (DGE-2146755), McKnight Brain Research Foundation Clinical Translational Research Scholarship in Cognitive Aging and Age-Related Memory Loss, American Brain Foundation, and the American Academy of Neurology.

Authors:Shawn Schwartz [aut, cre], Mingjian He [ctb], Haopei Yang [ctb], Alice Xue [ctb], Gustavo Santiago-Reyes [ctb]

eyeris_3.2.0.9001.tar.gz
eyeris_3.2.0.9001.zip(r-4.7)eyeris_3.2.0.9001.zip(r-4.6)eyeris_3.2.0.9001.zip(r-4.5)
eyeris_3.2.0.9001.tgz(r-4.6-any)eyeris_3.2.0.9001.tgz(r-4.5-any)
eyeris_3.2.0.9001.tar.gz(r-4.7-any)eyeris_3.2.0.9001.tar.gz(r-4.6-any)
eyeris_3.2.0.9001.tgz(r-4.6-emscripten)
manual.pdf |manual.html
DESCRIPTION |NEWS
card.svg |card.png
eyeris/json (API)

# Install 'eyeris' in R:
install.packages('eyeris', repos = c('https://shawntz.r-universe.dev', 'https://cloud.r-project.org'))

Bug tracker:https://github.com/shawntz/eyeris/issues

Pkgdown/docs site:https://eyeris.shawnschwartz.com

On CRAN:

Conda:

behavioral-researchbids-formatbiostatisticscognitive-sciencedata-sciencedata-visualizationeye-trackingeyelinkinteractive-reportsneuroscienceopen-sciencepipelinespreprocessingpsychologypupillometryreproducible-sciencesignal-processingworkflows

7.90 score 6 stars 35 scripts 550 downloads 33 exports 74 dependencies

Last updated from:09dea5e3b0. Checks:9 OK. Indexed: yes.

TargetResultTimeFilesSyslog
linux-devel-x86_64OK313
source / vignettesOK245
linux-release-x86_64OK315
macos-release-arm64OK215
macos-oldrel-arm64OK176
windows-develOK300
windows-releaseOK292
windows-oldrelOK303
wasm-releaseOK173

Exports:bidsifybinboilerplatedeblinkdetransientdetrenddownsampleepocheyelink_asc_binocular_demo_dataseteyelink_asc_demo_dataseteyeloggereyeris_color_paletteeyeris_db_collecteyeris_db_connecteyeris_db_disconnecteyeris_db_list_tableseyeris_db_readeyeris_db_reconstruct_from_chunkseyeris_db_split_for_sharingeyeris_db_summaryeyeris_db_to_chunked_fileseyeris_db_to_parquetglassboxinterpolateload_asclpfiltpipeline_handlerplot_binocular_correlationplot_gaze_heatmapprocess_chunked_queryread_eyeris_parquetsummarize_confoundszscore

Dependencies:base64encbitbit64bslibcachemclicliprcpp11crayondata.tableDBIdigestdplyrevaluateeyelinkerfarverfastmapfontawesomefsgenericsggplot2gluegridExtragsignalgtablehighrhmshtmltoolsintervalsisobandjquerylibjsonliteknitrlabelinglatticelifecyclemagrittrMASSmemoisemimepatchworkpillarpkgconfigpracmaprettyunitsprogresspurrrR6rappdirsRColorBrewerRcppreabornreadrrlangrmarkdownS7sassscalesstringistringrtibbletidyrtidyselecttinytextzdbutf8vctrsviridisviridisLitevroomwithrxfunyamlzoo

Built for the Age of AI Coding Agents
🎯 One obvious, correct entry point | 🧭 An interface that resists hallucination | 🔧 Expert defaults mean fewer iterations | 🔒 Output an agent can trust | 🧩 Composable with grammars an agent already knows | 🤖 Agent quickstart | 🗂 For LLM indexers | 📚 Citing eyeris

Last update: 2026-07-03
Started: 2026-07-03

Preprocessing Multiple Runs Stored in Separate Files
The one concept to know: block is run | The pattern | The equivalent: label the run in bidsify() instead | What you get | Handling missing or non-sequential runs | Fixing or re-running a single run | Sanity check: confirm one run per file | The other case: multiple runs inside one file | ✨ Summary | 📚 Citing eyeris

Last update: 2026-07-03
Started: 2026-06-25

Extracting Data Epochs and Exporting Pupil Data
1 Load and Preprocess Your Data | 2 Extract Data Epochs | Example A: Fixed Time Epochs Around a Matched Event | Example B: Metadata Parsing with Custom Labels | Example C: Epoch with Subtractive Baselining | Example D: Start/End Event Pair Epoching | 3 Export to a BIDS-like Format | 💡 Data Previews and QC with Interactive Reports | ✨ Summary | 📚 Citing eyeris

Last update: 2026-06-24
Started: 2025-03-24

QC with Interactive Reports
1 Setup | 2 Generating the Interactive HTML Reports | 3 Previewing your Entire Pupil Timeseries | 4 Data QC of Extracted Pupil Epochs with Interactive Reports | 5 Gaze Heatmaps | Standalone Gaze Heatmaps | Manual Gaze Heatmap Creation | Epoch-Level Gaze Heatmaps | 📚 Citing eyeris

Last update: 2026-06-24
Started: 2025-03-24

Anatomy of an eyeris Object
📦 Key Components | 🧱 Building Blocks Under the Hood | The Default glassbox() Steps and Parameters, Deconstructed: | 📚 Citing eyeris

Last update: 2026-06-13
Started: 2025-03-24

Complete Pupillometry Pipeline Walkthrough
📦 Introduction | 🔎 The Glass Box Function | Installing eyeris | Loading eyeris Package | Loading Your Raw Data | Using the Demo Dataset | Loading Your Own Custom Data | Running the Fully-Automated Pipeline | Running the Pipeline Interactively | Overriding the Default Parameters | Example | Pipeline Steps with Overridable Parameters | Advanced: Building the Pipeline Manually | 💬 Caveats | Detrend Step | I received this message... what does it mean and what should I do? | Some additional notes about preventing live filtering in future recordings... | 📚 Citing eyeris

Last update: 2026-06-13
Started: 2025-03-24

Working with eyeris Databases: A Complete Guide
Introduction | Why Use Databases Instead of CSV Files? | The Case for Database Storage | When to Use CSV vs a Database | Getting Started: Creating Your First eyeris Database | Basic Database Creation | Database-Only Workflow (Cloud Optimized) | Batch Processing Multiple Subjects | Connecting to and Exploring eyeris Databases | Basic Database Connection | eyeris Database Overview and Exploration | Data Extraction: From Simple to Advanced | Simple Data Extraction | Targeted Data Extraction | Working with Binocular Data | Epoch-Specific Extraction | Output Format Options | Advanced Database Operations | Direct SQL Queries | Reading Individual Tables | Real-World Analysis Examples | Example 1: Pupil Response Analysis Across Subjects | Example 2: Quality Control and Confounds Analysis | Performance Comparison: Database vs CSV | Speed and Memory Benchmarks | Best Practices and Tips | Database Management | Cloud Computing Optimization | Error Handling and Debugging | Migration and Interoperability | Converting Existing CSV Data to Database | Exporting Database Data Back to CSV | Conclusion | Session Information

Last update: 2026-06-13
Started: 2025-08-03

Internal API Reference
Introduction | Overview | Core Processing Functions | Blink Removal | deblink_pupil() | Transient Artifact Removal | detransient_pupil() | speed() | Interpolation | interpolate_pupil() | Filtering and Signal Processing | lpfilt_pupil() | downsample_pupil() | bin_pupil() | Statistical Processing | detrend_pupil() | zscore_pupil() | get_zscores() | Epoching Functions | Core Epoching Logic | epoch_pupil() | epoch_and_baseline_block() | process_epoch_and_baselines() | Epoching Strategies | epoch_manually() | epoch_only_start_msg() | epoch_start_msg_and_limits() | epoch_start_end_msg() | Confounds Analysis Functions | Core Confounds Calculation | get_confounds_for_step() | calculate_epoched_confounds() | Data Quality Metrics | tag_blinks() | calc_euclidean_dist() | normalize_gaze_coords() | tag_gaze_coords() | Export Functions | export_confounds_to_csv() | Logging System | Core Logging Functions | get_log_timestamp() | log_message() | log_info(), log_success(), log_warn(), log_error() | Validation and Quality Control | Input Validation | check_input() | check_data() | check_time_monotonic() | is_binocular_object() | Directory Management | check_and_create_dir() | Database Functions | Connection Management | connect_eyeris_database() | disconnect_eyeris_database() | Data Management | create_table_name() | write_eyeris_data_to_db() | write_csv_and_db() | Database Export & Management | create_temp_eyeris_database() | merge_temp_database() | cleanup_temp_database() | Utility Functions | String Processing | clean_string() | sanitize_event_tag() | Data Parsing | get_block_numbers() | BIDS Compliance | make_bids_fname() | run_bidsify() | Progress and Error Handling | Progress Bars | progress_bar() | counter_bar() | tick() | Error Handling | error_handler() | Report Generation | R Markdown Reports | render_report() | make_report() | Advanced Usage Notes | Function Chaining | Performance Considerations | Development Guidelines

Last update: 2025-08-14
Started: 2025-08-04

Chunked eyerisdb Database Export for Large Datasets
Introduction | Prerequisites | Basic Usage | Simple Export with Default Settings | Understanding the Output Structure | Advanced Configuration | Controlling File Sizes | Exporting Specific Data Types | Using Parquet Format | Working with the Exported Files | Reading Single Files Back into R | Combining Multiple Split Files | Advanced Use Cases | Custom Chunk Processing | Handling Very Large Databases | Performance Tips | Optimizing Chunk Size | Choosing Output Format | File Size Considerations | Troubleshooting | Memory Issues | SQL Query Length Errors | Column Structure Mismatches | File Access Issues | Getting Help | Summary

Last update: 2025-08-10
Started: 2025-08-10

Building Your Own Custom Pipeline Extensions
🧩 How the Pipeline Works | 🛠 Creating a Custom Extension for eyeris | 1) Write the core operation function | To illustrate: | 2) Create the wrapper using the eyeris::pipeline_handler() | 3) Understanding Call Stack Tracking | 4) Function Structure Breakdown | 🎉 And that's it! | 💪 Best Practices | 🔍 Advanced: Custom Call Info Handling | ✨ Summary | 📚 Citing eyeris

Last update: 2025-07-25
Started: 2025-03-24

Readme and manuals

Help Manual

Help pageTopics
Save out pupil time series data in a BIDS-like structurebidsify
Bin pupil time series by averaging within time binsbin
Generate a reproducible, copy-and-paste-ready methods boilerplateboilerplate
NA-pad blink events / missing datadeblink
Remove pupil samples that are physiologically unlikelydetransient
Detrend the pupil time seriesdetrend
Downsample pupil time series with anti-aliasing filteringdownsample
Epoch (and baseline) pupil data based on custom event message structureepoch
Access example EyeLink .asc binocular mock dataset file provided by the eyeris package.eyelink_asc_binocular_demo_dataset
Access example EyeLink .asc demo dataset file provided by the eyeris package.eyelink_asc_demo_dataset
Run 'eyeris' commands with automatic logging of R console's stdout and stderreyelogger
Default color palette for eyeris plotting functionseyeris_color_palette
Extract and aggregate eyeris data across subjects from databaseeyeris_db_collect
Connect to eyeris project database (user-facing)eyeris_db_connect
Disconnect from eyeris database (user-facing)eyeris_db_disconnect
List available tables in eyeris databaseeyeris_db_list_tables
Read eyeris data from databaseeyeris_db_read
Reconstruct eyerisdb from chunked fileseyeris_db_reconstruct_from_chunks
Split eyerisdb for data sharing and distributioneyeris_db_split_for_sharing
Get summary statistics for eyeris databaseeyeris_db_summary
Export eyeris database to chunked fileseyeris_db_to_chunked_files
Split eyeris database into N parquet files by data typeeyeris_db_to_parquet
The opinionated "glass box" 'eyeris' pipelineglassbox
Interpolate missing pupil samplesinterpolate
Load and parse SR Research EyeLink '.asc' filesload_asc
Lowpass filtering of time series datalpfilt
Build a generic operation (extension) for the 'eyeris' pipelinepipeline_handler
Plot binocular correlation between left and right eye dataplot_binocular_correlation
Create gaze heatmap of eye coordinatesplot_gaze_heatmap
Plot pre-processed pupil data from 'eyeris'plot.eyeris
Process large database query in chunksprocess_chunked_query
Read parquet files back into Rread_eyeris_parquet
Extract confounding variables calculated separately for each pupil data filesummarize_confounds
Z-score pupil time series datazscore