TCGA/GTEx泛癌数据任意基因表达量展示

有了泛癌的数据之后就可以进行各种分析了,当然这些都是在R语言的基础上进行的。如果你不会R语言,也可以通过各种各样的网页工具实现。

我们今天就简单展示下任意基因在泛癌图谱中的表达量情况。

TCGA,GTEx,TCGA+GTEx的泛癌数据都整理好了,大家可以自己通过easyTCGA包实现1行代码整理,也可以直接在公众号后台回复pancancer获取整理好的数据。详情请见:任意基因在泛癌中的表达量展示

GTEx

GTEx的展示比较简单,最常见的就是某个基因在所有组织中的表达量情况。

# 加载数据
load(file="output_pancancer_xena/GTEx_pancancer_mrna_pheno.rdata")
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.1     ✔ purrr   1.0.1
## ✔ tibble  3.2.1     ✔ dplyr   1.1.1
## ✔ tidyr   1.3.0     ✔ stringr 1.5.0
## ✔ readr   2.1.4     ✔ forcats 1.0.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()# 简单看下,这几个泛癌数据的详细情况我都给大家有说明,看一下即可
head(colnames(gtex_mrna_pheno))
## [1] "sample_id"    "primary_site" "MT-ATP8"      "MT-ATP6"      "MT-CO2"      
## [6] "MT-CO3"
#table(gtex_mrna_pheno$primary_site)
length(table(gtex_mrna_pheno$primary_site))
## [1] 31

接下来以CXCL1这个基因为例进行展示。

gene <- "CXCL1"# 提取数据就是这么简单
plot_df <- gtex_mrna_pheno %>%select(1:2,all_of(gene))# 画图即可
ggplot2::ggplot(plot_df, aes(fct_reorder(primary_site,CXCL1),CXCL1))+ggplot2::geom_boxplot(aes(fill=primary_site))+ggplot2::labs(x=NULL)+ggplot2::theme_bw()+ggplot2::theme(legend.position = "none",axis.text.x = ggplot2::element_text(angle = 45,hjust = 1))

TCGA

单独使用TCGA泛癌的数据进行展示是花样最多的,你在pubmed中以pan cancer为关键词进行检索,基本上其中的Fig1都是类似的箱线图。

# tcga pancancer,前34列是临床信息
rm(list = ls())
load(file="output_pancancer_xena/TCGA_pancancer_mrna_clin.rdata")head(colnames(tcga_mrna_clin))
## [1] "sample_id"                           "patient_id"                         
## [3] "project"                             "age_at_initial_pathologic_diagnosis"
## [5] "gender"                              "race"

继续以CXCL1这个基因为例进行展示。

gene <- "CXCL1"plot_df <- tcga_mrna_clin %>%select(sample_id,project,all_of(gene)) %>%# 这个分组你可以任意指定,并不一定要tumor、normalmutate(sample_type=ifelse(as.numeric(substr(.$sample_id,14,15))<10,"tumor","normal"))#tcga pancancer中有很多癌种没有normal哦,要注意!
ggplot2::ggplot(plot_df,aes(project,CXCL1))+ggplot2::geom_boxplot(aes(fill=sample_type))+ggplot2::labs(x=NULL,y="expression")+ggplot2::theme_bw()+ggplot2::theme(legend.position = "top",axis.text.x = ggplot2::element_text(angle = 45,hjust = 1))+ggpubr::stat_compare_means(ggplot2::aes(group = sample_type,label = "p.format"),method = "kruskal.test")

或者你也可以展示只在tumor样本中的表达量。

plot_df <- plot_df %>%filter(sample_type=="tumor")ggplot2::ggplot(plot_df,aes(fct_reorder(project,CXCL1),CXCL1))+ggplot2::geom_boxplot(aes(fill=project))+ggplot2::labs(x=NULL,y="expression")+ggplot2::theme_bw()+ggplot2::theme(legend.position = "none",axis.text.x = ggplot2::element_text(angle = 45,hjust = 1))

接下来是大家比较感兴趣的某个基因在泛癌配对样本中的表达。

首先我们把泛癌的表达矩阵(这里应该叫转置后的表达矩阵比较合适,一般我我们说表达矩阵就是指行是基因,列是样本的矩阵)按照project拆分,然后自定义一个可以提取配对样本的函数:

