我已经使用 import.bw()(来自 rtracklayer 包)将 UCSC 可对齐性轨道导入到 R 中,但是在访问我需要的值时遇到了问题。
例如:我想提供一条染色体和一个碱基并返回该位置的值。
我的对象叫做 al100:
> al100
RangedData with 21591667 rows and 1 value column across 25 spaces
space ranges | score
<factor> <IRanges> | <numeric>
1 chr1 [10001, 10014] | 0.002777778
2 chr1 [10015, 10015] | 0.333333343
3 chr1 [10016, 10026] | 0.500000000
4 chr1 [10027, 10031] | 1.000000000
我想要一个指定染色体和位置并取回分数的函数。如果我想要一个或两个值,这很简单,但是当我要查找 700 万个值时,循环将不起作用;每次查询 4/5 秒,大约是 10 个月,这不是一个选项。
例如,chr1,位置 10011 将返回值 0.002777778(其中 x 是包含染色体和位置列表的单独对象)
到目前为止,我发现的唯一方法是询问我的位置是否等于或大于范围的开始和/或等于或等于或小于范围的结束。不是很好。
score(al100["chr1"])[ which( start(al100["chr1"]<=x$POS[1])) & end(al100["chr1"]<=x$POS[1])) ]