AnLau的个人博客分享 http://blog.sciencenet.cn/u/AnLau

博文

seqtk——给测序数据瘦身

已有 11027 次阅读 2017-1-11 19:27 |个人分类:软件|系统分类:科研笔记

在获得转录组测序数据后发现数据量太大了,例如一个人类的样本通常6G数据量就够分析使用,但下机的原始数据有10G,这该如何办呢?自己截取数据时如何保证随机性?双端测序的数据如何统一起来?

上述的需求,可以通过seqtk这个软件实现,例如下列代码:    

   seqtk sample -s seed_num input_file.R1 reads_num

   seqtk sample -s seed_num input_file.R2 reads_num

注意:

1.seed_num随便写,10或者100什么的都可以,但前后需要统一。这个只是告诉seqtk提取R2的时候和R1一致。

2.seqtk是按照reads数提取的,fastq文件4行是一条reads(不清楚fastq格式的话,可以去百度,很多介绍)。

3.seqtk可以直接处理.gz文件

来一条实践使用的代码,

seqtk sample -s 10 Sample_1.R1.fastq.gz 10000 > Sample_1_1w.R1.fastq

seqtk sample -s 10 Sample_1.R2.fastq.gz 10000 > Sample_1_1w.R2.fastq


数据量如何换算???好吧,看下面的公式:

   reads_num*reads_length*2


再进一步——

写一个简单脚本,可以实现同时处理多个样本,目标数据量为aim,而且每次提取数据时有上下0.25G的浮动(假设测序读长为125bp)。

首先,产生一个随机数 rdn=`shuf -i 1-2000000 -n1`

然后,生成reads_num  aim*4000000+rdn-1000000

然后seqtk sample -s seed_num input_file rn。


代码中 4000000、2000000和1000000 是如何来的?

1GB=1000000000bp

一条reads是125bp,双端数据就是250bp

所以aim*4000000就是你想要产生的目标数据量

rdn-1000000的范围是[-100000,1000000],对应的GB数就是[-0.25,0.25]


自己想想,如果是X-TEN下机是数据,读长为150bp,该如何处理?


aim*3333333+rdn-1000000  ------------->  [-0.3,0.3]




https://blog.sciencenet.cn/blog-3297413-1026950.html


收藏 IP: 180.173.183.*| 热度|

1 王盼乔

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-22 10:29

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部