← Back to all sparks
S

seqkit

DEVOPS
Velocity0.0

Toolkit for FASTA and FASTQ file manipulation

Ten years in, SeqKit still ships by widening its flags rather than its scope.

bioinformaticscli toolingfastacompressionissue-driven
Current state
SeqKit released five times over the past 18 months and hit its tenth anniversary with v2.13.0. The work is consistently additive at the flag and subcommand level: LZ4 read and write support, a rewritten sample2 command, non-deterministic seeding for shuffle and sample, circular-genome start positions for restart, and a seqid-as-filename mode for split2 that is faster and lighter than the equivalent --by-id path. Interleaved with these are correctness fixes to GC content, sequence-ID parsing, and format detection.
Where it's heading
The toolkit is not expanding into new territory; it is closing gaps inside the commands it already has, usually in response to specific issue numbers. That makes the roadmap essentially user-driven — flags appear where someone hit a wall. The performance-shaped additions (--skip-file-check, split2 -N, head -l) all point the same way: the users filing issues are running SeqKit over very large collections of files, and the fixes are about not paying for work they do not need.
Prediction
Expect the next release to follow the same pattern — one or two new flags on existing subcommands plus issue-driven fixes — with sample2 likely to absorb more of the original sample command's behavior.

Recent moves

  1. 5mo ago

    2.13.0: LZ4 support, a rewritten sample command, and circular-genome starts

    The tenth-anniversary release is the largest in this window: LZ4 read and write across the toolkit, a new sample2 command that supersedes sample, a non-deterministic seed flag for shuffle and sample, and support for specifying the starting sequence of circular genomes in restart. Additive within the existing command surface, which is how every SeqKit release has been shaped.

    View source ↗
  2. 8mo ago

    2.12.0: grep can now match empty IDs and sequences

    grep accepts an empty pattern, making records with empty IDs or sequences findable rather than invisible — a small hole closed in the one command everyone uses. The replace command also swaps random UUIDv4 for time-sortable UUIDv7, and a split2 prefix regression from 2.11.0 is fixed.

    View source ↗
  3. 8mo ago

    2.11.0: split2 gains a faster equivalent of --by-id

    split2 -N uses the first sequence ID as the filename, matching what split --by-id does but faster and with less memory — the clearest example of the scale-driven work in this window. head -l adds a total-length threshold, and replace picks up a {uuid} symbol.

    View source ↗
  4. 8mo ago

    SeqKit v2.10.1

    A fix-only release across six subcommands. The GC content correction is the one users should read: the denominator previously included gaps, so reported values change for gapped sequences.

    View source ↗
  5. 11mo ago

    2.10.0: skip input file checking on huge file lists

    A global --skip-file-check flag removes the existence check when a file list is trusted, cutting startup cost on very large batches. concat -F fills missing IDs with gap characters for use on MSA results, and grep exits early once no patterns remain.

    View source ↗
  6. 1y ago

    SeqKit v2.9.0

    Correctness fixes to sequence ID parsing, non-greedy matching over tandem repeats in locate, and negative regions in grep and subseq. stats also gains a sum_n column counting ambiguous characters.

    View source ↗