当别人扔给你一堆文件,如何优雅地批处理?
测试开头



测试结尾
今天是生信星球陪你的第763天
大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~
就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~
这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!
豆豆写于2020.12.03
这次的内容很简单,重点是代码部分,实际是继续强化使用循环批处理的思想
举个例子
最近拿到别人给的一堆数据,他想要做TSS附近的信号分布

这里,程序运行并不难,考验的是如何能够快速高效美观地运行并生成结果
我希望每个样本都有一个自己的目录
上面基本上每个样本都有三个处理,分别标注了0、2、12,只有一个P样本还多了一个P1(这个先不管它,最后再看)
于是首先要拿到样本的名称
find ./ -name "*0.bw" | xargs -i basename {}|tr -d "0.bw">config
# 于是就是
# 27me
# A
# C
# EZH2
# H3
# ...
这样保存成config配置文件的好处有两个:一是方便循环处理,二是可以并行计算(比如将前6个做成一个bash单独提交,后几个做成一个bash再提交一次)
现在想运行第3-6个样本
sed -n '3,6 p' config| while read sample;do
# echo $sample
# 首先把bw文件都各自存放到对应目录中
if [ ! -d $sample ]
then mkdir -p $sample && mv ${sample}*bw $sample
fi
# echo "
computeMatrix reference-point --referencePoint TSS -b 2000 -a 2000 -R cluster1.bed cluster2.bed cluster3.bed cluster4.bed
-S ${sample}/${sample}0.bw ${sample}/${sample}2.bw ${sample}/${sample}12.bw
--skipZeros
-p 4
--missingDataAsZero
-o ${sample}/${sample}_rpkm_TSS.2k.gz
--blackListFileName mm10.merge.blacklist.bed
--outFileSortedRegions ${sample}/${sample}_rpkm_TSS.2k.bed
plotProfile -m ${sample}/${sample}_rpkm_TSS.2k.gz -out plot/${sample}_Profile.pdf
# "
done
这样,最后得到的图片都全部放在plot目录中,每个样本的数据也都各自放在了一起

再结合上一次的推送《从草图到准发表级绘图要多久?》进行排版,就得到了:

点击底部的“阅读原文”,获得更好的阅读体验哦😻
初学生信,很荣幸带你迈出第一步
🤓生信星球 🌎~ 一个不拽术语、通俗易懂的生信知识平台
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!