【小工具】按比例截取fastq数据量

生信需求:

你有fastq文件,想按照5%,10%,20%,40%,60%,80%,截取fastq的数据量,或按照固定一个自定义比例截取数据量。

特点与功能:

1,随机截取,不是按照原始fastq中的顺序截取。
2,支持PE,和SE reads,
3,仅支持fastq格式。
4,默认按固定比例。(5%,10%,20%,40%,60%,80%)。
5,支持指定比例。比如只想截取45%,则使用-s 45参数既可
6,支持压缩或非压缩文件,自动识别(.fq或.fq.gz)

缺点:

1,随机截取时,会产生大list,导致内存偏高,耗时。

更新:
2019-06-25: 更新了算法,速度提升,
2019-06-25:新增识别压缩与非压缩文件功能

待更新:update to 2019-06-16

1,增加参数使能够不随机截取,按照原始fastq顺序截取,缩短程序运行时间。
2,优化算法,降低内存消耗。

用法:

usage: downsampling.py [-h] [-r1 READ1] [-r2 READ2] [-p PREFIX]

This is description

optional arguments:
  -h, --help            show this help message and exit
  -r1 READ1, --rd1 READ1
                        input read1 file
  -r2 READ2, --rd2 READ2
                        input read2 file
  -p PREFIX, --prefix PREFIX
                        prefix

举例 -p为输出文件的前缀。

python downsampling.py -r1  16E1L1_R1.fastq.gz -r2 16E1L1_R2.fastq.gz  -p 16E1L1

得到如下结果,输出结果的命名为:前缀+ 固定的后缀(xxpct_Rx.fq.gz)。


image.png

案例2:
按照指定的比例,截取fastq,只想截取45%的数据。

python downsampling.py -r1 16E1L1_R1.fastq.gz -r2 16E1L1_R2.fastq.gz  -p 16E1L1 -s 45

则只会输出16E1L1_45pct_R1.fq.gz 和16E1L1_45pct_R2.fq.gz 两个文件。

案例3:
我的数据只有一个fastq,不是PE数据:

python downsampling.py -r1 16E1L1_R1.fastq.gz  -p 16E1L1 -s 45

则只会输出16E1L1_45pct_R1.fq.gz 一个文件。

你可能感兴趣的:(【小工具】按比例截取fastq数据量)