我正在尝试制作一些基因表达数据的热图。目前,我想要显示的数据存储在表达式集数据类型中,但样本没有正确分组;也就是说,对照样品和实验样品没有组合在一起。这是一个简短的工作流程:
output <- //analysis of raw data eset
someGenes <- eset [output$Table1, ]
heatmap(exprs(someGenes))
基本上,我想在绘图之前重新排列eset中的样本。我试图将样本名称视为“列”,但无法改变它们在eset中的位置。我对R很新,所以任何和所有的帮助将不胜感激。
以下是表达式数据类型的链接,供参考:http://rss.acs.unt.edu/Rdoc/library/Biobase/html/class.ExpressionSet.html
非常感谢。
答案 0 :(得分:1)
对于可重现的示例,我们加载Biobase和样本数据
library(Biobase)
data(sample.ExpressionSet)
然后看看我们得到了什么:
> sample.ExpressionSet
ExpressionSet (storageMode: lockedEnvironment)
assayData: 500 features, 26 samples
element names: exprs, se.exprs
protocolData: none
phenoData
sampleNames: A B ... Z (26 total)
varLabels: sex type score
varMetadata: labelDescription
featureData: none
experimentData: use 'experimentData(object)'
Annotation: hgu95av2
我们可以将ExpressionSet子集化为矩阵,例如使用索引或sampleNames
,例如,通过从当前sampleNames的shuffle创建列索引cidx
cidx = sample(sampleNames(sample.ExpressionSet))
cidx只是一个字符向量。然后我们用
重新排序列> sample.ExpressionSet[, cidx]
ExpressionSet (storageMode: lockedEnvironment)
assayData: 500 features, 26 samples
element names: exprs, se.exprs
protocolData: none
phenoData
sampleNames: Q C ... B (26 total)
varLabels: sex type score
varMetadata: labelDescription
featureData: none
experimentData: use 'experimentData(object)'
Annotation: hgu95av2
所以你在绘图前重新排序了这些列。但是,默认情况下,热图会根据彼此之间的“距离”对样本进行聚类。因此,您重新订购样品并不重要,热图将找出相同的距离,并绘制相同的热图。您可能需要image
,或者提供参数Colv
(请参阅?heatmap
)或在gplots包中使用heatmap.2,或者......希望有所帮助。