1library(IOBR)
2library(tidyverse)
3library(clusterProfiler)
下载胃癌数据集 GSE62254(芯片数据)。
1if (!requireNamespace("GEOquery", quietly = TRUE)) BiocManager::install("GEOquery")
2library("GEOquery")
3eset_geo<-getGEO(GEO = "GSE62254", getGPL = F, destdir = "./")
4eset <-eset_geo[[1]]
5eset <-exprs(eset) # 获取表达矩阵
1eset[1:5,1:5] # 查看表达矩阵的格式
2
3## GSM1523727 GSM1523728 GSM1523729 GSM1523744 GSM1523745
4## 1007_s_at 3.2176645 3.0624323 3.0279131 2.921683 2.8456013
5## 1053_at 2.4050109 2.4394879 2.2442708 2.345916 2.4328582
6## 117_at 1.4933412 1.8067380 1.5959665 1.839822 1.8326058
7## 121_at 2.1965561 2.2812181 2.1865556 2.258599 2.1874363
8## 1255_g_at 0.8698382 0.9502466 0.8125414 1.012860 0.9441993
查看IOBR的不同注释文件,挑选与表达矩阵的基因探针相匹配的注释文件。IOBR内置了多种数据类型的注释文件,包括Affymetrix微阵列数据、Illumina微阵列和RNA-seq数据。
1#人RNA-seq转录组注释文件
2head(anno_grch38)
3# id eff_length gc symbol mgi_id gene_type start end transcript_id ont
4# 1 ENSMUSG00000000001 3262 0.4350092 Gnai3 MGI:95773 protein_coding 108014596 108053462 <NA> <NA>
5# 2 ENSMUSG00000000003 902 0.3481153 Pbsn MGI:1860484 protein_coding 76881507 76897229 <NA> <NA>
6# 3 ENSMUSG00000000028 3506 0.4962921 Cdc45 MGI:1338073 protein_coding 18599197 18630737 <NA> <NA>
7# 4 ENSMUSG00000000031 2625 0.5588571 H19 MGI:95891 lncRNA 142129262 142131886 <NA> <NA>
8# 5 ENSMUSG00000000037 6397 0.4377052 Scml2 MGI:1340042 protein_coding 159865521 160041209 <NA> <NA>
9# 6 ENSMUSG00000000049 1594 0.5050188 Apoh MGI:88058 protein_coding 108234180 108305222 <NA> <NA>
1#小鼠RNA-seq转录组注释文件
2head(anno_gc_vm32)
3# id eff_length gc symbol mgi_id gene_type start end transcript_id ont
4# 1 ENSMUSG00000000001 3262 0.4350092 Gnai3 MGI:95773 protein_coding 108014596 108053462 <NA> <NA>
5# 2 ENSMUSG00000000003 902 0.3481153 Pbsn MGI:1860484 protein_coding 76881507 76897229 <NA> <NA>
6# 3 ENSMUSG00000000028 3506 0.4962921 Cdc45 MGI:1338073 protein_coding 18599197 18630737 <NA> <NA>
7# 4 ENSMUSG00000000031 2625 0.5588571 H19 MGI:95891 lncRNA 142129262 142131886 <NA> <NA>
8# 5 ENSMUSG00000000037 6397 0.4377052 Scml2 MGI:1340042 protein_coding 159865521 160041209 <NA> <NA>
9# 6 ENSMUSG00000000049 1594 0.5050188 Apoh MGI:88058 protein_coding 108234180 108305222 <NA> <NA>
1eset <- anno_eset(eset = eset,
2 annotation = anno_hug133plus2,
3 symbol = "symbol",
4 probe = "probe_id",
5 method = "mean")
1if (!requireNamespace("UCSCXenaTools", quietly = TRUE))
2BiocManager::install("UCSCXenaTools")
3library(UCSCXenaTools)
4
5# 下载GDC的TCGA胃癌数据(count数据)
6eset_stad<-XenaGenerate(subset = XenaCohorts =="GDC TCGA Stomach Cancer (STAD)") %>%
7XenaFilter(filterDatasets = "TCGA-STAD.htseq_counts.tsv") %>%
8XenaQuery() %>%
9XenaDownload() %>%
10XenaPrepare()
1head(eset_stad)
2# A tibble: 6 × 408
3# Ensembl_ID `TCGA-D7-5577-01A` `TCGA-D7-6818-01A` `TCGA-BR-7958-01A` `TCGA-D7-8572-01A` `TCGA-VQ-A91Z-01A` `TCGA-HU-A4HD-01A` `TCGA-VQ-A8PQ-01A`
4# <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
5# 1 ENSG0000000000… 11.3 10.6 10.2 10.8 11.8 12.7 10.5
6# 2 ENSG0000000000… 1 0 0 2 1 2.81 2
7# 3 ENSG0000000041… 11.2 9.96 10.2 11.6 12.3 12.7 11.1
8# 4 ENSG0000000045… 9.13 8.77 8.73 10.1 10.4 11.1 11.1
9# 5 ENSG0000000046… 8.42 8.89 8.46 9.87 10.5 10.7 9.29
2.3.标准化和注释
将基因表达矩阵转换为 TPM 格式,并进行后续注释。
1eset_stad$Ensembl_ID<-substring(eset_stad$Ensembl_ID, 1, 15)
2eset_stad<-column_to_rownames(eset_stad, var = "Ensembl_ID")
3eset_stad<-(2^eset_stad)+1
4# 与anno_eset()功能类似,但最终输出的是TPM数据
5eset_stad<-count2tpm(countMat = eset_stad,
6 idType = "Ensembl",
7 org = "hsa",
8 source = "local" )
1head(eset_stad)[1:6,1:6]
2 TCGA-D7-5577-01A TCGA-D7-6818-01A TCGA-BR-7958-01A TCGA-D7-8572-01A TCGA-VQ-A91Z-01A TCGA-HU-A4HD-01A
3TSPAN6 33.3939485 16.90505921 24.2112184 20.2282326 32.43373343 32.716332
4TNMD 0.1236946 0.06733912 0.1222764 0.1695712 0.08577831 0.118845
5DPM1 15.9689278 5.34679603 11.1486682 16.3134541 23.62654342 15.676932
6SCYL3 4.9602209 3.15520429 5.5719893 8.0435150 8.08128172 6.801386
7C1orf112 3.4965175 3.95405854 5.3206837 7.8398147 10.52599048 5.913285
8FGR 10.6887954 18.30915305 18.1974228 20.8695954 11.66757533 4.091034
1# 异常样本识别的可视化
2res <- find_outlier_samples(eset = eset,
3 project = "ACRG",
4 show_plot = TRUE )
异常样本显示
1eset1 <- eset[, !colnames(eset)%in%res]
1data("pdata_acrg", package = "IOBR")
2res<- iobr_pca(data = eset1,# PCA 的输入数据。它应该是一个矩阵或一个数据框。
3 is.matrix = TRUE,# 表达谱数据是否为矩阵数据
4 scale = TRUE,# 指定是否缩放输入数据。默认为 TRUE。
5 is.log = FALSE,# 指定是否对输入数据进行对数转换。默认为 FALSE。
6 pdata = pdata_acrg, # 与主成分相关的附加数据。包含样本分组数据。默认为 NULL。
7 id_pdata = "ID", #在 'pdata' 中代表与 'data' 匹配的 ID 的列名。默认为 "ID"。
8 group = "Subtype",#在 'pdata' 中代表要对点进行着色的组/类别的列名。默认为 NULL。
9 geom.ind = "point", #PCA 图中点的几何表示类型。默认为 "point"。
10 cols = "normal", #用于组类别的颜色方案。默认为 "normal"。
11 palette = "jama", # 用于组类别的颜色调色板。默认为 "jama"。
12 repel = FALSE, #指定是否排斥数据点以避免重叠。默认为 FALSE。
13 ncp = 5, #在 PCA 中保留的维数。默认为 5。
14 axes = c(1, 2), #要绘制的维度/轴。默认为 c(1, 2)。
15 addEllipses = TRUE) # 指定是否在图中添加椭圆。默认为 TRUE。
表型相关PCA图
1eset_geo<-getGEO(GEO = "GSE57303",
2 getGPL = F,
3 destdir = "./")
4eset2 <-eset_geo[[1]]
5eset2 <-exprs(eset2)
6eset2<-anno_eset(eset = eset2,
7 annotation = anno_hug133plus2,
8 symbol = "symbol",
9 probe = "probe_id",
10 method = "mean")
1eset_com <- remove_batcheffect( eset1 = eset1,
2 eset2 = eset2,
3 eset3 = NULL,
4 id_type = "symbol",
5 data_type = "array",
6 cols = "normal",
7 palette = "jama",
8 log2 = TRUE,
9 check_eset = TRUE,
10 adjust_eset = TRUE,
11 repel = FALSE,
12 path = "result")
校正前后结果对比
5.2. count数据批次校正
加载IOBR内置数据集"eset_stad"和"eset_blca"。这两个数据是来源于胃癌和膀胱癌的基因表达矩阵(count),可通过ComBat-seq在count层面上进行批次校正。校正后的count会通过count2tpm进行转化,最终实现样本间数据的可比性。
1data("eset_stad", package = "IOBR")
2head(eset_stad)
3# TCGA-BR-6455 TCGA-BR-7196 TCGA-BR-8371 TCGA-BR-8380 TCGA-BR-8592 TCGA-BR-8686 TCGA-BR-A4IV TCGA-BR-A4J4 TCGA-BR-A4J9 TCGA-FP-7916
4# ENSG00000000003 8006 2114 767 1556 2806 2923 1524 7208 711 2747
5# ENSG00000000005 1 0 5 5 60 1 22 2 0 3
6# ENSG00000000419 3831 2600 1729 1760 2273 1934 2838 4418 2426 2824
7# ENSG00000000457 1126 745 1040 1260 1814 707 1683 1335 1590 1672
8# ENSG00000000460 857 463 231 432 635 323 270 423 276 773
9# ENSG00000000938 758 1126 557 557 828 666 760 597 370 688
1data("eset_blca", package = "IOBR")
2head(eset_blca)
3# TCGA-2F-A9KO TCGA-2F-A9KP TCGA-2F-A9KQ TCGA-2F-A9KR TCGA-2F-A9KT
4# ENSG00000000003 6092 11652 5426 4383 3334
5# ENSG00000000005 0 4 1 1 0
6# ENSG00000000419 3072 2656 1983 2061 2930
7# ENSG00000000457 1302 984 1134 1092 496
8# ENSG00000000460 779 924 421 386 318
9# ENSG00000000938 436 116 312 590 362
去除批次效应:
1eset_com <- remove_batcheffect(eset_stad,
2 eset_blca,
3 id_type = "ensembl",
4 data_type = "count")
校正前后结果对比
此部分的英文教程来自:https://iobr.github.io/book/rna-data-preprocessing.html
研究成果正在投稿中,如果用户在发表的研究中使用了IOBR2,请引用以下预印版本:
Zeng D, Fang Y, …, Liao W (2024) IOBR2: Multidimensional Decoding of Tumor Microenvironment for Immuno-Oncology Research. bioRxiv, 2024.01. 13.575484
Wang et al., (2019). The UCSCXenaTools R package: a toolkit for accessing genomics data from UCSC Xena platform, from cancer multi-omics to single-cell RNA-seq. Journal of Open Source Software, 4(40), 1627, https://doi.org/10.21105/joss.01627
Zhang et al., ComBat-seq: batch effect adjustment for RNA-seq count data, NAR Genomics and Bioinformatics, Volume 2, Issue 3, September 2020, lqaa078, https://doi.org/10.1093/nargab/lqaa078
Leek, J. T., et al., (2012). The sva package for removing batch effects and other unwanted variation in high-throughput experiments. Bioinformatics, 28(6), 882-883.
原文链接:https://www.biorxiv.org/content/10.1101/2024.01.13.575484v2.full.pdf