# 拆分
cancer_list <- split(tcga_mrna_clin,tcga_mrna_clin$project)# 自定义函数
get_paired_sample <- function(exprset){# get paired samplessample_group <- ifelse(as.numeric(substr(exprset$sample_id,14,15))<10,"tumor","normal")tmp <- data.frame(sample_group = sample_group, sample_id=exprset$sample_id,project=exprset$project)tmp_nor <- tmp[tmp$sample_group=="normal",]tmp_tum <- tmp[tmp$sample_group=="tumor",]#每一个normal都有配对的tumor吗?并不是keep <- intersect(substr(tmp_tum$sample_id,1,12),substr(tmp_nor$sample_id,1,12))tmp_tum <- tmp_tum[substr(tmp_tum$sample_id,1,12) %in% keep,]tmp_tum <- tmp_tum[!duplicated(substr(tmp_tum$sample_id,1,12)),]tmp_nor <- tmp_nor[substr(tmp_nor$sample_id,1,12) %in% keep,]tmp_nor <- tmp_nor[!duplicated(substr(tmp_nor$sample_id,1,12)),]tmp_pair <- rbind(tmp_tum,tmp_nor)
}

接下来就是把这个函数应用于33种癌症中,然后提取CXCL1这个基因的画图数据即可:

paired_samples <- do.call(rbind,lapply(cancer_list,get_paired_sample))plot_df <- paired_samples %>%left_join(tcga_mrna_clin[,c(gene,"sample_id")]) %>%mutate(sample_id=substr(sample_id,1,12))
## Joining with `by = join_by(sample_id)`

接下来画图就是基本功了,ggplot2搞定一切,下面这个interaction的用法在《R数据可视化手册》中有讲过,我强烈呼吁大家赶紧买本书看看吧!别再天天问图怎么画了!

ggplot(plot_df, aes(interaction(sample_group,project),CXCL1,color=sample_group))+ggplot2::geom_point(size=3,position = position_dodge(0.9))+ggplot2::geom_line(aes(group=interaction(sample_id,project)),color="grey70")+ggplot2::scale_color_manual(values = c("#028EA1","#F2AA9D"))+ggplot2::scale_x_discrete(labels = rep(unique(plot_df$project),each=2))+ggplot2::theme_bw()+ggplot2::theme(legend.position = "top",axis.text.x = element_text(angle = 45,hjust = 1))

当然还有分面的画法:

#下面是分面
ggplot(plot_df, aes(interaction(sample_group,project),CXCL1,color=sample_group))+ggplot2::geom_point(size=3)+ggplot2::geom_line(aes(group=interaction(sample_id,project)),color="grey70")+ggplot2::scale_color_manual(values = c("#028EA1","#F2AA9D"))+ggplot2::scale_x_discrete(name = NULL)+ggplot2::facet_grid(~project,scales="free_x",switch = "x")+ggplot2::theme_bw()+ggplot2::theme(legend.position = "top",axis.text.x = element_blank(),strip.background = element_blank(),axis.ticks.x = element_blank(),panel.border = element_blank())

当然如果你看了书也搞不明白,也可以通过万能的网络解决一切,比如上面这种图,你可以通过关键词搜索:ggplot2 paired line multi groups, 实现方式非常多,任你选择。

TCGA+GTEx

TCGA+GTEx就没有配对展示了,除此之外都和TCGA的泛癌展示方式差不多。

rm(list = ls())
load(file="output_pancancer_xena/TCGA_GTEx_pancancer_mRNA_pheno.rdata")# 前4列是样本信息
head(colnames(tcga_gtex_mrna_pheno))
## [1] "sample_id"    "sample_type"  "project"      "primary_site" "MT-ATP6"     
## [6] "MT-CO2"
table(tcga_gtex_mrna_pheno$sample_type)
## 
## GTEx_normal TCGA_normal  TCGA_tumor 
##        7568         712        9784
table(tcga_gtex_mrna_pheno$project)
## 
##  ACC BLCA BRCA CESC CHOL COAD DLBC ESCA  GBM HNSC KICH KIRC KIRP LAML  LGG LIHC 
##  205  435 1390  319   45  637  491  848 1317  564  119  631  349  243 1674  531 
## LUAD LUSC MESO   OV PAAD PCPG PRAD READ SARC SKCM STAD TGCT THCA THYM UCEC  UCS 
##  862  836   87  515  350  185  648  410  264 1282  624  302  850  565  272  135 
##  UVM 
##   79

继续以CXCL1这个基因为例进行展示。

用的最多的肯定还是任意基因在不同组别中的表达:

