对 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,…...
软考:中级软件设计师:程序语言基础:表达式,标准分类,法律法规,程序语言特点,函数传值传址
软考:中级软件设计师:程序语言基础:表达式 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学习和总结,以应对未来更多的可能性 关于互联网大厂的笔试面试,都…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
用递归算法解锁「子集」问题 —— LeetCode 78题解析
文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...
【阅读笔记】MemOS: 大语言模型内存增强生成操作系统
核心速览 研究背景 研究问题:这篇文章要解决的问题是当前大型语言模型(LLMs)在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色,但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成(RA…...
智慧城市项目总体建设方案(Word700页+)
1 背景、现状和必要性 1.1 背景 1.1.1 立项背景情况 1.1.2 立项依据 1.2 现状 1.2.1 党建体系运行现状 1.2.2 政务体系运行现状 1.2.3 社会治理运行现状 1.2.4 安全监管体系现状 1.2.5 环保体系运行现状 1.2.6 城建体系运行现状 1.2.7 社区体系运行现状 1.2.8 园区…...
Flask+LayUI开发手记(八):通用封面缩略图上传实现
前一节做了头像上传的程序,应该说,这个程序编写和操作都相当繁琐,实际上,头像这种缩略图在很多功能中都会用到,屏幕界面有限,绝不会给那么大空间摆开那么大一个界面,更可能的处理,就…...
