对于ATAC_seq, chip_seq等蛋白富集型实验而言,设置生物学重复是非常有必要的,通过IDR软件合并生物学重复的peak calling结果,可以得到更加稳定,更具代表性的peak。生物学重复的必要性不言而喻,但是对于某些特殊样本,确实没有生物学重复该怎么办呢? 此时可以参考Encode的ATAC分析流程,从数据层面来构建一个’假’的生物学重复。基本思想是随机抽样,从总体中随机抽取一定比例的reads。比如随机抽取50%的reads, 抽取两次就可以生成两个生物学重复,然后进行下游分析。具体的实现过程如下,需要借助两个linux下的工具 1. shuf该命令用于随机乱序显示文件中的内容,比如一个文件中的内容如下 cat a.txt 通过shuf命令可以打乱顺序 shuf a.txt 需要注意的是,默认情况下,由于是随机打乱,每次运行结果都不相同 shuf a.txt 为了保证多次运行结果的一致性,对于随机抽样的软件而言,都有一个随机数发生器的概念,其取值相同时,可以保证每次抽样的结果一致。在shuf命令中,通过以下方式设置随机数发生器 shuf --random-source seed.txt a.txt
2. split该命令将一个大的文件分割成多个小文件,可以按照行数进行拆分, 基本用法如下 split -l 5 a.txt
cat xaa cat xab 通过管道将上述两个命令组合起来,就可以实现随机抽取,生成pseudo replicates的过程,具体的用法可以参考Encode的流程
核心代码如下 cmd1 = 'zcat {} | shuf --random-source=<(openssl enc ' 提前计算好需要抽取的行数,通过shuf和split的组合,就可以构建出pseudo replicates。 ·end· |
|