#!/bin/bash

. /etc/fsl/fsl.sh

EXPERIMENT=predication
#PATH=$PATH:/usr/lib/afni/bin:~/fmri-experiments/$EXPERIMENT/python-detectors
PATH=$PATH:/aux/USER/afni/src:~/fmri-experiments/$EXPERIMENT/python-detectors
DROP=2
# This is actually one less than the number of TRs
TRS=253
SUBJECTS=12
RUNS=16

# Get the scan data.

#rm -rf /aux/USER/fmri-datasets/$EXPERIMENT
#mkdir /aux/USER/fmri-datasets/$EXPERIMENT
cd /aux/USER/fmri-datasets/$EXPERIMENT
#mkdir scans
#rsync -a -v \
#  buddhi:/aux/USER/fmri-datasets/$EXPERIMENT/scans/*-dicom.tgz \
#  scans/
canonize-scan-data-names
#rm -rf scans

# Drop the first DROP TRs from all of epi-r??.nii.gz.

mkdir processed
for subject in $(count -digits 2 1 ${SUBJECTS}); do
  mv -i original/subject-${subject}/anat.nii.gz \
        processed/subject${subject}-anat.nii.gz
  cd original/subject-${subject}
  for run in $(count -digits 2 1 ${RUNS}); do
    3dcalc -a epi-r${run}.nii.gz[${DROP}..${TRS}] -expr 'a' \
           -prefix _epi-r${run}.nii.gz
    mv -i _epi-r${run}.nii.gz \
          ../../processed/subject${subject}-epi-raw-r${run}.nii.gz
    rm epi-r${run}.nii.gz
  done
  cd ../..
  rmdir original/subject-${subject}
done

# Align every volume to subject 01 run 03 volume 0.

rmdir original
cd processed

# Generate epi.nii.gz from epi-raw.nii.gz.
# We don't time-shift or align to anat. We align to the first volume just to
# perform motion correction.
for subject in $(count -digits 2 1 ${SUBJECTS}); do
  for run in $(count -digits 2 1 ${RUNS}); do
    3dWarpDrive -affine_general\
		-cubic\
		-base subject01-epi-raw-r03.nii.gz[0]\
		-prefix subject${subject}-epi-r${run}.nii.gz\
		-input subject${subject}-epi-raw-r${run}.nii.gz
  done
done
rm subject??-epi-raw-r??.nii.gz

# Or masks for all runs for each subject to get a subject mask.

for subject in $(count -digits 2 1 ${SUBJECTS}); do
  for run in $(count -digits 2 1 ${RUNS}); do
     if [ $run -eq 01 ]
     then
	 3dAutomask -prefix subject${subject}-full-mask.nii.gz \
		    subject${subject}-epi-r${run}.nii.gz
     else
	 3dAutomask -prefix mask.nii.gz \
	            subject${subject}-epi-r${run}.nii.gz
	 3dcalc -a mask.nii.gz -b subject${subject}-full-mask.nii.gz \
		-expr 'step(a+b)' \
		-prefix new.nii.gz
	 mv new.nii.gz subject${subject}-full-mask.nii.gz
	 rm mask.nii.gz
     fi
  done
done

# Or all subject masks to get a single mask.

for subject in $(count -digits 2 1 ${SUBJECTS}); do
  if [ $subject -eq 01 ]
  then
      cp subject01-full-mask.nii.gz full-mask.nii.gz
  else
      3dcalc -a full-mask.nii.gz -b subject${subject}-full-mask.nii.gz \
	     -expr 'step(a+b)' \
	     -prefix new.nii.gz
      mv new.nii.gz full-mask.nii.gz
  fi
done
rm subject??-full-mask.nii.gz

# Contatenate EPIs into a single nifti file.

for subject in $(count -digits 2 1 ${SUBJECTS}); do
  FILES=""
  for run in $(count -digits 2 1 ${RUNS}); do
     FILES="$FILES subject${subject}-epi-r${run}.nii.gz"
  done
  3dTcat -prefix subject${subject}-epi.nii.gz $FILES
  rm subject${subject}-epi-r??.nii.gz
done

# Put in format for Python.

mkdir experiments
for subject in $(count -digits 2 1 ${SUBJECTS}); do
  mkdir experiments/subject-${subject}
  mv -i subject${subject}-anat.nii.gz experiments/subject-${subject}/anat.nii.gz
  mv -i subject${subject}-epi.nii.gz experiments/subject-${subject}/epi.nii.gz
  cp -i full-mask.nii.gz experiments/subject-${subject}/full-mask.nii.gz
  mkdir experiments/subject-${subject}/video
  mkdir experiments/subject-${subject}/text
done

rm full-mask.nii.gz
