Ragnar {Groot Koerkamp}
@curiouscoding
Postdoc on high troughput bioinformatics @ KIT Karlsruhe; IMO, ICPC, Xoogler, Rust, road-cycling, hiking, wild camping, photography
Travis has been cooking something up since IGGSy ;) A fast algorithm for SMEM finding in haplotype panels that uses space proportional to the number of 1s in the (sparse) matrix, inspired by the jump index [13].
Something different: a little report of kayaking in Latvia curiouscoding.nl/posts/latvia...
The main k-PHF-set speedup figure, with our results in blue. On my laptop (top row), the k-PHF allows throughput very close to the maximal memory throughput up to n=2^28, whereas previous methods only reached that up to 2^24. Also, it performs equally well for both positive and negative queries.
So now, a non-minimal 8-PHF suffices, which only needs 0.08 bits/key at load factor 80%, compared to 0.86 bits/key for k=1 at load factor 80% or 1.44 bits/key for k=1 and a minimal PHF with load factor 1. Since it's 10x smaller, it fits in a lower cache and supports faster queries or larger inputs.
Some heated debate at the #iggsy poster session between Andre - Metagraph - Kahles and Evo - Barbell - Garrison!
In other news: Great SEA talk by Nathaniel Brown on Orbit, an efficient implementation of the move structure for run-length encoded permutations. Also, congrats on winning a best paper award with this work!
On the way to SEA! Might be my longest train trip so far, and will for sure be if we don't make the 30 min transfer in Hamburg.
OUCH This assertion does not do what you think it does...
First thing I see on reddit after reading this post 🤔 Anyway: big-pan does not want you to know this one simple trick!
We get a figure like this, where the sweep line goes from left to right and the coloured regions indicate the best preceding anchor for each position. Most of the work is in maintaining the shapes of these regions, which we do with predecessor structures on the horizontal and diagonal boundaries.
So Gonzalo Navarro used 'diagonal transition' in his '01 ASM survey. Some digging by him now found that it (first???) appears in Chang & Lampe '92. In fact, the 'transition' is not between adjacent diagonals (as I thought), but *along* a diagonal where the cost increments. doi.org/10.1007/3-54...
Turns out I presented Sassy yesterday without realising it has been published! Finally officially a coauthor with @rickbitloo.bsky.social 😆 doi.org/10.1093/bioi...
My WABI submission: anti-lexicographic SUS-anchors. For sigma=4, this selection scheme (a k=1 sampling scheme) has density within 1% of the lower bound! The idea: find the smallest* substring that does not have a 2nd occurrence, and sample its start pos. curiouscoding.nl/posts/sus-an...
Just tried it. So ChatGTP shows some pretty small bubbles. There's additional sources in the hover-popup, but hovering doesn't work on mobile... There's also a 'sources' button at the bottom, but on phone that's _also_ broken. On PC it actually shows also some sources that are never in a bubble :/
Barbell: Fast & Accurate nanopore demultiplexing github.com/rickbeeloo/b...
Sassy: Fast approximate string matching. Aka: A fuzzy grep for fasta files. Available as both CLI and library. github.com/RagnarGrootK...
With AVX-512, the SimdQuickHeap is consistently 2x faster than the radix heap and other engineered heaps that are I/O-efficient, and up to 10x faster than the binary heap and other tree-based heaps.
The data structure has some similarities to QuickSelect and is pretty simple: repeatedly partition the list of values using random pivots until the smallest is left, and store each part in its own array. New elements are compared to the pivots and pushed to the right layer.
It's 5:20 am, but look what I can do now 😊 Now fingers crossed that it's possible at all to write lecture notes that also work on slides.
Jeez... 6 in a day... this is gonna be so bad for the ecosystem long term. Even if none of these gains any traction, the name squatting and confusion/bloat that others will have to deal with just to figure out which crates are/are not serious is a pain.
Once should be enough when not in meetings ;) But well; 7 newly uploaded crates in the last 2 days does not inspire confidence. Probably not worth my time to make a PR until it has credible maintenance and users?
Have I advertised perfcnt yet? It's awesome! Super easy to add fine-grained perf counters benchmarks, for eg branch misses and last-level cache misses. (These things are otherwise annoying to get from `perf stat`, because that includes benchmark setup and such.) crates.io/crates/perfcnt
More like: remove line numbers, remove stuff like the un-filled header fields below. And OUP footer. And stuff like [PROCEEDINGS] in the title that I now see presumably because of the Recomb-Seq submissions (as opposed to [OVERLAY]). Basically, preprints deserve to be pretty and properly typeset.
Cute new idea in here: Existing ABB+ (green) minimizers prefer kmers starting with 1 and then as many 0 as possible (in the binary case). "Spacers" (orange) instead prefer kmers starting with 10 that have maximum distance to the next occurrence of 10. (For DNA, A maps to 1 and CTG map to 0.)
Lastly, regions that pass this suffix-filter with cost <=k are verified fully in a 2nd full-width stage that uses SIMD with fewer but larger lanes. The result: throughput that is independent of text length, 2-4x higher than v1 (with AVX2/512) for many patterns and long texts, up to 13x for 150bp.
In v2, we filp the SIMD tiling and bitpacking direction: Each lane represents a separate *pattern*, and the bits are adjacent *rows* of the matrix. Basically the original 'pack multiple patterns in a word' of Hyyrö 2005, but on an AVX-512 SIMD level. So now we can search 16 32bp patterns at once!
Just for reference, the tiling strategy in v1: the text is split into 4 chunks that are processed in parallel with 1 chunk per 64 bit SIMD lane. Each lane represents 64 adjacent *columns* of the DP matrix.
That's on top of ~10x speedup over Edlib that we got in v1, (which also has a slightly updated preprint)! Specifically, v1 splits the text into 4 chunks and uses SIMD in the text direction, but this is inefficient when the text is only ~W=256 long, which v2 fixes. www.biorxiv.org/content/10.1...
Are people actually using A*PA? It suddenly got 4 stars in the last 2 days and appears to be growing steadily either way, but I'm getting issues maybe twice a year, which can either mean nobody uses it, or that it just works (but the UX is really not so great).
Some notes on Nicola Prezza and group's work on Wheeler DFAs after finally properly understanding them at DSB. It's pretty cool how the LF-mapping of the FM-index translates nearly directly to Wheeler DFAs. curiouscoding.nl/posts/wheele...