搜索
查看: 2098|回复: 0

[software] GenomicRanges - Lists

[复制链接]

64

主题

138

帖子

681

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
681
发表于 2017-6-22 16:23:27 | 显示全部楼层 |阅读模式


`r Biocpkg(“IRanges”)`和`r Biocpkg(“GenomicRanges”)`包引入了一些类,我将称之为`XXList`; 一个例子是`GRangesList`。

这些看起来像来自base R的标准`list`,但是它们要求列表的每个元素都是同一个类。 从数据结构的角度来看,这是方便的; 我们确切地知道列表中有什么。

但事情也在幕后。 这些类型的列表通常会对其进行额外的压缩编译。 因此,最好使用特定的方法/功能,而不是我们用于普通列表的“sapply”/“lapply”的标准工具箱。  

一个专门用于“GRangesList”的重要用途是一组**transcript**的表示。 每个transcript是列表中的一个元素,并且 的transcript **exon**表示为“GRanges”。

### GrangesList

下面做一个`GRangesList`:

[AppleScript] 纯文本查看 复制代码
```{r CreateGrangesList}
gr1 <- GRanges(seqnames = "chr1", ranges = IRanges(start = 1:4, width = 3))
gr2 <- GRanges(seqnames = "chr2", ranges = IRanges(start = 1:4, width = 3))
gL <- GRangesList(gr1 = gr1, gr2 = gr2)
gL
```



`GRanges`函数运行,返回的是 `IntegerList`
[AppleScript] 纯文本查看 复制代码
```{r GRangesAccess}
start(gL)
seqnames(gL)
```



我们经常像得到每个元素的长度。用这个`sapply(gL, length)`函数非常慢,有一个专用的功能函数elementLengths(已经替代为elementNROWS):
[AppleScript] 纯文本查看 复制代码
```{r elementLengths}
elementNROWS(gL) 
```


我们有一个新的“XXapply”函数名字叫“endoapply”。 当您要应用将一个“GRanges”映射到另一个“GRanges”的函数时,这被使用,比如说“shift”或“resize”。
[AppleScript] 纯文本查看 复制代码
```{r endoapply}
shift(gL, 10)#移动10
```


`findOverlaps`工作略有不同。 对于`GRangesList`,我们认为每一个元素都是一个范围的集合。  如果有范围重叠,我们得到一个重叠 。  如下
[AppleScript] 纯文本查看 复制代码
```{r findOverlaps}
findOverlaps(gL, gr2)
```


注意 `queryLength` 是2而不是20,我么从第一行是`gL[[2]]` 与`gr[1]`重复的range.
它事实上是一个特征在我们觉得`GRangesList` 是一个副本的集合,每个`GRanges`副本的外显子,经过这样的翻译,`findOverlaps` 会得到 **transcript**重复是否是你感兴趣的,并且这这些重复的区域中的 **exons** 是真的。


## Other Lists

还有别的 `XXList`, 包括:

- `RleList`
- `IRangesList`
- `IntegerList`
- `CharacterList`
- `LogicalList`

and many others.


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2019-12-12 17:46 , Processed in 0.025639 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.