今天是miRTalk包,嘿嘿!~😁
miRTalk 由三个部分组成:👇
1️⃣ 第一部分是推断EV来源的跨细胞miRNA和高变靶基因;
2️⃣ 第二部分是推断EV来源的miRNAs介导的细胞间通讯及其下游靶点;
3️⃣ 第三部分是可视化miRNA介导的细胞间通讯网络和miRNA-靶点相互作用网络。
rm(list = ls())
#devtools::install_github("multitalk/miRTalk")
library(miRTalk)
library(tidyverse)
load(paste0(system.file(package = "miRTalk"), "/extdata/example.rda"))
# demo_geneinfo
demo_geneinfo()

# demo_sc_data
demo_sc_data()

obj <- create_miRTalk(sc_data = sc_data,
sc_celltype = sc_celltype,
species = "Human",
condition = rep("condition",length(sc_celltype)),
evbiog = evbiog,
risc = risc,
ritac = ritac)
# find highly variable target genes
obj <- find_hvtg(object = obj)
# the result is a character
var_genes <- obj@data$var_genes
str(var_genes)

这里我们可以选择不同的数据库进行识别miRNA。😘
由于大多数miRNA都是负向调控的,这里默认是negative,如果你需要正向调控就改成positive吧。😜
# find MiTIs with negative regulation by default using risc
obj <- find_miRNA(object = obj,
mir_info = mir_info,
mir2tar = mir2tar)
# find MiTIs with positive regulation by default using ritac
# obj <- find_miRNA(object = obj,
# mir_info = mir_info,
# mir2tar = mir2tar,
# regulation = "positive")
# Use different databases
# obj <- find_miRNA(object = obj,
# mir_info = mir_info,
# mir2tar = mir2tar,
# database = c("miRTarBase", "TarBase"))
# Use EXOmotif to refine EV-derived miRNAs
# obj <- find_miRNA(object = obj,
# mir_info = mir_info,
# mir2tar = mir2tar,
# EXOmotif = "CAUG")
# Correct to precursor miRNAs
# obj <- find_miRNA(object = obj,
# mir_info = mir_info,
# mir2tar = mir2tar,
# resolution = "precursor")
# Use human database (mir_info and mir2tar) for mouse or rat scRNA-seq data
# obj <- find_miRNA(object = obj,
# mir_info = mir_info,
# mir2tar = mir2tar,
# if_use_human_data = TRUE,
# gene2gene = gene2gene)
# infer cell-cell communications mediated by EV-derived miRNAs from senders to receivers
obj <- find_miRTalk(object = obj)
obj

# the result is a data.frame
cci <- obj@cci
str(cci)

# get simple results of miRNA-target interactions
obj_cci <- get_miRTalk_cci(obj)
str(obj_cci)

plot_miRTalk_chord(object = obj)

plot_miRTalk_circle(object = obj)

简化一下!~
只显示sender。👀
# as sender
plot_miRTalk_circle_simple(object = obj, celltype = "Tumor", celltype_dir = "sender")

只显示receiver。😏
# as receiver
plot_miRTalk_circle_simple(object = obj, celltype = "Tumor", celltype_dir = "reciver")

plot_miRTalk_heatmap(object = obj)

plot_miRTalk_sankey(object = obj)

plot_miR_heatmap(object = obj)

plot_target_heatmap(object = obj, celltype = "Bcell",
height = 1000,
width = 4000)

plot_miR_bubble(object = obj)

plot_miR2tar_chord(obj, celltype_sender = "Tumor", celltype_receiver = "Bcell")

plot_miR2tar_circle(obj, celltype_sender = "Tumor", celltype_receiver = "Bcell")

plot_miR2tar_circle(obj, celltype_sender = "Tumor", celltype_receiver = "Bcell", celltype_color = "NO")

plot_miR2tar_heatmap(obj, celltype_sender = "Tumor", celltype_receiver = "Bcell", grid_color = "black",
height = 2000, width = 4000
)

# get pathways
res_pathway <- get_miRTalk_pathway(object = obj,
gene2path = gene2path,
mir2path = mir2path,
miRNA = "hsa-miR-133a-3p",
targetgenes = "ANXA2")
str(res_pathway[[1]]$miRNA_term) # pathways for hsa-miR-133a-3p

str(res_pathway[[2]]$target_gene_term) # pathways for ANXA2

res_pathway[[3]]$miRNA_term # overlapped/shared pathways

# get circulating miRNAs
res_circulating <- get_miRTalk_circulating_score(obj)
str(res_circulating)

#plotting
res_circulating$celltype_receiver <- paste0(res_circulating$condition,"_",res_circulating$celltype_receiver)
res_circulating <- unique(res_circulating[,c("miRNA","score","celltype_receiver")])
res_cir_plot <- reshape2::dcast(data = res_circulating, formula = miRNA ~ celltype_receiver, value.var = "score", fun.aggregate = mean, fill = 0)
rownames(res_cir_plot) <- res_cir_plot$miRNA
res_cir_plot <- res_cir_plot[,-1]
heat_col <- viridis::viridis(n = 256, alpha = 1, begin = 0, end = 1, option = "D")
heatmaply::heatmaply(x = as.matrix(res_cir_plot), colors = heat_col, limits = c(0,1),dendrogram = "none", margins = c(60,100,40,20), titleX = FALSE, main = "Circulating potential", branches_lwd = 0.1, fontsize_row = 10, fontsize_col = 10, labCol = colnames(res_cir_plot), labRow = rownames(res_cir_plot), heatmap_layers = theme(axis.line=element_blank()))

Shao X, Yu L, Li C, Qian J, Yang X, Yang H, Liao J, Fan, X, Xu X, Fan X. Extracellular vesicle-derived miRNA-mediated cell-cell communication inference for single-cell transcriptomic data with miRTalk. Genome Biol. 2025 April 14;26:95. doi: 10.1186/s13059-025-03566-x