问题描述:在用seqkit的sample函数取指定数目或者比例的序列的时候,总是提示r1和r2的操作的序列不匹配。于是组合使用几个seqkit的工具实现提取。
安装可以使用conda:
conda install -c bioconda seqkit
两个即将进行downsampling 的原始文件均为100行
wc r*.gz
100 125 8663 r1.test.fastq.gz
100 125 8799 r2.test.fastq.gz
200 250 17462 total
#对其中的一个文件进行down sampling 随机取5条序列id
seqkit sample -n 5 r1.test.fastq.gz | seqkit seq --name --only-id > id.txt
# 这里的id就是从“@”开始,到遇到的第一个空格前的所有的内容
seqkit sample -n 5 r1.test.fastq.gz | seqkit seq --name --only-id > id.txt
[INFO] sample by number
[INFO] loading all sequences into memory...
[INFO] 4 sequences outputted
# 如果要选取所有的名字
# seqkit sample -n 5 r1.test.fastq.gz | seqkit seq --name > name.txt
# 查看id list,这里没有展开id具体信息,可以自行用cat查看提取是否正确
wc id.txt
4 4 155 id.txt
# 根据list对r1/2进行对应的提取
cat r1.test.fastq.gz | seqkit grep -f id.txt > r1.sub.fq.gz
cat r2.test.fastq.gz | seqkit grep -f id.txt > r2.sub.fq.gz
#注意这里使用cat/或者zcat。我这里在提取r1.test.fastq.gz 100行子集的时候不小心将其转换成fq格式了,不是fastq.gz 所以如果你待提取的序列是gz格式的话,这里要换成zcat
wc r*.fq.gz
16 20 1377 r1.sub.fq.gz
16 20 1435 r2.sub.fq.gz
32 40 2812 total
按比例提取可以自行查阅手册
参考: