对 fastq 和 bam 进行 downsample
对 fastq 和 bam 进行 downsample
- 一、Fastq
- 1、seqtk
- 二、Bam
- 1、samtools
- 2、Picard DownsampleSam
- 3、比较
- 并行采样模板
一、Fastq
1、seqtk
Seqtk 是一种快速轻量级的工具,用于处理 FASTA 或 FASTQ 格式的序列。 它可以无缝解析 FASTA 和 FASTQ 文件,这些文件也可以通过 gzip 进行压缩。其中的seqtk sample可以用来从fastq中采样。具体用法如下:
#对于pair-end数据需保证R1/R2的随机种子相同
seqtk sample -s 100 R1.fq.gz 0.5 > R1.0_5.fq.gz
seqtk sample -s 100 R2.fq.gz 0.5 > R2.0_5.fq.gz
#!/bin/bash
set -e
input=$1
output=$2
frac=$3 # 0.2seqtk sample -s 1011 ${input} ${frac} > ${output}
可以指定一个整数提取一定数目的reads,也可以指定一个小数提取一定比例的reads。
二、Bam
1、samtools
samtools view提供了一个参数可以用于downsample,方法如下:
samtools view -s seed.freq input.bam -b -o downsample.bam
其中seed表示随机种子int类型的整数;freq为downsample的频率,float类型的小数。100.5表示以随机种子为100,取出50%的数据。
2、Picard DownsampleSam
该工具对SAM或BAM文件应用下采样算法。该算法中Pair-end的reads要么都保留,要么都丢弃。标记为non-primary的reads pair取将全部丢弃。每次读取被保留的概率为P,因此,使用完全相同的输入以相同的顺序和RANDOM_SEED的相同值执行的运行将产生相同的结果。
其使用方法与常规Picard的方法一致,Picard的一些公共参数该算法也包括。该算法主要有以下参数:
java -jar picard.jar DownsampleSam \I=input.bam \O=downsampled.bam \P=0.5 \R=100 \ACCURACY=0.00001 \STRATEGY=ConstantMemory
–INPUT/-I, 指定输入bam文件
–OUTPUT/-O, 指定输出bam文件
–ACCURACY/-A, 算法的精度,误差尽可能保证在该精度范围,默认1e-4
–RANDOM_SEED/-R, 设定随机种子,默认1
–PROBABILITY/-P, downsample的比例,默认1.0
–STRATEGY/-S, 采用策略,默认ConstantMemory
使用STRATEGY选项可以支持许多不同的下采样策略:
- ConstantMemory:使用哈希投影策略在固定内存中运行。适用大量的输入。准确性会随着输出数据的降低而降低。
- HighAccuracy:尽可能的保证准确性,即做到降采样的比例接近约定的比例。因此,该策略需要与输入的数据流中模板名称数量成比例的内存,因此在运行大型输入文件时将需要大量内存。适用于较小的数据输入
- Chained:是一个折衷的策略,综合了ConstantMemory和HighAccuracy的一些优点。使用 ConstantMemory策略downsample到大约期望的比例,然后使用HighAccuracy策略精确完成。在一次传递中工作,将提供接近(但往往不如)HighAccuracy的精度,同时需要与从ConstantMemory策略到HighAccuracy策略发出的读取集成比例的内存。当对大的输入进行小比例的下采样时(例如,对数亿次读取进行下采样,只保留2%),效果很好。当输入包含>= 50,000个reads-pair时,应该有99.9%的准确率。适用于从大数据中取较低比例的数据。
3.两种方式的比较
我们测试了两种从bam中downsample的的方法,从相同的bam出发,设定不同的梯度和随机种子进行测试。
3、比较
首先计算了每个梯度的数据量与理论上的数据量。两种方法得到的数据与理论值具有很好的一致性。但是对于相同频率不同随机种子之间得到的数据量会存在细微的差距。
其次,比较了两个重复之间的一致性,发现设置相同的随机种子和频率时,得到的两个文件完全一致,MD5检验值相同。
最后,比较了时间上的差异,采用相同的计算资源,Picard要比samtools至少节约80%的时间。
并行采样模板
#!/bin/bash
set -e
input_dir=$1
out_dir=$2
frac=$3 # 0.5i=1
for fq1 in `ls ${input_dir} |grep R1.fastq.gz`
dofastq_name=`echo $fq1 |sed 's/.R1.fastq.gz//' `fq2=`echo $fq1 | sed 's/R1/R2/' `#echo $fq1 $fq2seqtk sample -s 1011 ${input_dir}/${fq1} ${frac} |gzip > ${out_dir}/${fastq_name}.R1.fastq.gz &seqtk sample -s 1011 ${input_dir}/${fq2} ${frac} |gzip > ${out_dir}/${fastq_name}.R2.fastq.gz &n=$[ i % 5 ]if [ $n -eq 0 ]; thenwaitfii=$[ i + 1 ]wait
done
参考
https://www.cnblogs.com/Sunny-King/p/Bioinformatics-Downsample.html
相关文章:
对 fastq 和 bam 进行 downsample
对 fastq 和 bam 进行 downsample 一、Fastq1、seqtk二、Bam1、samtools2、Picard DownsampleSam3、比较 并行采样模板 一、Fastq 1、seqtk Seqtk 是一种快速轻量级的工具,用于处理 FASTA 或 FASTQ 格式的序列。 它可以无缝解析 FASTA 和 FASTQ 文件,这…...
网络爬虫:如何有效的检测分布式爬虫
分布式爬虫是一种高效的爬虫方式,它可以将爬虫任务分配给多个节点同时执行,从而加快爬虫的速度。然而,分布式爬虫也容易被目标网站识别为恶意行为,从而导致IP被封禁。那么,如何有效地检测分布式爬虫呢?本文…...
elementUI可拖拉宽度抽屉
1,需求: 在elementUI的抽屉基础上,添加可拖动侧边栏宽度的功能,实现效果如下: 2,在原组件上添加自定义命令 <el-drawer v-drawerDrag"left" :visible.sync"drawerVisible" direc…...
OpenPCDet系列 | 8.4 nuScenes数据集数据调用和数据分析
文章目录 1. 对数据集遍历1.1 统计mini版本的nuScenes各模态数据和关键帧的数量1.2 单独遍历lidar模态数据1.3 遍历scene统计数据1.4 遍历sample统计数据1.5 遍历sample_data统计数据1.6 数据集的底层结构2. 对数据集可视化2.1 render_sample和render_sample_data2.2 nusc.rend…...
WeiTitlePopupWindow
目录 1 WeiTitlePopupWindow 1.1 // 设置可点击 1.2 // 设置弹窗外可点击 1.3 // 设置弹窗宽度和高度 1.4 // 设置弹窗布局界面 WeiTitlePopupWindow // 设置可点击setTouchable(true);...
qemu/kvm学习笔记
qemu/kvm架构 cpu虚拟化的示例 Reference: kvmtest.c [LWN.net] 主要步骤: QEMU通过/dev/kvm设备文件发起KVM_CREATE_VM ioctl,请求KVM创建一个虚拟机。KVM创建虚拟机相应的结构体,并为QEMU返回一个虚拟机文件描述符QEMU通过虚拟机文件描述…...
android 车载widget小部件部分详细源码实战开发-千里马车载车机framework开发实战课程
官网参考链接:https://developer.android.google.cn/develop/ui/views/appwidgets/overview 1、什么是小部件 App widgets are miniature application views that can be embedded in other applications (such as the home screen) and receive periodic updates…...
如何使用CSS画一个三角形
原理:其实就是规定元素的四个边框颜色及边框宽度,将元素宽高设置为0。如果要哪个方向的三角形,将对应其他三个方向的边框宽和颜色设置为0和透明transparent即可 1.元素设置边框,宽高,背景色 <style>.border {w…...
第15章_锁: (表级锁、页级锁、行锁、悲观锁、乐观锁、全局锁、死锁)
3.2 从数据操作的粒度划分:表级锁、页级锁、行锁 为了提高数据库并发度,每次锁定的数据范围越小越好,理论上每次只锁定当前操作的数据的方案会得到最大的并发度,但管理锁是很耗资源(涉及获取、检查、释放锁等动作)。因…...
python音频转文字调用baidu
python音频转文字调用的是百度智能云的接口,因业务需求会涉及比较多数字,所以这里做了数字的处理,可根据自己的需求修改。 from flask import Flask, request, jsonify import requestsfrom flask_limiter import Limiterapp Flask(__name_…...
靶场溯源第二题
关卡描述:1. 网站后台登陆地址是多少?(相对路径) 首先这种确定的网站访问的都是http或者https协议,搜索http看看。关于http的就这两个信息,然后172.16.60.199出现最多,先过滤这个ip看看 这个很…...
mysql 的增删改查以及模糊查询、字符集语句的使用
一、mysql启动与登陆(windows下的mysql操作) 1.启动mysql服务 net start mysql81 2.登陆mysql mysql -uroot -p 3.查看所有数据库 show databases; 二、模糊查询(like) 1. _代表查询单个 2.%代表查询多个 3.查找所有含有schema的数据库;…...
Python Django框架中文教程:学习简单、灵活、高效的Web应用程序框架
概述: Python Django是一种流行的Web应用程序框架,被广泛应用于开发高效、可扩展的网站和Web应用程序。Django以其简单、灵活和高效而受到开发者们的青睐。它提供了强大的工具和功能,使开发过程更加容易和高效。 Django的主要目标是帮助开发者快速构建…...
Docker认识即安装
Docker及相关概念 Docker和虚拟机方式的区别:虚拟机技术是虚拟出一套硬件后,在其上运行一个完整的操作系统,在该系统上在运行所需应用进程;而容器内的应用进程是直接运行于宿主的内核,容器内没有自己的内核࿰…...
chrome 谷歌浏览器 导出插件拓展和导入插件拓展
给同事部署 微软 RPA时,需要用到对应的chrome浏览器插件;谷歌浏览器没有外网是不能直接下载拓展弄了半小时后才弄好,竟发现没有现成的教程,遂补充; 如何打包导出 谷歌浏览器 地址栏敲 chrome://extensions/在对应的地…...
fastjson漏洞批量检测工具
JsonExp 简介 版本:1.3.5 1. 根据现有payload,检测目标是否存在fastjson或jackson漏洞(工具仅用于检测漏洞)2. 若存在漏洞,可根据对应payload进行后渗透利用3. 若出现新的漏洞时,可将最新的payload新增至…...
Vue进阶(六十七)页面刷新路由传参丢失问题分析及解决
文章目录 一、前言二、问题排查三、延伸阅读3.1 Apache服务器access_log日志3.2 浏览器的常见User Agent 各字段的解释 一、前言 问题描述:Vue项目上线后,在IE浏览器上,从A页面跳转至B页面,B页面通过data中接收来自A页面的参数信…...
阿里云ubuntu服务器搭建ftp服务器
阿里云ubuntu服务器搭建ftp服务器 服务器环境安装步骤一.创建用户二.安装 vsftp三 配置vsftp四.配置阿里云安全组 服务器环境 阿里云上的云服务器,操作系统为 ubuntu20.04。 安装步骤 一.创建用户 为什么需要创建用户? 这里的用户,指的是…...
03 卷积操作图片
一、均值滤波 # 卷积操作 # 输入图片. input, 必须是4维tensor(图片数量, 图片高度, 图片的宽度, 图片的通道数) # filters, 卷积核, 必须是4维的tensor(卷积核的高度和宽度, 输入图片的通道数, 卷积核的个数) # strides, 步长, 卷积核在图片的各个维度上的移动步长, (1, 1, 1,…...
软考:中级软件设计师:程序语言基础:表达式,标准分类,法律法规,程序语言特点,函数传值传址
软考:中级软件设计师:程序语言基础:表达式 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
