||
在获得转录组测序数据后发现数据量太大了,例如一个人类的样本通常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]
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-22 10:29
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社