绘制超漂亮的基因差异表达火山图

绘制超漂亮的基因差异表达火山图基因表达 漂亮火山图 rm list ls getwd ctrl shift h 切换工作目录 library EnhancedVolc library DESeq2 library airway library magrittr data airway lt gt 复合赋值操作符 功能与 gt 基本是一样的 但多了一项额外的操作 就

基因表达,漂亮火山图

绘制超漂亮的基因差异表达火山图

rm(list = ls()) getwd() #ctrl+shift+h切换工作目录 library(EnhancedVolcano) library(DESeq2) library(airway) library(magrittr) data('airway') # %<>%复合赋值操作符, 功能与 %>% 基本是一样的,但多了一项额外的操作,就是把结果写到左侧对象。 # 对dex列进行relevel,再把revel后的结果赋值到airway$dex。 airway$dex %<>% relevel('untrt') #使用DESeq2进行差异表达,以创建两组结果(DESeq2差异基因分析和批次效应移除) dds <- DESeqDataSet(airway, design = ~ cell + dex) dds <- DESeq(dds, betaPrior=FALSE) # estimating size factors # estimating dispersions # gene-wise dispersion estimates # mean-dispersion relationship # final dispersion estimates # fitting model and testing # compare trt & untrt res1 <- results(dds,contrast = c('dex','trt','untrt')) head(res1) # shrink(收缩) log2 fold change res1 <- lfcShrink(dds,contrast = c('dex','trt','untrt'), res=res1) head(res1) # compare different cells res2 <- results(dds,contrast = c('cell', 'N061011', 'N61311')) res2 <- lfcShrink(dds,contrast = c('cell', 'N061011', 'N61311'), res=res2) head(res2) head(as.data.frame(res2)) # baseMean log2FoldChange lfcSE stat pvalue padj # ENSG00000000003 708. 0. 0. 2. 0.0 0. # ENSG00000000005 0.0000000 NA NA NA NA NA # ENSG00000000419 520. -0.0 0. -0. 0. 0. saving result result <- as.data.frame(res2) result$Gene <- rownames(result) write.table(result,file = "N061011_vs_N61311_difference.txt",sep = "\t",row.names = FALSE,quote =FALSE) # inputFileName <- "N061011_vs_N61311_difference.txt" # Import DESeq2 data volcanodata <- read.table(inputFileName, header=TRUE, sep="\t",stringsAsFactors = FALSE) str(volcanodata) colnames(volcanodata) # [1] "baseMean" "log2FoldChange" "lfcSE" "stat" "pvalue" "padj" # [7] "Gene" # Set transcript names as row names row.names(volcanodata)<-make.names(volcanodata[,"Gene"], unique=TRUE) p <- EnhancedVolcano(volcanodata, lab = rownames(volcanodata), x = "log2FoldChange", y = "pvalue", xlim = c(-8, 8), #ylim = c(0,6.1), title = 'N061011 versus N61311', pCutoff = 10e-16, FCcutoff = 1.5, transcriptPointSize = 1.5, transcriptLabSize = 3.0) p ggsave(p,file="N061011_vs_N61311_EnhancedVolcano_plot.pdf",width = 9,height = 9) # create custom key-value pairs for 'high', 'low', 'mid' expression by fold-change # 通过named vector生成自定义颜色 # set the base colour as 'black' keyvals <- rep('black', nrow(res2)) # set the base name/label as 'Mid' names(keyvals) <- rep('Mid', nrow(res2)) # modify keyvals for transcripts with fold change > 2.5 keyvals[which(res2$log2FoldChange > 2.5)] <- 'gold' names(keyvals)[which(res2$log2FoldChange > 2.5)] <- 'high' # modify keyvals for transcripts with fold change < -2.5 keyvals[which(res2$log2FoldChange < -2.5)] <- 'royalblue' names(keyvals)[which(res2$log2FoldChange < -2.5)] <- 'low' unique(names(keyvals)) # define different cell-types that will be shaded celltype1 <- c('ENSG00000', 'ENSG00000002933', 'ENSG00000', 'ENSG00000') celltype2 <- c('ENSG00000', 'ENSG00000', 'ENSG00000', 'ENSG00000', 'ENSG00000', 'ENSG00000') # create custom key-value pairs for different cell-types # set the base shape as '3' keyvals.shape <- rep(3, nrow(res2)) # set the base name/label as 'PBC' names(keyvals.shape) <- rep('PBC', nrow(res2)) # modify the keyvals for cell-type 1 keyvals.shape[which(rownames(res2) %in% celltype1)] <- 17 names(keyvals.shape)[which(rownames(res2) %in% celltype1)] <- 'Cell-type 1' # modify the keyvals for cell-type 2 keyvals.shape[which(rownames(res2) %in% celltype2)] <- 64 names(keyvals.shape)[which(rownames(res2) %in% celltype2)] <- 'Cell-type 2' unique(names(keyvals.shape)) p1 <- EnhancedVolcano(res2, lab = rownames(res2), x = 'log2FoldChange', y = 'pvalue', selectLab = rownames(res2)[which(names(keyvals) %in% c('high', 'low'))], xlim = c(-6.5,6.5), xlab = bquote(~Log[2]~ 'fold change'), title = 'Custom shape over-ride', pCutoff = 10e-14, FCcutoff = 1.0, transcriptPointSize = 3.5, transcriptLabSize = 4.5, shapeCustom = keyvals.shape, colCustom = NULL, colAlpha = 1, legendLabSize = 15, legendPosition = 'left', legendIconSize = 5.0, drawConnectors = TRUE, widthConnectors = 0.5, colConnectors = 'grey50', gridlines.major = TRUE, gridlines.minor = FALSE, border = 'partial', borderWidth = 1.5, borderColour = 'black') # create custom key-value pairs for 'high', 'low', 'mid' expression by fold-change # set the base colour as 'black' keyvals.colour <- rep('black', nrow(res2)) # set the base name/label as 'Mid' names(keyvals.colour) <- rep('Mid', nrow(res2)) # modify keyvals for transcripts with fold change > 2.5 keyvals.colour[which(res2$log2FoldChange > 2.5)] <- 'gold' names(keyvals.colour)[which(res2$log2FoldChange > 2.5)] <- 'high' # modify keyvals for transcripts with fold change < -2.5 keyvals.colour[which(res2$log2FoldChange < -2.5)] <- 'royalblue' names(keyvals.colour)[which(res2$log2FoldChange < -2.5)] <- 'low' unique(names(keyvals.colour)) p2 <- EnhancedVolcano(res2, lab = rownames(res2), x = 'log2FoldChange', y = 'pvalue', selectLab = rownames(res2)[which(names(keyvals) %in% c('High', 'Low'))], xlim = c(-6.5,6.5), xlab = bquote(~Log[2]~ 'fold change'), title = 'Custom shape & colour over-ride', pCutoff = 10e-14, FCcutoff = 1.0, transcriptPointSize = 5.5, transcriptLabSize = 0.0, shapeCustom = keyvals.shape, colCustom = keyvals.colour, colAlpha = 1, legendPosition = 'top', legendLabSize = 15, legendIconSize = 5.0, drawConnectors = TRUE, widthConnectors = 0.5, colConnectors = 'grey50', gridlines.major = TRUE, gridlines.minor = FALSE, border = 'full', borderWidth = 1.0, borderColour = 'black') library(gridExtra) library(grid) grid.arrange(p1, p2, ncol=2, top = textGrob('EnhancedVolcano', just = c('center'), gp = gpar(fontsize = 32))) grid.rect(gp=gpar(fill=NA)) 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177981.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午6:18
下一篇 2026年3月26日 下午6:18


