免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1506 | 回复: 0
打印 上一主题 下一主题

[其他] 服务器批处理命令问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-04-03 15:36 |只看该作者 |倒序浏览
各位大神,
   我现在使用华为大型服务器进行数据计算。使用了shell文件进行处理。

###########################################################################################################################
## directory where scripts are located
scripts_dir=/nfs/data1/scripts
## full/path/to/site
analysisdirectory=/nfs/data1/test_batch  # replace by your project directory
## full path to the list of subjects
subject_list=${analysisdirectory}/scripts/subjects.txt
## name of anatomical scan (no extension)
anat_name=mprage
## name of resting-state scan (no extension)
rest_name=rest
## anat_dir_name
anat_dir_name=anat
## if do anat registration
do_anat_reg=true
## if do anat segmentation
do_anat_seg=true
## if use freesurfer derived volumes
fs_brain=true
## if use svd to extract the mean ts
svd=false


## Get subjects to run
subjects=$( cat ${subject_list} )

## SUBJECT LOOP

## Preprocessing anatomical images
sanlm_denoise=true
use_gcut=true
num_scans=1
for subject in ${subjects}
do

${scripts_dir}/cc_01_anatpreproc.sh ${subject} ${analysisdirectory} ${anat_name} ${anat_dir_name} ${sanlm_denoise} ${num_scans} ${use_gcut} ${scripts_dir} &

done


在cc_01_anatpreproc.sh中的命令如下:


## subject
subject=$1
## analysisdirectory
dir=$2
## name of the anatomical scan
anat=$3
## name of anat directory
anat_dir_name=$4
## if use sanlm denoised anat
sanlm_denoised=$5
# if multiple scans
num_scans=$6
## if use g-cut
gcut=$7
## directory setup
CCSDIR=$8
anat_dir=${dir}/${subject}/${anat_dir_name}
SUBJECTS_DIR=${dir} #FREESURFER SETUP

