Open material from my lab for teaching and research.
Educational resources

Graph analysis of resting-state fNIRS
Four interactive hands-on sessions that start from a resting-state functional connectivity matrix and end with properties of the whole system: from a connectivity matrix to a graph; integration, segregation and small worlds; hubs, modules and resilience; and fNIRS-specific caveats. Built for the course Functional Connectivity with fNIRS (Part 2: graph analysis) on one real whole-head recording. Move a slider and the graph and its numbers update. Everything runs in the browser: no installation, nothing is uploaded, and you can load your own connectivity matrices.

Introduction to fNIRS: online course
A beginner-level online course I created for the Society for functional Near Infrared Spectroscopy. Six units (about 30 lessons and 10 hours) take you from how light travels through tissue and the modified Beer–Lambert law, through brain haemodynamics and neurovascular coupling, to collecting and processing fNIRS data and the open challenges in the field. Each unit ends with a quiz, and there is a certificate of completion. No prerequisites: designed for students, clinicians and researchers starting with fNIRS, including those coming from fMRI or EEG.
Research software & data

MILOB: a Python library for diffuse optics
MILOB analyses diffuse optical data (continuous-wave and time-domain NIRS, frequency-domain NIRS and diffuse correlation spectroscopy), from raw recordings and preprocessing to tissue optical properties, chromophore concentrations, group statistics and visualisation. Every measurement is treated as a forward model of the tissue combined with the instrument’s observation process, so a single fitting engine serves all modalities. It also includes simulators for test data and a BIDS-based pipeline for batch analysis.
