搜索
查看: 6180|回复: 0

[software] GenomicRanges - Rle

[复制链接]

64

主题

138

帖子

681

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
681
发表于 2017-6-20 20:32:55 | 显示全部楼层 |阅读模式
“Rle”(运行长度编码)的数据表示类。 这个类对于代表全基因组序列覆盖很好用。(表示,智商如我,只能在纸上手动画线段才理解)要理解!要理解!要理解!
[AppleScript] 纯文本查看 复制代码
```{r RleEx1}

  library(GenomicRanges)
```


### Rle

“Rle” 是向量run-length-encoded表示。 `r Biocpkg(“IRanges”)`package实现对这个类的支持。 注意:还有一个名为`rle`的基础R类,它具有很少的功能。

向量的长度表示将连续的相同的值作为一个集合来运行。  例子如下
[AppleScript] 纯文本查看 复制代码
```{r RleEx1}
rl <- Rle(c(1,1,1,1,2,2,3,3,2,2))
rl
runLength(rl)
runValue(rl)
as.numeric(rl)
```


### Useful functions for Rle
注意函数`runLength()`和`runValue()`。

如果这是非常有效的表示,当以下的情况

- 矢量很长
- 有很多连续具有相同的值的元素

这对于分段常数的基因组或者基因组大部分未被覆盖的 数据(例如哺乳动物中的RNA测序)尤其有用。

在许多方面`Rle`s作为普通向量,你可以使用它们进行算术,使用标准的R函数(如`+`和`log2`)来转换它们。

还有“RleList”,它是“Rle”的列表。 该类用于表示基因组广泛的覆盖轨道,其中列表的每个元素是不同的染色体。



一个标准用例是你有一些区域(比如说“IRanges”),你想对这些每个区域的的“Rle”做一些事情。 输入`aggregate()`。
[AppleScript] 纯文本查看 复制代码
```{r aggregate}
ir <- IRanges(start = c(2,6), width = 2)
ir
aggregate(rl, ir, FUN = mean)#往下看知道怎么来,就是分别求(2,3)
                                     #和(3,3)的均值

```


也可以通过`coverage()`函数将 `IRanges`转换成`Rle`。  对每个整数, 有多少个范围重复数为这个整数。
[AppleScript] 纯文本查看 复制代码
```{r coverage}
ir <- IRanges(start = 1:10, width = 3)#我是画线段做的
ir
rl <- coverage(ir)
rl
```



您可以通过`slice()`函数选择高覆盖区域:
[AppleScript] 纯文本查看 复制代码
```{r slice}
slice(rl, 2)
```


This outputs a `Views` object, see next section.

### Views and Rles



在“r Biocpkg(”Biostrings“)的包中,我们了解了基因组上的 `Views`。 `Views`也可以在`Rle`s上实例化。
[AppleScript] 纯文本查看 复制代码
```{r views}
vi <- Views(rl, start = c(3,7), width = 3)
vi
``` 
with `Views` you can now (again) apply functions:
```{r viewsMean}
mean(vi)#咋算的
```

This is very similar to using `aggregate()` described above.








### RleList

“RleList”只是一个“Rle”列表。 它类似于概念中的“GRangesList”。

### Rles和GRanges

`Rle`也可以由`GRanges`构建。

这通常涉及“RleList”,其中列表的每个元素都是染色体。 令人惊讶的是,我们还没有一个“RleList”类型的结构,它还包含有关说不同染色体长度的信息。

让我们看一些例子


[AppleScript] 纯文本查看 复制代码
```{r GRanges}
gr <- GRanges(seqnames = "chr1", ranges = IRanges(start = 1:10, width = 3))
rl <- coverage(gr)
rl
```

Using `Views` on such an object exposes some missing functionality
在这样一个对象上使用`Views`会显示一些缺少的功能

[AppleScript] 纯文本查看 复制代码
```{r GRangesViews, error=TRUE}
grView <- GRanges("chr1", ranges = IRanges(start = 2, end = 7))
grView
vi <- Views(rl, grView)
vi
```


We get an error, mentioning some object called a `RangesList`.  This type of object is similar to a `GRanges` and could be considered succeeded by the later class.  We sometimes see instances of this popping around.
我们得到一个错误,提到一些称为“RangesList”的对象。 这种类型的对象类似于`GRanges`,可以被后面的类认为是成功的。 我们有时会看到这个弹出的实例。

[AppleScript] 纯文本查看 复制代码
```{r GRangesViews2}
vi <- Views(rl, as(grView, "RangesList"))
vi
vi[[1]]
```


## Biology Usecase

生物学应用

假设我们要计算属于(已知)外显子的碱基的平均覆盖范围。
输入对象
[AppleScript] 纯文本查看 复制代码
**reads**: a `GRanges`.  
**exons**: a `GRanges`.
pseudocode:
```{r usecase, eval=FALSE}
bases <- reduce(exons)
nBases <- sum(width(bases))
nCoverage <- sum(Views(coverage(reads), bases))
nCoverage / nBases
``` 


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2023-6-9 20:29 , Processed in 0.139048 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.