RNA-seq 差异分析的点点滴滴(2)

简介: RNA-seq 差异分析的点点滴滴(2)

引言

本系列将开展全新的转录组分析专栏,主要针对使用DESeq2时可能出现的问题和方法进行展开。

Tximeta:自动导入并附加元数据

Bioconductor 家族中的 tximeta 包,在 tximport 的基础上进行了扩展,不仅保留了原有功能,还增加了一项新特性:能够自动为常用的转录组数据(包括人类和小鼠的 GENCODE、Ensembl、RefSeq)添加注释元数据。该包生成的 SummarizedExperiment 对象可以便捷地通过 DESeqDataSet 函数导入到 DESeq2 中,如下所示:

coldata <- samples
coldata$files <- files
coldata$names <- coldata$run

library("tximeta")
se <- tximeta(coldata)
ddsTxi <- DESeqDataSet(se, design = ~ condition)

这个 ddsTxi 对象接下来可以在分析流程中作为 dds 对象使用。如果 tximeta 能够识别出参考转录组是预设的几种之一,并且具有预先计算好的哈希校验和,那么 dds 对象中的 rowRanges 将会被自动填充。

计数矩阵输入

另外,如果你已经有了从其他来源准备好的读数计数矩阵,可以使用 DESeqDataSetFromMatrix 函数。快速从比对文件生成计数矩阵的另一种方法是使用 Rsubread 包中的 featureCounts 函数。使用 DESeqDataSetFromMatrix 时,用户需要提供计数矩阵、样本信息(计数矩阵的列)以 DataFrame 或 data.frame 的形式,以及设计公式。

为了展示如何使用 DESeqDataSetFromMatrix,将从 pasilla 包中导入计数数据。导入一个计数矩阵,并将其命名为 cts,同时导入样本信息表,并将其命名为 coldata。在后续部分,会描述如何从例如 featureCounts 输出中提取这些数据对象。

library("pasilla")
pasCts <- system.file("extdata",
                      "pasilla_gene_counts.tsv",
                      package="pasilla", mustWork=TRUE)
pasAnno <- system.file("extdata",
                       "pasilla_sample_annotation.csv",
                       package="pasilla", mustWork=TRUE)
cts <- as.matrix(read.csv(pasCts,sep="\t",row.names="gene_id"))
coldata <- read.csv(pasAnno, row.names=1)
coldata <- coldata[,c("condition","type")]
coldata$condition <- factor(coldata$condition)
coldata$type <- factor(coldata$type)

检查计数矩阵和列数据,看看它们在样本顺序方面是否一致。

head(cts,2)

##             untreated1 untreated2 untreated3 untreated4 treated1 treated2
## FBgn0000003          0          0          0          0        0        0
## FBgn0000008         92        161         76         70      140       88
##             treated3
## FBgn0000003        1
## FBgn0000008       70

coldata

##              condition        type
## treated1fb     treated single-read
## treated2fb     treated  paired-end
## treated3fb     treated  paired-end
## untreated1fb untreated single-read
## untreated2fb untreated single-read
## untreated3fb untreated  paired-end
## untreated4fb untreated  paired-end

请留意,这些数据的顺序与样本的顺序并不一致!

非常重要的一点是,计数矩阵的列顺序和样本信息(列数据的行)必须匹配。DESeq2 不会自动推断计数矩阵的哪一列对应于列数据的哪一行,这些信息在提供给 DESeq2 时必须是一致排序的。

由于它们没有按照正确的顺序排列,需要对其中一个进行重新排序,以确保它们在样本顺序上是一致的(如果不这样做,后续的操作将会出现错误)。此外,还需要将 coldata 的行名中的 "fb" 删除,以保持命名的一致性。

rownames(coldata) <- sub("fb", "", rownames(coldata))
all(rownames(coldata) %in% colnames(cts))

## [1] TRUE

all(rownames(coldata) == colnames(cts))

## [1] FALSE

cts <- cts[, rownames(coldata)]
all(rownames(coldata) == colnames(cts))

## [1] TRUE

如果您之前使用了 Rsubread 包中的 featureCounts 函数(Liao, Smyth, 和 Shi 2013),可以直接从该函数输出的列表中的 "counts" 项获取读数计数矩阵。通常情况下,计数矩阵和样本信息可以通过 R 基础函数如 read.csv 或 read.delim 从文本文件中导入。对于 htseq-count 文件,请参阅下面的专门输入函数。

拥有计数矩阵 cts 和样本信息 coldata 后,就可以构建一个 DESeqDataSet 对象:

library("DESeq2")
dds <- DESeqDataSetFromMatrix(countData = cts,
                              colData = coldata,
                              design = ~ condition)
dds

## class: DESeqDataSet 
## dim: 14599 7 
## metadata(1): version
## assays(1): counts
## rownames(14599): FBgn0000003 FBgn0000008 ... FBgn0261574 FBgn0261575
## rowData names(0):
## colnames(7): treated1 treated2 ... untreated3 untreated4
## colData names(2): condition type

如果您拥有额外的特征数据,可以通过将这些数据添加到新创建对象的元数据列中,进而将它们整合到 DESeqDataSet 中。(此处为了演示目的添加了一些重复的数据,实际上基因名称已经作为 dds 的行名存在了。)

featureData <- data.frame(gene=rownames(cts))
mcols(dds) <- DataFrame(mcols(dds), featureData)
mcols(dds)

## DataFrame with 14599 rows and 1 column
##                    gene
##             <character>
## FBgn0000003 FBgn0000003
## FBgn0000008 FBgn0000008
## FBgn0000014 FBgn0000014
## FBgn0000015 FBgn0000015
## FBgn0000017 FBgn0000017
## ...                 ...
## FBgn0261571 FBgn0261571
## FBgn0261572 FBgn0261572
## FBgn0261573 FBgn0261573
## FBgn0261574 FBgn0261574
## FBgn0261575 FBgn0261575

htseq-count 数据输入

如果您之前使用了 HTSeq python 包中的 htseq-count 工具,那么可以通过 DESeqDataSetFromHTSeqCount 函数来处理数据。首先,您需要设置一个变量,指向存放 htseq-count 输出文件的目录。

directory <- "/path/to/your/files/"

但是,仅出于演示目的,以下代码行指向 pasilla 包的演示 htseq-count 输出文件包的目录。

directory <- system.file("extdata", package="pasilla",
                         mustWork=TRUE)

通过 list.files 函数来指定需要导入的文件,并利用 grep 函数筛选出包含 "treated" 字符串的文件。接着,使用 sub 函数对样本文件名进行拆分,以获取样本的条件状态;或者,您也可以选择使用 read.table 函数直接导入一个包含表型信息的表格。

sampleFiles <- grep("treated",list.files(directory),value=TRUE)
sampleCondition <- sub("(.*treated).*","\\1",sampleFiles)
sampleTable <- data.frame(sampleName = sampleFiles,
                          fileName = sampleFiles,
                          condition = sampleCondition)
sampleTable$condition <- factor(sampleTable$condition)

然后使用以下函数构建 DESeqDataSet:

library("DESeq2")
ddsHTSeq <- DESeqDataSetFromHTSeqCount(sampleTable = sampleTable,
                                       directory = directory,
                                       design= ~ condition)
ddsHTSeq

