1. load libraries

library(dplyr)

Attachement du package : ‘dplyr’

Les objets suivants sont masqués depuis ‘package:stats’:

    filter, lag

Les objets suivants sont masqués depuis ‘package:base’:

    intersect, setdiff, setequal, union
library(Seurat)
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio
library(ComplexHeatmap)
Le chargement a nécessité le package : grid
========================================
ComplexHeatmap version 2.14.0
Bioconductor page: http://bioconductor.org/packages/ComplexHeatmap/
Github page: https://github.com/jokergoo/ComplexHeatmap
Documentation: http://jokergoo.github.io/ComplexHeatmap-reference

If you use it in published research, please cite either one:
- Gu, Z. Complex Heatmap Visualization. iMeta 2022.
- Gu, Z. Complex heatmaps reveal patterns and correlations in multidimensional 
    genomic data. Bioinformatics 2016.


The new InteractiveComplexHeatmap package can directly export static 
complex heatmaps into an interactive Shiny app with zero effort. Have a try!

This message can be suppressed by:
  suppressPackageStartupMessages(library(ComplexHeatmap))
========================================
# https://github.com/immunogenomics/presto
library(presto)
Le chargement a nécessité le package : Rcpp
Le chargement a nécessité le package : data.table
data.table 1.17.0 utilise 10 threads (voir ?getDTthreads).  Dernières actualités : r-datatable.com
**********
Running data.table in English; package support is available in English only. When searching for online help, be sure to also check for the English error message. This can be obtained by looking at the po/R-<locale>.po and po/<locale>.po files in the package source, where the native language and English error messages can be found side-by-side. You can also try calling Sys.setLanguage('en') prior to reproducing the error message.
**********

Attachement du package : ‘data.table’

Les objets suivants sont masqués depuis ‘package:dplyr’:

    between, first, last
library(tictoc)

Attachement du package : ‘tictoc’

L'objet suivant est masqué depuis ‘package:data.table’:

    shift
library(SCpubr)
---------------------------------------------------------------
SCpubr

If you use SCpubr in your research, please cite it accordingly: 
Blanco-Carmona, E. Generating publication ready visualizations for Single Cell transcriptomics using SCpubr. bioRxiv (2022) doi:10.1101/2022.02.28.482303.

If the package is useful to you, consider leaving a Star in the GitHub repo: https://github.com/enblacar/SCpubr/stargazers 

Keep track of the package updates on Twitter (@Enblacar) or in https://github.com/enblacar/SCpubr/blob/main/NEWS.md 

To suppress this startup message, use: 
suppressPackageStartupMessages(library('SCpubr'))
---------------------------------------------------------------
library(decoupleR)

Attachement du package : ‘decoupleR’

L'objet suivant est masqué depuis ‘package:data.table’:

    :=
library(progeny)
library(dorothea)

Attachement du package : ‘dorothea’

L'objet suivant est masqué depuis ‘package:decoupleR’:

    run_viper

2. Load Seurat Object


#Load Seurat Object merged from cell lines and a control(PBMC) after filtration
load("../../To_Transfer_between_computers/23-Harmony_Integration/0-robj/5-Harmony_Integrated_All_samples_Merged_CD4Tcells_final_Resolution_Selected_0.8_ADT_Normalized_cleaned_mt.robj")

3. TF Activity inference analysis

# Define your sample and assay.
sample <- All_samples_Merged
assay <- "SCT"

rm(All_samples_Merged)

gc()
             used   (Mb) gc trigger    (Mb)   max used    (Mb)
Ncells    7335369  391.8   11508474   614.7   11508474   614.7
Vcells 1230041108 9384.5 2731800990 20842.0 2459723143 18766.2
# Retrieve prior knowledge network.
network <- decoupleR::get_dorothea(organism = "human",
                                   levels = c("A", "B", "C"))
[2025-04-28 19:12:22] [SUCCESS] [OmnipathR] Downloaded 278830 interactions.
# Run weighted means algorithm.
activities <- decoupleR::run_wmean(mat = as.matrix(sample@assays[[assay]]@data),
                                   network = network,
                                   .source = "source",
                                   .targe = "target",
                                   .mor = "mor",
                                   times = 100,
                                   minsize = 5)
Avis : sparse->dense coercion: allocating vector of size 9.6 GiB
gc()
             used    (Mb)  gc trigger     (Mb)    max used     (Mb)
Ncells    7986439   426.6    84118882   4492.5   105148602   5615.6
Vcells 1448620301 11052.1 13120725903 100103.2 13578013682 103592.1
gc()
             used    (Mb)  gc trigger    (Mb)    max used     (Mb)
Ncells    7986446   426.6    67295106  3594.0   105148602   5615.6
Vcells 1448620330 11052.1 10496580723 80082.6 13578013682 103592.1
gc()
             used    (Mb) gc trigger    (Mb)    max used     (Mb)
Ncells    7986446   426.6   53836085  2875.2   105148602   5615.6
Vcells 1448620330 11052.1 8397264579 64066.1 13578013682 103592.1

Heatmap of averaged scores


# General heatmap.
out <- SCpubr::do_TFActivityPlot(sample = sample,
                                 activities = activities)
p1 <- out$heatmaps$average_scores
p1

Set the scale limits


out <- SCpubr::do_TFActivityPlot(sample = sample,
                                 activities = activities,
                                 min.cutoff = -1.5,
                                 max.cutoff = 1.5)
p2 <- out$heatmaps$average_scores
p2

Effect of enforce symmetry on the scale limits.


out <- SCpubr::do_TFActivityPlot(sample = sample,
                                 activities = activities,
                                 min.cutoff = -1.7,
                                 max.cutoff = 1,
                                 enforce_symmetry = TRUE)
p3 <- out$heatmaps$average_scores
p3

Select the number of top TFs to plot


# Increase number of TFs included in the analysis.
out <- SCpubr::do_TFActivityPlot(sample = sample,
                                 activities = activities,
                                 n_tfs = 40)
p4 <- out$heatmaps$average_scores
p4

NA
NA

Select the number of top TFs to plot



# Increase number of TFs included in the analysis.
out <- SCpubr::do_TFActivityPlot(sample = sample,
                                 activities = activities,
                                 n_tfs = 100)
p5 <- out$heatmaps$average_scores
p5

Generate an Azimuth report_l2


out <- SCpubr::do_TFActivityPlot(sample = sample,
                                 activities = activities,
                                 plot_FeaturePlots = TRUE)
p6 <- SCpubr::do_DimPlot(sample)
p7 <- out$geyser_plots$RELB
p8 <- p6 | p7
p8

NA
NA
LS0tCnRpdGxlOiAiVEYgQWN0aXZpdHkgaW5mZXJlbmNlIGFuYWx5c2lzIgphdXRob3I6ICJOYXNpciBNYWhtb29kIEFiYmFzaSIKZGF0ZTogImByIFN5cy5EYXRlKClgIgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6IHllcwogICAgdG9jX2NvbGxhcHNlZDogeWVzCiAgd29yZF9kb2N1bWVudDoKICAgIHRvYzogeWVzCiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogeWVzCiAgICBkZl9wcmludDogcGFnZWQKICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwotLS0KCgojIDEuIGxvYWQgbGlicmFyaWVzCmBgYHtyIHNldHVwLCBpbmNsdWRlPVRSVUV9CmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoU2V1cmF0KQpsaWJyYXJ5KENvbXBsZXhIZWF0bWFwKQojIGh0dHBzOi8vZ2l0aHViLmNvbS9pbW11bm9nZW5vbWljcy9wcmVzdG8KbGlicmFyeShwcmVzdG8pCmxpYnJhcnkodGljdG9jKQoKbGlicmFyeShTQ3B1YnIpCmxpYnJhcnkoZGVjb3VwbGVSKQpsaWJyYXJ5KHByb2dlbnkpCmxpYnJhcnkoZG9yb3RoZWEpCgoKCmBgYAoKCiMgMi4gTG9hZCBTZXVyYXQgT2JqZWN0IApgYGB7cn0KCiNMb2FkIFNldXJhdCBPYmplY3QgbWVyZ2VkIGZyb20gY2VsbCBsaW5lcyBhbmQgYSBjb250cm9sKFBCTUMpIGFmdGVyIGZpbHRyYXRpb24KbG9hZCgiLi4vLi4vVG9fVHJhbnNmZXJfYmV0d2Vlbl9jb21wdXRlcnMvMjMtSGFybW9ueV9JbnRlZ3JhdGlvbi8wLXJvYmovNS1IYXJtb255X0ludGVncmF0ZWRfQWxsX3NhbXBsZXNfTWVyZ2VkX0NENFRjZWxsc19maW5hbF9SZXNvbHV0aW9uX1NlbGVjdGVkXzAuOF9BRFRfTm9ybWFsaXplZF9jbGVhbmVkX210LnJvYmoiKQpgYGAKCgojIDMuIFRGIEFjdGl2aXR5IGluZmVyZW5jZSBhbmFseXNpcwpgYGB7cn0KIyBEZWZpbmUgeW91ciBzYW1wbGUgYW5kIGFzc2F5LgpzYW1wbGUgPC0gQWxsX3NhbXBsZXNfTWVyZ2VkCmFzc2F5IDwtICJTQ1QiCgpybShBbGxfc2FtcGxlc19NZXJnZWQpCgpnYygpCgojIFJldHJpZXZlIHByaW9yIGtub3dsZWRnZSBuZXR3b3JrLgpuZXR3b3JrIDwtIGRlY291cGxlUjo6Z2V0X2Rvcm90aGVhKG9yZ2FuaXNtID0gImh1bWFuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJBIiwgIkIiLCAiQyIpKQoKIyBSdW4gd2VpZ2h0ZWQgbWVhbnMgYWxnb3JpdGhtLgphY3Rpdml0aWVzIDwtIGRlY291cGxlUjo6cnVuX3dtZWFuKG1hdCA9IGFzLm1hdHJpeChzYW1wbGVAYXNzYXlzW1thc3NheV1dQGRhdGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmsgPSBuZXR3b3JrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zb3VyY2UgPSAic291cmNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGFyZ2UgPSAidGFyZ2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubW9yID0gIm1vciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXMgPSAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluc2l6ZSA9IDUpCmBgYAoKCiMjIEhlYXRtYXAgb2YgYXZlcmFnZWQgc2NvcmVzCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMH0KCiMgR2VuZXJhbCBoZWF0bWFwLgpvdXQgPC0gU0NwdWJyOjpkb19URkFjdGl2aXR5UGxvdChzYW1wbGUgPSBzYW1wbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXMgPSBhY3Rpdml0aWVzKQpwMSA8LSBvdXQkaGVhdG1hcHMkYXZlcmFnZV9zY29yZXMKcDEKCmBgYAoKCiMjIFNldCB0aGUgc2NhbGUgbGltaXRzCmBgYHtyLCBmaWcuaGVpZ2h0PTgsIGZpZy53aWR0aD0xMH0KCm91dCA8LSBTQ3B1YnI6OmRvX1RGQWN0aXZpdHlQbG90KHNhbXBsZSA9IHNhbXBsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllcyA9IGFjdGl2aXRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbi5jdXRvZmYgPSAtMS41LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXguY3V0b2ZmID0gMS41KQpwMiA8LSBvdXQkaGVhdG1hcHMkYXZlcmFnZV9zY29yZXMKcDIKCmBgYAoKIyMgRWZmZWN0IG9mIGVuZm9yY2Ugc3ltbWV0cnkgb24gdGhlIHNjYWxlIGxpbWl0cy4KYGBge3IsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTEwfQoKb3V0IDwtIFNDcHVicjo6ZG9fVEZBY3Rpdml0eVBsb3Qoc2FtcGxlID0gc2FtcGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpdml0aWVzID0gYWN0aXZpdGllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluLmN1dG9mZiA9IC0xLjcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heC5jdXRvZmYgPSAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmZvcmNlX3N5bW1ldHJ5ID0gVFJVRSkKcDMgPC0gb3V0JGhlYXRtYXBzJGF2ZXJhZ2Vfc2NvcmVzCnAzCgpgYGAKCiMjIFNlbGVjdCB0aGUgbnVtYmVyIG9mIHRvcCBURnMgdG8gcGxvdApgYGB7ciwgZmlnLmhlaWdodD04LCBmaWcud2lkdGg9MTB9CgojIEluY3JlYXNlIG51bWJlciBvZiBURnMgaW5jbHVkZWQgaW4gdGhlIGFuYWx5c2lzLgpvdXQgPC0gU0NwdWJyOjpkb19URkFjdGl2aXR5UGxvdChzYW1wbGUgPSBzYW1wbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXMgPSBhY3Rpdml0aWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX3RmcyA9IDQwKQpwNCA8LSBvdXQkaGVhdG1hcHMkYXZlcmFnZV9zY29yZXMKcDQKCgpgYGAKCgojIyBTZWxlY3QgdGhlIG51bWJlciBvZiB0b3AgVEZzIHRvIHBsb3QKYGBge3IsIGZpZy5oZWlnaHQ9OCwgZmlnLndpZHRoPTQwfQoKCiMgSW5jcmVhc2UgbnVtYmVyIG9mIFRGcyBpbmNsdWRlZCBpbiB0aGUgYW5hbHlzaXMuCm91dCA8LSBTQ3B1YnI6OmRvX1RGQWN0aXZpdHlQbG90KHNhbXBsZSA9IHNhbXBsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdGllcyA9IGFjdGl2aXRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fdGZzID0gMTAwKQpwNSA8LSBvdXQkaGVhdG1hcHMkYXZlcmFnZV9zY29yZXMKcDUKCmBgYAoKCiMjIEdlbmVyYXRlIGFuIEF6aW11dGggcmVwb3J0X2wyCmBgYHtyLCBmaWcuaGVpZ2h0PTEyLCBmaWcud2lkdGg9MTZ9CgpvdXQgPC0gU0NwdWJyOjpkb19URkFjdGl2aXR5UGxvdChzYW1wbGUgPSBzYW1wbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2aXRpZXMgPSBhY3Rpdml0aWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbG90X0ZlYXR1cmVQbG90cyA9IFRSVUUpCnA2IDwtIFNDcHVicjo6ZG9fRGltUGxvdChzYW1wbGUpCnA3IDwtIG91dCRnZXlzZXJfcGxvdHMkUkVMQgpwOCA8LSBwNiB8IHA3CnA4CgoKYGBgCgoKCgo=