if [ $# -lt 8 ];
then
        echo -e "\033[47;35m Usage: $0 subject analysis_dir anat_name anat_dir_name sanlm_denoised num_scans gcut ccs_dir \033[0m"
        exit
fi

echo --------------------------------------
echo !!!! PREPROCESSING ANATOMICAL SCAN!!!!
echo --------------------------------------

cwd=$( pwd ) ; cd ${anat_dir}
#bet_thr_tight=0.3 ; bet_thr_loose=0.1

## 1. FS stage-1
echo "Preparing data for ${sub} in freesurfer ..."
mkdir -p ${SUBJECTS_DIR}/${subject}/mri/orig
if [[ "${sanlm_denoised}" = "true" ]]
then

                mri_convert --in_type nii ${anat}_sanlm.nii.gz ${SUBJECTS_DIR}/${subject}/mri/orig/001.mgz

else

                mri_convert --in_type nii ${anat}.nii.gz ${SUBJECTS_DIR}/${subject}/mri/orig/001.mgz

fi
echo "Auto reconstruction stage in Freesurfer (Take half hour ...)"
if [ ${gcut} = 'true' ]; then
        recon-all -s ${subject} -autorecon1 -notal-check -clean-bm -gcut -no-isrunning -noappend
else
        recon-all -s ${subject} -autorecon1 -notal-check -clean-bm -no-isrunning -noappend
fi

## Do other processing in VCHECK directory
mkdir -p vcheck ; cd vcheck
echo "Preparing extracted brain for FSL registration ..."
mri_convert -it mgz ${SUBJECTS_DIR}/${subject}/mri/brainmask.mgz -ot nii brainmask.nii.gz
mri_convert -it mgz ${SUBJECTS_DIR}/${subject}/mri/T1.mgz -ot nii T1.nii.gz

## 2. Reorient to fsl-friendly space
echo "Reorienting ${subject} anatomical"
rm -f brain_fs.nii.gz
3dresample -orient RPI -inset brainmask.nii.gz -prefix brain_fs.nii.gz
fslmaths brain_fs.nii.gz -abs -bin brain_fs_mask.nii.gz
rm -f head_fs.nii.gz
3dresample -orient RPI -inset T1.nii.gz -prefix head_fs.nii.gz
rm -rf brainmask.nii.gz ;
for (( n=1; n <= ${num_scans}; n++ ))
do
        rm -f ${SUBJECTS_DIR}/${subject}/mri/orig/00${n}.mgz
done

## 3. Final BET
echo "Simply register the T1 image to the MNI152 standard space ..."
flirt -in head_fs.nii.gz -ref ${FSLDIR}/data/standard/MNI152_T1_1mm.nii.gz -out tmp_head_fs2standard.nii.gz -omat tmp_head_fs2standard.mat -bins 256 -cost corratio -searchrx -90 90 -searchry -90 90 -searchrz -90 90 -dof 12  -interp trilinear
convert_xfm -omat tmp_standard2head_fs.mat -inverse tmp_head_fs2standard.mat
echo "Perform a tight brain extraction ..."
bet tmp_head_fs2standard.nii.gz tmp.nii.gz -f ${bet_thr_tight} -m
fslmaths tmp_mask.nii.gz -mas ${CCSDIR}/templates/MNI152_T1_1mm_first_brain_mask.nii.gz tmp_mask.nii.gz
flirt -in tmp_mask.nii.gz -applyxfm -init tmp_standard2head_fs.mat -out brain_fsl_mask_tight.nii.gz -paddingsize 0.0 -interp nearestneighbour -ref head_fs.nii.gz
fslmaths brain_fs_mask.nii.gz -add brain_fsl_mask_tight.nii.gz -bin brain_mask_tight.nii.gz
fslmaths head_fs.nii.gz -mas brain_fsl_mask_tight.nii.gz brain_fsl_tight.nii.gz
fslmaths head_fs.nii.gz -mas brain_mask_tight.nii.gz brain_tight.nii.gz
rm -f tmp.nii.gz
3dresample -master T1.nii.gz -inset brain_tight.nii.gz -prefix tmp.nii.gz
mri_convert --in_type nii tmp.nii.gz ${SUBJECTS_DIR}/${subject}/mri/brain_tight.mgz
mri_mask ${SUBJECTS_DIR}/${subject}/mri/T1.mgz ${SUBJECTS_DIR}/${subject}/mri/brain_tight.mgz ${SUBJECTS_DIR}/${subject}/mri/brainmask.tight.mgz
echo "Perform a loose brain extraction ..."
bet tmp_head_fs2standard.nii.gz tmp.nii.gz -f ${bet_thr_loose} -m
fslmaths tmp_mask.nii.gz -mas ${CCSDIR}/templates/MNI152_T1_1mm_first_brain_mask.nii.gz tmp_mask.nii.gz
flirt -in tmp_mask.nii.gz -applyxfm -init tmp_standard2head_fs.mat -out brain_fsl_mask_loose.nii.gz -paddingsize 0.0 -interp nearestneighbour -ref head_fs.nii.gz
fslmaths brain_fs_mask.nii.gz -mul brain_fsl_mask_loose.nii.gz -bin brain_mask_loose.nii.gz
fslmaths head_fs.nii.gz -mas brain_fsl_mask_loose.nii.gz brain_fsl_loose.nii.gz
fslmaths head_fs.nii.gz -mas brain_mask_loose.nii.gz brain_loose.nii.gz
rm -f tmp.nii.gz
3dresample -master T1.nii.gz -inset brain_loose.nii.gz -prefix tmp.nii.gz
mri_convert --in_type nii tmp.nii.gz ${SUBJECTS_DIR}/${subject}/mri/brain_loose.mgz
mri_mask ${SUBJECTS_DIR}/${subject}/mri/T1.mgz ${SUBJECTS_DIR}/${subject}/mri/brain_loose.mgz ${SUBJECTS_DIR}/${subject}/mri/brainmask.loose.mgz
## 4. Quality check
rm -f tmp* T1.nii.gz
overlay 1 1 head_fs.nii.gz -a brain_fs_mask.nii.gz 1 1 rendered_mask.nii.gz
#FS BET
slicer rendered_mask -S 10 1200 skull_fs_strip.png
title=${subject}.ccs.anat.fs.skullstrip
convert -font helvetica -fill white -pointsize 36 -draw "text 30,50 '$title'" skull_fs_strip.png skull_fs_strip.png
#FS/FSL tight BET
rm -f rendered_mask.nii.gz
overlay 1 1 head_fs.nii.gz -a brain_mask_tight.nii.gz 1 1 rendered_mask.nii.gz
slicer rendered_mask -S 10 1200 skull_tight_strip.png
title=${subject}.ccs.anat.skullstrip
convert -font helvetica -fill white -pointsize 36 -draw "text 30,50 '$title'" skull_tight_strip.png skull_tight_strip.png
rm -f rendered_mask.nii.gz
fslmaths brain_fs_mask.nii.gz -sub brain_mask_tight.nii.gz -abs -bin diff_mask_tight.nii.gz
overlay 1 1 head_fs.nii.gz -a diff_mask_tight.nii.gz 1 1 rendered_mask.nii.gz
slicer rendered_mask -S 10 1200 skull_tight_strip_diff.png
title=${subject}.ccs.anat.skullstrip.diff
convert -font helvetica -fill white -pointsize 36 -draw "text 30,50 '$title'" skull_tight_strip_diff.png skull_tight_strip_diff.png
rm -f rendered_mask.nii.gz
#FS/FSL loose BET
rm -f rendered_mask.nii.gz
overlay 1 1 head_fs.nii.gz -a brain_mask_loose.nii.gz 1 1 rendered_mask.nii.gz
slicer rendered_mask -S 10 1200 skull_loose_strip.png
title=${subject}.ccs.anat.skullstrip
convert -font helvetica -fill white -pointsize 36 -draw "text 30,50 '$title'" skull_loose_strip.png skull_loose_strip.png
rm -f rendered_mask.nii.gz
fslmaths brain_fs_mask.nii.gz -sub brain_mask_loose.nii.gz -abs -bin diff_mask_loose.nii.gz
overlay 1 1 head_fs.nii.gz -a diff_mask_loose.nii.gz 1 1 rendered_mask.nii.gz
slicer rendered_mask -S 10 1200 skull_loose_strip_diff.png
title=${subject}.ccs.anat.skullstrip.diff
convert -font helvetica -fill white -pointsize 36 -draw "text 30,50 '$title'" skull_loose_strip_diff.png skull_loose_strip_diff.png
rm -f rendered_mask.nii.gz

cd ${cwd}




问题:

如果取消&符号,会一个一个的进行数据。但是处理加上&之后,处理到蓝色地方就不进行下面处理了。

想着是使用&进行批处理,如果使用&不对的话,麻烦各位大神告诉一下,怎么使用多核进行批处理。

谢谢各位大神
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP