1
我使用import.bw()(从rtracklayer包中)导入了UCSC对齐性轨迹到R中,但无法访问我需要的值。从R/Bioconductor中的IRanges对象提取值
例如:我想提供一个染色体和一个碱基并返回该位置的值。
我的对象称为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
我想,我指定chrosome和位置,并找回得分的功能。如果我想要一个或两个值,这是微不足道的,但是当我有700万个查询时,循环不起作用;每查询4/5秒,大概10个月,这不是一个选项。
例如,CHR 1,位置10011将返回值0.002777778(其中x是染色体和位置的列表单独的对象)
我到目前为止发现的唯一方法是问如果我的位置等于或大于开始和/或等于或小于范围的结束。不太好。
score(al100["chr1"])[ which(start(al100["chr1"]<=x$POS[1])) & end(al100["chr1"]<=x$POS[1])) ]
是在底部的代码块中的一个这需要4/5一秒钟跑?该查询中是否存在错误?看起来你正在寻找一个小于你在x('end ... <= x ...')中指定位置的结束。那么括号是否被删除?或者,'start'函数是否真的接受布尔向量? – 2012-03-28 15:33:50