Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
qbix
qbix indexes and retrieves BAM records by QNAME (read name) using a .qbi
index.
Use it when you need records for one or more QNAMEs from a BAM file without scanning the file.
The index stores:
- XXH3-64 hashes of QNAMEs
- BGZF virtual offsets
- BAM size, mtime, and header hash for stale-index detection
The .qbi file format is documented in docs/qbi-format.md.
qbix was inspired by jts/bri. .qbi is not
compatible with .bri. .qbi stores QNAME hashes and BGZF virtual offsets
instead of names. Lookup candidates are checked against BAM QNAME before output.
Install
Download a prebuilt binary from GitHub Releases.
Build From Source
Requirements:
- Rust and Cargo
- htslib
pkg-configrecommended
Install htslib and pkg-config with your system package manager:
# macOS
# Ubuntu/Debian
The binary is:
If htslib is installed under a custom prefix:
HTSDIR=/path/to/htslib
For static htslib linking:
HTSLIB_STATIC=1
Optional colored SAM output uses libbiosyntax, which is GPL-3.0-only. It is disabled by default. Enable it explicitly if that license is acceptable:
With this feature enabled, the build downloads libbiosyntax v0.1.0 into Cargo's build directory. To use an existing checkout instead:
LIBBIOSYNTAX_DIR=/path/to/libbiosyntax
You can also build and install from crates.io:
The crates.io install builds from source and expects htslib headers and libraries to be available on the system.
Basic Use
Create an index:
This writes:
Fetch records by QNAME. Output is SAM:
Fetch records from a newline-delimited read-name file:
Use -f - to read names from stdin:
|
Write matching records as BAM:
When built with --features biosyntax, SAM output to a terminal is colored by
default. Pipes and files are left plain. Use --color always or
--color never to override:
Use more htslib threads:
Use an explicit index path:
Output Order
Default output is query order:
Query-order output streams lookups without collecting all hits in memory.
For multiple read names, --bam-order reads records in BAM file-offset order.
This can reduce random seeking:
--bam-order must collect and sort matching hits before output.
If name-sorted output is needed, sort downstream:
|
Other Commands
Quickly check that an index matches its BAM size, mtime, and header hash:
check defaults to --quick. Use --full to also seek to every indexed record
and verify its read-name hash:
Print records-per-read-name statistics from the index. stat is accepted as an
alias for stats:
Use JSON output for scripts:
Show raw index rows:
show prints:
qhash<TAB>voff
Print the version:
Notes
.qbifiles are tied to the BAM size, mtime, and header hash.- Rebuild the index after replacing or rewriting the BAM.
- Read names are not stored in the index. Hash hits are verified against the BAM record QNAME before output.
Rust Library
qbix also exposes a small Rust API:
let index_path = build_index?;
check_index?;
check_index?;
let bam = open?;
let hits = bam.lookup?;
C Library
qbix can be built as a C library from source:
Libraries are written under target/release, for example libqbix.so,
libqbix.a, or libqbix.dylib. The header is include/qbix.h.
For HTSlib-based applications, build qbix against the same HTSlib installation
as the host application. C API errors are stored per calling thread.
qbix_index_t handles are not thread-safe.
Example:
int