Two important essays on AI in drug discovery landed in August. Both are worth your time. Both have the right intuitions. And one of them is subtly framing the wrong problem, in my opinion.
The first is the Nature Reviews Drug Discovery review by Andreas Bender, Morgan Thomas, Jack Scannell, David Shaywitz, Gian Marco Ghiandoni, Joe Greener, and colleagues: “Artificial intelligence in drug discovery — what it is, where we stand and the path forward.
Almost three years ago I wrote Has AI Changed the Course of Drug Development?. The post was cautiously skeptical. AlphaFold was the headline. BenevolentAI had just flopped a Phase 2a in atopic dermatitis. Verge Genomics’ VRG50635 was about to enter the clinic. I argued that data quality was the real bottleneck, not algorithms.
Time to revisit that.
I now lead epigenomics bioinformatics at AstraZeneca and I use Claude Code daily.
During my work with single-cell RNA-seq data, I’ve often encountered confusion about PCA and specifically when to use the center and scale arguments in R’s prcomp() function. While tools like Seurat’s RunPCA() abstract away these details, understanding what happens under the hood is crucial for proper analysis and troubleshooting.
In this post, I’ll show you exactly what center and scale do, why they matter, and what happens when you get them wrong.
Context and Problem In scRNA-seq, each cell is sequenced individually, allowing for the analysis of gene expression at the single-cell level. This provides a wealth of information about the cellular identities and states. However, the high dimensionality of the data (thousands of genes) and the technical noise in the data can lead to challenges in accurately clustering the cells. Over-clustering is one such challenge, where cells that are biologically similar are clustered into distinct clusters.
In Single-cell RNAseq analysis, there is a step to find the marker genes for each cluster. The output from Seurat FindAllMarkers has a column called avg_log2FC. It is the gene expression log2 fold change between cluster x and all other clusters.
How is that calculated? In this tweet thread by Lior Pachter, he said that there was a discrepancy for the logFC changes between Seurat and Scanpy: Actually, both Scanpy and Seurat calculate it wrong.
Dotplots are very popular for visualizing single-cell RNAseq data. In essence, the dot size represents the percentage of cells that are positive for that gene; the color intensity represents the average gene expression of that gene in a cell type.
It is easy to plot one using Seurat::dotplot or Sccustomize::clustered_dotplot. However, when you have multiple groups/conditions in your data and you want to visualize it by groups, it is not that straightforward.
What is pseduobulk? Many of you have heard about bulk-RNAseq data. What is pseduobulk?
Single-cell RNAseq can profile the gene expression at single-cell resolution. For differential expression, psedobulk seems to perform really well(see paper muscat detects subpopulation-specific state transitions from multi-sample multi-condition single-cell transcriptomics data). To create a pseudobulk, one can artificially add up the counts for cells from the same cell type of the same sample.
In this blog post, I’ll guide you through the art of creating pseudobulk data from scRNA-seq experiments.
Download the data https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE116256
cd data/GSE116256 wget https://ftp.ncbi.nlm.nih.gov/geo/series/GSE116nnn/GSE116256/suppl/GSE116256_RAW.tar tar xvf GSE116256_RAW.tar rm GSE116256_RAW.tar Depending on how the authors upload their data.
Some authors may just upload the merged count matrix file. This is the easiest situation.
In this dataset, each sample has a separate set of matrix (*dem.txt.gz), features and barcodes.
Total, there are 43 samples. For each sample, it has an associated metadata file (*anno.txt.gz) too.
You can inspect the files in command line:
I tweeted it at https://twitter.com/tangming2005/status/1679120948140572672
I got asked to put all my posts in a central place and I think it is a good idea. And here it is!
Benchmarking integration of single-cell differential expression
Benchmarking atlas-level data integration in single-cell genomics
A review of computational strategies for denoising and imputation of single-cell transcriptomic data
Benchmarking spatial and single-cell transcriptomics integration methods for transcript distribution prediction and cell type deconvolution
introduce ggside using single cell data The ggside R package provides a new way to visualize data by combining the flexibility of ggplot2 with the power of side-by-side plots.
We will use a single cell dataset to demonstrate its usage.
ggside allows users to create side-by-side plots of multiple variables, such as gene expression, cell type, and experimental conditions. This can be helpful for identifying patterns and trends in scRNA-seq data that would be difficult to see in individual plots.