技术笔记:samtools统计重测序数据深度depth、depth

简介: 技术笔记:samtools统计重测序数据深度depth、depth

测试数据链接:


链接:


提取码:nklh


--来自百度网盘超级会员V6的分享


背景知识:


将质控后的fastq文件比对到参考基因组之后,有可能会有部分染色体根本比对不上。 比如参考基因组中一共有10条染色体,结果fastq的reads仅比对到8条染色体,那么就是说有两条染色体压根就没有比对上。


用一个实际的测试数据来看一下:


这里准备了两个文件:一个参考基因组fasta文件,和一个按照一般流程将fastq的reads数据比对到参考基因组后生成的排序后的bam文件,利用这两个文件可以查看参考基因组一共有多少条染色体, fastq数据一共比对上多少条染色体。


统计参考基因组的染色体数目:


(base) 【b20223040323@admin1 test】$ ls


GCF_000005845.2_ASM584v2_genomic.fna SRR1770413.sorted.bam


(base) 【b20223040323@admin1 test】$ grep "^>" GCF_000005845.2_ASM584v2_genomic.fna ## 统计参考基因组的染色体数目





可见该参考基因组一共有三条染色体。


利用bam文件统计一共比对上多少条染色体:


(base) 【b20223040323@admin1 test】$ ls


GCF_000005845.2_ASM584v2_genomic.fna SRR1770413.sorted.bam


(base) 【b20223040323@admin1 test】$ samtools view SRR1770413.sorted.bam | cut -f 3 | uniq ## 利用bam文件统计一共比对上多少条染色体


chr1


chr2



可见一共比对上的染色体数有两条,也就是说chr3并没有比对上。


比较samtools计算测序深度时:depth、depth -a、depth -aa的区别。


001、首先先统计一下参考基因组中每一条染色体的长度,可以使用samtools软件实现:


(base) 【b20223040323@admin1 test】$ ls


GCF_000005845.2_ASM584v2_genomic.fna SRR1770413.sorted.bam


(base) 【b20223040323@admin1 test】$ samtools faidx GCF_000005845.2_ASM584v2_genomic.fna ### 统计每一条染色体的长度


(base) 【b20223040323@admin1 test】$ ls


GCF_000005845.2_ASM584v2_genomic.fna SRR1770413.sorted.bam


GCF_000005845.2_ASM584v2_genomic.fna.fai


(base) 【b20223040323@admin1 test】$ cat GCF_000005845.2_ASM584v2_genomic.fna.fai ## 查看,第二列是每一条染色体的长度


chr1 4641652 6 80 81


chr2 39862 4699685 80 81


chr3 398 4740052 80 81


可见chr1的长度为:4641652。。。。。


002、利用samtools的depth、depth -a、depth -aa分别对同一个bam文件进行测序深度统计


(base) 【b20223040323@admin1 test】$ ls


GCF_000005845.2_ASM584v2_genomic.fna SRR1770413.sorted.bam


GCF_000005845.2_ASM584v2_genomic.fna.fai


(base) 【b20223040323@admin1 test】$ samtools depth SRR1770413.sorted.bam > depth01.txt ## depth


(base) 【b20223040323@admin1 test】$ samtools depth -a SRR1770413.sorted.bam > depth02.txt ## depth -a


(base) 【b20223040323@admin1 test】$ samtools depth -aa SRR1770413.sorted.bam > depth03.txt ## depth -aa


(base) 【b20223040323@admin1 test】$ ls


depth01.txt depth03.txt GCF_000005845.2_ASM584v2_genomic.fna.fai


depth02.txt GCF_000005845.2_ASM584v2_genomic.fna SRR1770413.sorted.bam


(base) 【b20223040323@admin1 test】$ wc -l depth0 ## 统计生成的depth文件的行数,可见三个文件行数不一致


4652444 depth01.txt


4681514 depth02.txt


4681912 depth03.txt


14015870 总用量


003、samtools的depth参数统计的是比对到参考基因组的染色体上所有位点测序深度大于0的所有测序深度数据,用一下脚本简单验证:


(base) 【b20223040323@admin1 test】$ ls


depth01.txt depth03.txt GCF_000005845.2_ASM584v2_genomic.fna.fai


depth02.txt GCF_000005845.2_ASM584v2_genomic.fna SRR1770413.sorted.bam


(base) 【b20223040323@admin1 test】$ head -n 5 depth01.txt ## depth01.txt文件记录的是位点的测序深度,每行一个位点


chr1 1 12


chr1 2 13


chr1 3 14


chr1 4 15


chr1 5 15


(base) 【b20223040323@admin1 test】$ awk '{print $3}' depth01.txt | sort -n | head -n 3 ## 对第三列深度信息进行排序,可见最小深度为1


1


1


1


(base) 【b20223040323@admin1 test】$ awk '{print $3}' depth01.txt | sort -n | tail -n 3 ## 输出最大测序深度


509


510


510


可见 samtools depth参数输出测序深度的结果最小的测序深度为1.


004、samtools depth -a参数输出的结果为fastq比对到参考基因组的染色体上的所有位点的测序深度,即在depth参数输出结果的基础上,也输出测序深度为0的位点。可用如下脚本进行验证:


a、如果输出fastq数据比对到参考基因组的染色体上所有位点的测序深度, 那么depth02.txt的行数应该等于比对到染色体长度的总和,即chr1和chr2的总长度。


(base) 【b20223040323@admin1 test】$ ls


depth01.txt depth03.txt GCF_000005845.2_ASM584v2_genomic.fna.fai


depth02.txt GCF_000005845.2_ASM584v2_genomic.fna SRR1770413.sorted.bam


(base) 【b20223040323@admin1 test】$ wc -l depth02.txt


4681514 depth02.txt


(base) 【b20223040323@admin1 test】$ cat GCF_000005845.2_ASM584v2_genomic.fna.fai


chr1 4641652 6 80 81


chr2 39862 4699685 80 81


chr3 398 4740052 80 81


(base) 【b20223040323@admin1 test】$ awk 'NR <= 2 {sum += $2} END { print sum }' GCF_000005845.2_ASM584v2_genomic.fna.fai ##统计比对到的染色体的总长度


4681514


可以看到depth02.txt的行数等于比对到的染色体的总长度。


b、如果depth -a参数是在depth的基础上增加输出了测序深度为0的位点,那么depth02.txt 和 depth01.txt相比,相同的部分和depth01.txt完全一致, 不同的位点的测序深度都为0.


(base) 【b20223040323@admin1 test】$ ls


depth01.txt depth03.txt GCF_000005845.2_ASM584v2_genomic.fna.fai


depth02.txt GCF_000005845.2_ASM584v2_genomic.fna SRR1770413.sorted.bam


(base) 【b20223040323@admin1 test】$ sort depth01.txt | md5sum ## depth01.txt排序,并计算MD5


53c631aeb9024f330280bb3762310189 -


(base) 【b20223040323@admin1 test】$ cat depth01.txt depth02.txt | sort | uniq -d | md5sum ## 去depth01.txt和depth02.txt的交集并计算MD5


53c631aeb9024f330280bb3762310189 -


(base) 【b20223040323@admin1 test】$ cat depth01.txt depth01.txt depth02.txt | sort | uniq -u | awk '{print $3}' | uniq -c ## 查看depth02.txt中多处的行,并查看测序深度


29070 0


可以看到depth01.txt和depth02.txt中的重合部分和depth01.txt完全一致,同时depth02.txt中多出的部分的测序深度都为0.


005、samtools depth -aa参数输出fasta文件中所有染色体上的位点的测序深度,包括没有比对上的染色体的位点上的测序深度。


a、如果depth -aa输出fasta文件中所有染色体上的位点的测序深度,那么depth03.txt的行数等于fasta文件中所有染色体的总长度:


(base) //代码效果参考:http://www.jhylw.com.cn/484937183.html

【b20223040323@admin1 test】$ ls

depth01.txt depth03.txt GCF_000005845.2_ASM584v2_genomic.fna.fai


depth02.txt GCF_000005845.2_ASM584v2_genomic.fna SRR1770413.sorted.bam


(base) 【b20223040323@admin1 test】$ wc -l depth03.txt ## 统计行数


4681912 depth03.txt


(base) 【b20223040323@admin1 test】$ cat GCF_000005845.2_ASM584v2_genomic.fna.fai


chr1 4641652 6 80 81


chr2 39862 4699685 80 81


chr3 398 4740052 80 81


(base) 【b20223040323@admin1 test】$ awk '{sum += $2} END {print sum}' GCF_000005845.2_ASM584v2_genomic.fna.fai ## 统计所有染色体的总长度


4681912


可以看到depth03.txt的长度等于fasta文件中所有染色体的总长度。


b、depth03.txt和depth02.txt相比,如果多出的是没有比对上的染色体的总长度,那么depth03.txt比depth02.txt多出没有比对到的染色体的长度,且多出位点的测序深度均为0.


(base) 【b20223040323@admin1 test】$ ls


depth01.txt depth03.txt GCF_000005845.2_ASM584v2_genomic.fna.fai


depth02.txt GCF_000005845.2_ASM584v2_genomic.fna SRR1770413.sorted.bam


(base) 【b20223040323@admin1 test】$ echo "$(wc -l < depth03.txt) - $(wc -l < depth02.txt)" | bc ## 计算行数只差


398


(base) 【b20223040323@admin1 test】$ cat GCF_000005845.2_ASM584v2_genomic.fna.fai


chr1 4641652 6 80 81


chr2 39862 4699685 80 81


chr3 398 4740052 80 81


(base) 【b20223040323@admin1 test】$ cat depth02.txt depth02.txt depth03.txt | sort | uniq -u | awk '{print $3}' | uniq -c ## 输出depth03.txt相对于depth02.txt多出的位点的测序深度信息


398 0


c、depth03.txt 和 depth01.txt相对,多出额外的一条染色体的测序深度信息,且测序深度均为0.


(base) 【b20223040323@admin1 test】$ ls


depth01.txt depth03.txt GCF_000005845.2_ASM584v2_genomic.fna.fai


depth02.txt GCF_000005845.2_ASM584v2_genomic.fna SRR1770413.sorted.bam


(base) 【b20223040323@admin1 test】$ cut -f 1 depth01.txt | uniq ## 输出染色体


chr1


chr2


(base) 【b20223040323@admin1 test】$ cut -f 1 depth03.txt | uniq ## 输出染色体


chr1


chr2


chr3


(base) 【b20223040323@admin1 test】$ cat depth01.txt depth01.txt depth03.txt | sort | uniq -u | awk '{print $3}' | uniq -c ## 输出depth03.txt相对于depth01.txt额外的位点的深度信息


29468 0


可以看到depth03.txt先对于depth01.txt多出了一条染色体,且多出的位点的测序深度均为0.


小结:


samptools depth: 输出fastq数据比对到染色体的位点深度大于0的深度信息。


samtools depth -a:输出fastq数据比对到染色体的所有位点的测序深度信息,包含0深度位点。


samtools depth -aa:输出fasta文件中所有染色体上位点的深度信息,包含fastq数据没有比对到的染色体。

相关文章
|
2月前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到&quot;result.txt&quot;以供MATLAB显示图像分割效果。
|
2月前
|
计算机视觉 异构计算 Python
YOLOv8改进 | 进阶实战篇 | 利用YOLOv8进行视频划定区域目标统计计数
YOLOv8改进 | 进阶实战篇 | 利用YOLOv8进行视频划定区域目标统计计数
180 0
|
11月前
|
机器学习/深度学习 数据可视化 计算机视觉
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA(1)
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA
105 0
|
11月前
|
机器学习/深度学习 数据可视化 数据挖掘
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA(2)
0参数量 + 0训练,3D点云分析方法Point-NN刷新多项SOTA
223 0
|
机器学习/深度学习 算法
【数字预失真(DPD)】静态DPD设计扩展为自适应设计及评估两种自适应DPD设计:基于(最小均方)LMS算法、使用递归预测误差方法(RPEM)算法研究(Matlab&Simulink实现)
【数字预失真(DPD)】静态DPD设计扩展为自适应设计及评估两种自适应DPD设计:基于(最小均方)LMS算法、使用递归预测误差方法(RPEM)算法研究(Matlab&Simulink实现)
115 0
|
机器学习/深度学习 监控 搜索推荐
深度粗排模型的GMV优化实践:基于全空间-子空间联合建模的蒸馏校准模型
随着业务的不断发展,粗排模型在整个系统链路中变得越来越重要,能够显著提升线上效果。本文是对粗排模型优化的阶段性总结。
1375 0
深度粗排模型的GMV优化实践:基于全空间-子空间联合建模的蒸馏校准模型
|
机器学习/深度学习 编解码 人工智能
Faster RCNN超快版本来啦 | TinyDet用小于1GFLOPS实现30+AP,小目标炸裂(一)
Faster RCNN超快版本来啦 | TinyDet用小于1GFLOPS实现30+AP,小目标炸裂(一)
200 0
|
编解码 开发工具 计算机视觉
Faster RCNN超快版本来啦 | TinyDet用小于1GFLOPS实现30+AP,小目标炸裂(二)
Faster RCNN超快版本来啦 | TinyDet用小于1GFLOPS实现30+AP,小目标炸裂(二)
489 0
|
机器学习/深度学习 算法 数据可视化
ECCV 2022 | 在视觉Transformer上进行递归,不增参数,计算量还少
ECCV 2022 | 在视觉Transformer上进行递归,不增参数,计算量还少
|
机器学习/深度学习 数据可视化
CVPR2023 | 无需动态区域分割!多帧深度估计新进展:跨线索注意力机制提升动态区域精度
CVPR2023 | 无需动态区域分割!多帧深度估计新进展:跨线索注意力机制提升动态区域精度
319 0