The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Hemodynamic response functions and event-related regressors for fMRI analysis in R.
fmrihrf provides a composable toolkit for constructing, modifying, and convolving HRFs with experimental designs. It ships with standard basis sets (SPM canonical, B-spline, Fourier, FIR, Gamma, Gaussian, and more), decorators for time-shifting and blocking, and a fast C++ convolution backend.
# From CRAN
install.packages("fmrihrf")
# Development version
remotes::install_github("bbuchsbaum/fmrihrf")Rebuild design matrices and refit analyses when upgrading. This release corrects SPMG response shape and the SPMG3 dispersion derivative, block integration and off-grid event timing, B-spline/tent endpoints, constant weighted windows, query-dependent block normalization, and integration of blocks shorter than the numerical step. Old coefficients are not interchangeable with new ones; neither model fits nor t-statistics are guaranteed to remain unchanged. See NEWS for details.
Cubic B-spline bases require at least two functions. When a
downstream wrapper defaults to one, specify a valid basis count
explicitly (for example,
fmridesign::hrf(condition, basis = "bspline", nbasis = 5)).
Requests for an undersized basis now error; older versions could warn
and return zero columns.
Record the package version, HRF parameters, span,
precision, and normalization policy with each analysis.
summate = FALSE means a temporal average, not a constant
peak; use normalize = TRUE when unit-peak scaling is
intended. The default 24-second SPMG support remains unchanged and
truncates some of the undershoot. Choose an explicit longer support when
needed, for example gen_hrf(hrf_spmg1, span = 32). The
kernels are continuous and unorthogonalized; matching SPM/Nilearn
sampled designs requires matching sampling, support, normalization, and
basis processing as well.
library(fmrihrf)
# Evaluate the SPM canonical HRF over 0-30 seconds
t <- seq(0, 30, by = 0.1)
y <- evaluate(HRF_SPMG1, t)
plot(t, y, type = "l", xlab = "Time (s)", ylab = "Response")
# Build a regressor from event onsets
reg <- regressor(onsets = c(2, 10, 18), hrf = HRF_SPMG1,
duration = 0, amplitude = 1,
span = 24, sampling_frame = sampling_frame(blocklens = 100, TR = 1))
plot(reg)Multiple basis sets — Use a single canonical HRF or a flexible basis set to capture response variability.
HRF_SPMG1 # SPM canonical (double gamma)
HRF_SPMG3 # canonical + temporal & dispersion derivatives
hrf_bspline(t, N = 6) # B-spline basis
hrf_fourier(t, nbasis = 5) # Fourier basisDecorators — Modify any HRF through functional composition.
lag_hrf(HRF_SPMG1, lag = 2) # shift peak by 2 s
block_hrf(HRF_SPMG1, width = 15) # sustained/blocked response
normalise_hrf(HRF_SPMG1) # unit peak-normalisedCustom HRFs — Wrap any f(t) into the
HRF system.
my_hrf <- as_hrf(function(t) exp(-t / 5), name = "exponential", span = 20)
evaluate(my_hrf, seq(0, 20, by = 1))Regressor construction — Convolve events with HRFs to produce design-matrix columns, with support for variable durations, amplitudes, and multi-basis expansion.
sf <- sampling_frame(blocklens = c(200, 200), TR = 2)
reg <- regressor(onsets = c(10, 30, 50), hrf = HRF_SPMG1,
duration = c(0, 5, 0), amplitude = c(1, 1.5, 1),
sampling_frame = sf)
evaluate(reg)Fast convolution — Core routines are implemented in C++ (Rcpp / RcppArmadillo) for efficient large-scale design matrix generation.
Full documentation is available at https://bbuchsbaum.github.io/fmrihrf/.
Vignettes cover the main workflows:
Install the package:
install.packages("fmrihrf")Install the command wrapper:
fmrihrf::install_cli("~/.local/bin", overwrite = TRUE)If needed, add the directory to PATH:
export PATH="$HOME/.local/bin:$PATH"Check the command:
fmrihrf --helpList available HRFs:
fmrihrf list --detailsEvaluate a canonical HRF:
fmrihrf eval --hrf spmg1 --from 0 --to 30 --by 0.5Evaluate a flexible basis set as JSON:
fmrihrf eval --hrf bspline --nbasis 6 --span 24 --jsonEvaluate one event regressor on an acquisition grid:
fmrihrf regressor \
--onsets 0,12,24 \
--blocklens 200 \
--tr 2 \
--hrf spmg1 \
--output regressor.csvBuild a design matrix from an event table:
fmrihrf design \
--events events.csv \
--blocklens 200,200 \
--tr 2 \
--hrf spmg1 \
--output design.csvThe default event columns are onset,
condition, block, duration, and
amplitude. Use --onset,
--condition, --block, --duration,
and --amplitude when a table uses different column
names.
MIT
This package uses the albersdown theme. Its vignettes use the
albersdown::albers_vignette() output format (family =
‘red’, preset = ‘interaction’, set in each vignette’s YAML), which
embeds the stylesheet, script and fonts when a vignette renders. The
pkgdown site uses template: package: albersdown.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.