Skip to content

Add functionality to calculate, plot and determine QC metrics for RETROICOR regressors from physiological traces #2

@jsheunis

Description

@jsheunis

Background

A goal of rtQC is to supply the user with information about the quality of their fMRI data, both while the data is being collected (Online QC tab in the GUI) and offline once a participant's data for a given session has been collected (Post QC tab in the GUI). Physiological noise caused by the participant's heart rate, breathing, blood pulsatility, the interaction of these effects and other sources of variance, can strongly influence the blood oxygenation level. For neurofeedback experiments, it is particularly important to rule out such sources of variance as confounders of the neurofeedback signal, and hence from the inferences drawn from the data about BOLD regulation and neurofeedback learning success. Thus, it aligns with rtQC's goal to show users information about how physiological noise might be influencing their neurofeedback signal quality.

Description of feature to be added

The goal is to add functionality to the Post QC tab in the GUI that allows users to "Inspect physiological noise". This would ultimately entail being able to "click-to-select" the relevant physiological recording files, parsing this information, calling relevant code to derive RETROICOR regressors from the supplied files, plotting these regressors in a way that is appropriate to highlight possible quality issues, and calculating and displaying relevant quality metrics from these regressors. The PhysIO Toolbox has been identified as a useful existing tool with functionality that would allow RETROICOR regressors to be calculated from physiological data. Our code will have to deal with this as a dependency in a sensible way.

Breakdown of steps

  • Add defaults required for PhysIO functioning to rtQC_defaults.m file. These would ultimately be aspects that users would not necessarily specify every time they run the GUI, but maybe once (hence the reason for defining them as defaults). For the first attempt, we can just add all required variables here.
  • Add pushbutton to Post QC tab in the GUI that triggers the calculation of RETROICOR regressors from physiological data. This should do the following:
  • .. construct the template files required by PhysIO
  • .. trigger PhysIO to calculate regressors
  • .. return regressors to rtQC
  • .. plot regressors together with task paradigm in new figure window.
  • .. calculate relevant QC metrics (to be determined) and display together with plots.

Links to relevant code and instructions

Basic download and usage instructions for rtQC are given in the README

Sample data can be downloaded from the OpenNFT sample dataset under "Assets". Code to run rtQC on this specific dataset is already set up in the rtQC_defaults.m file, here. This is done as part of the demo mode of the GUI.

The rtQC_defaults.m file can be used to enter default values relevant for the functioning of the new feature. This would be a pragmatic short term solution in stead of adding more pushbuttons, text input fields, etc. on the Pre QC tab.

The pushbutton to trigger physiological noise regressor calculation and other steps can be added under this section in the rtQC_display_setup.m file. Inspect the other UIcontrols for info about the naming convention, and check that the correct parent panel is set. The CallBack attribute is important to set, as this is the function that triggers the whole process. For some reason (probably bad coding on my side) you also have to re-instate this callback in the rtQC_defaults.m file, for example as is done here.

The function that executes all of the new functionality can be added here.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions