利用TCseq包进行基因表达趋势分析

简介: TCseq包提供了一个统一的套件去处理不同时序类型的数据分析,可以应用于转录组或者像ATAC-seq,Chip-seq的表观基因组时序型数据分析。该包主要的集中于不同时间点的差异分析,时间趋势分析及可视化作图。

该包发布在Bioconductor上,可去网站下载详细文档:http://bioconductor.org/packages/release/bioc/html/TCseq.html

数据准备

该包提供了内置数据集,刚开始用可以参考着文档使用内置数据跑一遍走个流程,这里我拿自己的数据做个演示,需要准备三个文件:

  1. 基因表达矩阵文件(可以直接拿原始数据)

1baecb0a10e215cad99f58d6001a69a.png

  1. 分组文件(样品,时间点,分组三列)

c5a31507132699e080b62319563e004.png

  1. 基因的位置信息(染色体,起始及终止位点,基因id四列)

76b8b844116dd5c6e1319d55d660f94.png

OK,我们先输入数据

## 安装
BiocManager::install("TCseq")
library(TCseq)
# 位置信息文件
genomicIntervals <- read.delim('intervial.txt',stringsAsFactors = FALSE)
genomicIntervals$chr <- as.factor(genomicIntervals$chr)
## 表达量矩阵文件
count <- read.delim('count.txt',header = T,row.names = 1)
# as.integer 转换为整数型
countsTable <- count %>%  mutate(across(where(is.numeric), as.integer)) 
# or
#count1 <- apply(count, 2, as.integer)
rownames(countsTable) <- rownames(count)
##矩阵形式
countsTable <- as.matrix(countsTable)
# 分组文件
experiment <- read.delim('group.txt',header = T,stringsAsFactors = FALSE)
experiment$sampleid <- as.factor(experiment$sampleid)

提示:

  1. 位置信息文件可以直接根据gtf文件转换生成,这个应该不难。
  2. 另外,相应的数据类型要提前转换好,否则会报错,比如表达量文件需要先转换为整数型,再变为矩阵的形式,根据内置数据的格式调整就行了。

创建TCA对象

TCseq使用S4类TCA存储所有输入数据以进行后续分析。根据以上三个文件创造即可。

tca <- TCA(design = experiment, genomicFeature = genomicIntervals, counts = countsTable )
 tca
  ##############
  An object of class "TCA"
@design
  sampleid timepoint group
1       s1        0h     1
2       s2        0h     1
3       s3        0h     1
4       s4       24h     2
5       s5       24h     2
6       s6       24h     2
7       s7       48h     3
8       s8       48h     3
9       s9       48h     3
@counts
                    s1  s2  s3  s4  s5  s6  s7  s8  s9
ENSBTAG00000000005  60  58  70  64  60  74  53  55  50
ENSBTAG00000000008   0   0   0   1   0   1   2   0   0
ENSBTAG00000000009   0   1   3   0   1   0  11   9   9
ENSBTAG00000000010 341 300 341 170 216 214 150 236 199
ENSBTAG00000000011   4   2   3   5   3   1   6   2   3
29749 more rows ...
@genomicFeature
   chr     start       end                 id
1 chr1 100098899 100161382 ENSBTAG00000035710
2 chr1 100754351 100754458 ENSBTAG00000043293
3 chr1 101522743 101601659 ENSBTAG00000011139
4 chr1 101619573 101646742 ENSBTAG00000053582
5 chr1 101776678 101776956          MSTRG.445
29749 more rows ...
@clusterRes
An object of class "clust"

另一种创建的方式,是通过SummarizedExperiment对象:

suppressWarnings(library(SummarizedExperiment))
se <- SummarizedExperiment(assays=list(counts = countsTable), colData = experiment)
tca <- TCAFromSummarizedExperiment(se = se, genomicFeature = genomicIntervals)

现在已经基于这三个文件得到了TCA对象

差异分析

该包内置了我们常用的差异分析R包--edgeR,通过使用广义线性模型(GLM)方法去鉴定差异基因。

tca <- DBanalysis(tca)
## 我们也可以增添一些参数进行过滤
tca <- DBanalysis(tca, filter.type = "raw", filter.value = 10, samplePassfilter = 2)
#比如上述步骤保留具有两个或多个已读取样本的基因表达量超过10的基因组区域

