Ken Furudate

In [ ]:
## Load the required libraries
library(CellChat)
library(patchwork)
library(Seurat)
library(stringr)
options(stringsAsFactors = FALSE)
In [ ]:
in_f1 <- LNM(-).txt
in_f2 <- LNM(-)_labels.txt
in_f3 <- LNM(+).txt
in_f4 <- LNM(+)_labels.txt
In [ ]:
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")
In [ ]:
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)
In [ ]:
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))
In [ ]:
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

total_plot.png

In [ ]:
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))
	}

outgoing_incoming.png

In [ ]:
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

signaling_role_heatmap.png

In [ ]:
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")
)

COLLAGEN.png

In [ ]:
netVisual_chord_cell(cellchat_all,
                     signaling="THBS",
                     group=group.cellType,
                     color.use=label_color,
                     lab.cex = 2,
                     title.name = "THBSsignaling network")
)

THBS.png

In [ ]: