生信软件13 - 基于sambamba 窗口reads计数和平均覆盖度统计

2024-03-20 12:36

本文主要是介绍生信软件13 - 基于sambamba 窗口reads计数和平均覆盖度统计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Sambamba是一个高性能,高度并行,健壮和快速的工具(和库),用D编程语言编写,用于处理SAM和BAM文件。与samtools相比,其优势在于并行BAM读和写。

conda安装

conda install sambamba -y# github: https://github.com/biod/sambamba

基本用法

# 创建.bai index
samtools index sample.bam# 计算窗口reads数和平均覆盖度
sambamba depth window -w 1000 sample.sorted.bam > /path/sample.bam_read_depths.txt

统计结果

窗口reads计数的Python封装

参数输入:bam文件绝对路径

调用命令

python reads_depth.py -b /path/Sample.sorted.bam

主程序

# reads_depth.py
import os
import optparse
from pathlib import Pathclass ReadsDepth(object):def __init__(self, bam_path: str, window_size: int) -> None:path_obj = Path(bam_path)self.result_dir_path = path_obj.parentself.bam_path = bam_pathself.window_size = window_sizeself.sample_name = str(path_obj.stem).split('.')[0]self.output_path = os.path.join(self.result_dir_path, self.sample_name + '.bam_reads_depths.txt')self.bam_index()self.reads_depth()def bam_index(self):if not os.path.exists(self.bam_path + '.bai'):os.system("samtools index {}".format(self.bam_path))def reads_depth(self):run_status = os.system("sambamba depth window -w {0} {1} > {2}".format(self.window_size, self.bam_path, self.output_path))if __name__ == '__main__':parser = optparse.OptionParser(usage='"%prog"', version="%prog V1.0")parser.add_option("-b", "--bam-path", dest="bam_path", type=str, help="")parser.add_option("-w", "--window-size", dest="window_size", type=int, default=1000, help="bp")options, args = parser.parse_args()reads_depth = ReadsDepth(bam_path=options.bam_path, window_size=options.window_size)

生信软件文章推荐

生信软件1 - 测序下机文件比对结果可视化工具 visNano

生信软件2 - 下游比对数据的统计工具 picard

生信软件3 - mapping比对bam文件质量评估工具 qualimap

生信软件4 - 拷贝数变异CNV分析软件 WisecondorX

生信软件5 - RIdeogram包绘制染色体密度图

生信软件6 - bcftools查找指定区域的变异位点信息

生信软件7 - 多线程并行运行Linux效率工具Parallel

生信软件8 - bedtools进行窗口划分、窗口GC含量、窗口测序深度和窗口SNP统计

生信软件9 - 多公共数据库数据下载软件Kingfisher

生信软件10 - DNA/RNA/蛋白多序列比对图R包ggmsa

生信软件11 - 基于ACMG的CNV注释工具ClassifyCNV

生信软件12 - 基于Symbol和ENTREZID查询基因注释的R包(easyConvert )

更多内容请关注公众号【生信与基因组学】,定期更新生信算法和编程、基因组学、统计学、分子生物学、临床检测和深度学习等内容。

这篇关于生信软件13 - 基于sambamba 窗口reads计数和平均覆盖度统计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/829459

相关文章

opencv实现像素统计的示例代码

《opencv实现像素统计的示例代码》本文介绍了OpenCV中统计图像像素信息的常用方法和函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 统计像素值的基本信息2. 统计像素值的直方图3. 统计像素值的总和4. 统计非零像素的数量

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

基于Redis有序集合实现滑动窗口限流的步骤

《基于Redis有序集合实现滑动窗口限流的步骤》滑动窗口算法是一种基于时间窗口的限流算法,通过动态地滑动窗口,可以动态调整限流的速率,Redis有序集合可以用来实现滑动窗口限流,本文介绍基于Redis... 滑动窗口算法是一种基于时间窗口的限流算法,它将时间划分为若干个固定大小的窗口,每个窗口内记录了该时间

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0