Skip to content

Commit 130985c

Browse files
authored
Refactor README
1 parent 00d0396 commit 130985c

1 file changed

Lines changed: 15 additions & 5 deletions

File tree

README.md

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,9 @@
77
⚠️ **Warning:** this library is in an early stage. The API is still subject to changes. Currently, only a basic FM-Index is implemented. For upcoming features, take a look at the [roadmap]. Any kind of feedback and suggestions via the issue tracker is highly appreciated! ⚠️
88

99
The [FM-Index] is a full-text index data structure that allows efficiently counting and retrieving the positions of all occurrenes of (typically short) sequences in very large texts. It is widely used in sequence analysis and bioinformatics.
10+
The benefits of `genedex` include:
1011

11-
The implementation of this library is based on an encoding for the text with rank support data structure (a.k.a. occurrence table)
12-
by Simon Gene Gottlieb, who also was a great help while developing the library. This data structure is central to the inner workings of
13-
the FM-Index. The encoding attemps to provide a good trade-off between memory usage and running time of queries.
14-
A second, faster and less memory efficient encoding is also implemented. Further benefits of `genedex` include:
15-
12+
- Multiple optimized implementations with different running time/memory usage trade-offs.
1613
- Fast, parallel and memory efficient index construction by leveraging [`libsais-rs`] and [`rayon`].
1714
- Support for indexing a set of texts, like chromosomes of a genome.
1815
- A flexible cursor API.
@@ -43,6 +40,12 @@ for hit in index.locate(query) {
4340
}
4441
```
4542

43+
## References
44+
45+
- The default (_condensed_) implementations is based on:
46+
47+
> Gottlieb, S.G., Reinert, K.: _Engineering rank queries on bit vectors and strings_ (2025) DOI: [10.1186/s13015-025-00291-9](https://doi.org/10.1186/s13015-025-00291-9)
48+
4649
## Comparison to Other Crates and Benchmarks
4750

4851
A thorough comparison of all available Rust implementations of the FM-Index can be found [here](https://github.com/feldroop/rust-fmindex-benchmark). The main benchmark results are shown below.
@@ -55,10 +58,17 @@ Running time and index memory usage of searching 377 MB of queries of length 50
5558

5659
<img src="https://raw.githubusercontent.com/feldroop/rust-fmindex-benchmark/refs/heads/main/plots/img/Locate-Hg38.svg" />
5760

61+
## Acknowledgements
62+
63+
- The implementation of this library is based on an encoding for the text with rank support data structure (a.k.a. occurrence table)
64+
by Simon Gene Gottlieb, who also was a great help while developing the library.
65+
- Ragnar Groot Koerkamp, who develops the library [`quadrank`], was very helpful and supplied bug reports, suggestions and improvements to `genedex`.
66+
5867
[FM-Index]: https://doi.org/10.1109/SFCS.2000.892127
5968
[`libsais-rs`]: https://github.com/feldroop/libsais-rs
6069
[`rayon`]: https://github.com/rayon-rs/rayon
6170
[`savefile`]: https://github.com/avl/savefile
6271
[`proptest`]: https://github.com/proptest-rs/proptest
6372
[roadmap]: ./ROADMAP.md
6473
[documentation]: https://docs.rs/genedex
74+
[`quadrank`]: https://github.com/RagnarGrootKoerkamp/quadrank

0 commit comments

Comments
 (0)