TSNE is a method for visualizing high-dimensional data that preserves local neighborhoods on a two-dimensional plane. Initially it was popular for visualizing and debugging image representations in computer vision, but has become extremely popular in single cell genomics to visualize cell populations.
It is a great tool for exploring data, in particular in combination with various pretrained representation models.
I first learned about TSNE at a conference presentation at Single Cell Genomics 2014, where Evan Macosko showed a TSNE of 45,000 retinal cells. Since then it’s been a tool I have been using for biological data.
This has colored how I like to explore data in general, and I often want to be able to use TSNE when exploring pictures, or audio samples, or video clips, or file names, etc.
Over the last year it has gotten very easy to build native Mac applications, and pretty often I make small specialized throwaway Mac applications to explore ideas.
I created a reusable TSNE package for Swift that can be used as a component in GUI Mac applications at https://github.com/vals/mac-tsne. By making use of Metal GPU acceleration it’s very snappy for moderately sized datasets (a couple of seconds for ~50k points). I targeted optimization for dataset sizes that I’m likely to encounter. For example, my full photo library has ~130,000 photos, and my audio sample collection has ~4,000 samples.
I’m a big fan of the extremely fast and efficient TSNE implementation in Nvidia Rapids. I will never use a Windows computer again though, and doing a roundtrip to a server with an Nvidia GPU isn’t worth it for interactive exploration.
This way I can play around with data locally on a small nice computer.
From around the web
I will be going to Single Cell Genomics 2026 next month. Get in touch if you’ll be around!



