首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >数据挖掘—多种方式获取全面的单体靶点

数据挖掘—多种方式获取全面的单体靶点

原创
作者头像
sheldor没耳朵
发布2025-05-16 17:21:55
发布2025-05-16 17:21:55
4660
举报
文章被收录于专栏:数据挖掘数据挖掘

数据挖掘—多种方式获取全面的单体靶点

网络药理学中,有的时候我们不是只关注某种复方或者中药的靶点,有的时候只要关注某种单体的潜在靶点。这就存在了一个问题,基于单一后者少数的数据库或途径得到的单体靶点十分的有限,不足以满足后续的分析需求。

正好最近做了一个生信需求,需要获取“芍药苷”的潜在靶点。这里,我总结了8种获取单体靶点的方式,尽可能多的获取其全面的靶点。

1 芍药苷

1.1 芍药苷分子

  • 芍药苷(Paeoniflorin)是一种从中药材芍药中提取的单萜苷类化合物,也是芍药中最主要的活性成分之一。它具有多种生物活性和潜在的药理作用,在中医药和现代药理研究中都非常重要。
  • PubChem数据库中检索Paeoniflorin:
代码语言:r
复制
#CID编号
CID: 442534 
#分子式
MF: C23H28O11
#摩尔质量
MW: 480.5 g/mol  
#smiles
C[C@]12C[C@@]3([C@@H]4C[C@]1([C@@]4([C@H](O2)O3)COC(=O)C5=CC=CC=C5)O[C@H]6[C@@H]([C@H]([C@@H]([C@H](O6)CO)O)O)O)O

1.2 全面的芍药苷潜在靶点

1.2.1 TCMSP数据库
  • TCMSP 的靶点数据来自文献和实验验证,较为可靠但可能缺乏一些新靶点或罕见靶点的关联信息,其为网络药理学中使用最为广泛的数据库
  • TCMSP中芍药苷(Paeoniflorin)对应成分名为Paeoniflorin (MOL001924)
  • 共检索到7个相关靶点
1.2.2 Hit2数据库
  • Hit2数据库同TCMSP一样,数据库的信息全部来自文献,并经过人工核对
  • 共检索到20个相关靶点
1.2.3 Herb数据库
  • Herb是同样使用较为广泛的数据库,整合多个中药数据库(TCMID 2.0、TCM_ID、SymMap、TCMSP 2.3)数据,且年份较新
  • Herb中芍药苷(Paeoniflorin)对应成分名为Paeoniflorin(HBIN038606)
  • 共检索到16个相关靶点
1.2.4 CTD数据库
  • CTD 是一个整合化学品-基因/蛋白、疾病及其相互作用的大型数据库,数据来源包括实验数据和文献挖掘。CTD 提供了药物与基因之间的交互作用信息,常用于毒理学、生物标志物预测及药物重定位研究。
  • 本研究中共获取芍药苷相关基因靶点37个
1.2.5 SwissTargetPrediction预测
  • SwissTargetPrediction 是基于分子结构和靶点的相似性进行预测,覆盖更多潜在靶点(包括新靶点和未在 TCMSP 中出现的靶点)。适用范围广泛,不仅适合中药,还可用于其他天然产物或合成化合物的筛选。
  • 其靶点预测基于化合物-靶点的结构相似性,可能存在误差,需要进一步验证。
  • 使用SwissTargetPrediction预测芍药苷(Paeoniflorin)潜在靶点(阈值Probability > 0.1,通常是用于初步筛选的较宽松阈值)
  • 共预测83个可能靶点
1.2.6 SuperPred预测
  • SuperPred 是一个基于机器学习算法的在线靶点预测工具,它通过已知药物和靶点之间的结构相似性以及模型精度来进行推断。SuperPred 结合了生物活性数据和蛋白-药物相互作用模型,适用于新药开发中的先导化合物预测。
  • 本研究中设定阈值为预测概率(Probability)≥ 0.6 且模型准确率(Model accuracy)≥ 0.9,作为较为严格的标准以提高预测可信度。
  • 共筛选出102个潜在靶点
1.2.7 PharmMapper预测
  • PharmMapper 是一个基于反向药效团(Pharmacophore)匹配的靶点预测工具,常用于天然产物或未知作用机制化合物的靶点识别。它通过将化合物与大量蛋白质药效团模型比对,预测其可能结合的靶点。
  • 本研究中设置筛选标准为 Norm Fit > 0.8,去除无 UniProt ID 的条目,并将 UniProt ID 转换为基因符号进行后续分析。
  • 共预测得到167个潜在靶点
1.2.8 Batman-TCM预测
  • BATMAN-TCM 是一个专门为中药设计的预测平台,利用化合物结构信息与靶点相似性进行计算,结合文献与网络药理分析评估结果可靠性。Batman-TCM适用于已知中药成分的靶点预测,预测结果已被多个中药网络药理学研究所引用。
  • 本研究从 Batman-TCM 中整理收录了37个相关靶点
1.2.9 综合
  • 综合以上分析,所有靶点经过合并去重后,共获得芍药苷全面潜在靶点346个(Table S9),为后续网络构建和富集分析奠定基础

2 代码

代码语言:r
复制
rm(list = ls())
options(stringsAsFactors = F)
library(readxl)

library(RColorBrewer)
library(data.table)
library(venn)

source("/Users\tianfu/Documents/database/RFunction/my_fuction_wangyao.R")

#TCMSP
#TCMSP
TCMSP_target_df <- data.table::fread("table\target.csv",data.table = F)
dim(TCMSP_target_df)#[1] 1489   12
colnames(TCMSP_target_df)
TCMSP_target_df <- TCMSP_target_df[TCMSP_target_df$MOL_ID == "MOL001924",]
dim(TCMSP_target_df)#[1] 4 12
write.csv(TCMSP_target_df,file = "table1/MOL001924_TCMSP.csv")


TCMSP_target <- c()
for (genes in TCMSP_target_df$`Gene Names`){
  TCMSP_target <- c(TCMSP_target,strsplit(genes," ")[[1]])
}
TCMSP_target = unique(TCMSP_target)
length(TCMSP_target)#7

write.table(TCMSP_target,file = "table1/MOL001924_TCMSP_target.csv",
            sep = "\t",
            quote = F,
            row.names = F,col.names = F)


#Hit2
Hit2_target <-read_excel("table/C0705-target.xlsx")
Hit2_target <- unique(Hit2_target$Symbol)
length(Hit2_target)#20
write.table(Hit2_target,file = "table1/C0705_Hit_target.csv",
            sep = "\t",
            quote = F,
            row.names = F,col.names = F)

#Herb
Herb_target_df1 <- read_excel("table/herb/drug_paper_target2025_5_15.xlsx")
tmp1 <- Herb_target_df1$`Target name`
length(tmp1)#13

Herb_target_df2 <- read_excel("table/herb/ingredient_target2025_5_15.xlsx")
tmp2 <- Herb_target_df2$`Target name`
length(tmp2)#4

Herb_target <- unique(c(tmp1,tmp2))
length(Herb_target)#16

write.table(Herb_target,file = "table1/HBIN038606_Herb_target.csv",
            sep = "\t",
            quote = F,
            row.names = F,col.names = F)




#swiss
Swiss_target_df <- data.table::fread("table/SwissTargetPrediction.csv",
                                     data.table = F)
dim(Swiss_target_df)#[1] 100   7
Swiss_target_df <-Swiss_target_df[Swiss_target_df$`Probability*` > 0.1,]

dim(Swiss_target_df)#[1] 24 7

Swiss_target <- unique(Swiss_target_df$`Common name`)
Swiss_target_split <- unlist(strsplit(Swiss_target, " "))
length(Swiss_target_split)#24

write.table(Swiss_target_split,file = "table1/Swiss_target.csv",
            sep = "\t",
            quote = F,
            row.names = F,col.names = F)


#SuperPred
SuperPred_df <- data.table::fread("table/SuperPred_Targets.csv",
                                     data.table = F)
dim(SuperPred_df)#[1] 79   7
colnames(SuperPred_df)
range(SuperPred_df$Probability)
range(SuperPred_df$`Model accuracy`)
# 转换 Probability 为数值型
SuperPred_df$Probability_num <- as.numeric(gsub("%", "", SuperPred_df$Probability)) / 100
# 转换 Model accuracy 为数值型
SuperPred_df$ModelAcc_num <- as.numeric(gsub("%", "", SuperPred_df$`Model accuracy`)) / 100
dim(SuperPred_df)#[1] 24 7
# 筛选 Probability ≥ 0.6 且 Model accuracy ≥ 0.9 的结果
SuperPred_filtered_df <- SuperPred_df[
  SuperPred_df$Probability_num >= 0.6 &
    SuperPred_df$ModelAcc_num >= 0.9, ]
#uniprot id转化为genesymbol
SuperPred_filtered_df$Entry <- SuperPred_filtered_df$`UniProt ID`
UniProt <- data.table::fread("~/Documents/database/uniprot/uniprotkb_AND_reviewed_true_AND_model_o_2024_09_23.tsv",
                             data.table = F)
colnames(UniProt)
SuperPred_filtered_df <- merge(SuperPred_filtered_df, UniProt[, c("Entry", "Gene Names")],
                             by = "Entry", all.x = TRUE)
#按照空格拆分
SuperPred_target <- unique(unlist(strsplit(SuperPred_filtered_df$`Gene Names`, " ")))
length(SuperPred_target)#102

write.table(SuperPred_target,file = "table1/SuperPred_target.csv",
            sep = "\t",
            quote = F,
            row.names = F,col.names = F)


#pharmmapper
Pharm_df <- data.table::fread("table/pharmmapper_250515091848.csv",
                              data.table = F)
Pharm_df <- Pharm_df[Pharm_df$`Norm Fit` > 0.8,]
Pharm_df <- Pharm_df[Pharm_df$Uniplot != "NONE",]
dim(Pharm_df)#90
#进行UniProt ID 到gene symbol的映射
UniProt <- data.table::fread("~/Documents/database/uniprot/uniprotkb_AND_reviewed_true_AND_model_o_2024_09_23.tsv",
                             data.table = F)

UniProt$Uniplot <- UniProt$`Entry Name`

colnames(Pharm_df)
colnames(UniProt)
Pharm_filtered_df <- merge(Pharm_df,UniProt[,c("Uniplot","Gene Names")],
                           by = "Uniplot", all.x = TRUE)
colnames(Pharm_filtered_df)
Pharm_filtered_df <- Pharm_filtered_df[!is.na(Pharm_filtered_df$`Gene Names`), ]
dim(Pharm_filtered_df)#67


Pharm_target <- unique(unlist(strsplit(Pharm_filtered_df$`Gene Names`," ")))
length(Pharm_target)#167

write.table(Pharm_target,file = "table1/Pharm_target.csv",
            sep = "\t",
            quote = F,
            row.names = F,col.names = F)

#CTD
CTD_df <- data.table::fread("table/CTD_C015423_ixns_20250515053219.csv",
                            data.table = F)
CTD_target <- unique(CTD_df$`Gene Symbol`)
length(CTD_target)#37

write.table(CTD_target,file = "table1/CTD_target.csv",
            sep = "\t",
            quote = F,
            row.names = F,col.names = F)

#BatmanCTM
Batman_target  <- unique(c("MAPK8", "PRKAA2", "MMP9", "PRKAB1", 
                    "PRKAA1", "NEDD4L", "IL1B", "MAPK14",
                    "APP", "ICAM1", "IRAK1", "MITF", 
                    "NFKB1", "IGF1", "MIR29B1", "CREB1",
                    "STAT3", "NOX4", "TYRP1", "CYBB", "TNF",
                    "AKT1", "BGLAP", "CD14", "VEGFA", "SNCA",
                    "SOCS3", "PTGS2", "HSPA4", "HIF1A", "IL6", 
                    "SHH", "ABCB1", "STK11", "LBP", "MAP3K5", "MAPK1"))
length(Batman_target)#37

write.table(Batman_target,file = "table1/Batman_target.csv",
            sep = "\t",
            quote = F,
            row.names = F,col.names = F)

#Paeoniflorin----
Paeoniflorin_target <- unique(c(TCMSP_target,
                                Hit2_target,
                                Herb_target,
                                Swiss_target_split,
                                SuperPred_target,
                                Pharm_target,
                                CTD_target,
                                Batman_target))

length(Paeoniflorin_target)#346

write.table(Paeoniflorin_target,file = "table1/Paeoniflorin_target.csv",
            sep = "\t",
            quote = F,
            row.names = F,col.names = F)


Paeoniflorin_list <- list(
  #不能用<- 只能用=
  TCMSP = TCMSP_target, 
  HIT2 = Hit2_target,
  HERB = Herb_target,
  SwissTargetPrediction = Swiss_target_split,
  SuperPred = SuperPred_target, 
  PharmMapper = Pharm_target,
  CTD = CTD_target,
  BATMAN = Batman_target
  
)
my_create_venn_diagram(Paeoniflorin_list,"Paeoniflorin Target Genes",width = 6,title_line = 1)
save(Paeoniflorin_target,file="Rdata/1.Rdata")


#函数
my_create_venn_diagram <- function(gene_sets,  title_text,output_file = "figure/", colors = NULL, 
                                   width = 5, height = 5, title_cex = 1.5, title_font = 2, title_col = "black", title_line = -1) {
  # 设置默认颜色,如果用户未提供
  if (is.null(colors)) {
    colors <- c("#029149","#E0367A","#5D90BA","#431A3D","#91612D",
                "#FFD121","#D8D155","#223D6C","#D20A13","#088247",
                "#11AA4D","#7A142C","#5D90BA","#64495D","#7CC767")
  }
  
  # 检查输出目录是否存在,如果不存在则创建
  if (!dir.exists(output_file)) {
    dir.create(output_file, recursive = TRUE)
  }
  
  # 使用 title_text 生成文件路径
  file_path <- paste0(output_file, title_text, ".pdf")
  
  # 打开 PDF 输出设备
  pdf(file = file_path, width = width, height = height)
  
  # 绘制 Venn 图
  venn(gene_sets, 
       col = colors[1:length(gene_sets)], 
       zcolor = colors[1:length(gene_sets)], 
       box = FALSE, 
       ilabels = "counts", 
       ilcs = 1.2,  # 设置交集数字大小
       sncs = 0.9   # 设置集合名称字体大小
  )
  
  # 添加标题
  title(main = title_text, 
        cex.main = title_cex, 
        font.main = title_font, 
        col.main = title_col, 
        line = title_line)
  
  # 关闭 PDF 输出设备
  dev.off()
}

数据库使用参考教程:

https://www.bilibili.com/video/BV1qZs5eoE42/?spm_id_from=333.1391.0.0&vd_source=7e83cb2510516bdff59ccf808d022aa0

https://www.bilibili.com/video/BV1F3411o7wC/?spm_id_from=333.1391.0.0&vd_source=7e83cb2510516bdff59ccf808d022aa0

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据挖掘—多种方式获取全面的单体靶点
    • 1 芍药苷
      • 1.1 芍药苷分子
      • 1.2 全面的芍药苷潜在靶点
    • 2 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档