gene <- "CXCL1"plot_df <- tcga_gtex_mrna_pheno %>%select(1:4,all_of(gene)) %>%filter(sample_type %in% c("GTEx_normal","TCGA_tumor"))ggplot(plot_df,aes(project,CXCL1))+geom_boxplot(aes(fill=sample_type))+theme(legend.position = "top")+ggplot2::labs(x=NULL,y="expression")+ggplot2::theme_bw()+ggplot2::theme(legend.position = "top",axis.text.x = ggplot2::element_text(angle = 45,hjust = 1))

扩展

其实任何类似于这个数据的格式都能像这样展示。

比如你可以通过ssGSEA对泛癌进行免疫浸润分析,这样每个样本都可以有一个得分,这样你就可以展示某个细胞在不同组别中的得分情况。

大家一定要多看文献,多积累不同的方法,以及一些好用的网站、图表等,说不定以后就用到了!

后面可能会安排几篇图表复现的推文,敬请期待。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/21019.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公共基因表达数据分析系统genevestigator,再也不愁表达数据的查询和比较了

还在为不会分析大数据发愁吗&#xff1f; 还在为无法查询和比较发表文章中感兴趣基因表达值抱怨吗&#xff1f; 使用genevestigator&#xff0c;高效利用已经有研究结果&#xff0c;轻松与同行研究结果比较&#xff01;&#xff01;&#xff01; GENEVESTIGATOR “基因研究…

TBtools:基因家族分析简单流程

写在前面&#xff1a;非常感谢CJ开发出如此强大的TBtools工具。作者&#xff08;CJchen-0410&#xff09;在B站上有新手教程&#xff0c;大家可以给大神点个关注。 本文以《Genome-wide identification and phylogenetic analysis of rice FTIP gene family》为例&#xff0c;…

新版TCGA的突变SNP数据添加临床信息

文章目录 加载数据和R包读取数据 今天给大家演示下如何用自己的数据完成maftools的分析&#xff0c;主要是snp文件和临床信息的制作&#xff0c;其实很简单&#xff0c;但是网络上的教程都说的不清楚。 这次我们直接用之前TCGA-COAD和TCGA-READ合并后的数据演示&#xff0c;合…

Git专题:历史记录清理:保留代码并删除一年前的提交记录

29.1 克隆最后一个版本 我们在克隆一个使用了很久的 Git 仓库时候可能会发现耗费的时间非常长&#xff0c;这是因为 Git 会拉取所有的历史版本导致&#xff0c;如果我们想让 Git 在克隆代码的时候快一些&#xff0c;可以在git clone命令行后面加--depth1参数&#xff0c;这样 …

清除 input 的历史记录

问题描述 当input框输入数据时&#xff0c;会显示之前的输入的数据 原因 input的属性autocomplete默认为on&#xff0c;其含义代表让浏览器自动记录之前输入的值 解决办法 在input标签添加autocomplete"off"属性 <input type"text" autocomplete&qu…

git 清除所有历史记录

git 清除所有历史记录 有些时候&#xff0c;git 仓库累积了太多无用的历史更改&#xff0c;导致 clone 文件过大。如果确定历史更改没有意义&#xff0c;可以采用下述方法清空历史 先 clone 项目到本地目录 (以名为 mylearning 的仓库为例) $ git clone gitgitee.com:badboyco…

清除微信登录历史、自定义默认文件保存位置以及聊天记录还原

这篇文章的本意呢&#xff0c;其实对个人用户意义不大&#xff0c;因为桌面端微信本身提供了自定义用户数据文件存放路径的设置项&#xff0c;那么为什么要写出来这么一篇看似无用的教程来呢&#xff1f;是因为微信本身的特殊性&#xff0c;需要用户登录以后才可以修改设置&…

如何清除Git历史变更记录

以前公司的一个项目代码&#xff0c;从2014年一直存活到了2021年&#xff0c;目前应该还在被使用。整个代码将近2G&#xff0c;git文件极大&#xff0c;其中很大的一个原因是代码里存放过apk文件。如此大的项目&#xff0c;导致下载、发布很困难。 最初打算创建一个新的远程仓…

LLM时代NLP研究何去何从?一个博士生的角度出发

深度学习自然语言处理 原创作者&#xff1a;Winni 前言 最近&#xff0c;大语言模型&#xff08;LLMs&#xff09;在许多任务上表现出接近人类水平的性能&#xff0c;这引发了行业兴趣和资金投入的激增&#xff0c;有关LLMs的论文最近也层出不穷。 看起来&#xff0c;NLP领域似…

AIhelp智能问答

