我有两个数据集,每个数据集的形式如下:
Gene1Name, 234
Gene2Name, 445
Gene3Name, 23
...
GeneNName, 554
这两个数据集的基因名称是相同的。第二列上的数字是对应基因的表达计数。
我想对这些数据进行差异基因表达分析。为此,我使用了一个DESeq库。
要使用DESeq函数,需要创建一个对象
dds <- DESeqDataSetFromMatrix(countData=data, colData=meta, design=~sampletype)
对于我的例子,需要将什么作为参数传递到DESeqDataSetFromMatrix
函数中?
发布于 2019-05-15 20:21:03
我认为,如果你试着遵循这个简单的例子,它至少可以帮助你解决你真正的问题。
我们必须从虚拟数据集准备开始(请阅读如何制作一个最小的可重现性示例):
创建一个treatment
数据集:
library(tidyverse)
set.seed(56154455)
treatment <- data.frame(
geneName = LETTERS,
cts = sample(0:1000, 26)
)
head(treatment)
# geneName cts
# 1 A 834
# 2 B 860
# 3 C 950
# 4 D 302
# 5 E 979
# 6 F 159
创建一个control
数据集:
set.seed(56154455)
control <- treatment[sample(1:26, 26), ]
control[, 1] <- treatment[, 1]
head(control)
# geneName cts
# 3 A 950
# 23 B 41
# 15 C 889
# 20 D 629
# 14 E 398
# 4 F 302
通过treatment
和control
通过geneName
连接
cts <- full_join(treatment, control, by = 'geneName') %>%
rename('treatment' = cts.x, 'control' = cts.y) %>%
column_to_rownames('geneName') %>%
as.matrix
head(cts)
# treatment control
# A 331 737
# B 914 676
# C 161 161
# D 592 769
# E 946 74
# F 813 314
准备您的coldata
表
记住,这只是一个虚拟的例子,所以您真正的coldata
可能包含任意数量的列,这反映了您的实验的设计。但是,coldata
中的行数必须等于实验数据中的列数(这里是cts
)。请阅读SummarizedExperiment文档类,在那里您可以找到详细的解释。另一个很好的资源是拉法书
coldata <- matrix(c("DMSO", "1xPBS"), dimnames = list(colnames(cts), 'treatment'))
coldata
# treatment
# treatment "DMSO"
# control "1xPBS"
最后,创建您的DESeqDataSet
dds <- DESeq2::DESeqDataSetFromMatrix(
countData = cts,
colData = coldata,
design = ~treatment
)
其中:
countData
是您的实验数据,准备如上;colData
是您的coldata
矩阵,具有实验元数据;~treatment
是公式,描述了你在实验中测试的实验模型。它可以是任何类似~ treatment + sex * age
等。☠
dds
# class: DESeqDataSet
# dim: 26 2
# metadata(1): version
# assays(1): counts
# rownames(26): A B ... Y Z
# rowData names(0):
# colnames(2): treatment control
# colData names(1): treatment
发布于 2019-05-15 17:53:13
你只需要把这两个向量连在一起,然后把它放到一个矩阵中。
既然你说你的两个数据集包含两列,我假设第一个是基因名,第二个是计数。你还提到名字是一样的。所以你可以这么做:
data <- cbind(x1[,2], x2[,2])
rownames(data) <- x1[,1]
colnames(data) <- c("sample1", "sample2")
meta <- data.frame(sampletype = c("A", "B"))
dds <- DESeqDataSetFromMatrix(countData=data, colData=meta, design=~sampletype)
https://stackoverflow.com/questions/56154455
复制相似问题