Skip to content

Motor-Learning-Lab/Timmann-Eyeblink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Timmann Eyeblink — Rescorla-Wagner Models

Bayesian Rescorla-Wagner models for eyeblink conditioning data, fit hierarchically across subjects using PyMC.

Repository Layout

  • data/CR_analysis.csv — source trial-level dataset
  • notebooks/rw_single_subject.ipynb — single-subject baseline model
  • notebooks/rw_multi_subject_eta.ipynb — primary hierarchical model with direct eta
  • notebooks/rw_multi_subject_alpha_beta.ipynb — hierarchical alpha-beta decomposition
  • notebooks/generate_eta_results.ipynb — post-processing notebook that exports analysis-ready CSVs
  • results/ — model outputs and derived parameter summaries
  • pixi.toml / pixi.lock — environment and task definitions

Data

The dataset in data/CR_analysis.csv contains trial-level responses for 22 subjects across two sessions. Each subject completes one auditory and one visual CS condition (counterbalanced by session order).

Columns:

  • SubjectID — subject identifier
  • Session — session index (encodes order)
  • CS_Typeauditory or visual
  • PhaseHabituation, Acquisition, Extinction
  • Trial_No — trial number within CS condition
  • Trial_TypeCS-Only or CS+US
  • CS, US, CR, UR — binary indicators

Model Overview

All notebooks use the same Rescorla-Wagner update:

$$V_{t+1,c} = V_{t,c} + \eta_c \cdot (\lambda_{\max} \cdot US_t - V_{t,c})$$

with fixed $\lambda_{\max}=1$.

Observed CR probability is linked to latent value via:

$$P(CR_t) = \text{sigmoid}(CR_log_odds_min + CR_delta_log_odds \cdot V_t)$$

Notebooks

1. Single subject (rw_single_subject.ipynb)

Non-hierarchical baseline model for one subject (SUB-6114), estimating eta, V0, and CR-link parameters per CS type.

2. Hierarchical with direct eta (rw_multi_subject_eta.ipynb)

Primary hierarchical model with CS type × order effects on both eta and V0.

3. Hierarchical with alpha-beta decomposition (rw_multi_subject_alpha_beta.ipynb)

Factorizes learning rate as:

$$\eta_{s,c} = \sigma(\alpha_{s,c}) \cdot \sigma(\beta_s)$$

where alpha carries CS/order structure and beta is subject-level US processing.

4. Result generation (generate_eta_results.ipynb)

Consumes the fitted eta-model outputs and writes:

  • results/CR_analysis_with_eta.csv
  • results/eta_subject_parameters.csv
  • results/eta_population_parameters.csv

Run Workflow

This project uses Pixi for environment and tasks.

  1. Install environment:
pixi install
  1. Run hierarchical eta notebook:
pixi run run-eta
  1. Run alpha-beta notebook:
pixi run run-alpha-beta
  1. Run both model notebooks:
pixi run run-all
  1. Generate derived CSV outputs:
pixi run jupyter nbconvert --to notebook --execute notebooks/generate_eta_results.ipynb --output-dir notebooks

Notes:

  • Multi-subject inference outputs are large (for example results/rw_multi_subject_CR_min_by_subject.nc).
  • results/*.nc is gitignored.

Output Files

results/CR_analysis_with_eta.csv

Original trial-level columns plus latent summaries:

  • V, V_lo, V_hi
  • PE, PE_lo, PE_hi
  • Association

results/eta_subject_parameters.csv

One row per subject with medians and 95% HDIs, ordered as:

  1. eta_s_visual, eta_s_auditory, eta_s_first, eta_s_second (each with _lo, _hi)
  2. V0_s_visual, V0_s_auditory, V0_s_first, V0_s_second (each with _lo, _hi)
  3. p_CR_min_s (_lo, _hi)
  4. p_CR_max_s (_lo, _hi)

results/eta_population_parameters.csv

Population summaries (mean, hdi_lo, hdi_hi) ordered as:

  1. all eta_*_mu
  2. all eta_*_iqr
  3. all V0_*_mu
  4. all V0_*_iqr
  5. p_CR_*_mu
  6. p_CR_*_iqr

Visualization Conventions

Multi-subject notebooks use a consistent 4-color scheme:

  • dark blue — auditory CS in first session
  • light blue — auditory CS in second session
  • dark orange — visual CS in first session
  • light orange — visual CS in second session

Toolchain

Primary libraries are declared in pixi.toml:

  • PyMC (sampling; nutpie-enabled workflows)
  • ArviZ
  • PreliZ
  • PyTensor
  • NumPy / SciPy / pandas / xarray
  • Jupyter ecosystem (notebook, nbconvert, ipykernel, ipywidgets)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors