Category Archives: Machine Learning

Lessons in Bemistry: identifying the signature of a medicinal chemist

Andrew D. Blevins and Ian K. Quigley, co-founders of Leash Bio, released a pre-print last year that I think deserves some more attention. Using a Bemis-Murcko scaffold split, the authors show that it is possible to train a machine learning model to identify which of 1,815 medicinal chemists produced a molecule from its structure alone, achieving a top 5 accuracy of 60% and a top 1 of 27%.

Let’s take a step back. Why aim to predict who made a molecule in the first place? The authors motivate this well, drawing on the story of Clever Hans. Owned and showcased by Wilhelm von Osten in 20th century Germany, Clever Hans was a horse purportedly able to solve mathematical problems, stamping out solutions with his hoof. However, it was quickly realized that Clever Hans could not actually perform arithmetic, but rather read the micro-expressions and posture of those posing the question, stopping his count when the faces of observers revealed the right answer had been reached. The moral? Clever Hans learned how to predict a correlate of a task, which was mistaken for mastery of the task itself.

Continue reading →

OAS-nano: New Repertoire Database Just Dropped

Those familiar with the immunoinformatics work of our group will know of our Observed Antibody Space (OAS) and Observed T-cell Receptor Space (OTS) databases, which compile and consistently process V(D)J transcriptomics datasets from across a range of studies on natural immune repertoires. These have provided a central community resource of training data for adaptive immune receptor (AIR) large language models, as well as references for studies aiming to identify clones related to particular disease states.

We are now delighted to release the final installment of our natural AIR database series: introducing OAS-nano. This project was enabled by key collaborative contributions from Klara Kropivsek Brumat and Ario de Marco at the University of Nova Gorica and our industrial partners at AstraZeneca: Olga Obrezanova, Erwin de Genst, and Rebecca Croasdale-Wood.

Continue reading →

The First OpenBind Blind Challenge

At OpenBind, we’re working to generate large-scale, open experimental datasets of protein-ligand structures and binding measurements to support the development and evaluation of computational methods for drug discovery. One thing I’m particularly excited about is using these data not just for retrospective benchmarking, but for prospective, blind evaluation.

So, I’m very pleased that we’re launching the first OpenBind blind challenge on 14 October 2026, in partnership with OpenADMET and the ASAP Discovery Consortium. The interim submission deadline is 11 November, with final submissions due by 16 December 2026 at 23:59 UTC.

The challenge asks participants to predict protein-ligand complexes of 400 compounds bound to Zika virus NS2B-NS3 protease, ranging from small fragments to larger, lead-like molecules.

A key challenge will be using the structural information that already exists to accurately predict the binding modes of new, unseen ligands. There are already a number of publicly available structures of Zika NS2B-NS3 protease in the PDB that participants can use.

We’re also setting a high bar for success. While many protein-ligand benchmarks use an RMSD threshold of 2 Å, we’re tightening this to 1.5 Å, along with additional checks on interaction accuracy (lDDT-PLI > 0.8) and physical validity (PoseBusters validity checks). I’m particularly excited to see how docking, cofolding, and other approaches compare!

If you work on protein-ligand structure prediction, I’d strongly encourage you to join the challenge. You can find all the details, including how to register and join the challenge Discord, in the OpenBind announcement.

Update: We’re now live! Check out the challenge on Hugging Face.

Is the race for AGI a scam? Are the tech bros con men or visionaries?

To find out, we formally introduce the Stinkometer

In research, it can be tough even for experts to tell fact from fiction. This is especially true for more speculative fields like AI. It can feel like every model is “State-of-the-Art” and that AGI (whatever that means) will be “6 months away” for at least the next 6 months. How do we know we can trust these people?

What is a visionary? What is a con man?

Visionaries sell a fringe idea of the future, usually with strong self-belief and charisma. Con men are visionaries who don’t believe what they’re saying. It’s hard to tell the difference because we can’t read minds and can’t see the future.

I solved this by adapting the insightful “New Political Compass” from Harper O’Connor, an American political YouTuber. Harper found a similar problem. He’s active in local politics and has to decide who he should build alliances with to tackle certain issues. Interestingly, the “left-right” axis wasn’t a helpful guide. Most people he canvassed were reasonable but didn’t follow politics closely enough to have a robust ideology. He realised that someone’s psychology can be more important than their stated ideology.

Therefore, it was more useful to ask: Am I talking to a reasonable person? Here, I expand his framework into the Belief Compass (or the “Stinkometer”). We can answer our question by answering three simpler ones:

Continue reading →

Predicting ADME Properties with Machine Learning: 82% of the Performance From Two Descriptors

A Nature survey of ~1500 scientists reported that more than 70% had failed to reproduce another scientist’s experiments, and 50% had failed to replicate their own (Baker, 2016). This study wasn’t specific to machine learning, but the crisis has its own flavour in computational drug discovery.

One aspect of this is that available datasets have known quality issues, and results built on them can be fragile. MoleculeNet and the Therapeutic Data Commons (TDC) opened drug discovery to a wider ML community, but they’re no longer sufficient for driving further advances (Wognum et al., 2024).

