El analisis PET(amiloide) actual se basa el la ROI especifica utilizada para calcular el Centiloide. No obstante, suponiendo que querramos sacar el SUVR en alguna otra ROI, tambien se puede implementar sin demasiada complejidad.
Este metodo esta basado en el nuevo pipeline para PET(tau). Solo hay que cambiar el tipo de input, las ROI y ROR y poco mas. El analisis no difire nada sea el PET que sea.
#!/bin/sh study=$1 shift id=$1 shift wdir=$1 shift src=$1 shift td=${wdir}'/.tmp_'${id} if [ ! -d "$td" ]; then mkdir $td fi debug=0 ${FREESURFER_HOME}/bin/mri_convert --in_type mgz --out_type nii ${SUBJECTS_DIR}/${study}_${id}/mri/rawavg.mgz ${wdir}/${id}_struc.nii.gz ${FSLDIR}/bin/fslsplit ${src} ${td}/${id}_piece_ -t for x in ${td}/${id}_piece_*; do ${ANTS_PATH}/antsRegistrationSyNQuick.sh -d 3 -f ${wdir}/${id}_struc.nii.gz -m ${x} -t a -o ${x%.nii.gz}_movingToFixed_; ${ANTS_PATH}/antsApplyTransforms -d 3 -r ${wdir}/${id}_struc.nii.gz -i ${x} -t ${x%.nii.gz}_movingToFixed_0GenericAffine.mat -o ${x%.nii.gz}_reg.nii.gz; done a=`for i in ${td}/*_reg.nii.gz; do echo " $i"; done` ${FSLDIR}/bin/fslmerge -t ${td}/${id}_corr.nii.gz $a ${FSLDIR}/bin/fslmaths ${td}/${id}_corr.nii.gz -Tmean ${wdir}/${id}_pet.nii.gz if [ $debug = 0 ] ; then rm -rf ${td}/*_piece_* fi
foreach my $roi (@rois){ $ptask{'output'} = $outdir.'/pet_roi_'.$roi.'_'.$subject; $ptask{'filename'} = $outdir.'/'.$subject.'_roi_'.$roi.'.sh'; $ptask{'command'} = $ENV{'PIPEDIR'}.'/bin/get_proi.sh '.$study.'_'.$subject.' '.$w_dir.'/.tmp_'.$subject.' '.$roi; $mask_chain.= $w_dir.'/.tmp_'.$subject.'/rois/'.$roi.'.nii.gz '; send2slurm(\%ptask); } #Hacer mascara de cerebelo $ptask{'output'} = $outdir.'/pet_cgm_'.$subject; $ptask{'filename'} = $outdir.'/'.$subject.'_cgm.sh'; $ptask{'command'} = $ENV{'PIPEDIR'}.'/bin/get_cbgm.sh '.$study.'_'.$subject.' '.$w_dir.'/.tmp_'.$subject; $mask_chain.= $w_dir.'/.tmp_'.$subject.'/rois/cerebgm.nii.gz'; send2slurm(\%ptask); #Juntar todas las mascaras en un 4D $ptask{'output'} = $outdir.'/pet_merge_'.$subject; $ptask{'filename'} = $outdir.'/'.$subject.'_merge.sh'; $ptask{'command'} = $ENV{'FSLDIR'}.'/bin/fslmerge -t '.$w_dir.'/'.$subject.'_masks '.$mask_chain; #$ptask{'mailtype'} = 'FAIL,END'; $ptask{'dependency'} = 'singleton'; my $mjob_id = send2slurm(\%ptask);
#!/bin/sh subject=$1 shift tmp_dir=$1 shift roi=$1 shift if [ ! -f ${tmp_dir}/rois/register.dat ]; then mkdir -p ${tmp_dir}/rois/; tkregister2 --mov $SUBJECTS_DIR/${subject}/mri/rawavg.mgz --noedit --s ${subject} --regheader --reg ${tmp_dir}/rois/register.dat; sleep 10; fi if [ ! -f ${tmp_dir}/all_aseg.nii.gz ]; then mri_label2vol --seg $SUBJECTS_DIR/${subject}/mri/aparc+aseg.mgz --temp $SUBJECTS_DIR/${subject}/mri/rawavg.mgz --o ${tmp_dir}/all_aseg.nii.gz --reg ${tmp_dir}/rois/register.dat; sleep 10; fi mkdir ${tmp_dir}/rois/${roi}; for x in `cat ${PIPEDIR}/lib/pet/${roi}.roi`; do sleep 10; rlabel=$(echo ${x} | awk -F"," '{print $1}'); nlabel=$(echo ${x} | awk -F"," '{print $2}'); ${FSLDIR}/bin/fslmaths ${tmp_dir}/all_aseg.nii.gz -uthr ${rlabel} -thr ${rlabel} -div ${rlabel} ${tmp_dir}/rois/${roi}/${nlabel}; done a=$(for x in ${tmp_dir}/rois/${roi}/*.nii.gz; do echo "${x} -add "; done) a=$(echo ${a} | sed 's/\(.*\)-add$/\1/') ${FSLDIR}/bin/fslmaths ${a} ${tmp_dir}/rois/${roi}