load libraries————————————

1. Read Seurat object (STCAT annotated and Cleaned)

2. Score signatures using UCell

2. Enhanced Log Fold Change Options in Differential Analysis Plots

2. Enhanced Log Fold Change Options in Differential Analysis Plots

FeaturePlot(pbmc.Tcell, features = featnames, pt.size = 0.1, max.cutoff = "q99",
    ncol = 2)

VlnPlot(pbmc.Tcell, features = featnames, pt.size = 0, split.by = "seurat_clusters",
    ncol = 2)
The default behaviour of split.by has changed.
Separate violin plots are now plotted side-by-side.
To restore the old behaviour of a single split violin,
set split.plot = TRUE.
      
This message will be shown once per session.

2. Enhanced Log Fold Change Options in Differential Analysis Plots

library(plotly)
library(Seurat)

# Static UMAP using Seurat
p <- DimPlot(pbmc, reduction = "umap", label = TRUE, raster = FALSE)  

# Convert to plotly
interactive_plot <- ggplotly(p)  

# Display
interactive_plot




# Static FeaturePlot
p_feature <- FeaturePlot(
  pbmc, 
  features = "CD3E", 
  raster = FALSE,   # Disable raster for vector-based hover
  order = TRUE      # Highlight expressing cells
) 

# Add plotly
interactive_gene <- ggplotly(p_feature)  

# Customize tooltip (optional)
interactive_gene %>% style(hoverinfo = "text", hovertext = paste("Cell:", rownames(pbmc@meta.data)))
NA


# 3. Circlize plot to visualize cell clustering and meta data

<!-- rnb-text-end -->


<!-- rnb-chunk-begin -->


<!-- rnb-output-begin eyJkYXRhIjoiXG48IS0tIHJuYi1zb3VyY2UtYmVnaW4gZXlKa1lYUmhJam9pWUdCZ2NseHViR2xpY21GeWVTaHdiRzkwTVdObGJHd3BYRzVjYm1seWFTNXBiblJsWjNKaGRHVmtJRHd0SUhCaWJXTmNibHh1STFCeVpYQmhjbVVnWkdGMFlTQm1iM0lnY0d4dmRHbHVaMXh1WTJseVkxOWtZWFJoSUR3dElIQnlaWEJoY21WZlkybHlZMnhwZW1WZlpHRjBZU2hwY21rdWFXNTBaV2R5WVhSbFpDd2djMk5oYkdVZ1BTQXdMamdnS1Z4dWMyVjBMbk5sWldRb01USXpOQ2xjYm1Oc2RYTjBaWEpmWTI5c2IzSnpQQzF5WVc1a1gyTnZiRzl5S0d4bGJtZDBhQ2hzWlhabGJITW9hWEpwTG1sdWRHVm5jbUYwWldRcEtTbGNibWR5YjNWd1gyTnZiRzl5Y3p3dGNtRnVaRjlqYjJ4dmNpaHNaVzVuZEdnb2JtRnRaWE1vZEdGaWJHVW9hWEpwTG1sdWRHVm5jbUYwWldRa1IzSnZkWEFwS1NrcFhHNXlaWEJmWTI5c2IzSnpQQzF5WVc1a1gyTnZiRzl5S0d4bGJtZDBhQ2h1WVcxbGN5aDBZV0pzWlNocGNta3VhVzUwWldkeVlYUmxaQ1J2Y21sbkxtbGtaVzUwS1NrcEtWeHVYRzVnWUdBaWZRPT0gLS0+XG5cbmBgYHJcbmxpYnJhcnkocGxvdDFjZWxsKVxuXG5pcmkuaW50ZWdyYXRlZCA8LSBwYm1jXG5cbiNQcmVwYXJlIGRhdGEgZm9yIHBsb3RpbmdcbmNpcmNfZGF0YSA8LSBwcmVwYXJlX2NpcmNsaXplX2RhdGEoaXJpLmludGVncmF0ZWQsIHNjYWxlID0gMC44IClcbnNldC5zZWVkKDEyMzQpXG5jbHVzdGVyX2NvbG9yczwtcmFuZF9jb2xvcihsZW5ndGgobGV2ZWxzKGlyaS5pbnRlZ3JhdGVkKSkpXG5ncm91cF9jb2xvcnM8LXJhbmRfY29sb3IobGVuZ3RoKG5hbWVzKHRhYmxlKGlyaS5pbnRlZ3JhdGVkJEdyb3VwKSkpKVxucmVwX2NvbG9yczwtcmFuZF9jb2xvcihsZW5ndGgobmFtZXModGFibGUoaXJpLmludGVncmF0ZWQkb3JpZy5pZGVudCkpKSlcblxuYGBgXG5cbjwhLS0gcm5iLXNvdXJjZS1lbmQgLS0+XG4ifQ== -->


<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxubGlicmFyeShwbG90MWNlbGwpXG5cbmlyaS5pbnRlZ3JhdGVkIDwtIHBibWNcblxuI1ByZXBhcmUgZGF0YSBmb3IgcGxvdGluZ1xuY2lyY19kYXRhIDwtIHByZXBhcmVfY2lyY2xpemVfZGF0YShpcmkuaW50ZWdyYXRlZCwgc2NhbGUgPSAwLjggKVxuc2V0LnNlZWQoMTIzNClcbmNsdXN0ZXJfY29sb3JzPC1yYW5kX2NvbG9yKGxlbmd0aChsZXZlbHMoaXJpLmludGVncmF0ZWQpKSlcbmdyb3VwX2NvbG9yczwtcmFuZF9jb2xvcihsZW5ndGgobmFtZXModGFibGUoaXJpLmludGVncmF0ZWQkR3JvdXApKSkpXG5yZXBfY29sb3JzPC1yYW5kX2NvbG9yKGxlbmd0aChuYW1lcyh0YWJsZShpcmkuaW50ZWdyYXRlZCRvcmlnLmlkZW50KSkpKVxuXG5gYGAifQ== -->

```r
library(plot1cell)

iri.integrated <- pbmc

#Prepare data for ploting
circ_data <- prepare_circlize_data(iri.integrated, scale = 0.8 )
set.seed(1234)
cluster_colors<-rand_color(length(levels(iri.integrated)))
group_colors<-rand_color(length(names(table(iri.integrated$Group))))
rep_colors<-rand_color(length(names(table(iri.integrated$orig.ident))))
Ci0tLQp0aXRsZTogIlZpc3VhbGl6YXRpb24gYWZ0ZXIgU1RDQVQgYW5kIENsZWFuaW5nIHVzaW5nIFVjZWxsIGFuZCBQbG90bHkiCmF1dGhvcjogTmFzaXIgTWFobW9vZCBBYmJhc2kKZGF0ZTogImByIFN5cy5EYXRlKClgIgpvdXRwdXQ6CiAgI3JtZGZvcm1hdHM6OnJlYWR0aGVkb3duCiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogdHJ1ZQogICAgdG9jX2Zsb2F0OiB0cnVlCiAgICB0b2NfY29sbGFwc2VkOiB0cnVlCi0tLQoKCgojIyBsb2FkIGxpYnJhcmllcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KCmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KFNldXJhdEV4dGVuZCkKbGlicmFyeShTZXVyYXRFeHRlbmREYXRhKQpsaWJyYXJ5KG1vbm9jbGUzKQpsaWJyYXJ5KFNldXJhdFdyYXBwZXJzKQpsaWJyYXJ5KGhhcm1vbnkpCgoKIyBFeHRyYSBsaWJyYXJpZXMKbGlicmFyeShkcGx5cikKbGlicmFyeShwaGVhdG1hcCkKbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KFNDcHVicikKCmxpYnJhcnkoc2NhdGVyKQoKYGBgCgoKIyAxLiBSZWFkIFNldXJhdCBvYmplY3QgKFNUQ0FUIGFubm90YXRlZCBhbmQgQ2xlYW5lZCkKYGBge3IgbG9hZFNldXJhdH0KCkFsbF9zYW1wbGVzX01lcmdlZCA8LSByZWFkUkRTKCIuLi9BbGxfc2FtcGxlc19NZXJnZWRfd2l0aF9TVENBVF9hbmRfY2xlYW5lZC5yZHMiKQoKcGJtYyA8LSBBbGxfc2FtcGxlc19NZXJnZWQKCnJtKEFsbF9zYW1wbGVzX01lcmdlZCkKCmdjKCkKCmBgYAoKIyAyLiBTY29yZSBzaWduYXR1cmVzIHVzaW5nIFVDZWxsCmBgYHtyLCBmaWcuaGVpZ2h0PTYsIGZpZy53aWR0aD0xOH0KbWFya2VycyA8LSBsaXN0KCkKbWFya2VycyRUY2VsbF9DRDQgPC0gYygiQ0Q0IiwgIkNENDBMRyIpCm1hcmtlcnMkVGNlbGxfQ0Q4IDwtIGMoIkNEOEEiLCAiQ0Q4QiIpCm1hcmtlcnMkVGNlbGxfVHJlZyA8LSBjKCJGT1hQMyIsICJJTDJSQSIpCm1hcmtlcnMkVGNlbGxfTUFJVCA8LSBjKCJUUkFWMS0yIiwgIlNMQzRBMTAiKQptYXJrZXJzJFRjZWxsX2dkIDwtIGMoIlRSREMiLCAiVFJHQzEiLCAiVFJHQzIiLCAiVFJEVjEiLCAiVFJBQy0iLCAiVFJCQzEtIiwgIlRSQkMyLSIpCm1hcmtlcnMkVGNlbGxfTksgPC0gYygiRkdGQlAyIiwgIlNQT04yIiwgIktMUkYxIiwgIkZDR1IzQSIsICJLTFJEMSIsICJUUkRDIiwgIkNEM0UtIiwKICAgICJDRDNHLSIpCgpsaWJyYXJ5KFVDZWxsKQpwYm1jLlRjZWxsIDwtIEFkZE1vZHVsZVNjb3JlX1VDZWxsKHBibWMsIGZlYXR1cmVzID0gbWFya2VycykKc2lnbmF0dXJlLm5hbWVzIDwtIHBhc3RlMChuYW1lcyhtYXJrZXJzKSwgIl9VQ2VsbCIpCgpWbG5QbG90KHBibWMuVGNlbGwsIGZlYXR1cmVzID0gc2lnbmF0dXJlLm5hbWVzLCBncm91cC5ieSA9ICJQcmVkaWN0aW9uIiwgcHQuc2l6ZSA9IDApCgoKYGBgCgoKCgojIDIuIEVuaGFuY2VkIExvZyBGb2xkIENoYW5nZSBPcHRpb25zIGluIERpZmZlcmVudGlhbCBBbmFseXNpcyBQbG90cwpgYGB7ciwgZmlnLmhlaWdodD02LCBmaWcud2lkdGg9MTh9CmxpYnJhcnkoVUNlbGwpCnBibWMuVGNlbGwgPC0gQWRkTW9kdWxlU2NvcmVfVUNlbGwocGJtYywgZmVhdHVyZXMgPSBtYXJrZXJzKQpzaWduYXR1cmUubmFtZXMgPC0gcGFzdGUwKG5hbWVzKG1hcmtlcnMpLCAiX1VDZWxsIikKClZsblBsb3QocGJtYy5UY2VsbCwgZmVhdHVyZXMgPSBzaWduYXR1cmUubmFtZXMsIGdyb3VwLmJ5ID0gInByZWRpY3RlZC5jZWxsdHlwZS5sMiIsIHB0LnNpemUgPSAwKQpgYGAKCgojIDIuIEVuaGFuY2VkIExvZyBGb2xkIENoYW5nZSBPcHRpb25zIGluIERpZmZlcmVudGlhbCBBbmFseXNpcyBQbG90cwpgYGB7ciwgZmlnLmhlaWdodD02LCBmaWcud2lkdGg9OH0KbWFya2VycyA8LSBsaXN0KCkKbWFya2VycyRULmNlbGwgPC0gYygiQ0QzRCIgLCAiQ0QzRSIgLCAiQ0QzRyIgICwgIkNENCIgLCAgIkNEMiIgICwgIkNENyIgLCAiVFJBQyIsICJUUkJDMSIgICwgIkxBVCIgKQoKbGlicmFyeShVQ2VsbCkKcGJtYy5UY2VsbCA8LSBBZGRNb2R1bGVTY29yZV9VQ2VsbChwYm1jLCBmZWF0dXJlcyA9IG1hcmtlcnMpCgojIFNvbWUgbWFqb3IgY2VsbCB0eXBlcyB0byBsb29rIGF0Ogp0b3Bsb3QgPC0gYygiVC5jZWxsIikKCmZlYXRuYW1lcyA8LSBwYXN0ZTAodG9wbG90LCAiX1VDZWxsIikKCkZlYXR1cmVQbG90KHBibWMuVGNlbGwsIGZlYXR1cmVzID0gZmVhdG5hbWVzLCBwdC5zaXplID0gMC4xLCBtYXguY3V0b2ZmID0gInE5OSIsCiAgICBuY29sID0gMikKClZsblBsb3QocGJtYy5UY2VsbCwgZmVhdHVyZXMgPSBmZWF0bmFtZXMsIHB0LnNpemUgPSAwLCBzcGxpdC5ieSA9ICJzZXVyYXRfY2x1c3RlcnMiLAogICAgbmNvbCA9IDIpCmBgYAoKCiMgMi4gRW5oYW5jZWQgTG9nIEZvbGQgQ2hhbmdlIE9wdGlvbnMgaW4gRGlmZmVyZW50aWFsIEFuYWx5c2lzIFBsb3RzCmBgYHtyLCBmaWcuaGVpZ2h0PTYsIGZpZy53aWR0aD04fQpsaWJyYXJ5KHBsb3RseSkKbGlicmFyeShTZXVyYXQpCgojIFN0YXRpYyBVTUFQIHVzaW5nIFNldXJhdApwIDwtIERpbVBsb3QocGJtYywgcmVkdWN0aW9uID0gInVtYXAiLCBsYWJlbCA9IFRSVUUsIHJhc3RlciA9IEZBTFNFKSAgCgojIENvbnZlcnQgdG8gcGxvdGx5CmludGVyYWN0aXZlX3Bsb3QgPC0gZ2dwbG90bHkocCkgIAoKIyBEaXNwbGF5CmludGVyYWN0aXZlX3Bsb3QKCgoKCiMgU3RhdGljIEZlYXR1cmVQbG90CnBfZmVhdHVyZSA8LSBGZWF0dXJlUGxvdCgKICBwYm1jLCAKICBmZWF0dXJlcyA9ICJDRDNFIiwgCiAgcmFzdGVyID0gRkFMU0UsICAgIyBEaXNhYmxlIHJhc3RlciBmb3IgdmVjdG9yLWJhc2VkIGhvdmVyCiAgb3JkZXIgPSBUUlVFICAgICAgIyBIaWdobGlnaHQgZXhwcmVzc2luZyBjZWxscwopIAoKIyBBZGQgcGxvdGx5CmludGVyYWN0aXZlX2dlbmUgPC0gZ2dwbG90bHkocF9mZWF0dXJlKSAgCgojIEN1c3RvbWl6ZSB0b29sdGlwIChvcHRpb25hbCkKaW50ZXJhY3RpdmVfZ2VuZSAlPiUgc3R5bGUoaG92ZXJpbmZvID0gInRleHQiLCBob3ZlcnRleHQgPSBwYXN0ZSgiQ2VsbDoiLCByb3duYW1lcyhwYm1jQG1ldGEuZGF0YSkpKQoKYGBgCmBgYAoKCiMgMy4gQ2lyY2xpemUgcGxvdCB0byB2aXN1YWxpemUgY2VsbCBjbHVzdGVyaW5nIGFuZCBtZXRhIGRhdGEKYGBge3IsIGZpZy5oZWlnaHQ9NiwgZmlnLndpZHRoPTE4fQpsaWJyYXJ5KHBsb3QxY2VsbCkKCmlyaS5pbnRlZ3JhdGVkIDwtIHBibWMKCiNQcmVwYXJlIGRhdGEgZm9yIHBsb3RpbmcKY2lyY19kYXRhIDwtIHByZXBhcmVfY2lyY2xpemVfZGF0YShpcmkuaW50ZWdyYXRlZCwgc2NhbGUgPSAwLjggKQpzZXQuc2VlZCgxMjM0KQpjbHVzdGVyX2NvbG9yczwtcmFuZF9jb2xvcihsZW5ndGgobGV2ZWxzKGlyaS5pbnRlZ3JhdGVkKSkpCmdyb3VwX2NvbG9yczwtcmFuZF9jb2xvcihsZW5ndGgobmFtZXModGFibGUoaXJpLmludGVncmF0ZWQkR3JvdXApKSkpCnJlcF9jb2xvcnM8LXJhbmRfY29sb3IobGVuZ3RoKG5hbWVzKHRhYmxlKGlyaS5pbnRlZ3JhdGVkJG9yaWcuaWRlbnQpKSkpCgpgYGAKCg==