在分析数据时,经常会有许多机械重复的命令带入,作为一个半路出家的程序猿,我曾经对这种工作束手无策。不像一个熟手那样举重若轻的分析,感觉自己的生信分析完全是个体力活。为了打开这样的局面,我开始学习如何批量处理这些文件名格式差不多的文件。
work_dir=/home/genomics/data/rice/variantcalling
reference=/home/genomics/data/rice/ref-database/*****
bwa_dir=$work_dir/resourses/apps/bwa-0.7.11
picard_dir=$work_dir/resourses/apps/picard-tools-1.119
for i in *sam
do
echo $i
echo ${i%.*}.sorted.bam
nohup java -Xmx60g -jar $picard_dir/AddOrReplaceReadGroups.jar \
I=$i \
O=${i%.*}.sorted.bam \
SORT_ORDER=coordinate \
CREATE_INDEX=true \
RGID=${i%.*} \
RGLB="pe" \
RGPU="Hiseq-2000" \
RGSM=${i%.*} \
RGCN="African rice resequenced" \
RGDS=osativa \
RGPL=illumina \
VALIDATION_STRINGENCY=SILENT 1>${i%.*}.AddOrReplaceReadGroups.log 2>&1 &
done
这是一个批量处理sam2bam的脚本,可以遍历work_dir中的所有符合正则表达式
*sam
的文件名,可以解决重复机械的命令输入。最后注意log文件一定要加上,这是nohup的特性,nohup会在后面的博文中找资料做详细解释。
用这种方法就可以批量处理文件名格式类似的文件。
另外我发现他的遍历是字符顺序而不是数字顺序。
这也是我第一篇博文,撒花!!!!!!!!!!