提取差异分析结果

通过DBresult函数可以直接提取我们差异分析的结果,在通过$去查看各个组的内容。

DBres <- DBresult(tca, group1 = "0h", group2 = c("24h","48h"))
str(DBres, strict.width =  "cut")
head(DBres$`24hvs0h`)
############
GRanges object with 6 ranges and 4 metadata columns:
                     seqnames              ranges strand |     logFC      PValue         paj
                        <Rle>           <IRanges>  <Rle> | <numeric>   <numeric>   <numeric>
  ENSBTAG00000000005     chr1 100098899-100161382      * |  0.274010 1.35162e-01 2.81082e-01
  ENSBTAG00000000009     chr1 101522743-101601659      * | -1.501457 2.26674e-01 4.03419e-01
  ENSBTAG00000000010     chr1 101776678-101776956      * | -0.513593 3.36326e-06 3.80124e-05
  ENSBTAG00000000011     chr1   10231295-10543983      * |  0.198446 7.93039e-01 8.90540e-01
  ENSBTAG00000000012     chr1 102768932-102769966      * | -0.300941 5.04886e-03 2.18330e-02
  ENSBTAG00000000013     chr1 105069395-105069910      * |  0.140489 1.63446e-01 3.21469e-01
                                     id
                            <character>
  ENSBTAG00000000005 ENSBTAG00000035710
  ENSBTAG00000000009 ENSBTAG00000011139
  ENSBTAG00000000010          MSTRG.445
  ENSBTAG00000000011 ENSBTAG00000017753
  ENSBTAG00000000012 ENSBTAG00000048551
  ENSBTAG00000000013          MSTRG.449
  -------
  seqinfo: 206 sequences from an unspecified genome; no seqlengths

若只想提取满足显著差异的结果(一般abs(log2-fold > 2)且adjust p-value<0.05),只需要加上top.sig = TRUE函数即可。

## 显著差异
DBres.sig <- DBresult(tca, group1 = "0h", group2 = c("24h","48h"), top.sig = TRUE)
str(DBres.sig, strict.width =  "cut")
#############
Formal class 'CompressedGRangesList' [package "GenomicRanges"] with 5 slots
  ..@ unlistData     :Formal class 'GRanges' [package "GenomicRanges"] with 7 slots
  .. .. ..@ seqnames       :Formal class 'Rle' [package "S4Vectors"] with 4 slots
  .. .. .. .. ..@ values         : Factor w/ 206 levels "chr1","chr2",..: 1 10 13 14 17 18 20 2..
  .. .. .. .. ..@ lengths        : int [1:201] 3 4 4 3 2 5 3 1 2 1 ...
  .. .. .. .. ..@ elementMetadata: NULL
  .. .. .. .. ..@ metadata       : list()
  .. .. ..@ ranges         :Formal class 'IRanges' [package "IRanges"] with 6 slots
  .. .. .. .. ..@ start          : int [1:1229] 145972839 46061452 69196880 100837833 21979442 ..
  .. .. .. .. ..@ width          : int [1:1229] 4721 5497 115248 442874 5105 471 5943 145553 10..
  .. .. .. .. ..@ NAMES          : chr [1:1229] "ENSBTAG00000000425" "ENSBTAG00000000706" "ENS"..
  .. .. .. .. ..@ elementType    : chr "ANY"
  .. .. .. .. ..@ elementMetadata: NULL

时间趋势分析

接下来就到了趋势分析的换件了,为了检测数据的时序模式,TCseq包使用了非监督聚类的方法,首先通过聚类创建一个时程表,行为基因组区域信息,列为时间点,表中的数值可以选择标准化后的表达量值或者是基于初始时间点所有样品点的LogFC值,代码中通过value参数来调整,另外若设置filter = TRUE时候,将自动过滤在任何两个时间段都没有显著差异的基因组区域,结果通过tcTable函数进行查看

## 通过LogFC值
tca <- timecourseTable(tca, value = "FC", norm.method = "rpkm", filter = TRUE)
##通过标准化后的表达量
tca <- timecourseTable(tca, value = "expression", norm.method = "rpkm", filter = TRUE)
## 查看生成结果
t <- tcTable(tca)
head(t)
                             0h          24h          48h