Amongst a number of issues, 71% of molecules in one MoleculeNet dataset (BACE) contained at least one undefined stereocenter (a point where the same atoms can sit in two different 3D arrangements), making it unclear what chemical entity is actually being modelled (Li et al., 2026).

The stakes are high. In 2017, a research group found their cancer-target inhibitor inactive from one vendor and highly active from another. Eventually they traced this to vendors selling different mixtures of the compound’s two 3D forms where only one was active on the target and mechanism they were investigating (Baker, 2017).

Most approved pharmaceuticals are relatively small chemical molecules, typically weighing under 900 g/mol, with most of the rest being biologics. Whilst in Oxford in OPIG over the summer as a UNIQ+ student, I focused on ADME, an aspect of early stage drug discovery, where assays are measured in vitro as a stand-in to predict how a compound will behave in vivo (in the human body) before clinical trials. Absorption (does it enter the body), Distribution (where does it go), Metabolism (how quickly it’s transformed) and Excretion (how quickly it’s eliminated) are processes critical to whether a candidate succeeds. 

Continue reading →

Beyond the Vaccine: AI’s Expanding Role in LNP mediated Drug Delivery

Lipid nanoparticles (LNPs) have evolved from a specialised drug-delivery technology into a cornerstone of modern medicine. Their success became evident during the COVID-19 pandemic, enabling the delivery of the mRNA used in the Pfizer-BioNTech and Moderna vaccines. However, their applications extend far beyond vaccination, as LNPs can also deliver siRNA, plasmid DNA and gene-editing machinery, creating opportunities to treat genetic diseases, cancer and many other conditions.

Yet a fundamental challenge remains: how do we design an LNP that delivers the right payload, to the right cells, in the right place?

Continue reading →

Diffusion Models Can’t Give You a Likelihood… So How Do We Score Inverse-Folded Sequences?

I’ve been working with inverse folding models for sequence design for a while now, and one question kept coming up. How would you score a sequence’s likelihood under these models? It turns out the answer depends heavily on whether the model is autoregressive or diffusion-based.

Autoregressive models, like GPT-style language models, make this straightforward. You can calculate the probability of a sequence directly, by breaking it into one prediction per position and multiplying them together. Diffusion models define a probability distribution over outputs too, but getting the likelihood of a particular output means accounting for many unobserved intermediate states, and that turns out to be much harder. This is why diffusion models typically rely on the Evidence Lower Bound, or ELBO, a computable estimate, rather than the exact likelihood itself.

The easy case: autoregressive models

An autoregressive model breaks the probability of a sequence into a product of conditional probabilities:

p(x1:n)=∏i=1np(xi|x<i)p(x_{1:n}) = \prod_{i=1}^{n} p(x_i \mid x_{<i})
Continue reading →

App-ready databases from Python with SQLModel and FastAPI

Python is ubiquitous for those of us coming into programming from academic research backgrounds, both for generating scientific data and for analysing it. Of course, modern data-driven research only thrives when data is FAIR (findable, accessible, interoperable, and reusable) and traditional relational databases and APIs for interacting with them are a tried-and-true method of ensuring FAIRness. (And in the age of machine learning, the machines need things to be FAIR arguably even more than we do…)

“But I’m a data scientist/computational chemist/bioinformatician!” you protest. “I just (ab)use databases using Python, I don’t make them for someone else to use!” Understandable, but the barrier to entry may be much lower than you think, thanks to two related Python libraries: SQLModel and FastAPI. These powerful tools by developer Sebastián Ramírez (@tiangolo on GitHub) work in concert to make relational databases and APIs much easier to implement for Python natives. Let’s see how they can help…

Continue reading →

Peering Inside the Black Box: A Beginner’s Introduction to Mechanistic Interpretability

Over the last few years, large language models (LLMs) have gone from being curiosities tucked away in research labs to something most of us interact with on a daily basis; whether for drafting emails, debugging code, or simply pondering the meaning of life at 2am. And yet, for all our reliance on these systems, a rather inconvenient truth lingers in the background: nobody, not even the people who built them, can fully explain what is going on inside.

This is where mechanistic interpretability comes in.

In essence, mechanistic interpretability is the approach of explaining complex machine learning systems through the behaviour of their functional units (Kästner and Crook, 2024) by reverse-engineering them into their more elementary computations (Rai et al., 2025). The aim is not simply to know that a model gives the right answer, but to pull apart the underlying machinery and uncover the causal relationships between input and output. Think of it as neuroscience for neural networks, except we can read every neuron at any moment, rewind, replay, and intervene mid-thought.

Continue reading →

Will TurboQuant save us from the RAM apocalypse?

The LLM boom is causing a global shortage of the very same computer memory it needs to sustain itself. Reports suggest OpenAI’s Stargate project alone could consume up to 40% of global DRAM output. Frontier labs like Google DeepMind need to make their models more memory-efficient.


One such technique is TurboQuant, released by Google. TurboQuant is an example of an online “quantisation” method. LLMs represent information using large tensors of numerical values, where each number typically uses 64 or 32 bits. However, many values do not require full numerical precision, so we can “round” them using fewer bits and less memory. We can see this in the example below:

The rounded value now requires 4x less memory. Source

Some quantisation methods are applied offline before inference begins. TurboQuant is ‘online’ because it compresses the KV cache dynamically during inference.

Continue reading →