1. load libraries
2. Read obj
# Load your object
All_sample_Merged <- readRDS("../All_samples_Merged_with_STCAT_and_renamed_FINAL.rds")
3. Dotplot
library(Seurat)
library(ggplot2)
# Define markers
treg_markers <- c("FOXP3", "IL2RA", "IKZF2", "TNFRSF18", "CD39")
exhaustion_markers <- c("PDCD1", "CTLA4", "LAG3", "HAVCR2", "TIGIT", "TOX", "ENTPD1")
# Combine all markers
all_markers <- unique(c(exhaustion_markers, treg_markers))
# Simple DotPlot
DotPlot(All_sample_Merged, features = all_markers) +
scale_color_gradient(low = "grey", high = "firebrick") + # expression color
scale_size(range = c(2, 8)) + # % expressing
theme_minimal(base_size = 12) +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
labs(title = "Treg and Exhaustion Markers in Sézary Syndrome",
color = "Avg Expression", size = "% Expressing")

Idents(All_sample_Merged) <- "seurat_clusters"
# Simple DotPlot
DotPlot(All_sample_Merged, features = all_markers) +
scale_color_gradient(low = "grey", high = "firebrick") + # expression color
scale_size(range = c(2, 8)) + # % expressing
theme_minimal(base_size = 12) +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
labs(title = "Treg and Exhaustion Markers in Sézary Syndrome",
color = "Avg Expression", size = "% Expressing")

NA
NA
NA
LS0tCnRpdGxlOiAiVFJFRy1hbmQtRXhoYXVzdGlvbi1Eb3RwbG90IgphdXRob3I6IE5hc2lyIE1haG1vb2QgQWJiYXNpCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCIKb3V0cHV0OgogICNybWRmb3JtYXRzOjpyZWFkdGhlZG93bgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHRydWUKICAgIHRvY19mbG9hdDogdHJ1ZQogICAgdG9jX2NvbGxhcHNlZDogdHJ1ZQotLS0KCiMgMS4gbG9hZCBsaWJyYXJpZXMKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KGRwbHlyKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkocGhlYXRtYXApCmxpYnJhcnkodGlkeXIpCgpgYGAKCgojIDIuIFJlYWQgb2JqCmBgYHtyIG9ian0KCiMgTG9hZCB5b3VyIG9iamVjdApBbGxfc2FtcGxlX01lcmdlZCA8LSByZWFkUkRTKCIuLi9BbGxfc2FtcGxlc19NZXJnZWRfd2l0aF9TVENBVF9hbmRfcmVuYW1lZF9GSU5BTC5yZHMiKQoKCgpgYGAKCiMgMy4gRG90cGxvdApgYGB7ciBjaGVjaywgZmlnLndpZHRoPTEwLCBmaWcuaGVpZ2h0PSA2fQoKbGlicmFyeShTZXVyYXQpCmxpYnJhcnkoZ2dwbG90MikKCiMgRGVmaW5lIG1hcmtlcnMKdHJlZ19tYXJrZXJzIDwtIGMoIkZPWFAzIiwgIklMMlJBIiwgIklLWkYyIiwgIlRORlJTRjE4IiwgIkNEMzkiKQpleGhhdXN0aW9uX21hcmtlcnMgPC0gYygiUERDRDEiLCAiQ1RMQTQiLCAiTEFHMyIsICJIQVZDUjIiLCAiVElHSVQiLCAiVE9YIiwgIkVOVFBEMSIpCgojIENvbWJpbmUgYWxsIG1hcmtlcnMKYWxsX21hcmtlcnMgPC0gdW5pcXVlKGMoZXhoYXVzdGlvbl9tYXJrZXJzLCB0cmVnX21hcmtlcnMpKQoKIyBTaW1wbGUgRG90UGxvdApEb3RQbG90KEFsbF9zYW1wbGVfTWVyZ2VkLCBmZWF0dXJlcyA9IGFsbF9tYXJrZXJzKSArCiAgc2NhbGVfY29sb3JfZ3JhZGllbnQobG93ID0gImdyZXkiLCBoaWdoID0gImZpcmVicmljayIpICsgICMgZXhwcmVzc2lvbiBjb2xvcgogIHNjYWxlX3NpemUocmFuZ2UgPSBjKDIsIDgpKSArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICUgZXhwcmVzc2luZwogIHRoZW1lX21pbmltYWwoYmFzZV9zaXplID0gMTIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCBoanVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICJUcmVnIGFuZCBFeGhhdXN0aW9uIE1hcmtlcnMgaW4gU8OpemFyeSBTeW5kcm9tZSIsCiAgICAgICBjb2xvciA9ICJBdmcgRXhwcmVzc2lvbiIsIHNpemUgPSAiJSBFeHByZXNzaW5nIikKCgpJZGVudHMoQWxsX3NhbXBsZV9NZXJnZWQpIDwtICJzZXVyYXRfY2x1c3RlcnMiCgojIFNpbXBsZSBEb3RQbG90CkRvdFBsb3QoQWxsX3NhbXBsZV9NZXJnZWQsIGZlYXR1cmVzID0gYWxsX21hcmtlcnMpICsKICBzY2FsZV9jb2xvcl9ncmFkaWVudChsb3cgPSAiZ3JleSIsIGhpZ2ggPSAiZmlyZWJyaWNrIikgKyAgIyBleHByZXNzaW9uIGNvbG9yCiAgc2NhbGVfc2l6ZShyYW5nZSA9IGMoMiwgOCkpICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJSBleHByZXNzaW5nCiAgdGhlbWVfbWluaW1hbChiYXNlX3NpemUgPSAxMikgKwogIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNDUsIGhqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIlRyZWcgYW5kIEV4aGF1c3Rpb24gTWFya2VycyBpbiBTw6l6YXJ5IFN5bmRyb21lIiwKICAgICAgIGNvbG9yID0gIkF2ZyBFeHByZXNzaW9uIiwgc2l6ZSA9ICIlIEV4cHJlc3NpbmciKQoKCgpgYGAKCg==