├── README.md └── BIDS_single_ses.sh /README.md: -------------------------------------------------------------------------------- 1 | # BIDS-Auto-Organization 2 | 3 | Automatical organization bash script for your MRI images into BIDS format, temporarily available for T1, dwi and restfmri single session modalities. 4 | 5 | ## Raw DICOM file structure 6 | 7 | * Dataset/
8 | * Dicom/
9 | * anat/
10 | * 001/
11 | * 002/
12 | * ... 13 | * dwi/
14 | * 001/
15 | * 002/
16 | * ...
17 | * rest/
18 | * 001/
19 | * 002/
20 | * ...
21 | 22 | ## Dependencies 23 | 24 | The bash script requires *dcm2niix* and *jo* to be installed in Ubuntu as follows: 25 | 26 | ```Bash 27 | apt-get install dcm2niix 28 | apt-get install jo 29 | -------------------------------------------------------------------------------- /BIDS_single_ses.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | # setting your dataset path here 6 | homedir=~/Desktop/BIDS_test 7 | 8 | dcmdir=${homedir}/Dicom 9 | niidir=${homedir}/Nifti 10 | 11 | if [ -d ${niidir} ];then 12 | rm -r ${niidir} 13 | fi 14 | 15 | mkdir ${niidir} 16 | 17 | 18 | jo -p "Name"="KCL Multi-site schizophrenia dataset - Graph Convolutional Network" "BIDSVersion"="1.0.2" >> ${niidir}/dataset_description.json 19 | 20 | if [ -d ${dcmdir}/anat ];then 21 | for subj in `ls ${dcmdir}/anat/` 22 | do 23 | echo "processing anatomical images of $subj" 24 | mkdir -p ${niidir}/sub-${subj}/anat 25 | dcm2niix -z n -b y -o ${niidir}/sub-${subj}/anat -f ${subj}_%f_%p ${dcmdir}/anat/${subj} 26 | cd ${niidir}/sub-${subj}/anat 27 | mv *.json sub-${subj}_T1w.json 28 | mv *.nii sub-${subj}_T1w.nii 29 | done 30 | fi 31 | 32 | if [ -d ${dcmdir}/dwi ];then 33 | for subj in `ls ${dcmdir}/dwi/` 34 | do 35 | echo "processing diffusion images of $subj" 36 | mkdir -p ${niidir}/sub-${subj}/dwi 37 | dcm2niix -z n -b y -o ${niidir}/sub-${subj}/dwi -f ${subj}_%f_%p ${dcmdir}/dwi/${subj} 38 | cd ${niidir}/sub-${subj}/dwi 39 | mv *.json sub-${subj}_dwi.json 40 | mv *.nii sub-${subj}_dwi.nii 41 | mv *.bval sub-${subj}_dwi.bval 42 | mv *.bvec sub-${subj}_dwi.bvec 43 | done 44 | fi 45 | 46 | if [ -d ${dcmdir}/rest ];then 47 | for subj in `ls ${dcmdir}/rest/` 48 | do 49 | echo "processing resting-state functional images of $subj" 50 | mkdir -p ${niidir}/sub-${subj}/func 51 | dcm2niix -z n -b y -o ${niidir}/sub-${subj}/func -f ${subj}_%f_%p ${dcmdir}/rest/${subj} 52 | cd ${niidir}/sub-${subj}/func 53 | mv *.json sub-${subj}_task-rest_bold.json 54 | mv *.nii sub-${subj}_task-rest_bold.nii 55 | for funcjson in `ls *.json` 56 | do 57 | taskexist=`cat ${funcjson} | jq '.TaskName'` 58 | if [ "$taskexist" == "null" ]; then 59 | jsonname="${funcjson%.*}" 60 | taskfield=$(echo $jsonname | cut -d '_' -f2 | cut -d '-' -f2) 61 | jq '. |= . + {"TaskName":"'${taskfield}'"}' ${funcjson} > tasknameadd.json 62 | rm ${funcjson} 63 | mv tasknameadd.json ${funcjson} 64 | echo "TaskName was added to ${jsonname} and matches the tasklabel in the filename" 65 | else 66 | Taskquotevalue=$(jq '.TaskName' ${funcjson}) 67 | Taskvalue=$(echo $Taskquotevalue | cut -d '"' -f2) 68 | jsonname="${funcjson%.*}" 69 | taskfield=$(echo $jsonname | cut -d '_' -f2 | cut -d '-' -f2) 70 | if [ $Taskvalue == $taskfield ]; then 71 | echo "TaskName is present and matches the tasklabel in the filename" 72 | else 73 | echo "TaskName and tasklabel do not match" 74 | fi 75 | fi 76 | done 77 | done 78 | fi 79 | 80 | 81 | 82 | 83 | 84 | --------------------------------------------------------------------------------