User Tools

Site Tools


biac:analysis:physiological

Physiological Correction Methods

Generate resampled TSV from raw GE physio files automatically copied from the scanners

Stock GE physio is hardcoded by GE to be 25Hz for respiration and 100Hz for pulse. The continuous gating files will start 30 seconds before the scan is triggered.

[cmp12@blade17 20211218_03399]$ /usr/local/packages/biacpython/bin/convert_GEphysio.py --help
usage: convert_GEphysio.py [-h] --xmlh XMLFNAME [--json JSONFNAME] --physdir
                           PHYSDIR [--bidsout] [--afnislicetime]
                           [--delay DELAYTIME]

create 100Hz resampled TSV from raw GE physio data

optional arguments:
  -h, --help         show this help message and exit
  --xmlh XMLFNAME    BXH data
  --json JSONFNAME   JSON data
  --physdir PHYSDIR  physio directory
  --bidsout          write BIDS specific TSV data and json sidecar
  --afnislicetime    write AFNI slicetiming 1D files for RetroTS and tshift
  --delay DELAYTIME  time past ending time of functional to end search for
                     matching physio files

Provide a valid BXH ( and JSON if possible ) and a path to your subject physio folder to convert_GEphysio.py function. If the BXH does not contain slice timing information the JSON is required.

This function will search the physio directory for physio files within a specified time range based on the functional scantime + timepoints + a default delay in writing.

If matching respiration and pulse files are found theoretical scan triggers on each TR will be created and the respiration and pulse data will be resampled to 100Hz and locked to the onset of the scan. If disdaqs are detected in the BXH the corresponding physio time will be discarded.

/usr/local/packages/biacpython/bin/convert_GEphysio.py --xmlh Data/Func/20211218_03399/bia6_03399_004_01.bxh --physdir Data/Func/20211218_03399 --bidsout

By default you will get a 100Hz resampled TSV with headers and timing.

The –bidsout flag will output a TSV without headers and a BIDS sidecar with appropriate column labels and sampling frequency.

The –afnislicetime flag will output two 1D slicetiming files to be used with RetroTS.py and afni_proc.py directly.

Using afni

You can create regressors for afni preprocessing from output files above using RetroTS.py

python3 /usr/local/packages/afni/21.1.04/RetroTS.py -phys_file series013_01_physio.tsv -phys_json series013_01_physio.json -n 42 -v 2 -slice_order series013_01_slicetimingV.1D -prefix  series013_01

-n #slices
-v TR in seconds

RetroTS will produce “slibase” regressors to be used with retroicor during afni preprocessing, or afni retroicor regression

setup afni despike, retroicor and slicetime correction

python3 /usr/local/packages/afni/21.1.04/afni_proc.py \
 -subj_id sub-00104_run-4_ricor_phys \
 -blocks despike ricor tshift \
 -dsets ../../../../BIDS/sub-00104/ses-01/func/sub-00104_ses-01_task-rest_run-4_bold.nii.gz \
 -tcat_remove_first_trs 2 \
 -tshift_opts_ts -tpattern @/mnt/munin/BIAC/SysService.01/Analysis/UHP/BIDS/sub-00104/ses-01/physio/series004_01_slicetiming.1D \
 -ricor_regs_nfirst 2 \
 -ricor_regs /mnt/munin/BIAC/SysService.01/Analysis/UHP/BIDS/sub-00104/ses-01/physio/series004_01.slibase.1D \
 -verb 1

The above will produce an afni script to throw out 2 timepoints, perform a despike, retroicor physio regression and slice time correction based on the RetroTS output and the physio TSV/json above.

Convert the afni corrected output back to nii.gz to be used for other pre-processing if not using AFNI for all steps

bxh2analyze --niigz -s pb03.sub-00104_run-4_ricor_phys.r01.tshift+orig.HEAD sub-00104_run-4_physiocorrected

CIGAL pdigm specific processing

biac/analysis/physiological.txt · Last modified: 2022/01/20 17:17 by cmp12