前言 2023年,科技圈里,持续爆火的科技应用,毫无疑问是生成式AI,chatGPT了的,之所以令人惊叹,正是因为它的强大 可以这么认为,chatGPT能够解决很多问题,尤其是问答,问题答案的搜索,远比百度,google要精准,方便得多 如何提出高质量的问题,写好一个promot提示词,尤为重要,提出问题…

RLHF-基于人类反馈的强化学习

RLHF 文章目录 RLHF强化学习基础回顾为什么要使用基于人类反馈的强化学习大纲RLHF的起源大预言模型中的RLHF案例 ChatGPT RLHF中的技术细节预训练语言模型训练奖励模型基于RL进行微调 RLHF 的未来 强化学习基础回顾 智能体通过采取行动与环境进行交互&#xff0c;并返回状态和奖…

GPT-4 API 接口调用及价格分析

GPT-4 API 接口调用及价格分析 15日凌晨&#xff0c;OpenAI发布了万众期待的GPT-4&#xff01;新模型支持多模态&#xff0c;具备强大的识图能力&#xff0c;并且推理能力和回答准确性显著提高。在各种专业和学术基准测试上的表现都媲美甚至超过人类。难怪OpenAI CEO Sam Altm…

穷人应该先买房还是先创业?

我个人建议先买房。既然是穷人&#xff0c;那么肯定资金不宽裕&#xff0c;这种情况下不应该是先买房来保障自己的生活&#xff0c;让自己过的安稳吗&#xff1f; 可能大家会问&#xff0c;为什么不能先创业呢&#xff1f;功成名就&#xff0c;买车买房不香吗&#xff1f;但是我…

穷人的新年红包系统,单节点 12W TPS

每年春节都是红包漫天飞&#xff0c;今年百度红包成为了最耀眼的明星。本届春晚红包活动&#xff0c;百度APP 最终累计互动量达到 208 亿次&#xff0c;百度 DAU 峰值突破 3 亿。面对这些数字&#xff0c;我不由感叹大厂技术的强大&#xff0c;机器资源的海量。作为一个穷人&am…

世界上到处都是有才华的穷人

我们每个人都自认为自己很有才华&#xff0c;不觉得自己哪方面比别人差什么&#xff0c;但为什么我们没有变更富有&#xff1f;是我们根本没有才华吗&#xff1f;如果有才华&#xff0c;我们自己真正出众的才华是什么&#xff1f;有几个人真正的清楚了解自己的才华是什么&#…

穷人实现阶级跨越有多难

经常看我们的读者应该知道&#xff0c;周末一般会发一些个人感悟或者分享一些我个人认为比较的文章或者观点&#xff0c;这样看起来公众号内容不是很冰冷&#xff0c;有温度&#xff0c;毕竟我们的生活中除了学习还有更多其他的思考。 周末在起点财经看到一篇文章&#xff0c;跟…

为什么穷人不敢创业?

对于“穷人大多不敢创业”的观点&#xff0c;持中性看法&#xff0c;不认为是对的&#xff0c;也不认为是错的。因为从身边的情况来讲&#xff0c;有钱人往往更加不敢创业&#xff0c;没钱的朋友也有很多喜欢“折腾”的。 创业&#xff0c;最重要的是看创业者的性格、行动&…

Numpy练习小例题(1)--穷人借钱

一个穷人到富人那里去借钱&#xff0c;原以为富人不愿意&#xff0c;哪知富人一口答应了下来&#xff0c;但提出了如下条件: 在30天中&#xff0c;富人第一天借给穷人1万元&#xff0c;第二天借给2万&#xff0c;以后每天所借的钱数都比上一天的多一万; 但借钱…

穷孩子就活该这样吗?10幅漫画扎破穷人真相

文/北妈、刘娜 阅读本文需要 3.0分钟 作者丨刘娜 来源 | 闲时花开&#xff08;ID&#xff1a;xsha369&#xff09; 最近看到一组漫画&#xff0c;真实到震撼人心。 它来自新西兰漫画家Toby Morris&#xff0c;这个漫画叫On a Plate——《盘子上》。 漫画描述了两个在不同环境中…

★为什么不要和“穷人”做朋友?

不要和“穷人”做朋友&#xff08;深度好文&#xff09; 他穷的&#xff0c;不仅仅是物质条件&#xff0c;他穷的&#xff0c;更是视野和格局。 01 我工作在三里屯&#xff0c;那里人多车多&#xff0c;所以停车是一个特别麻烦的事情。 我很少开车&#xff0c;但凡开车&#xf…