返回资讯中心
外部精选
软件工程
#开发者实时流

TCMNP 包发布,用于中药网络药理学研究

来源标题:Traditional Chinese Medicine Network Pharmacology

研究团队发布 TCMNP 包,用于中药网络药理学研究。该包可通过 devtools 从 GitHub 安装,或下载 ZIP 本地安装,提供 tcm_comp 等函数处理中药复方组成数据。

Hacker News 最新znano2026/11/15 · 今天19 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

时间:2024-5-16

引言

你好,这里是用于中药网络药理学研究的 TCMNP 包。

你可以这样安装 TCMNP 的开发版本:

if(!require(devtools))install.packages("devtools") if(!require(TCMNP))devtools::install_github("tcmlab/TCMNP",upgrade = FALSE,dependencies = TRUE)

  1. 本地安装

点击本页面上绿色的“code”按钮,然后点击“Download ZIP”将其下载到你的工作目录。用下面的命令安装:

devtools::install_local("TCMNP-main.zip", upgrade = F, dependencies = T)

函数

library(TCMNP) library(dplyr) library(ggplot2) library(ggraph) library(clusterProfiler, quietly= TRUE) library(org.Hs.eg.db, quietly= TRUE) library(DOSE, quietly= TRUE)

  1. tcm_comp

xfbdf.compostion <- data.frame( herb = c( "mahuang", "kuxingren", "shengshigao", "shengyiren", "maocangzhu", "guanghuoxiang", "qinghaocao", "mabiancao", "ganlugen", "tinglizi", "huajuhong", "shenggancao", "huzhang" ), weight = c(6, 15, 30, 30, 10, 15, 12, 30, 30, 15, 15, 10, 20) ) tcm_comp(xfbdf.compostion)

herb = c("ma huang", "ku xing ren", "hua ju hong", "cang zhu", "guang huo xiang", "yi yi ren", "hu zhang", "qing hao", "ma bian cao", "lu gen", "ting li zi", "shi gao", "gan cao") xfbdf.compostion <- data.frame( herb = herb, weight = c(6, 15, 15, 10, 15, 30, 20, 12, 30, 30, 15, 30, 10), property = herb_pm[match(herb, herb_pm$Herb_name_pinyin), ]$Property, flavor = herb_pm[match(herb, herb_pm$Herb_name_pinyin), ]$Flavor, meridian = herb_pm[match(herb, herb_pm$Herb_name_pinyin), ]$Meridian ) tcm_compound(xfbdf.compostion)

herbs<-c('麻黄', '甘草','苦杏仁','石膏', '薏苡仁', '苍术', '青蒿', '猪苓', '马鞭草', '葶苈子','化橘红', '虎杖', '广藿香','芦根') xfbdf <- herb_target(herbs, type = "Herb_cn_name") head(xfbdf) herb molecule_id molecule target cang zhu MOL000173 wogonin NOS2 cang zhu MOL000173 wogonin PTGS1 cang zhu MOL000173 wogonin ESR1 cang zhu MOL000173 wogonin AR cang zhu MOL000173 wogonin SCN5A cang zhu MOL000173 wogonin PPARG

herbs2 <- c("ma huang", "ku xing ren") fufang2 <- herb_target(herbs2, type ="Herb_name_pin_yin") head(fufang2) herb molecule_id molecule target ku xing ren MOL010921 estrone D1R ku xing ren MOL010921 estrone DRD1 ku xing ren MOL010921 estrone CHRM3 ku xing ren MOL010921 estrone F2 ku xing ren MOL010921 estrone CHRM1 ku xing ren MOL010921 estrone CHRM5

  1. target_herb

gene <- c("MAPK1", "JUN", "FOS", "RAC1", "IL1", "IL6") herb.data <- target_herb(gene) head(herb.data) herb molecule_id molecule target ai di cha MOL000422 kaempferol JUN ai di cha MOL000098 quercetin FOS ai di cha MOL000098 quercetin MAPK1 ai di cha MOL000098 quercetin JUN ai di cha MOL000098 quercetin IL6 ai ye MOL000358 beta-sitosterol JUN

4.tcm_prescription

#通过疾病靶点基因寻找中药及其处方 #寻找到的中药 tcm_prescription(disease_data)[[1]]