ENSBTAG00000000425 0.0000000000  0.030165698 0.0075187827
ENSBTAG00000000706 2.6013480888 11.521986790 1.7768887654
ENSBTAG00000000936 0.0007283438  0.003506178 0.0003475789
ENSBTAG00000001325 0.0002585125  0.001290036 0.0001705818
ENSBTAG00000001687 0.3065966903  2.485377556 2.6233245852
ENSBTAG00000001745 0.2496824763  2.120932031 4.7101417152

聚类分析

两种聚类算法可供选择: hard clustering(包含hierachical,pam,kmeans) 及 soft clustering (fuzzy cmeans),算法的选择大家自己参考文献选择,这里就拿文档中cmeans算法进行分析聚类。

tca <- timeclust(tca, algo = "cm", k = 6, standardize = TRUE)
###################################################
p <- timeclustplot(tca, value = "z-score(RPKM)", cols = 3)

cdeca50778e40af523b0d1b03dfaf22.png

多个聚类

单个聚类作图:

## 聚类一作图
print(p[[1]])

6c9c5bd372ff77199afd7e406ead033.png

单个聚类

另外,若是想查看某个聚类有哪些基因参与,使用tca@clusterRes查看聚类结果即可,比如:

a <- as.data.frame(tca@clusterRes@cluster)
names(a) <- 'Cluster'
## 查看各个聚类中的基因数目
> table(a)
a
  1   2   3   4   5   6 
511 147 165 292 180 255 
##筛选 
Cluster1 <- subset(a,Cluster == 2)

OK,根据聚类的结果,挑选自己感兴趣的趋势接着下游GO\KEGG富集分析就行了。

该包的内容到这里基本结束了,有兴趣可以去查看源文档,比如一些函数中还提供了一些设置颜色等的参数,大家就自己看吧~~


相关文章
|
8月前
|
编解码 算法 数据挖掘
【数据挖掘】聚类趋势估计、簇数确定、质量测定等评估方法详解(图文解释 超详细)
【数据挖掘】聚类趋势估计、簇数确定、质量测定等评估方法详解(图文解释 超详细)
232 0
|
8月前
|
数据可视化 前端开发 数据挖掘
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享(上)
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享
|
8月前
|
数据可视化 数据挖掘
singleCellNet(代码开源)|单细胞层面对细胞分类进行评估,褒贬不一,有胜于无
`singleCellNet`是一款用于单细胞数据分析的R包,主要功能是进行细胞分类评估。它支持多物种和多分组分析,并提供了一个名为`CellNet`的类似工具的示例数据集。用户可以通过安装R包并下载测试数据来运行demo。在demo中,首先加载查询和测试数据,然后训练分类器,接着进行评估,包括查看准确率和召回率的曲线图、分类热图和比例堆积图等。此外,`singleCellNet`还支持跨物种评估,将人类基因映射到小鼠直系同源物进行分析。整体而言,`singleCellNet`是一个用于单细胞分类评估的综合工具,适用于相关领域的研究。
108 6
|
8月前
|
前端开发 数据可视化 数据挖掘
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享(下)
R语言对综合社会调查GSS数据进行自举法bootstrap统计推断、假设检验、探索性数据分析可视化|数据分享
|
8月前
|
数据可视化
数量生态学冗余分析(RDA)分析植物多样性物种数据结果可视化|数据分享
数量生态学冗余分析(RDA)分析植物多样性物种数据结果可视化|数据分享
|
算法 Linux Shell
干货丨 一文详解SGAT单基因关联分析工具
干货丨 一文详解SGAT单基因关联分析工具
|
算法 Linux Python
干货丨 一文详解SGAT单基因关联分析工具(三)
干货丨 一文详解SGAT单基因关联分析工具(三)
|
算法 数据处理
干货丨 一文详解SGAT单基因关联分析工具(二)
干货丨 一文详解SGAT单基因关联分析工具(二)
|
数据可视化 数据挖掘 Linux
转录组下游分析丨利用limma包进行差异表达分析,结果可视化绘制火山图和热图
转录组下游分析丨利用limma包进行差异表达分析,结果可视化绘制火山图和热图
|
数据可视化 数据挖掘 Python
R语言利用转录组基因表达矩阵做基因共表达分析的学习资料推荐
R语言利用转录组基因表达矩阵做基因共表达分析的学习资料推荐