bedtools核心用法详解 | Venn | unique | share
2023年03月20日
快速取类似venn的unique和share peaks
1 2 3 4 | module load bedtools2-2.27.1- gcc -5.4.0-iouh4nk bedtools intersect -a HDAC1.merged.narrowPeak -b HDAC2.merged.narrowPeak -wo > HDAC1_2.shared.bed bedtools intersect -a HDAC1.merged.narrowPeak -b HDAC2.merged.narrowPeak -wo - v > HDAC1. uniq .bed bedtools intersect -b HDAC1.merged.narrowPeak -a HDAC2.merged.narrowPeak -wo - v > HDAC2. uniq .bed |
为什么不得不用bedtools?
- 速度,当数据到达百万级以上,R和C的速度差别就非常明显了
- 专业,但凡涉及到region、peak的处理,bedtools都可以胜任
目录
bed文件基本处理:导出,排序
用一个query region去overlap另一个database region,并取得属性
bed文件基本处理:导出,排序
把R里面的region导出到bed文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | chr <- unlist(lapply(tmp$frag2, function (x) { strsplit(x, split = ":|-" )[[1]][1] })) start <- unlist(lapply(tmp$frag2, function (x) { strsplit(x, split = ":|-" )[[1]][2] })) end <- unlist(lapply(tmp$frag2, function (x) { strsplit(x, split = ":|-" )[[1]][3] })) tmp.bed <- data.frame(chr=chr, start=start, end=end, rsid=current.all.LD.all$RS_Number) write.table(tmp.bed, file = "cHi-C/tmp.input.bed" , row.names = F, col.names = F, quote = F, sep = "\t" ) |
基本安装
1 | conda install -c bioconda bedtools |
排序,构建一个chr.list文件
human人类的基因组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | chr1 chr2 chr3 chr4 chr5 chr6 chr7 chr8 chr9 chr10 chr11 chr12 chr13 chr14 chr15 chr16 chr17 chr18 chr19 chr20 chr21 chr22 chrX chrY |
mouse小鼠的基因组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | chr1 chr2 chr3 chr4 chr5 chr6 chr7 chr8 chr9 chr10 chr11 chr12 chr13 chr14 chr15 chr16 chr17 chr18 chr19 chrMT chrX chrY |
手动导出scATAC的peak,这里的不是fragment,而是peak,没有意义的瞎玩。
1 2 3 4 5 6 | cat *fragments.tsv > all.fragments.tsv only replace the first one sed -e 's/\:/\t/' -e 's/-/\t/' all.fragments.tsv > fragments.all.tsv cat fragments.all.tsv | bedtools sort -faidx mouse.chr.list > fragments. sort .tsv bgzip fragments. sort .tsv tabix -p bed fragments. sort .tsv.gz |
然后sort,不同版本命令略微有差异
1 | cat capture_HiC.curated.bed | bedtools sort -faidx chr.list > capture_HiC.curated.sorted.bed |
1 | cat tmp.input.bed | bedtools sort -faidx chr.list > tmp.input.sorted.bed |
用一个query region去overlap另一个database region,并取得属性
1 | bedtools intersect -a tmp.input.sorted.bed -b capture_HiC.curated.sorted.bed -wo > tmp.output.bed |
这部分比较细节,需要仔细参考教程:https://bedtools.readthedocs.io/en/latest/content/tools/intersect.html
-a query bed,比如SNP的位置
-b database bed,比如capture Hi-c的位置
-wo 如果有overlap,则原样输出-a和-b的文件信息
如果用R的条件规则去判断,估计要花10倍以上的时间。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)