219-当别人扔给你一堆文件,如何优雅地运行?

刘小泽写于2020.12.03 这次的内容很简单,重点是代码部分,实际是继续强化使用循环批处理的思想

举个例子

最近拿到别人给的一堆数据,他想要做TSS附近的信号分布

image-20201207145536960

这里,程序运行并不难,考验的是如何能够快速高效美观地运行并生成结果

我希望每个样本都有一个自己的目录

上面基本上每个样本都有三个处理,分别标注了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目录中,每个样本的数据也都各自放在了一起

image-20201207145703685

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

image-20201203171332583

Yunze Liu
Yunze Liu
Bioinformatics Sharer

Co-founder of Bioinfoplanet(生信星球)

Next
Previous

Related