前面我们通过RcisTarget包的 cisTarget()函数,一句代码就完成了我们的hypoxiaGeneSet.txt文本文件的171个基因的转录因子注释。见:基因集的转录因子富集分析

通过学习,我们知道这个RcisTarget包内置的motifAnnotations_hgnc是16万行,可以看到每个基因有多个motif。而且下载好的 hg19-tss-centered-10kb-7species.mc9nr.feather 文件,也是 24453个motifs的基因排序信息。但是我们留下来了一个悬念,如何从几万个注释结果里面挑选到最后100个富集成功的motif呢?

首先批量计算AUC值

如果是单细胞转录组数据里面,每个单细胞都是有一个geneLists,那么就是成千上万个这样的calcAUC分析,非常耗费计算资源和时间,就需要考虑并行处理,我们这里暂时不需要,所以直接 nCores=1 即可。

其中geneLists和motifRankings来自于前面的教程,见:基因集的转录因子富集分析

motifs_AUC

motifs_AUC

可以看到是 24453个motifs的AUC值都被计算了:

> motifs_AUC

AUC for 1 gene-sets and 24453 motifs.

AUC matrix preview:

jaspar__MA1023.1

geneListName 0.03819963

taipale_cyt_meth__IRX3_NACGYRNNNNNNYGCGTN_eDBD_meth

geneListName 0.05625049

taipale__DBP_DBD_NRTTACGTAAYN

geneListName 0.0640565

cisbp__M4240

geneListName 0.02816458

scertf__macisaac.ACE2

geneListName 0.03124153

>

挑选统计学显著的motif

auc

hist(auc, main="hypoxia", xlab="AUC histogram",

breaks=100, col="#ff000050", border="darkred")

nes3

abline(v=nes3, col="red")

可以看到 24453个motifs的AUC值看起来满足正态分布,一般来说,对正态分布,我们会挑选 mean+2sd范围外的认为是统计学显著,但是作者卡的比较严格,是 mean+3sd ,示意图如下:

看看Area Under the Curve (AUC)如何计算

这个时候就需要一个取舍了,我们是否需要知道每个细节,比如GSEA分析,我也多次讲解:

但实际上,绝大部分读者并没有去细看这个统计学原理,也不需要知道gsea分析的nes值如何计算,或者说这个Area Under the Curve (AUC)如何计算。

我这里也不想耗费时间去深究,去讲解了。不理解原理并不影响大家使用,知道这个概念,知道如何根据AUC值去判断结果就好。其实这个包的核心在于motifRankings变量,数据库文件来自于前面的教程,见:基因集的转录因子富集分析,也是很容易制作的,选取人类的不到2000个TF的全部chip-seq数据的peaks文件的bed,把人类的2万个基因的启动子区域的该TF的信号强度排序即可。

然后看看motif的详情

这个RcisTarget包内置的motifAnnotations_hgnc是16万行,可以看到每个基因有多个motif,我们挑选出来了105个moif,去这个表格里面筛选一下,就只剩下82个了。

data(motifAnnotations_hgnc)

motifAnnotations_hgnc

cg=auc[auc>nes3]

names(cg)

cgmotif=motifAnnotations_hgnc[match(names(cg),motifAnnotations_hgnc$motif),]

cgmotif=na.omit(cgmotif)

高级分析之可视化motif

前面的教程,一句代码就完成了motif的富集 ,见:基因集的转录因子富集分析

这个时候,我们可以根据 addLogo 函数,对我们富集好的转录因子的motif加上一些可视化图表,代码如下:

motifEnrichmentTable_wGenes

motifEnrichmentTable_wGenes_wLogo

library(DT)

datatable(motifEnrichmentTable_wGenes_wLogo[,-c("enrichedGenes", "TF_lowConf"), with=FALSE],

escape = FALSE, # To show the logo

filter="top", options=list(pageLength=5))

这些motif都是数据库已知的,其可视化如下:

高级分析之网络图

这里面的R代码技巧还是蛮值得细细品读的:

anotatedTfs

motifEnrichmentTable$geneSet),

function(x) {

genes

genesSplit

return(genesSplit)

})

anotatedTfs$hypoxia

signifMotifNames

incidenceMatrix

motifRankings,

signifRankingNames=signifMotifNames,

plotCurve=TRUE, maxRank=5000,

genesFormat="incidMatrix",

method="aprox")$incidMatrix

library(reshape2)

edges

edges

colnames(edges)

library(visNetwork)

motifs

genes

nodes

label=c(motifs, genes),

title=c(motifs, genes), # tooltip

shape=c(rep("diamond", length(motifs)), rep("elypse", length(genes))),

color=c(rep("purple", length(motifs)), rep("skyblue", length(genes))))

visNetwork(nodes, edges) %>% visOptions(highlightNearest = TRUE,

nodesIdSelection = TRUE)

一个简陋的网络图就出来了:

PPI调控网络图确实有点老套了

我有预感,这个转录因子调控网络图应该是在未来5年内会逐步替代PPI调控网络图,直到转录因子调控网络图也变得俗气为止。

auc 和loss_为什么是AUC值而不是GSEA来挑选转录因子呢相关推荐

  1. auc 和loss_深入理解AUC

    在机器学习的评估指标中,AUC是一个最常见也是最常用的指标之一. AUC本身的定义是基于几何的,但是其意义十分重要,应用十分广泛. 本文作者深入理解AUC,并总结于下. AUC是什么 在统计和机器学习 ...

  2. R语言使用pROC包在同一图中绘制两条ROC曲线并通过假设检验检验ROC曲线的AUC或者偏AUC的差异(输出p值)

    R语言使用pROC包在同一图中绘制两条ROC曲线并通过假设检验检验ROC曲线的AUC或者偏AUC的差异(输出p值) 目录

  3. python 识别excel 公式_python – pandas读取excel值而不是公式

    这很奇怪. pandas的正常行为是读取值,而不是公式.可能,问题出在你的excel文件中.可能你的公式指向其他文件,或者它们返回一个pandas视为nan的值. 在第一种情况下,需要更新工作表,并且 ...

  4. auc 和loss_精确率、召回率、F1 值、ROC、AUC 各自的优缺点是什么?

    模型评估有时候要用precision和recall,有时候用AUC,不存在优缺点问题,只存在适用性问题. 模型评估为啥不用precision和recall?因为它支持不了我的决策啊.. 同样的问题,根 ...

  5. auc 和loss_如何理解机器学习和统计中的AUC?

    看到前面答主的答案,我表示很激动的想来一个简化的版本. 曾经面试的时候被问到过这么一个问题,怎么向一个没有任何计算机.数学.统计等基础的人介绍下什么是AUC,当时我败北了.不过后来我有一天顿悟了,为了 ...

  6. Java POI:如何读取Excel单元格值而不是计算公式

    我正在使用Apache POI API从Excel文件中获取值. 除了含有公式的单元格外,一切都很好.实际上,cell.getStringCellValue()返回单元格中使用的公式而不是单元格的值. ...

  7. matlab计算prc曲线auc面积,ROC曲线和AUC面积计算 matlab

    在网上看到的程序,粘贴在自己的博客中,以备以后用后用到了好查找: function [auc, curve] = ROC(score, target, Lp, Ln) % This function ...

  8. Java中方法调用参数传递的方式是传值,尽管传的是引用的值而不是对象的值。(Does Java pass by reference or pass by value?)

    原文地址:http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html 在Java中,所有的对象变量都是引用,Java通 ...

  9. java sql查询空内容_返回null值而不是sql查询中的空集

    比方说,有两个表: select * from users; +-------+------+ | login | type | +-------+------+ | test1 | A | | te ...

最新文章

  1. [Ahoi2008]Meet 紧急集合
  2. eselasticsearch入门_ElasticSearch入门学习-基础示例(1)
  3. 浅谈Windows Phone 7的体系结构 - [WP开发文档翻译系列]
  4. mybatis generator逆向工程使用
  5. RSA key format is not supported
  6. CDB和PDB的创建、连接、启动、关闭
  7. Python数模笔记-NetworkX(1)图的操作
  8. MySQL常用命令大全
  9. 最长有效括号子串长度 c语言,LeetCode: Longest Valid Parentheses (求最长有效匹配括号子串的长度)...
  10. 保险极客CTO叶晖谈企业团体险的星辰大海
  11. 原生js浏览器兼容性问题
  12. 【Elasticsearch】Elasticsearch 相关度评分 TFIDF
  13. python:多维数组变一维数组
  14. 数据结构--(AVL)平衡二叉树
  15. 高斯过程--在GPyTorch中实现一个个性化kernel
  16. 【纯·干货】你会用到的期刊读Paper发论文写论文必备网站及各种小助手,不定期持续更新中~
  17. 网易公开课——可汗学院公开课:现代密码学(1)
  18. flashfxp连接失败,flashfxp连接失败怎么办
  19. nodejs 运行后报错 Error: Couldn‘t find preset “es2015“ relative to directory
  20. SQLSERVER的中文排序规则

热门文章

  1. 计算机领域的学术会议等级排名情况
  2. 最详细Java实现支付宝第三方登录
  3. 易语言post发送php数据,易语言post上传文件
  4. 白话文讲计算机视觉-第三讲-滤波器
  5. 利用队列输出杨辉三角 C语言
  6. 优盘只剩下一个EFI分区怎么办?
  7. Xmind8破解教程
  8. 如何检测无符号整数乘法溢出?
  9. 互联网宗教信息传播规范和宗教内容审核机制|图普科技
  10. Nuxt.js 服务端渲染从安装到部署