library(COTAN)
library(ComplexHeatmap)
library(circlize)
library(dplyr)
library(Hmisc)
library(Seurat)
library(patchwork)
library(Rfast)
library(parallel)
library(doParallel)
library(HiClimR)
library(stringr)
library(fst)
options(parallelly.fork.enable = TRUE)
dataFile <- "Data/Brown_PBMC_Datasets/capillary_blood_samples_pbmcs-Run_77-Cleaned.RDS"
name <- str_split(dataFile,pattern = "/",simplify = T)[3]
name <- str_remove(name,pattern = "-Cleaned.RDS")
name <- str_remove(name,pattern = "capillary_blood_samples_")
project = name
setLoggingLevel(1)
outDir <- "CoexData/"
setLoggingFile(paste0(outDir, "Logs/",name,".log"))
obj <- readRDS(dataFile)
file_code = nameGene Correlation Analysis for PBMC Brown run 77
Prologue
source("src/Functions.R")To compare the ability of COTAN to asses the real correlation between genes we define some pools of genes:
- Constitutive genes
- Neural progenitor genes
- Pan neuronal genes
- Some layer marker genes
hkGenes <- read.csv("Data/Housekeeping_TranscriptsHuman.csv", sep = ";")
genesList <- list(
"CD4 T cells"=
c("TRBC2","CD3D","CD3G","CD3E","IL7R","LTB","LEF1"),
"B cells"=
c("PAX5","MS4A1","CD19","CD74","CD79A","IGHD","HLA-DRA"),
"hk"= hkGenes$Gene_symbol[1:20], # from https://housekeeping.unicamp.br/
"general PBMC markers" =
c("FOXP3","TBX21","GATA3","RUNX1","BCL6","EOMES","EOMES","TBX21","BATF3","IRF2","TCF4","STAT5A","RUNX3","STAT6","BATF","STAT3","TBX21","TBX21","IRF8","IRF4","AHR","STAT1","IRF4","RELB")
)COTAN
genesFromListExpressed <- unlist(genesList)[unlist(genesList) %in% getGenes(obj)]
int.genes <-getGenes(obj)obj <- proceedToCoex(obj, calcCoex = TRUE, cores = 5L, saveObj = FALSE)coexMat.big <- getGenesCoex(obj)[genesFromListExpressed,genesFromListExpressed]
coexMat <- getGenesCoex(obj)[c(genesList$`CD4 T cells`,genesList$hk,genesList$`B cells`),c(genesList$`CD4 T cells`,genesList$hk,genesList$`B cells`)]
f1 = colorRamp2(seq(-1,1, length = 3), c("#DC0000B2", "white","#3C5488B2" ))
split.genes <- base::factor(c(rep("CD4 T cells",length(genesList[["CD4 T cells"]])),
rep("HK",length(genesList[["hk"]])),
rep("B cells",length(genesList[["B cells"]]))
),
levels = c("CD4 T cells","HK","B cells"))
lgd = Legend(col_fun = f1, title = "COTAN coex")
htmp <- Heatmap(as.matrix(coexMat),
#width = ncol(coexMat)*unit(2.5, "mm"),
height = nrow(coexMat)*unit(3, "mm"),
cluster_rows = FALSE,
cluster_columns = FALSE,
col = f1,
row_names_side = "left",
row_names_gp = gpar(fontsize = 11),
column_names_gp = gpar(fontsize = 11),
column_split = split.genes,
row_split = split.genes,
cluster_row_slices = FALSE,
cluster_column_slices = FALSE,
heatmap_legend_param = list(
title = "COTAN coex", at = c(-1, 0, 1),
direction = "horizontal",
labels = c("-1", "0", "1")
)
)
draw(htmp, heatmap_legend_side="right")
GDI_DF <- calculateGDI(obj)
GDI_DF$geneType <- NA
for (cat in names(genesList)) {
GDI_DF[rownames(GDI_DF) %in% genesList[[cat]],]$geneType <- cat
}
GDI_DF$GDI_centered <- scale(GDI_DF$GDI,center = T,scale = T)
GDI_DF[genesFromListExpressed,] sum.raw.norm GDI exp.cells geneType GDI_centered
TRBC2 9.827543 3.761546 70.8082658 CD4 T cells 2.6950798011
CD3D 9.778844 4.769577 71.3968088 CD4 T cells 4.1735046121
CD3G 9.669046 4.639743 69.3696050 CD4 T cells 3.9830838396
CD3E 9.578052 4.538442 70.2328015 CD4 T cells 3.8345108059
IL7R 10.107684 4.642136 66.9238818 CD4 T cells 3.9865931174
LTB 10.792764 4.646323 77.8446246 CD4 T cells 3.9927341129
LEF1 9.479637 4.498409 52.2626210 CD4 T cells 3.7757966552
PAX5 7.169109 4.092641 4.8129741 B cells 3.1806791239
MS4A1 7.292719 4.080474 5.5061470 B cells 3.1628342896
CD19 4.807077 2.992014 1.3994245 B cells 1.5664477002
CD74 9.853542 3.413808 47.0442061 B cells 2.1850706428
CD79A 7.840331 3.862701 7.5202720 B cells 2.8434388149
IGHD 7.430302 4.026343 4.6821868 B cells 3.0834432197
HLA-DRA 9.400513 4.612909 13.5757259 B cells 3.9437282798
ARF5 7.597360 1.973838 22.6654460 hk 0.0731440153
M6PR 8.194703 2.167348 36.3196443 hk 0.3569542456
RALA 8.173787 2.243266 31.6636150 hk 0.4682994860
DVL2 5.843259 1.288774 4.2375098 hk -0.9316026813
TSR3 7.424432 1.779133 19.5657860 hk -0.2124194832
NDUFAB1 7.969073 1.821111 31.8990322 hk -0.1508524613
RPS20 11.124966 3.696027 94.1276484 hk 2.5989856929
RANBP9 8.414616 2.282111 36.4504316 hk 0.5252709830
SS18L2 7.825754 1.923889 27.5568925 hk -0.0001137941
PPP5C 6.575832 2.119319 8.0434214 hk 0.2865129513
VDAC3 7.935373 1.844222 29.3617578 hk -0.1169578163
RTF2 8.085778 1.932721 33.3115354 hk 0.0128394004
B4GALT7 5.829414 1.403685 4.1982736 hk -0.7630700391
GABARAPL2 8.155099 2.046467 36.6466126 hk 0.1796654193
MRPS10 7.343016 1.444524 17.4862673 hk -0.7031734145
VAMP3 6.659895 2.544993 9.5867120 hk 0.9108254598
RCN1 6.043942 1.774021 5.1791787 hk -0.2199168344
FAM168A 7.811950 2.030865 17.6955271 hk 0.1567818351
CDC27 8.174439 2.301988 31.0489145 hk 0.5544234586
RPL18 11.777527 3.755186 95.4878368 hk 2.6857510614
FOXP3 4.960187 1.766541 1.2947947 general PBMC markers -0.2308877370
TBX21 7.097741 3.560250 9.6259482 general PBMC markers 2.3998499190
GATA3 7.831934 2.696178 21.0959979 general PBMC markers 1.1325605550
RUNX1 9.727092 2.661026 71.6453047 general PBMC markers 1.0810056749
BCL6 6.537284 3.042924 7.2586974 general PBMC markers 1.6411144725
EOMES 5.509615 2.236876 2.5503531 general PBMC markers 0.4589281094
EOMES.1 5.509615 2.236876 2.5503531 general PBMC markers 0.4589281094
TBX21.1 7.097741 3.560250 9.6259482 general PBMC markers 2.3998499190
BATF3 3.789194 3.039733 0.6800942 general PBMC markers 1.6364355925
IRF2 7.651172 1.609696 23.1101229 general PBMC markers -0.4609245587
TCF4 7.124340 3.857217 5.8592728 general PBMC markers 2.8353944687
STAT5A 7.030153 1.622988 12.7648444 general PBMC markers -0.4414300417
RUNX3 9.143328 3.594426 49.7907403 general PBMC markers 2.4499730437
STAT6 7.229371 2.449092 15.2759613 general PBMC markers 0.7701735559
BATF 6.918326 2.028569 10.7768768 general PBMC markers 0.1534147306
STAT3 9.334644 2.403912 65.3544337 general PBMC markers 0.7039094915
TBX21.2 7.097741 3.560250 9.6259482 general PBMC markers 2.3998499190
TBX21.3 7.097741 3.560250 9.6259482 general PBMC markers 2.3998499190
IRF8 6.795002 3.974535 6.7878629 general PBMC markers 3.0074593146
IRF4 6.130864 2.536698 3.6358880 general PBMC markers 0.8986601925
AHR 7.759098 3.258241 16.3484175 general PBMC markers 1.9569084223
STAT1 8.156932 2.202716 29.0217107 general PBMC markers 0.4088267629
IRF4.1 6.130864 2.536698 3.6358880 general PBMC markers 0.8986601925
RELB 8.671981 3.198585 39.9947685 general PBMC markers 1.8694145785
GDIPlot(obj,GDIIn = GDI_DF, genes = genesList,GDIThreshold = 1.4)
Seurat correlation
srat<- CreateSeuratObject(counts = getRawData(obj),
project = project,
min.cells = 3,
min.features = 200)
srat[["percent.mt"]] <- PercentageFeatureSet(srat, pattern = "^MT-")
srat <- NormalizeData(srat)
srat <- FindVariableFeatures(srat, selection.method = "vst", nfeatures = 2000)
# plot variable features with and without labels
plot1 <- VariableFeaturePlot(srat)
plot1$data$centered_variance <- scale(plot1$data$variance.standardized,
center = T,scale = F)
write.csv(plot1$data,paste0("CoexData/",
"Variance_Seurat_genes",
file_code,".csv"))
LabelPoints(plot = plot1, points = c(genesList$`CD4 T cells`,genesList$`B cells`,genesList$hk), repel = TRUE)
LabelPoints(plot = plot1, points = c(genesList$hk), repel = TRUE)
all.genes <- rownames(srat)
srat <- ScaleData(srat, features = all.genes)
seurat.data = GetAssayData(srat[["RNA"]],layer = "data")corr.pval.list <- correlation_pvalues(data = seurat.data,
genesFromListExpressed,
n.cells = getNumCells(obj))
seurat.data.cor.big <- as.matrix(Matrix::forceSymmetric(corr.pval.list$data.cor, uplo = "U"))
htmp <- correlation_plotPBMC(seurat.data.cor.big,
genesList, title="Seurat corr")
p_values.fromSeurat <- corr.pval.list$p_values
seurat.data.cor.big <- corr.pval.list$data.cor
rm(corr.pval.list)
gc() used (Mb) gc trigger (Mb) max used (Mb)
Ncells 10573514 564.7 17840498 952.8 17840498 952.8
Vcells 377157946 2877.5 674458976 5145.8 1635875174 12480.8
draw(htmp, heatmap_legend_side="right")
rm(seurat.data.cor.big)
rm(p_values.fromSeurat)
sratbase <- sratSeurat SC Transform
srat <- SCTransform(srat,
method = "glmGamPoi",
vars.to.regress = "percent.mt",
verbose = FALSE)
seurat.data <- GetAssayData(srat[["SCT"]],layer = "data")
#Remove genes with all zeros
seurat.data <-seurat.data[rowSums(seurat.data) > 0,]
corr.pval.list <- correlation_pvalues(seurat.data,
genesFromListExpressed,
n.cells = getNumCells(obj))
seurat.data.cor.big <- as.matrix(Matrix::forceSymmetric(corr.pval.list$data.cor, uplo = "U"))
htmp <- correlation_plotPBMC(seurat.data.cor.big,
genesList, title="Seurat corr SCT")
p_values.fromSeurat <- corr.pval.list$p_values
seurat.data.cor.big <- corr.pval.list$data.cor
rm(corr.pval.list)
gc() used (Mb) gc trigger (Mb) max used (Mb)
Ncells 10901727 582.3 17840498 952.8 17840498 952.8
Vcells 450266656 3435.3 1165756310 8894.1 1635875174 12480.8
draw(htmp, heatmap_legend_side="right")
plot1 <- VariableFeaturePlot(srat)
plot1$data$centered_variance <- scale(plot1$data$residual_variance,
center = T,scale = F)write.csv(plot1$data,paste0("CoexData/",
"Variance_SeuratSCT_genes",
file_code,".csv"))
write_fst(as.data.frame(seurat.data.cor.big),path = paste0("CoexData/SeuratCorrSCT_",file_code,".fst"), compress = 100)
write_fst(as.data.frame(p_values.fromSeurat),path = paste0("CoexData/SeuratPValuesSCT_", file_code,".fst"))
write.csv(as.data.frame(p_values.fromSeurat),paste0("CoexData/SeuratPValuesSCT_", file_code,".csv"))
rm(seurat.data.cor.big)
rm(p_values.fromSeurat)Monocle
library(monocle3)cds <- new_cell_data_set(getRawData(obj),
#cell_metadata = getMetadataCells(obj),
#gene_metadata = getMetadataGenes(obj)
)
cds <- preprocess_cds(cds, num_dim = 100)
normalized_counts <- normalized_counts(cds)#Remove genes with all zeros
normalized_counts <- normalized_counts[rowSums(normalized_counts) > 0,]
corr.pval.list <- correlation_pvalues(normalized_counts,
genesFromListExpressed,
n.cells = getNumCells(obj))
rm(normalized_counts)
monocle.data.cor.big <- as.matrix(Matrix::forceSymmetric(corr.pval.list$data.cor, uplo = "U"))
htmp <- correlation_plotPBMC(data.cor.big = monocle.data.cor.big,
genesList,
title = "Monocle corr")
p_values.from.monocle <- corr.pval.list$p_values
monocle.data.cor.big <- corr.pval.list$data.cor
rm(corr.pval.list)
gc() used (Mb) gc trigger (Mb) max used (Mb)
Ncells 11087846 592.2 17840498 952.8 17840498 952.8
Vcells 453025837 3456.4 1165756310 8894.1 1635875174 12480.8
draw(htmp, heatmap_legend_side="right")
Cs-Core
devtools::load_all("../CS-CORE/")Extract CS_CORE corr matrix
#seuratObj@assays$RNA@counts <- ceiling(seuratObj@assays$RNA@counts)
csCoreRes <- CSCORE(sratbase, genes = genesFromListExpressed)[INFO] IRLS converged after 2 iterations.
[INFO] Starting WLS for covariance at Thu Jan 22 14:09:32 2026
[INFO] 3 among 58 genes have invalid variance estimates. Their co-expressions with other genes were set to 0.
[INFO] 0.9074% co-expression estimates were greater than 1 and were set to 1.
[INFO] 0.0605% co-expression estimates were smaller than -1 and were set to -1.
[INFO] Finished WLS. Elapsed time: 1.0239 seconds.
mat <- as.matrix(csCoreRes$est)
diag(mat) <- 0
split.genes <- base::factor(c(rep("CD4 T cells",sum(genesList[["CD4 T cells"]] %in% genesFromListExpressed)),
rep("HK",sum(genesList[["hk"]] %in% genesFromListExpressed)),
rep("B cells",sum(genesList[["B cells"]] %in% genesFromListExpressed))
),
levels = c("CD4 T cells","HK","B cells"))
f1 = colorRamp2(seq(-1,1, length = 3), c("#DC0000B2", "white","#3C5488B2" ))
htmp <- Heatmap(as.matrix(mat[c(genesList$`CD4 T cells`,genesList$hk,genesList$`B cells`),c(genesList$`CD4 T cells`,genesList$hk,genesList$`B cells`)]),
#width = ncol(coexMat)*unit(2.5, "mm"),
height = nrow(mat)*unit(3, "mm"),
cluster_rows = FALSE,
cluster_columns = FALSE,
col = f1,
row_names_side = "left",
row_names_gp = gpar(fontsize = 11),
column_names_gp = gpar(fontsize = 11),
column_split = split.genes,
row_split = split.genes,
cluster_row_slices = FALSE,
cluster_column_slices = FALSE,
heatmap_legend_param = list(
title = "CS-CORE", at = c(-1, 0, 1),
direction = "horizontal",
labels = c("-1", "0", "1")
)
)
draw(htmp, heatmap_legend_side="right")
Save CS_CORE matrix
write_fst(as.data.frame(csCoreRes$est), path = paste0("CoexData/CS_CORECorr_", file_code,".fst"),compress = 100)
write_fst(as.data.frame(csCoreRes$p_value), path = paste0("CoexData/CS_COREPValues_", file_code,".fst"),compress = 100)
write.csv(as.data.frame(csCoreRes$p_value), paste0("CoexData/CS_COREPValues_", file_code,".csv"))Baseline: Spearman on UMI counts
corr.pval.list <- correlation_pvaluesSpearman(data = getRawData(obj),
genesFromListExpressed,
n.cells = getNumCells(obj))
data.cor.big <- as.matrix(Matrix::forceSymmetric(corr.pval.list$data.cor, uplo = "U"))
htmp <- correlation_plot(data.cor.big,
genesList, title="UMI baseline S. corr")
p_values.fromSp.C <- corr.pval.list$p_values
data.cor.bigSp.C <- corr.pval.list$data.cor
rm(corr.pval.list)
gc() used (Mb) gc trigger (Mb) max used (Mb)
Ncells 11208982 598.7 17840498 952.8 17840498 952.8
Vcells 453255067 3458.1 1165756310 8894.1 1635875174 12480.8
draw(htmp, heatmap_legend_side="right")
write.csv(as.data.frame(p_values.fromSp.C), paste0("CoexData/BaselineUMISpCorrPValues_", file_code,".csv"))Baseline: Pearson on binarized counts
corr.pval.list <- correlation_pvalues(data = getZeroOneProj(obj),
genesFromListExpressed,
n.cells = getNumCells(obj))
data.cor.big <- as.matrix(Matrix::forceSymmetric(corr.pval.list$data.cor, uplo = "U"))
htmp <- correlation_plotPBMC(data.cor.big,
genesList, title="Zero-one P. corr")
p_values.fromSp.C <- corr.pval.list$p_values
data.cor.bigSp.C <- corr.pval.list$data.cor
rm(corr.pval.list)
gc() used (Mb) gc trigger (Mb) max used (Mb)
Ncells 11209049 598.7 17840498 952.8 17840498 952.8
Vcells 453256108 3458.1 1165756310 8894.1 1635875174 12480.8
draw(htmp, heatmap_legend_side="right")
write.csv(as.data.frame(p_values.fromSp.C), paste0("CoexData/ZeroOnePCorrPValues_", file_code,".csv"))Sys.time()[1] "2026-01-22 14:09:41 CET"
sessionInfo()R version 4.5.2 (2025-10-31)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 22.04.5 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0 LAPACK version 3.10.0
locale:
[1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8
[4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8
[7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C
time zone: Europe/Rome
tzcode source: system (glibc)
attached base packages:
[1] stats4 parallel grid stats graphics grDevices utils
[8] datasets methods base
other attached packages:
[1] CSCORE_1.0.2 testthat_3.3.2
[3] monocle3_1.3.7 SingleCellExperiment_1.32.0
[5] SummarizedExperiment_1.38.1 GenomicRanges_1.62.1
[7] Seqinfo_1.0.0 IRanges_2.44.0
[9] S4Vectors_0.48.0 MatrixGenerics_1.22.0
[11] matrixStats_1.5.0 Biobase_2.70.0
[13] BiocGenerics_0.56.0 generics_0.1.3
[15] fstcore_0.10.0 fst_0.9.8
[17] stringr_1.6.0 HiClimR_2.2.1
[19] doParallel_1.0.17 iterators_1.0.14
[21] foreach_1.5.2 Rfast_2.1.5.1
[23] RcppParallel_5.1.10 zigg_0.0.2
[25] Rcpp_1.1.0 patchwork_1.3.2
[27] Seurat_5.4.0 SeuratObject_5.3.0
[29] sp_2.2-0 Hmisc_5.2-3
[31] dplyr_1.1.4 circlize_0.4.16
[33] ComplexHeatmap_2.26.0 COTAN_2.11.1
loaded via a namespace (and not attached):
[1] fs_1.6.6 spatstat.sparse_3.1-0
[3] devtools_2.4.5 httr_1.4.7
[5] RColorBrewer_1.1-3 profvis_0.4.0
[7] tools_4.5.2 sctransform_0.4.2
[9] backports_1.5.0 R6_2.6.1
[11] lazyeval_0.2.2 uwot_0.2.3
[13] ggdist_3.3.3 GetoptLong_1.1.0
[15] urlchecker_1.0.1 withr_3.0.2
[17] gridExtra_2.3 parallelDist_0.2.6
[19] progressr_0.18.0 cli_3.6.5
[21] Cairo_1.7-0 spatstat.explore_3.6-0
[23] fastDummies_1.7.5 labeling_0.4.3
[25] S7_0.2.1 spatstat.data_3.1-9
[27] proxy_0.4-29 ggridges_0.5.6
[29] pbapply_1.7-2 foreign_0.8-90
[31] sessioninfo_1.2.3 parallelly_1.46.0
[33] torch_0.16.3 rstudioapi_0.18.0
[35] shape_1.4.6.1 ica_1.0-3
[37] spatstat.random_3.4-3 distributional_0.6.0
[39] dendextend_1.19.0 Matrix_1.7-4
[41] abind_1.4-8 lifecycle_1.0.4
[43] yaml_2.3.10 SparseArray_1.10.8
[45] Rtsne_0.17 glmGamPoi_1.20.0
[47] promises_1.5.0 crayon_1.5.3
[49] miniUI_0.1.2 lattice_0.22-7
[51] beachmat_2.26.0 cowplot_1.2.0
[53] magick_2.9.0 zeallot_0.2.0
[55] pillar_1.11.1 knitr_1.50
[57] rjson_0.2.23 boot_1.3-32
[59] future.apply_1.20.0 codetools_0.2-20
[61] glue_1.8.0 spatstat.univar_3.1-6
[63] remotes_2.5.0 data.table_1.18.0
[65] Rdpack_2.6.4 vctrs_0.7.0
[67] png_0.1-8 spam_2.11-1
[69] gtable_0.3.6 assertthat_0.2.1
[71] cachem_1.1.0 xfun_0.52
[73] rbibutils_2.3 S4Arrays_1.10.1
[75] mime_0.13 reformulas_0.4.1
[77] survival_3.8-3 ncdf4_1.24
[79] ellipsis_0.3.2 fitdistrplus_1.2-2
[81] ROCR_1.0-11 nlme_3.1-168
[83] usethis_3.2.1 bit64_4.6.0-1
[85] RcppAnnoy_0.0.22 rprojroot_2.1.1
[87] GenomeInfoDb_1.44.0 irlba_2.3.5.1
[89] KernSmooth_2.23-26 otel_0.2.0
[91] rpart_4.1.24 colorspace_2.1-1
[93] nnet_7.3-20 tidyselect_1.2.1
[95] processx_3.8.6 bit_4.6.0
[97] compiler_4.5.2 htmlTable_2.4.3
[99] desc_1.4.3 DelayedArray_0.36.0
[101] plotly_4.11.0 checkmate_2.3.2
[103] scales_1.4.0 lmtest_0.9-40
[105] callr_3.7.6 digest_0.6.37
[107] goftest_1.2-3 spatstat.utils_3.2-1
[109] minqa_1.2.8 rmarkdown_2.29
[111] XVector_0.50.0 htmltools_0.5.8.1
[113] pkgconfig_2.0.3 base64enc_0.1-3
[115] coro_1.1.0 lme4_1.1-37
[117] sparseMatrixStats_1.20.0 fastmap_1.2.0
[119] rlang_1.1.7 GlobalOptions_0.1.2
[121] htmlwidgets_1.6.4 ggthemes_5.2.0
[123] UCSC.utils_1.4.0 shiny_1.12.1
[125] DelayedMatrixStats_1.30.0 farver_2.1.2
[127] zoo_1.8-14 jsonlite_2.0.0
[129] BiocParallel_1.44.0 BiocSingular_1.26.1
[131] magrittr_2.0.4 Formula_1.2-5
[133] GenomeInfoDbData_1.2.14 dotCall64_1.2
[135] viridis_0.6.5 reticulate_1.44.1
[137] stringi_1.8.7 brio_1.1.5
[139] MASS_7.3-65 pkgbuild_1.4.7
[141] plyr_1.8.9 listenv_0.10.0
[143] ggrepel_0.9.6 deldir_2.0-4
[145] splines_4.5.2 tensor_1.5
[147] ps_1.9.1 igraph_2.2.1
[149] spatstat.geom_3.6-1 RcppHNSW_0.6.0
[151] pkgload_1.4.0 reshape2_1.4.4
[153] ScaledMatrix_1.16.0 evaluate_1.0.5
[155] nloptr_2.2.1 httpuv_1.6.16
[157] RANN_2.6.2 tidyr_1.3.1
[159] purrr_1.2.0 polyclip_1.10-7
[161] future_1.69.0 clue_0.3-66
[163] scattermore_1.2 ggplot2_4.0.1
[165] rsvd_1.0.5 xtable_1.8-4
[167] RSpectra_0.16-2 later_1.4.2
[169] viridisLite_0.4.2 tibble_3.3.0
[171] memoise_2.0.1 cluster_2.1.8.1
[173] globals_0.18.0