AS
Amilia Storm Bioinformatics & Data Science
GitHub
← Back to projects

Bioinformatics / Single-Cell Transcriptomics

COVID-19
Single-Cell Transcriptomics

Single-cell RNA-seq analysis of peripheral blood immune cells from COVID-19 patients and healthy controls, using Seurat to identify immune-cell populations and investigate condition-associated transcriptional differences.

R Seurat scRNA-seq GEO ggplot2 dplyr Transcriptomics
UMAP visualization of annotated PBMC immune cell populations

Project profile

Dataset GSE150728

Cells 81,353

Samples 13

Populations 19

Overview

Bulk RNA sequencing measures average gene expression across mixed cell populations, potentially masking changes occurring within specific immune-cell populations. Single-cell RNA sequencing resolves expression at the individual-cell level, allowing immune populations and their transcriptional states to be investigated separately.

This project applies a standard single-cell analysis pipeline to publicly available PBMC data from COVID-19 patients and healthy controls, with particular focus on immune-cell composition and transcriptional changes within monocytes.

Dataset
GSE150728
Samples
7 COVID / 6 Healthy
Platform
10x Genomics
Focus
PBMC Transcriptomics

Research question

Which immune-cell populations and transcriptional states differ between COVID-19 patients and healthy controls?

Cell identity

Which immune-cell populations can be recovered from the PBMC single-cell dataset using unsupervised clustering and canonical marker genes?

Immune composition

Are particular immune-cell populations proportionally enriched or depleted in COVID-19 samples?

Monocyte state

How does gene expression within classical monocytes differ between COVID-19 patients and healthy controls?

Inflammatory signalling

Do inflammatory and antigen-presentation-associated genes show coordinated transcriptional changes?

Workflow

From raw single-cell data to biological interpretation

01

Data acquisition

Retrieved publicly available PBMC single-cell RNA-seq data from the NCBI Gene Expression Omnibus.

GEO GSE150728
02

Quality control

Filtered low-quality cells, probable empty droplets and problematic cells using detected-feature counts and mitochondrial read content.

Seurat
03

Normalization & reduction

Log-normalized expression, selected highly variable genes, scaled expression and performed PCA before constructing the neighbourhood graph.

View methods
04

Clustering & annotation

Applied graph-based clustering and UMAP, then annotated populations using canonical immune-cell marker genes.

View UMAP
05

Condition comparison

Compared immune-cell composition and performed condition-specific differential expression within classical monocytes.

Key findings

Cellular landscape

UMAP showing annotated immune cell populations

UMAP visualization of the annotated PBMC landscape. Nineteen immune-cell populations were identified using cluster-specific expression patterns and canonical markers.

Monocyte expression

Violin plots comparing monocyte gene expression between COVID-19 and healthy samples

Classical monocytes from COVID-19 samples showed increased expression of inflammatory S100-family genes alongside reduced expression of several antigen-presentation-associated genes.

Analysis scale

81,353 cells after quality control

Approximately 157,000 raw droplets were processed across thirteen samples. After quality-control filtering, 81,353 cells were retained for downstream analysis.

The final dataset included seven COVID-19 samples and six healthy controls.

Key findings

COVID-associated transcriptional changes in monocytes

↑ S100A8 / S100A9 / S100A12

Classical monocytes from COVID-19 samples showed increased expression of inflammatory alarmin genes including S100A8, S100A9 and S100A12.

↓ MHC class II expression

HLA-DRB1, HLA-DQB1 and CD74 showed reduced expression in COVID-associated classical monocytes, alongside reduced HLA-B expression.

IFN-stimulated monocytes

A distinct interferon-stimulated monocyte population marked by genes including IFI27, IFI6 and IFITM3 was observed predominantly in COVID-19 samples.

Coordinated immune-state shift

Together, the observed expression patterns indicate an association between COVID-19 status and a more inflammatory monocyte transcriptional state with reduced expression of antigen-presentation-associated genes.

Exploratory result

IFN-stimulated monocyte expansion

An interferon-stimulated monocyte population was nearly absent from healthy samples but appeared at variable levels across multiple COVID-19 samples.

However, the sample-level difference did not reach statistical significance in the Wilcoxon rank-sum comparison (p = 0.29). Given the small cohort and substantial patient-to-patient heterogeneity, this result is treated as exploratory rather than confirmatory.

COVID samples
7
Healthy samples
6
Test
Wilcoxon
p-value
0.29

Analysis code

Core methods from the Seurat workflow

Open full repository
# Quality-control filtering

combined_seurat <- subset(
    combined_seurat,
    subset =
        nFeature_RNA > 250 &
        nFeature_RNA < 2500 &
        percent.mt < 20
)

combined_seurat <- NormalizeData(
    combined_seurat,
    normalization.method = "LogNormalize",
    scale.factor = 10000
)

combined_seurat <- FindVariableFeatures(
    combined_seurat,
    selection.method = "vst",
    nfeatures = 2000
)
# PCA, graph construction and clustering

combined_seurat <- ScaleData(
    combined_seurat
)

combined_seurat <- RunPCA(
    combined_seurat
)

combined_seurat <- FindNeighbors(
    combined_seurat,
    dims = 1:20
)

combined_seurat <- FindClusters(
    combined_seurat,
    resolution = 0.5
)

combined_seurat <- RunUMAP(
    combined_seurat,
    dims = 1:20
)
# Identify cluster marker genes

cluster_markers <- FindAllMarkers(
    combined_seurat,
    only.pos = TRUE
)

DimPlot(
    combined_seurat,
    reduction = "umap",
    group.by = "cell_type",
    label = TRUE,
    repel = TRUE
) + NoLegend()
# Compare conditions within monocytes

monocyte_de <- FindMarkers(
    monocyte_subset,
    ident.1 = "COVID",
    ident.2 = "Healthy",
    group.by = "condition"
)

VlnPlot(
    monocyte_subset,
    features = c(
        "S100A8",
        "HLA-DRB1"
    ),
    group.by = "condition",
    pt.size = 0.1
)

Limitations

Interpreting the results cautiously

Small cohort

The study contains seven COVID-19 samples and six healthy controls, limiting statistical power for patient-level comparisons.

Pseudo-replication

Individual cells from the same patient are correlated and should not be interpreted as fully independent biological replicates.

Disease severity

Severity metadata was not available for the analyzed COVID-19 samples, so the project does not distinguish mild from severe disease.

PBMC contamination

A small red-blood-cell contamination cluster was detected and excluded from biological interpretation.

Future work

Extending the analysis

01

Pseudobulk analysis

Aggregate expression at the patient level before differential-expression testing to reduce pseudo-replication.

02

Patient-level modelling

Incorporate biological replicate structure directly into statistical testing and downstream interpretation.

03

Severity cohorts

Extend the analysis to datasets containing explicit disease-severity and clinical metadata.

04

RNA velocity

Explore transcriptional-state dynamics using intronic and exonic read information where compatible data are available.

Project skills

What this project demonstrates

Single-cell analysis

Processing and interpreting high-dimensional scRNA-seq data through quality control, normalization, clustering and dimensionality reduction.

Cell-type annotation

Combining unsupervised clustering with canonical marker expression to identify biologically meaningful immune-cell populations.

Statistical awareness

Distinguishing cell-level observations from biological replicates and explicitly considering cohort size, pseudo-replication and non-significant findings.

Scientific programming

Reproducible analysis using R, Seurat, ggplot2, dplyr, tidyr and structured bioinformatics workflows.