Beatriz Manso

I work on gene expression data, and on whether you can trust what it tells you.

PhD Bioinformatics, University of West London/London
manso.beatriz@gmail.com/GitHub/LinkedIn/CV

What I do

Transcriptomics, mostly. In R and Python, mostly. Usually the unglamorous middle part: getting the counts right, picking a model, then working out whether the result survives being tested properly.

I finished my PhD at the University of West London in 2026. I now run the MSc Bioinformatics programme there and teach the computational modules.

Most of what I think about at the moment is evaluation. Choosing marker genes on the whole dataset rather than inside each cross-validation fold inflates performance quietly and substantially, and it is easy to do without noticing. I found it in my own thesis pipeline, and measuring what it was worth has changed how I work since.

Current work

Accuracy can hide a model that does nothing

Gene expression datasets are small and rarely balanced. The brain cancer cohort below has 130 samples, 117 of them tumour. So a model that answers tumour every single time scores 90% accuracy while doing nothing at all.

Accuracy    Cohen’s κ

0 0.25 0.50 0.75 1.00 always “tumour” sigmoid softsign tanh 0.000 0.000
Four models, one dataset (GSE50161, 117 tumour / 13 normal), 10×5-fold repeated stratified cross-validation. Sigmoid reaches 0.900 accuracy at a Cohen’s κ of exactly zero, which is to say it is indistinguishable from always answering “tumour”. Only tanh and softsign learn anything. Reported as accuracy alone, all four look respectable.

The second result concerns feature selection. Choosing the marker genes on the full dataset rather than inside each fold lifted logistic regression from κ 0.790 to 0.915 on that cohort, so about 14% of the headline number was the evaluation rather than the biology. I found it in my own thesis pipeline, then checked whether it generalises: across four public datasets the inflation is positive in ten of twelve model-dataset pairs, but its size tracks how small the minority class is. In a balanced cohort it disappears entirely. That makes it a conditional problem rather than a flat tax, and it bites hardest on exactly the small, imbalanced cohorts where the check is least often run.

Doctoral work

Structural, Functional and Genomic Decompensation Analysis of the Brain in Chiari Malformation I Patients

I wrote convolutional and artificial neural networks from scratch in C++, then spent much longer evaluating them than building them. Activation functions chosen by 10×5-fold repeated stratified cross-validation with Friedman testing and Bonferroni-corrected comparisons; benchmarks against logistic regression, SVM and random forests under one protocol.

The benchmarking is the part I would defend hardest. It is also the part that told me the deep model was not earning its complexity.

Some analyses

Older coursework across NGS quality control, microarray analysis, phylogenetics, protein structure and Biopython is archived on GitHub.

Tools
Languages
Python, R, C++, Bash, SQL
Genomics
RNA-seq, microarray, variant annotation, ChIP-seq, methylation, eQTL
Modelling
scikit-learn, Keras, TensorFlow, cross-validation and model comparison
Day to day
Git, Linux, HPC, Docker, Snakemake, R Markdown