## class: DESeqDataSet 
## dim: 70463 7 
## metadata(1): version
## assays(1): counts
## rownames(70463): FBgn0000003:001 FBgn0000008:001 ... FBgn0261575:001
##   FBgn0261575:002
## rowData names(0):
## colnames(7): treated1fb.txt treated2fb.txt ... untreated3fb.txt
##   untreated4fb.txt
## colData names(1): condition
相关文章
|
机器学习/深度学习 人工智能 算法
AI音乐生成创企发新模型 几秒生成两分钟歌曲
Suno公司推出AI音乐生成模型,基于深度学习和大数据,快速创作符合用户喜好的歌曲,简化音乐创作流程,让业余爱好者也能参与。该模型高度可定制,支持二次创作,引发行业关注。创始人强调,目标是辅助而非取代人类音乐家,旨在促进音乐产业创新与发展。
558 1
AI音乐生成创企发新模型 几秒生成两分钟歌曲
|
测试技术 Apache 开发工具
Apache Cordova开发环境搭建(二)VS Code
原文:Apache Cordova开发环境搭建(二)VS Code 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011127019/article/details/56335719 ...
3880 0
|
机器学习/深度学习 人工智能 编解码
EasyControl Ghibli:在线体验一键生成宫崎骏动画风,开源AI模型让你的照片秒变吉卜力
EasyControl Ghibli是基于扩散模型的AI工具,通过条件注入技术将普通照片转化为吉卜力动画风格,仅需100张训练样本即可精准还原标志性光影与色调特征。
1463 11
EasyControl Ghibli:在线体验一键生成宫崎骏动画风,开源AI模型让你的照片秒变吉卜力
|
人工智能 自然语言处理 数据可视化
Data Formulator:微软开源的数据可视化 AI 工具,通过自然语言交互快速创建复杂的数据图表
Data Formulator 是微软研究院推出的开源 AI 数据可视化工具,结合图形化界面和自然语言输入,帮助用户快速创建复杂的可视化图表。
1357 10
Data Formulator:微软开源的数据可视化 AI 工具,通过自然语言交互快速创建复杂的数据图表
|
11月前
|
安全 网络协议 搜索推荐
远控安全金标准,ToDesk、向日葵、网易UU安全功能盘点,是否能攻破防线
本文对ToDesk、向日葵和网易UU三款主流远程控制软件进行了安全性评测。远程控制技术虽带来便利,但也存在安全隐患。文章从设备授权管理、远程连接与数据传输、隐私安全机制及主动防诈保护四个方面展开分析。ToDesk在二次验证、金融窗口保护等方面表现突出;向日葵基础安全功能完善但缺乏创新;网易UU侧重基础功能,安全机制尚待完善。最终通过星级表对比,ToDesk综合表现最佳,向日葵次之,网易UU适合低风险场景。未来远控软件需向体系化、智能化方向发展以应对不断演变的威胁。
|
JSON 人工智能 数据可视化
实用工具推荐第二期结合deepseek的思维导图开源免费工具 JSON 可视化工具
JSON 数据可视化为交互式的树形图或图形,帮助直观理解文件结构和模块之间的联系。
1271 19
|
调度 云计算 Windows
3D应用程序云推流实时云渲染私有化部署实现方案
实时云渲染或云推流技术不仅限于公有云,也可在私有云和局域网中部署。公有云由第三方提供,资源共享灵活;私有云为企业自建,安全性和定制化强;局域网则适合小型环境,成本低。3D程序云推流中的“云”指服务器端算力,支持公有云、私有云和局域网部署。点量云流实时渲染软件可在Windows下独立运行,部署简单,适用于展馆、线上展厅等短期需求及虚拟仿真、数字孪生等长期项目。
348 0
|
算法 数据可视化 物联网
埃隆·马斯克:第一性原理和五步工作法
马斯克的逆推式五步工作法不仅是一种高效解决问题的思维框架,也为团队提供了一种优化流程的清晰路径。
1358 1
埃隆·马斯克:第一性原理和五步工作法
|
存储 JSON 前端开发
JSON与现代Web开发:数据交互的最佳选择
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也便于机器解析和生成。它以文本格式存储数据,常用于Web应用中的数据传输,尤其是在客户端和服务器之间。
1218 0
|
监控 JavaScript Serverless
函数计算产品使用问题之如何手动上传Nuxt3打包的代码到阿里云函数计算(FC)进行部署
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
494 1

热门文章

最新文章

下一篇
开通oss服务