相关推荐

  • WIN10系统 Indirect Display 虚拟显示器之特殊应用

    WIN10系统 Indirect Display 虚拟显示器之特殊应用byfanxiushu2020-05-20转载或引用请注明原始作者。有人询问我是否可以实现这样一种功能:对windows输出的每一帧图像数据显示做一些特殊处理(比如球形桌面,曲面化等特效),然后再显示到显示器上。而且还不止一个人这样咨询过,虽然我不大清楚这种需求具体用在何处,估计也是一些特殊场所。这种需求,最先想到的,也最直观的想法就是能否给显卡驱动添加一个过滤驱动,然后拦截图像数据,然后再做些特殊处理。可惜想法是美好的,却是难以实现的,甚至是不大可能实现的。首先windows中就没显卡过

    2022年8月21日
    9
  • Java的重载和重写区别(面试常见)

    Java的重载和重写区别(面试常见)今天在看 C 的基础知识 同是面向对象的语言 看到重载和重写 我突然想了半天 有点模糊了 马上度娘一番 回想起自己在北京实习的项目 实际上 开发中经常用到重载和重写 自己不去总结罢了 今天找了一份比较好的博客 整理下来 备以后自己回来重温 起码曾经我思考过这样的问题 nbsp nbsp 首先我们来讲讲 重载 Overloading nbsp nbsp nbsp 1 方法重载是让类以统一的方式处理不同类型数据的一种

    2026年3月18日
    2
  • springboot上传文件显示上传进度[通俗易懂]

    springboot上传文件显示上传进度[通俗易懂]springboot上传文件显示上传进度创建maven依赖 <dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.2.2</version></dependency

    2022年6月3日
    48
  • DOS命令COPY与XCOPY有什么区别「建议收藏」

    DOS命令COPY与XCOPY有什么区别「建议收藏」内部命令COPY与外部命令XCOPY在作用及使用方法上有什么区别?首先说一下内外部命令的区别,内部命令是在启动DOS后调入计算机内存中常驻的,外部命令是刻在磁盘上面的,使用时内部命令可以在每一个盘符下从内存直接执行,而外部命令执行时除了外部命令所在目录及设定好路径的盘符下执行外,在其它位置执行都需要指明此命令所在路径,执行时都是从磁盘调入内存来执行。至于COPY和XCOPY的区别是:用

    2022年7月18日
    19
  • IP地址和域名的关系

    IP地址和域名的关系1、ip地址和域名是一对多的关系,一个ip地址可以有多个域名,但是相反,一个域名只能有一个ip地址;2、ip地址是数字型的,为了方便记忆,才有了域名,通过域名地址就能找到ip地址;3、ip,全称为互联网协议地址,是指ip地址,意思是分配给用户上网使用的网络协议的设备的数字标签;4、常用的ip地址分为IPv4和IPv6两大类;什么是IP地址1、IP地址是IP协议提供的一种统一的地址格式,他为互联网上的每一台主机和每一个网络都分配一个唯一的逻辑地址,以此来屏蔽物理地址的差异;

    2022年4月5日
    89
  • ffmpeg 入门_python入门笔记

    ffmpeg 入门_python入门笔记写在前面最近在读《FFmpeg从入门到精通》这本书,结合着雷神的博客,学习音视频的知识~在学习的过程中,也记录了一些摘要。因为是边看边记的,所以一些要点在看到后面的时候,需要反过来整理前面的。我用有道云笔记写的markdown没法加图片,所以就先把这部分发了出来。后续会针对内容和排版一步步的优化,如果你被这凌乱的内容辣到了眼睛,请谅解哈哈哈~2019.06.18第一章+第二章知识点(未…

    2022年4月19日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号