diff --git a/Cargo.toml b/Cargo.toml index 7461037..b261943 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,19 @@ [package] name = "bfield" -version = "0.2.1" -authors = ["Roderick Bovee "] +description = "B-field datastructure implementation in Rust" +version = "0.3.0" +authors = ["Vincent Prouillet ", "Gerrit Gerritsen ", "Nick Greenfield "] +homepage = "https://github.com/onecodex/rust-bfield/" +repository = "https://github.com/onecodex/rust-bfield/" +readme = "README.md" +keywords = ["B-field", "probabilistic data structures"] +categories = ["data-structures"] edition = "2018" +license = "Apache 2.0" +exclude = [ + ".github/*", + "docs/*", +] [dependencies] bincode = "1" diff --git a/README.md b/README.md index 9cfcfd6..d075f71 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ # `rust-bfield`, an implementation of the B-field probabilistic key-value data structure +[![Crates.io Version](https://img.shields.io/crates/v/bfield.svg)](https://crates.io/crates/bfield) + The B-field is a novel, probabilistic data structure for storing key-value pairs (or, said differently, it is a probabilistic associative array or map). B-fields support insertion (`insert`) and lookup (`get`) operations, and share a number of mathematical and performance properties with the well-known [Bloom filter](https://doi.org/10.1145/362686.362692). At [One Codex](https://www.onecodex.com), we use the `rust-bfield` crate in bioinformatics applications to efficiently store associations between billions of $k$-length nucleotide substrings (["k-mers"](https://en.wikipedia.org/wiki/K-mer)) and [their taxonomic identity](https://www.ncbi.nlm.nih.gov/taxonomy) _**using only 6-7 bytes per `(kmer, value)` pair**_ for up to 100,000 unique taxonomic IDs (distinct values) and a 0.1% error rate. We hope others are able to use this library (or implementations in other languages) for applications in bioinformatics and beyond. -> _Note: In the [Implementation Details](#implementation-details) section below, we detail the use of this B-field implementation in Rust and use `code` formatting and English parameter names (e.g., we discuss the B-field being a data structure for storing `(key, value)` pairs). In the following [Formal Data Structure Details](#formal-data-structure-details) section, we detail the design and mechanics of the B-field using mathematical notation (i.e., we discuss it as an associate array mapping a set of_ $(x, y)$ _pairs). The generated Rust documentation includes both notations for ease of reference._ +> _Note: In the [Implementation Details](#implementation-details) section below, we detail the use of this B-field implementation in Rust and use `code` formatting and English parameter names (e.g., we discuss the B-field being a data structure for storing `(key, value)` pairs). In the following [Formal Data Structure Details](#formal-data-structure-details) section, we detail the design and mechanics of the B-field using mathematical notation (i.e., we discuss it as an associate array mapping a set of_ $(x, y)$ _pairs). The [generated Rust documentation](https://docs.rs/bfield/latest/bfield/) includes both notations for ease of reference._ ## Implementation Details