Salmon 2 (rewrite of my popular RNA-seq quantification tool in Rust)
▲ 33 r/genomics+2 crossposts

Salmon 2 (rewrite of my popular RNA-seq quantification tool in Rust)

I'm one of the creators of a bioinformatics tool called salmon. We published the salmon paper many years ago now.

I wrote the first version of salmon in modern C++ (11/14 at that time), as I have ~20 years of C++ experience. However, a few years after this (and with much of the maintenance burden weighing on me), after starting my own lab, I became very interested in Rust for scientific software development (particularly in bioinformatics and computational biology). In that time, I've also been a very outspoken advocate for Rust in this space, as I believe it gives us many concrete benefits over C and C++ which are otherwise the standard bearers (at least for high performance tools).

We subsequently wrote many of our other tools (such as alevin-fry and oarfish in Rust).

Finally, after many years, I undertook the task of rewriting salmon (which is still widely-used) in Rust. As full disclosure, I did this rewrite with the aid of an agent, as I've done several software ports from C++ to Rust with lesser-used tools and libraries before this; though I'd argue that none of this was "vibe coded". In particular, as I have the original C++ implementation as a point of comparison, there was a strong source of behavior truth, which greatly accelerated the rewrite. Further, in the course of building and testing this re-write, I uncovered (and fixed) several latent bugs in the C++ implementation! Most importantly, having a new, clean, fast, and easy to modify and maintain code base for this long standing tool from my lab has reinvigorated development, and we are already adding exciting new features. If this sounds like it might be interesting, please check it out in our lab's GitHub repository.

u/nomad42184 — 6 days ago
▲ 39 r/bioinformaticstools+2 crossposts

Sassy: fuzzy searching DNA sequences using SIMD · CuriousCoding

During the past year, Rick Beeloo and myself have been working on Sassy, a tool for fuzzy-searching short patterns in large texts, also known as approximate string matching.
Specifically, we've developed it for searching through large DNA collections (think 2s to search a 3GB human genome), and the corresponding paper just got published!

Try out sassy grepto search through DNA files, and sassy agrep <pattern> <#errors> <files> to fuzzy-search plain ASCII files. There's also a crate.

It searches through files at around 1 GB/s, which goes up to 8 GB/s when batch-searching many patterns in parallel (both on a single thread). The blog explains some of the algorithms behind it.

From the Rust side, we use the very nice wide library for SIMD instructions, and we use cargo-multivers to ship a single x86-64 binary that supports both AVX2 and AVX-512.

curiouscoding.nl
u/nomad42184 — 1 month ago
▲ 9 r/rust

Any options to avoid the requirements of nightly for memory prefetching?

There is an interesting new project (of which I am not the author) that I would like to use in my project.

Unfortunately, the upstream dependency requires nightly for the prefetch intrinsic. Is there any stable alternative here that I can propose to the maintainer? I'd like to use this new project in mine, but have been bitten by nightly enough to avoid doing so while nightly is a requirement

u/nomad42184 — 1 month ago

Love the Space Black

I got a new M5 Max 16" MacBook Pro in the space black. I wish I'd not waited so long to choose this gorgeous color! Coming from from previous space gray (which seemed quite bright in comparison, and not sufficiently different from silver), I really like the space black. I'd highly recommend it to anyone on the fence.

u/nomad42184 — 2 months ago