搜索
查看: 2395|回复: 2

[basic] ExpressionSet类

[复制链接]

64

主题

138

帖子

681

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
681
发表于 2017-6-30 20:07:01 | 显示全部楼层 |阅读模式
ExpressionSet是一个重要的类啊
## Dependencies

所需的工具包载入
[AppleScript] 纯文本查看 复制代码
```{r dependencies, warning=FALSE, message=FALSE}
library(Biobase)
library(ALL)
library(hgu95av2.db)
```


下载工具包
[AppleScript] 纯文本查看 复制代码
```{r biocLite, eval=FALSE}
source("http://www.bioconductor.org/biocLite.R")
biocLite(c("Biobase", "ALL", "hgu95av2.db"))
```


## Corrections

Improvements and corrections to this document can be submitted on its [GitHub](https://github.com/kasperdanielh ... d/ExpressionSet.Rmd) in its [repository](https://github.com/kasperdanielhansen/genbioconductor).

## Overview

我们将研究如何使用和操作“ExpressionSet”类; bioconductor中的基本数据容器。 该类在`r Biocpkg(“Biobase”)`package中定义。

这个类启发了生物导体中的许多其他数据容器,可以认为在使用数据编程方面取得了巨大的成功。
## Other Resources

- The "An Introduction to Bioconductor's ExpressionSet Class" vignette from the [Biobase webpage](http://bioconductor.org/packages/Biobase).
- The "Notes for eSet Developers" vignette from the [Biobase webpage](http://bioconductor.org/packages/Biobase) contains advanced information.

## Start

存储为“ExpressionSet”的示例数据集可在`r Biocexptpkg(“ALL”)`包中找到。 该软件包是“实验数据”软件包的一个例子;在R软件包中捆绑了一个完整的实验,这些实验数据软件包用于教学,测试和说明,但也可以作为数据分析的文档。



`
[AppleScript] 纯文本查看 复制代码
``{r ALL}
library(ALL)
data(ALL)
ALL
```


(您并不总是必须在R中的所有数据集上显式调用`data()`,这取决于包的作者的选择)。

这是在Affymetrix HGU 95av2基因表达微阵列上进行的实验; 作者分析了128个样本。

因为这是来自实验包的数据,所以在数据集的帮助页面中有文档,请参阅


[AppleScript] 纯文本查看 复制代码
```{r help, eval=FALSE}
?ALL
```



从“ALL”的印刷说明可以看出,128个样本中测量了12625个特征(在这种情况下是基因)。 该对象包含有关实验的信息;如下:

[AppleScript] 纯文本查看 复制代码
```{r experimentData}
experimentData(ALL)
```



两个文献(公开的ID或PMID)与数据相关联。

对象中没有“protocolData”(这是为了描述实验协议); 这在我的经验中是典型的(尽管将这些信息容易地提供给最终用户是非常好的)。

对象的核心是两个矩阵

- 包含128个样本(12625×128数字矩阵)上的12625基因表达测量的“exprs”矩阵。
- “pData”“data.frame”在样本上包含表型数据。

你得到表达式数据如下
[AppleScript] 纯文本查看 复制代码
```{r exprs}
exprs(ALL)[1:4, 1:4]
```
These are `sampleNames` and `featureNames`.  Get them by
注意这个矩阵的列和行名。 这些是“sampleNames”和“featureNames”。 如下方法得到

[AppleScript] 纯文本查看 复制代码
```{r names}
head(sampleNames(ALL))
head(featureNames(ALL))
```


要获取`pData`信息,使用`pData`访问器。
[AppleScript] 纯文本查看 复制代码
```{r pData}
head(pData(ALL))
```


您可以使用`$`运算符访问这个`data.frame`的各个列:
[AppleScript] 纯文本查看 复制代码
```{r dollar}
head(pData(ALL)$sex)
head(ALL$sex)
```


## Subsetting

Subsetting of this object is an important operation.  The subsetting has two dimensions; the first dimension is genes and the second is samples.  It keeps track of how the expression measures are matched to the pheno data.
这个对象的子集是一个重要的操作。 子集有两个维度; 第一个维度是基因,第二个是样本。 它跟踪表达式度量如何匹配pheno数据。
[AppleScript] 纯文本查看 复制代码
```{r subset}
ALL[,1:5]
ALL[1:10,]
ALL[1:10,1:5]
```


我们甚至可以更改样品的顺序
[AppleScript] 纯文本查看 复制代码
```{r subset2}
ALL[, c(3,2,1)]
ALL$sex[c(1,2,3)]
ALL[, c(3,2,1)]$sex
```
 


## featureData and annotation

数据与表型正确匹配!

##特征数据和注释

您可以将“pData”视为提供有关测量矩阵的列(样本)的信息。 与“pData”类似,我们有“featureData”,用于提供阵列的特征(基因)信息。

然而,虽然这个插槽已经存在了很多年,但它经常没有使用
[AppleScript] 纯文本查看 复制代码
```{r featureData}
featureData(ALL)
```


所以这给我们带来了一个关键的问题:到目前为止,“ALL”对象对实验类型和被分析的样本有一些有用的描述。 但是我们如何得到哪些基因被分析的信息?

对于市售的微阵列,Bioconductor的方法一直是制作所谓的注释包,将“featureNames”链接到实际的有用信息。 在概念上,这个信息可以存储在“featureData”中,但不是“featureData”。
[AppleScript] 纯文本查看 复制代码
Example
```{r annotation}
ids <- featureNames(ALL)[1:5]
ids
```


您是不是要找:
这些是由微阵列供应商Affymetrix命名的ids。 我们可以在注释包中查找它们
[AppleScript] 纯文本查看 复制代码
```{r annotation2}
library(hgu95av2.db)
as.list(hgu95av2ENTREZID[ids])
```


## Note: phenoData and pData

这给了我们与不同测量值相关联的Entrez ID。 有一些所谓的“地图”,如`hgu95av2XX`,`XX`有多个值。 这种方法对Affymetrix芯片非常具体。 使用注解包的另一种方法是使用“r Biocpkg(”biomaRt“)”包来获取Ensembl(在线数据库)中的微阵列注释。 这将在别处讨论。

我们现在将离开注释主题。

##注意:phenoData和pData

对于这种类型的对象,`phenoData`(类AnnotatedDataFrame`的对象)和`pData`(类“data.frame”的对象之间)有区别。

“AnnotatedDataFrame”背后的想法是通过一个名为“varLabels”的描述列表来包含有关“data.frame”包含的附加信息。
[AppleScript] 纯文本查看 复制代码
```{r varLabels}
pD <- phenoData(ALL)
varLabels(pD)
```


近来,似乎`varLabels`被限制为等于`data.frame`的列名称,使得整个`AnnotatedDataFrame`的构造是不必要的:
[AppleScript] 纯文本查看 复制代码
```{r varLabels2}
varLabels(pD)[2] <- "Age at diagnosis"
pD
colnames(pD)[1:3]
varLabels(pD)[1:3]
```



857/5000
所以现在我们已经暴露了一个可疑的bug,连同一些未被使用的抽象。 发生这种情况。

## eSet类

“ExpressionSet”类是“eSet”的示例。 “ExpressionSet”类有一个单独的测量矩阵,我们通过`exprs`访问。 与此相反,“eSet”类可以具有任意数量的任意名称的测量矩阵,尽管所有矩阵都需要具有相同的维度。

另一个“eSet”派生类的例子是“NChannelSet”,用于存储多通道微阵列测量; 一个例子是两色阵列,其中微阵列已经以两种不同的颜色成像。

类的另一个例子是用于DNA甲基化阵列的`r Biocpkg(“minfi”)`package; 这里有一个类,例如用于两色微阵列的“RGChannelSet”和用于甲基化测量的“MethylSet”。
## SessionInfo

\scriptsize

```{r sessionInfo, echo=FALSE}
sessionInfo()
```

回复

使用道具 举报

634

主题

1182

帖子

4030

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4030
发表于 2017-6-30 20:32:53 | 显示全部楼层
这个是很多下游分析R包的基础,一定要好好学习这个
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复 支持 反对

使用道具 举报

64

主题

138

帖子

681

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
681
 楼主| 发表于 2017-6-30 22:34:35 | 显示全部楼层
Jimmy 发表于 2017-6-30 20:32
这个是很多下游分析R包的基础,一定要好好学习这个

好的,好的,我想着看完总结一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-9-21 09:31 , Processed in 0.041774 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.