219-当别人扔给你一堆文件,如何优雅地运行?
刘小泽写于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配置文件的好处有两个:一是方便循环处理,二是可以并行计算(我们只需要提取前几个或者后几个样本同时单独运行即可)
现在想运行第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目录中,每个样本的数据也都各自放在了一起
再结合上一次的推送**《 从草图到准发表级绘图要多久?》**进行排版,就得到了: