Ken Furudate
## Load the required libraries
library(CellChat)
library(patchwork)
library(Seurat)
library(stringr)
options(stringsAsFactors = FALSE)
in_f1 <- LNM(-).txt
in_f2 <- LNM(-)_labels.txt
in_f3 <- LNM(+).txt
in_f4 <- LNM(+)_labels.txt
data_LNM <- read.table(in_f1, header=TRUE, row.names=1, sep="\t", quote="", stringsAsFactors = FALSE)
data_N0 <- read.table(in_f3, header=TRUE, row.names=1, sep="\t", quote="", stringsAsFactors = FALSE)
data_LNM <- t(data_LNM)
data_N0 <- t(data_N0)
meta_LNM <- read.table(in_f2, header=TRUE, row.names=1, sep="\t", quote="", stringsAsFactors = FALSE)
meta_N0 <- read.table(in_f4, header=TRUE, row.names=1, sep="\t", quote="", stringsAsFactors = FALSE)
meta_LNM = data.frame(labels = meta_LNM$labels, row.names = colnames(data_LNM))
meta_N0 = data.frame(labels = meta_N0$labels, row.names = colnames(data_N0))
meta_LNM$labels <- str_replace(meta_LNM$labels, "_LNM", "")
meta_N0$labels <- str_replace(meta_N0$labels, "_N0", "")
data_all <- rbind(data_LNM, data_N0)
meta_all <- rbind(meta_LNM, meta_N0)
cellchat_LNM <- createCellChat(object = data_LNM, meta = meta_LNM, group.by = "labels")
cellchat_N0 <- createCellChat(object = data_N0, meta = meta_N0, group.by = "labels")
cellchat_all <- createCellChat(object = data_all, meta = meta_all, group.by = "labels")
cellchat_LNM <- addMeta(cellchat_LNM, meta=meta_LNM)
cellchat_N0 <- addMeta(cellchat_N0, meta = meta_N0)
cellchat_all <- addMeta(cellchat_all, meta = meta_N0)
cellchat_LNM <- setIdent(cellchat_LNM, ident.use = "labels")
cellchat_N0 <- setIdent(cellchat_N0, ident.use = "labels")
cellchat_all <- setIdent(cellchat_all, ident.use = "labels")
groupSize <- as.numeric(table(cellchat_LNM@idents))
CellChatDB <- CellChatDB.human
CellChatDB.use <- CellChatDB
cellchat_N0@DB <- CellChatDB.use
cellchat_LNM@DB <- CellChatDB.use
cellchat_all@DB <- CellChatDB.use
cellchat_LNM <- subsetData(cellchat_LNM)
cellchat_N0 <- subsetData(cellchat_N0)
cellchat_all <- subsetData(cellchat_all)
cellchat_LNM <- identifyOverExpressedGenes(cellchat_LNM)
cellchat_N0 <- identifyOverExpressedGenes(cellchat_N0)
cellchat_all <- identifyOverExpressedGenes(cellchat_all)
cellchat_LNM <- identifyOverExpressedInteractions(cellchat_LNM)
cellchat_N0 <- identifyOverExpressedInteractions(cellchat_N0)
cellchat_all <- identifyOverExpressedInteractions(cellchat_all)
cellchat_LNM <- projectData(cellchat_LNM, PPI.human)
cellchat_N0 <- projectData(cellchat_N0, PPI.human)
cellchat_all <- projectData(cellchat_all, PPI.human)
cellchat_LNM <- computeCommunProb(cellchat_LNM)
cellchat_N0 <- computeCommunProb(cellchat_N0)
cellchat_all <- computeCommunProb(cellchat_all)
cellchat_LNM <- filterCommunication(cellchat_LNM, min.cells=10)
cellchat_N0 <- filterCommunication(cellchat_N0, min.cells=10)
cellchat_all <- filterCommunication(cellchat_all, min.cells=10)
cellchat_LNM <- computeCommunProbPathway(cellchat_LNM)
cellchat_N0 <- computeCommunProbPathway(cellchat_N0)
cellchat_all <- computeCommunProbPathway(cellchat_all)
cellchat_LNM <- aggregateNet(cellchat_LNM)
cellchat_N0 <- aggregateNet(cellchat_N0)
cellchat_all <- aggregateNet(cellchat_all)
group.new = levels(cellchat_LNM@idents)
cellchat_N0 <- liftCellChat(cellchat_N0, group.new)
object.list <- list(N0 = cellchat_N0, LNM = cellchat_LNM)
cellchat <- mergeCellChat(object.list, add.names = names(object.list))
ggplot()+theme_set(theme_classic(base_size = 20, base_family = "Arial"))
anot_cols <- c("#0977a9", "#ab162c")
gg1 <- compareInteractions(cellchat,
color.use=anot_cols,
show.legend=F,
group = c(1,2),
size.text=20,
digits=2,
width=0.7
)
gg2 <- compareInteractions(cellchat,
color.use=anot_cols,
legend=F,
group = c(1,2),
measure ="weight",
size.text=30,
digits=2,
width=0.7,
show.legend=F
)
gg1 + gg2
num.link <- sapply(object.list, function(x) {
rowSums(x@net$count) +
colSums(x@net$count) -
diag(x@net$count)
})
weight.MinMax <- c(min(num.link), max(num.link))
gg <- list()
label_color = c("#E41A1C", # "B cell"
"#377EB8", # "CAF"
"#984EA3", # "DC"
"#F29403", # "EC"
"#A65628", # "Mac"
"#F781BF", # "MAF"
"#BC9DCC", # "MSC"
"#54B0E4", # "Mst"
"#222F75", # "Myo"
"#4DAF4A", # "OSCC cell"
"#1B9E77" # "T cell"
)
for (i in 1:length(object.list)) {
object.list[[i]] <- netAnalysis_computeCentrality(object.list[[i]])
gg[[i]] <- netAnalysis_signalingRole_scatter(
object.list[[i]],
title = names(object.list)[i],
weight.MinMax = weight.MinMax,
font.size=20,
font.size.title = 20,
label.size = 12,
dot.alpha = 0.4,
color.use=label_color
) +
scale_y_continuous(limits = c(0,30)) +
scale_x_continuous(limits = c(0,40))
}
signaling <- c("COLLAGEN",
"LAMININ",
"FN1",
"THBS",
"ANGPT",
"IGF",
"VEGF",
"CSPG4",
"IL6",
"SEMA5"
)
ht1 <- netAnalysis_signalingRole_heatmap(cellchat_all,
pattern = "outgoing",
signaling=signaling,
color.use=label_color,
height = 10,
font.size = 18,
font.size.title = 20
)
ht2 <- netAnalysis_signalingRole_heatmap(cellchat_all,
pattern = "incoming",
signaling=signaling,
color.use=label_color,
height = 10,
font.size = 18,
font.size.title = 20
)
ht1 + ht2
group.cellType <- c(rep("FIB", 3), "B cell", "T cell", "Mac", "DC", "EC", "Mst", "Myo", "OSCC cell" )
names(group.cellType) <- c("CAF", "MAF", "MSC", "B cell", "T cell", "Mac", "DC", "EC", "Mst", "Myo", "OSCC cell")
netVisual_chord_cell(cellchat_all,
signaling="COLLAGEN",
group=group.cellType,
color.use=label_color,
lab.cex = 2,
title.name = "COLLAGENsignaling network")
)
netVisual_chord_cell(cellchat_all,
signaling="THBS",
group=group.cellType,
color.use=label_color,
lab.cex = 2,
title.name = "THBSsignaling network")
)