Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
CC=gcc
CFLAGS=-g -Wall -O2 -Wno-unused-function
CFLAGS=-g -Wall -Ofast -Wno-unused-function
BINDIR=/usr/local/bin

all:seqtk
Expand Down
9 changes: 6 additions & 3 deletions seqtk.c
Original file line number Diff line number Diff line change
Expand Up @@ -1215,14 +1215,14 @@ int stk_seq(int argc, char *argv[])
{
gzFile fp;
kseq_t *seq;
int c, qual_thres = 0, flag = 0, qual_shift = 33, mask_chr = 0, min_len = 0, max_q = 255, fake_qual = -1;
int c, qual_thres = 0, flag = 0, qual_shift = 33, mask_chr = 0, min_len = 0, max_len = INT_MAX, max_q = 255, fake_qual = -1;
unsigned i, line_len = 0;
int64_t n_seqs = 0;
double frac = 1.;
khash_t(reg) *h = 0;
krand_t *kr = 0;

while ((c = getopt(argc, argv, "N12q:l:Q:aACrn:s:f:M:L:cVUX:SF:")) >= 0) {
while ((c = getopt(argc, argv, "N12q:l:Q:aACrn:s:f:M:L:E:cVUX:SF:")) >= 0) {
switch (c) {
case 'a':
case 'A': flag |= 1; break;
Expand All @@ -1242,6 +1242,7 @@ int stk_seq(int argc, char *argv[])
case 'X': max_q = atoi(optarg); break;
case 'l': line_len = atoi(optarg); break;
case 'L': min_len = atoi(optarg); break;
case 'E': max_len = atoi(optarg); break;
case 's': kr = kr_srand(atol(optarg)); break;
case 'f': frac = atof(optarg); break;
case 'F': fake_qual = *optarg; break;
Expand All @@ -1259,7 +1260,8 @@ int stk_seq(int argc, char *argv[])
fprintf(stderr, " -s INT random seed (effective with -f) [11]\n");
fprintf(stderr, " -f FLOAT sample FLOAT fraction of sequences [1]\n");
fprintf(stderr, " -M FILE mask regions in BED or name list FILE [null]\n");
fprintf(stderr, " -L INT drop sequences with length shorter than INT [0]\n");
fprintf(stderr, " -L INT drop sequences with length shorter than INT [%d]\n", min_len);
fprintf(stderr, " -E INT drop sequences with length longer than INT [%d]\n", max_len);
fprintf(stderr, " -F CHAR fake FASTQ quality []\n");
fprintf(stderr, " -c mask complement region (effective with -M)\n");
fprintf(stderr, " -r reverse complement\n");
Expand All @@ -1286,6 +1288,7 @@ int stk_seq(int argc, char *argv[])
while (kseq_read(seq) >= 0) {
++n_seqs;
if (seq->seq.l < min_len) continue; // NB: length filter before taking random
if (seq->seq.l > max_len) continue; // NB: length filter before taking random
if (frac < 1. && kr_drand(kr) >= frac) continue;
if (flag & 48) { // then choose odd/even reads only
if ((flag&16) && (n_seqs&1) == 0) continue;
Expand Down