A tibble: 273 × 2

Groups: Herb_cn_name [273]

Herb_cn_name freq <chr> <int> 1 人参 437 2 甘草 433 3 胡芦巴 325 4 皂角刺 288 5 地榆 276

ℹ 263 more rows

ℹ Use print(n = ...) to see more rows

#寻找到的处方 library(formattable) formattable(tcm_prescription(disease_data)[[2]], list(Count = color_bar("lightblue")))

draw plot

tcm_pre_plot(tcm_prescription(disease_data)[[2]],color = 'Spectral')

data("xfbdf", package = "TCMNP") network.data <- xfbdf %>% dplyr::select(herb, molecule, target) %>% sample_n(100, replace = FALSE) %>% as.data.frame() tcm_net(network.data, label.degree = 3, rem.dis.inter = TRUE)

sankey.data <- xfbdf[sample(nrow(xfbdf), 30), ] tcm_sankey(sankey.data, text.size = 3, text.position = 1 )

alluvial.data <- xfbdf[sample(nrow(xfbdf), 30), ] tcm_alluvial(alluvial.data, text.size = 3, text.position = 1 )

data(xfbdf, package = "TCMNP") eg <- bitr(unique(xfbdf$target), fromType = "SYMBOL", toType = "ENTREZID", OrgDb = "org.Hs.eg.db") KK <- enrichKEGG( gene = eg$ENTREZID, organism = "hsa", pvalueCutoff = 0.05 ) KK <- setReadable(KK, "org.Hs.eg.db", keyType = "ENTREZID") bar_plot(KK,title = "KEGG")

BP <- enrichGO( gene = eg$ENTREZID, "org.Hs.eg.db", ont = "BP", pvalueCutoff = 0.05, readable = TRUE ) bar_plot(BP,title = "biological process")

#Filter the pathways to display data(KK, package = "TCMNP") newdata <- KK %>% dplyr::slice(11, 15, 17, 33, 53, .preserve = .preserve) pathway_cirplot(newdata)

dot_sankey(newdata, dot.x = 0.35, dot.y = 0.25)

data(kegg.filter, package = "TCMNP") #Because not all pathways and genes are what we want to display, and displaying too many genes at the same time will cause text overlap. #The data format must be an S4 object or data frame. #"kegg.filter" was derived from the data frame after kegg-enriched data is screened for pathways and genes. dot_sankey(kegg.filter)

eg <- bitr(unique(xfbdf$target), fromType = "SYMBOL", toType = "ENTREZID", OrgDb = "org.Hs.eg.db") go.diff <- enrichGO( gene = eg$ENTREZID, org.Hs.eg.db, pAdjustMethod = "BH", pvalueCutoff = 0.01, qvalueCutoff = 0.05, ont = "all", readable = T ) go_barplot(go.diff)

KK2 <- KK %>% mutate(richFactor = Count / as.numeric(sub("/\d+", "", BgRatio))) path <- separate_rows(KK2@result, geneID, sep = "/") data_sankey <- left_join(xfbdf, path, by = c("target" = "geneID"), relationship = "many-to-many" ) %>% distinct() %>% drop_na() %>% sample_n(30, replace = FALSE) %>% as.data.frame() tcm_sankey_dot(data_sankey)

data_sankey2<- data_sankey %>% dplyr::select(herb, molecule, target, Description) tcm_sankey(data_sankey2,text.position = 1)

tcm_alluvial(data_sankey2, text.position = 1)

data("ppi_data",package = "TCMNP") ppi_plot(ppi_data, node.color = "Spectral", node.size = c(1, 10), label.size = 4, label.degree = 1, label.repel = TRUE, edge.color = "lightgrey", edge.width = c(0.2, 2), rem.dis.inter = FALSE, graph.layout = "kk")

ppi_plot(ppi_data, nodes.color = "Spectral", label.degree = 1, label.size = 3, label.repel = TRUE, graph.layout = 'circle')

data <- matrix(rnorm(81), 9, 9) data[1:9, seq(1, 9, 2)] <- data[1:9, seq(1, 9, 2)] - 4 colnames(data) <- paste("molecule", 1:9, sep = "") rownames(data) <- paste("target", 1:9, sep = "")

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →