Zeqian Li
zeqianli.bsky.social
Zeqian Li
@zeqianli.bsky.social
Senior Bioinformatics Scientist @BillionToOne. Formerly Seppe Kuehn Lab (UChicago)
It supports Ns (genome.ucsc.edu/FAQ/FAQforma...), but I can see it being problematic when more letters are needed. But (a) it seems fixable given how long it's been around? (b) A good proportion of research is aligning short reads to reference DNA so those applications could have been more efficient
Genome Browser FAQ
genome.ucsc.edu
September 15, 2025 at 4:54 PM
I wonder why the 2bit format wasn't more popular. It's been around for a while. It's fantastic for reference genome random access in tgv.
September 15, 2025 at 4:30 PM
If you want to learn Rust, contributing to tgv is a great way! A genome viewer consists of many small, isolated components. Many improvements need <10 lines of code change. You can find them by searching "FIXME" comments. Let's make open source better together! bsky.app/profile/robp...
This is an awesome example of the power of open source. @noamteyssier.bsky.social builds a versatile, efficient & easy to use crate for fastx & binseq parsing; @curiouscoding.nl notices how paired end (and any higher arity) processing can be sped up. Big PR, some discussion and BAM; big new release.
Paraseq 0.4 is out now! With double the throughput for processing paired-end input :)

github.com/noamteyssier...
September 7, 2025 at 11:47 PM
I learned so many things with tgv. Writing a mini-interpreter is one of them. Now you can filter reads by:

FILTER BASE(1234)=C

It will be extended to a SQL-like mini language:

ORDER by STRAND WHERE BASE(123)=C AND MAPQ>=30

The parse is built and the backend is under development.
September 7, 2025 at 11:47 PM
The allele frequency stacked-bar is trickier: we need to calculate how stacks overlap and use the foreground/background trick + █▇▆▅▄▃▂▁ characters. This became a sweet ratatui widget: github.com/ratatui/rata...

The half-block trick is yet to be implemented to alignments. Contribution is open!
September 7, 2025 at 11:47 PM
The minimal resolution of terminal graphics is one character. To visualize more information, we use Unicode tricks:

At 2x zoom, to render 2 bases per cell, we use the half-block trick: render the "▌" Unicode character with the foreground of first base color and the background being the second base.
September 7, 2025 at 11:47 PM
These are needed by another library and not my enums 😂 I did find some helper function tho users.rust-lang.org/t/nom-how-to...
Nom -- how to raise an error / convert other errors to nom errors?
Funny how 9 months later I googled the exact question and found my own question. I still don't know the answer to this, and none of the nom exampes (as far as I can see) show how to do this. The id...
users.rust-lang.org
August 27, 2025 at 2:38 PM
In this case it's a bunch of custom enums in the library unfortunately :(
August 27, 2025 at 1:41 PM
I think ai is most helpful at making learning less scary (not sure I would have learned rust as fast as I did without help). But the actual learning still needs to happen.
August 16, 2025 at 3:02 AM
My day job is mostly Python - @pola.rs is expressive enough that typing out exactly what I want is not much more keystrokes than asking AI. Hallucinations are getting so bad that it's hurting the science. The new Python type checkers (pyrefly or ty) are much bigger productivity boost.
August 16, 2025 at 1:53 AM
These two weeks was an epic refactor to get rid of Claude's vibe-coded mess. I finally leaned how databases and requests actually work in Rust. It's so simple and nice.

github.com/zeqianli/tgv...
Cigar visualization improvements by zeqianli · Pull Request #65 · zeqianli/tgv
Read alignment rendering re-write Now supports base mismatch, deletion, and insertion rendering. Also corrected lots of vibe-coded mistakes before. The rendering contexts are calculated at read loa...
github.com
August 16, 2025 at 1:25 AM
This is still at an early stage. This is the best I got 😅: github.com/zeqianli/tgv...
github.com
May 28, 2025 at 5:34 PM
Thanks for posting! tgv is still at a very early stage so expect bugs :)
May 28, 2025 at 5:46 AM
Congratulations!
May 17, 2025 at 3:08 PM