Skip to content

pack

Pack an index's per-column matrix files into a single-file format to reduce query-time I/O (fewer file opens per query).

obikmer pack INDEX [--sparse]

Arguments

Argument Description
INDEX Index directory to pack (modified in place)

Options

Option Default Description
--sparse off Pack presence/absence matrices into a sparse, deduplicated format instead of the dense one

The index directory is locked for exclusive access while packing.

--sparse

Presence/absence data (which genomes carry each kmer) is often mostly empty — most kmers are present in only a handful of genomes out of the whole collection. The default (dense) packed format stores one bit per genome for every kmer regardless of how many genomes actually carry it; --sparse instead stores each kmer's genome list directly, and deduplicates identical lists shared by many kmers (common in real data, since kmers from the same conserved region tend to be carried by the same genomes).

On real genome collections this has measured at roughly 7x smaller on disk than the dense format, and single-kmer lookups (the shape phylo's sibling-annex/entropy/Sankoff computations use) are typically faster too, since the smaller files mean less data to read from disk. The trade-off: reading a whole genome column at once (used by --metric distance-matrix computations) is much slower on the sparse format than on the dense one, since there is no native column layout to read sequentially — prefer the dense format (the default, no --sparse) for indexes you mainly query with phylo's plain --metric distance matrices.

Count matrices (--metric on a count index) are not affected by --sparse — only presence/absence matrices are.