Hemodynamic Response Function Modeling with hrf
Author: Damon Pham & Amanda Mejia
Date: 2025-01-29

# Hemodynamic Response Function Modeling with `hrf`

#### Damon Pham & Amanda Mejia

#### 2025-01-29

`hrf` is an R package for modeling the hemodynamic response function (HRF). It also includes functions for constructing a design matrix for a general linear model (GLM), and for comparing multiple GLMs with different design matrices.

    library(hrf)

# HRF modeling

    TR <- 2.2
    upsample <- 1000
    upsample <- round(TR*upsample)/TR # TR*upsample must be an int

    u <- seq(0, 30, by=1/upsample) #go out 30 sec
    HRF <- HRF_calc(t = u, deriv=0)
    dHRF <- HRF_calc(t = u, deriv=1)

    matplot(cbind(HRF, dHRF), type="l", lwd=2, col=c("black", "blue"))

# Design matrix construction

    # Read in data.
    events <- read.csv("../tests/data/motor1-events.tsv", sep="\t")

    # Convert 3-col data.frame to list of 2-col data.frames
    events$trial_type <- as.factor(events$trial_type)
    trials <- levels(events$trial_type)
    events <- setNames(lapply(
      trials,
      function(x){events[events$trial_type==x,seq(2)]}
    ), trials)

    des <- make_design(events, nTime=370, TR=0.72)

    ## Maximum corr.:  0.17
    ## Maximum VIF:    1.171

    des

    ## ====BfMRI_design =======================
    ## Fields: LFoot, LHand, RFoot, RHand, Tongue
    ## ----------------------------------------

    plot(des)