T2* Project Base Script

Objective: generate transforms to evaluate mean values in each label

Set paths

home=$(ls -d /data/joy/BBL/projects/beardt2star/)
outdir=$(ls -d /data/joy/BBL/projects/beardt2star/output/)
logs=$(ls -d /data/joy/BBL/projects/beardt2star/scripts/logs/)
jlfLabels=$(ls -d /data/joy/BBL/studies/pnc/processedData/structural/jlf/)
t1=$(ls -d /data/joy/BBL/studies/pnc/processedData/structural/antsCorticalThickness/)
t2star=$(ls -d /data/joy/BBL/studies/pnc/processedData/b0mapwT2star/)

Remove pre-existing error logs (avoid overwriting)

rm $logs/t2starMissingLog.txt
rm $logs/t1MissingLog.txt
rm $logs/jlfMissingLog.txt
rm $logs/summaryLog.csv
rm $logs/subjectsList.csv

Error logs, missing inputs, transforms, calculate means and cc values

for i in $(cat $home/cohort_list_n1601.csv); do
  bblid=`echo "$i"|awk -F',' '{print $1}'`
  scanid=`echo "$i"|awk -F',' '{print $2}'`
  date=`echo "$i"|awk -F',' '{print $3}'`


### Make subjects list 
    echo $bblid >> $logs/subjectsList.csv


### remove pre-existing subject-level logs
if [ -e $outdir/$bblid/${bblid}_log.csv ]; then 
    rm $outdir/$bblid/${bblid}_log.csv
fi

if [ -e $outdir/$bblid/${bblid}_cc.txt ]; then  
    rm $outdir/$bblid/${bblid}_cc.txt
fi

if [ -e $outdir/$bblid/${bblid}_t2star_ROI.csv ]; then  
    rm $outdir/$bblid/${bblid}_t2star_ROI.csv
fi
    

### Define error logs
touch $logs/t2starMissingLog.txt $logs/t1MissingLog.txt $logs/jlfMissingLog.txt $logs/summaryLog.csv
touch $outdir/$bblid/${bblid}_log.csv

t2starMissingLog=/data/joy/BBL/projects/beardt2star/scripts/logs/t2starMissingLog.txt
t1MissingLog=/data/joy/BBL/projects/beardt2star/scripts/logs/t1MissingLog.txt
jlfMissingLog=/data/joy/BBL/projects/beardt2star/scripts/logs/jlfMissingLog.txt
summaryLog=/data/joy/BBL/projects/beardt2star/scripts/logs/summaryLog.csv


### Check for output directory - if none, make directory
if [ ! -d /data/joy/BBL/projects/beardt2star/output/$bblid ]; then
    echo "$bblid making directory" 
    mkdir /data/joy/BBL/projects/beardt2star/output/$bblid
    else echo "$bblid directory present"
fi


### Check for missing inputs: t1, jlf, t2star
if [ ! -e $t1/$bblid/${date}x${scanid}/ExtractedBrain0N4.nii.gz ]; then 
    echo "T1 MISSING" $bblid >> $t1MissingLog
    echo "T1 1" >> $outdir/$bblid/${bblid}_log.csv
    else echo "T1 0" >> $outdir/$bblid/${bblid}_log.csv
fi

if [ ! -e $jlfLabels/$bblid/${date}x${scanid}/${bblid}_${date}x${scanid}_jlfLabels.nii.gz ]; then 
    echo "JLFLABELS MISSING" $jlfLabels >> $jlfLabelsMissingLog
    echo "JlfLabels 1" >> $outdir/$bblid/${bblid}_log.csv
    else echo "JlfLabels 0" >> $outdir/$bblid/${bblid}_log.csv
fi

if [ ! -e $t2star/$bblid/${date}x${scanid}/${bblid}_${date}x${scanid}_t2star.nii.gz ]; then 
    echo "t2STAR MISSING" $bblid >> $t2starMissingLog
    echo "t2star 1" >> $outdir/$bblid/${bblid}_log.csv
    else echo "t2star 0" >> $outdir/$bblid/${bblid}_log.csv
fi


### Check for output, skip with continue if output 0
if [ -e $outdir/$bblid/${bblid}_jlfInt2Space.nii.gz ]; then
    echo "$bblid output present"
    else    


### Use flirt to register t1 brain to t2star
if [ -e $t2star/$bblid/${date}x${scanid}/${bblid}_${date}x${scanid}_t2star.nii.gz ]; then 
    flirt -in $t1/$bblid/${date}x${scanid}/ExtractedBrain0N4.nii.gz -ref $t2star/$bblid/${date}x${scanid}/${bblid}_${date}x${scanid}_t2star.nii.gz -out $outdir/$bblid/${bblid}_t1Brain2t2star -omat $outdir/$bblid/${bblid}_ExtractedBrain2t2star_Matrix.mat -dof 6
fi


### Use flirt to apply resulting transformation to jlf labels
if [ -e $t2star/$bblid/${date}x${scanid}/${bblid}_${date}x${scanid}_t2star.nii.gz ]; then 
    flirt -interp nearestneighbour -dof 6 -in $jlfLabels/$bblid/${date}x${scanid}/${bblid}_${date}x${scanid}_jlfLabels.nii.gz -ref $t2star/$bblid/${date}x${scanid}/${bblid}_${date}x${scanid}_t2star.nii.gz -applyxfm -init $outdir/$bblid/${bblid}_ExtractedBrain2t2star_Matrix.mat -out $outdir/$bblid/${bblid}_jlfInt2Space
fi


### Use 3dROI stats to calculate mean values within each label
if [ -e $t2star/$bblid/${date}x${scanid}/${bblid}_${date}x${scanid}_t2star.nii.gz ]; then 
    3dROIstats -mask $outdir/$bblid/${bblid}_jlfInt2Space.nii.gz -nzmean -nomeanout -numROI 207 -zerofill NA $t2star/$bblid/${date}x${scanid}/${bblid}_${date}x${scanid}_t2star.nii.gz | sed s@'\t'@','@g >> $outdir/$bblid/${bblid}_t2star_ROI.csv 
fi


### Calculate cc values for each subject
if [ -e $outdir/$bblid/${bblid}_t1Brain2t2star.nii.gz ]; then 
  fslstats $t2star/$bblid/${date}x${scanid}/${bblid}_${date}x${scanid}_t2star.nii.gz -M -S
  flsmaths $t2star/$bblid/${date}x${scanid}/${bblid}_${date}x${scanid}_t2star.nii.gz -thr 0 $t2star/$bblid/${date}x${scanid}/${bblid}_${date}x${scanid}_t2star_thr.nii.gz 
  fslcc -t -1 $outdir/$bblid/${bblid}_t1Brain2t2star.nii.gz $t2star/$bblid/${date}x${scanid}/${bblid}_${date}x${scanid}_t2star_thr.nii.gz >> $outdir/$bblid/${bblid}_cc.txt
fi


### Log if cc values were successfully generated
if [ -s $outdir/$bblid/${bblid}_cc.txt ]; then
    echo "CC 0" >> $outdir/$bblid/${bblid}_log.csv
    else echo "CC 1" >> $outdir/$bblid/${bblid}_log.csv
fi


### fi to close for loop of subjects with no output
fi

    
### Make summary log (0 = present, 1 = missing)
for i in $outdir; do
    echo $(cat $outdir/$bblid/${bblid}_log.csv) >> partialSummaryLog.csv
done 


### Close for loop
done

Make final summary log

paste $logs/subjectsList.csv partialSummaryLog.csv >> $logs/summaryLog.csv
rm partialSummaryLog.csv