Hausaufgabe: RNA-Seq zu OSCC

Daten

Conway et al. (2025) haben RNA-Seq verwendet, um Mundhöhlenkrebs (oral squamous cell carcinoma, OSCC) zu untersuchen. Von 19 Patienten haben Sie Proben von normalem Gewebe (N), dysplasischem Gewebe (D) und Tumor (T) entnommen.

Die Proben wurden ohne erkennbaren Grund ungewöhnlich tief sequenziert, mit über 1 Mrd Reads pro Probe. Ich habe die Count-Matrix daher im Verhältnis 1:100 herunter gesampelt, um Ihnen ein realistisches Bild typischerer Daten zu geben. (“Downsampling” bedeutet, dass ich für jeden Read mit einer festen Wahrscheinlichkeit, hier p=0.003, ausgewürfelt habe, ob ich ihn zähle.) Die Dysplasie-Proben habe ich auch entfernt.

Die Matrix finden Sie hier: oscc_downsampled.counts.tsv.gz

Proben-Tabelle

Erzeugen Sie aus den Spaltennamen der Count-Matrix (colnames(count_matrix)) eine Proben-Tabelle mit drei Spalten: Bezeichnung der Probe (also der Spaltenname), ID des Patienten (der Teil vor dem -) und Probentyp (der letzte Buchstabe, N oder T). Denken Sie daran, dass Sie den Inhalt einer Spalte mit dem Tidyverse-Verb separate entlang eines Trennzeichens (hier -) aufspalten können.

DESeq2-Analyse

Laden Sie das DESeq2-Paket. (Falls Sie “DESeq2” noch installieren müssen, denken Sie daran, das Sie dazu BiocManager::install statt install.packages verwenden müssen.) Erstellen Sie mit der Funktion DESeqDataSetFromMatrix ein DESeq-Objekt. Die Funktion erwartet drei Argumente: die Count-Matrix, die Proben-Tabelle, und die Design-Formel. Verwenden Sie für letzteres ~ patient + tissue, wobei patient und tissue die Überschriften der Spalten in der Proben-Tabelle sind, die Patient-ID und Probentyp enthalten. Diese Formel bedeutet, dass Unterschiede zwischen den Probentypen gesucht werden sollen, wobei die Paarung der Proben nach Patient berücksichtigt werden soll.

Übergeben Sie dann das DESeq-Objekt der Funktion DESeq, die die Analyse-Schritte der Reihe nach durchführt. Diese Funktion gibt Ihnen ein DESeq-Objekt zurück, in dem das Ergebnis ergänzt wurde. Diese übergeben Sie an result, um die Ergebnis-Tabelle zu erhalten, die Sie mit as_tibble( ., rownames="gene" ) in eine Tidyverse-Tabelel uwandeln können:

DESeqDataSetFromMatrix( count_matrix, sample_table, ~ patient + tissue ) %>%
DESeq() %>%
result() %>%
as_tibble( rownames="gene" )

Inspektion des Ergebnisses

Wie viele Gene haben einen adjustierten p-Wert unter 0.1? Wie viele davon sind im Tumor stärker und wie viele schwächer exprimiert?

Erstellen Sie einen MA-Plot (also einen Plot mit mittlerer Expression auf der x-Achse und log fold chaneg auf der y-Achse, in dem die signifikanten Gene farblich markiert sind) und einen “Vulkan-Plot” (log fold change auf der x-Achse und -log10(pvalue) auf der y-Achse). Wenn Sie signifkante Gene in rot und die anderen in schwarz darstellen, sehen Sie, warum der zweite Plot “vulcano plot” heisst.

Weniger Proben

War es wirklich nötig, 19 Patienten zu rekrutieren? Wie weit wäre man mit 3 gekommen.

Wiederholen Sie die Analyse, verwenden Sie diesmal aber nur die ersten drei Patienten ganz links in der Count-Matrix.

Wiederholen Sie die Analyse nochmals, und verwenden Sie nun die letzten drei Patienten ganz rechts in der Count-Matrix.

Vergleichen Sie die Ergebnisse. Sind dieselben Gene signifikant? Gibt es Gene, die sich in den beiden “kleinen” Analysen in gegengesetzte Richtung bewegen? (Auch noch wenn Sie Gene mit sehr wenigen Reads entfernen?)