#quantile #percentile #approximate #t-digest #tdigest

tdigests

An efficient Rust implementation of the t-digest algorithm

2 releases

0.1.1 Oct 31, 2024
0.1.0 Oct 31, 2024

#358 in Algorithms

Download history 239/week @ 2024-10-30 40/week @ 2024-11-06 87/week @ 2024-11-13

366 downloads per month

MIT license

30KB
516 lines

T-Digest Rust Library

Crates.io Docs.rs License

An efficient Rust implementation of the t-digest algorithm, which allows accurate estimation of quantiles and relative rank over streaming data.

Features

  • Quantile Estimation: Compute approximate quantiles (e.g., median, percentiles) from large datasets.
  • Streaming Data: Suitable for online computation where data arrives incrementally.
  • Merging Digests: Supports merging t-digests from different data partitions, ideal for distributed systems.
  • Compression: Adjustable compression factor to balance accuracy and memory usage.
  • Simple State: Minimal state structure for easy serialization and deserialization.

Installation

Add the following to your Cargo.toml:

[dependencies]
tdigests = 0.1

Usage

use tdigests::TDigest;

fn main() {
    // Create a new t-digest
    let digest = TDigest::from_values(vec![1.0, 2.0, 3.0]);

    // Estimate quantiles
    let median = digest.estimate_quantile(0.5);
    println!("Estimated median: {}", median);

    // Estimate rank
    let rank = digest.estimate_rank(2.5);
    println!("Rank of 2.5: {}", rank);
}

Examples

See the simple.rs for a complete example demonstrating how to use the t-digest library.

Contributing

Contributions are welcome! Please open issues or submit pull requests on the GitHub repository.

License

This project is licensed under the MIT License.

No runtime deps