Preprocessing Rat Structural in vivo - GarzaLab/Documentation GitHub Wiki

Preprocessing Rat Structural in-vivo

This preprocessing is for the 3D FLASH T2w sequence with 2 repetitions 160 m^3 obtained with Paravision 6. However, any number of repetitions would work as the script does not care.

This preprocessing will prepare the data for the MBM pydpiper aka Deformation Brain Morphometry pipeline.

  1. Bruker to NIFTI BIDS format.
  2. Averaging repetitions to improve SNR.
  3. Run N4 Bias Field Correction

Download the scripts

https://github.com/GarzaLab/scripts/tree/master/rodent_dbm

Bruker to NIFTI BIDS format

We use the app brkraw from this URL.

You need to download all raw folders from the experiment to one single folder or ZIP file. Make a folder for your bids output.

I advice you check each raw folder, to be sure you have all the data. To do this, use the brkraw gui. It is important to use the flag --ignore-rescale for all our data.

Example:

brkraw gui --ignore-rescale -i raw/20191018_141708_B03GarzaAlcohol_I2BA_003_1_1 -o Model20p_bids

After checking your data, run the bids_helper, edit the XLSX and JSON files then run bids_converter.

Example:

brkraw bids_helper -j raw Model20p_bids

You will get 2 files on the $PWD folder, Model20p_bids.xlsx and Model20p_bids.json. Edit the XLSX to fit your data. The columns you need to edit are: SubjID, SessID, task (if you have fMRI), modality. For SubjID you will always get the prefix sub-, keep that in mind. SessID can be anything numbers or letters. task and modality must adhere to BIDS Data Structure. You can modify other columns, just leave RawData untouched.

Once the XLSX file is modified, if you have fMRI you will have to go to the JSON and modify the task from there.

After this, now you can run the bids_convert to convert all files to NIFTI in neat BIDS format.

Example:

brkraw bids_convert -j Model20p_bids.json -o Model20p_bids --ignore-rescale raw Model20p_bids.xlsx

Here is the output tree. Your data needs to be similar to this otherwise it won't run:

Model20p_bids/data

data
├── sub-10
│   ├── ses-1
│   │   ├── anat
│   │   │   ├── sub-10_ses-1_T1w.json
│   │   │   ├── sub-10_ses-1_T1w.nii.gz
│   │   │   ├── sub-10_ses-1_T2w.json
│   │   │   └── sub-10_ses-1_T2w.nii.gz
│   │   ├── fmap
│   │   │   ├── sub-10_ses-1_fieldmap.json
│   │   │   ├── sub-10_ses-1_fieldmap.nii.gz
│   │   │   └── sub-10_ses-1_magnitude.nii.gz
│   │   └── func
│   │       ├── sub-10_ses-1_task-rest_run-1_bold.json
│   │       └── sub-10_ses-1_task-rest_run-1_bold.nii.gz
│   └── ses-2
│       ├── anat
│       │   ├── sub-10_ses-2_T1w.json
│       │   ├── sub-10_ses-2_T1w.nii.gz
│       │   ├── sub-10_ses-2_T2w.json
│       │   └── sub-10_ses-2_T2w.nii.gz
│       ├── fmap
│       │   ├── sub-10_ses-2_fieldmap.json
│       │   ├── sub-10_ses-2_fieldmap.nii.gz
│       │   └── sub-10_ses-2_magnitude.nii.gz
│       └── func
│           ├── sub-10_ses-2_task-rest_run-1_bold.json
│           └── sub-10_ses-2_task-rest_run-1_bold.nii.gz

Averaging repetitions to improve SNR.

Use this guide:

https://github.com/GarzaLab/Documentation/wiki/Average-T1w-or-T2w-repetitions-Bruker-7T

bash rat-invivo-average.sh subject session modality

Run N4 Bias Field Correction

Remember you need to pad the Fischer atlas if you are using that one:

ImageMath 3 Fischer344_template_pad.mnc PadImage Fischer344_template.mnc 20

The run the preprocessing script in your average.mnc file for each subject.

The Average script should've created the folder derivatives/${subject}/${session}/preproc. I suggest you run the following script with the output pointing to the same folder.

bash rat-preprocessing-v6.sh input.mnc output.mnc

For example:

bash rat-preprocessing-v6.sh /media/egarza/Elements2/projects/INB/GARZALAB/Pilotos/Prueba_DBM/derivatives/sub-5/ses-1/preproc/average.mnc /media/egarza/Elements2/projects/INB/GARZALAB/Pilotos/Prueba_DBM/derivatives/sub-5/ses-1/preproc/sub-5_ses-1_pp.mnc

Your files should be ready, with a mask.

This files can now go to the Two Level DBM.

Loop it

Average 3 subjects with 2 sessions each.

for i in data/sub-*; do rat-invivo-average.sh $(basename $i) ses-1 T1w; bash rat-invivo-average.sh $(basename $i) ses-2 T1w; done

Preprocess 3 subjects with 2 sessions each.

for i in data/sub-*; do bash rat-preprocessing-v6.sh derivatives/$(basename $i)/ses-1/preproc/average.mnc derivatives/$(basename $i)/ses-1/preproc/$(basename $i)_ses-1_pp.mnc; bash rat-preprocessing-v6.sh derivatives/$(basename $i)/ses-2/preproc/average.mnc derivatives/$(basename $i)/ses-2/preproc/$(basename $i)_ses-2_pp.mnc; done

QC

Check your images one by one for errors.