2012-03-28 18 views
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])) ] 
+0

是在底部的代码块中的一个这需要4/5一秒钟跑?该查询中是否存在错误?看起来你正在寻找一个小于你在x('end ... <= x ...')中指定位置的结束。那么括号是否被删除?或者,'start'函数是否真的接受布尔向量? – 2012-03-28 15:33:50

回答

1

对于可再现例如

library(rtracklayer) 
example(import.bw) 
gffRD 

给出

> head(gffRD, 3) 
RangedData with 3 rows and 7 value columns across 1 space 
            space  ranges |  type  source 
           <factor> <IRanges> | <factor>  <factor> 
1 Escherichia_coli_K-12_complete_genome [ 337, 2799] |  CDS glimmer/tico 
2 Escherichia_coli_K-12_complete_genome [2801, 3733] |  CDS glimmer/tico 
3 Escherichia_coli_K-12_complete_genome [3734, 5020] |  CDS glimmer/tico 
    phase strand  note  shift  score 
    <factor> <factor> <character> <numeric> <numeric> 
1  NA  +   NA  NA 5.347931 
2  NA  +   NA  NA 11.448764 
3  NA  +   NA  NA 6.230648 

定义的感兴趣区域

roi <- GRanges("Escherichia_coli_K-12_complete_genome", 
       IRanges(c(337, 3734), width=1)) 

然后使用findOverlaps到之间进行映射210和roi

olaps <- findOverlaps(gffRD,roi) 
df <- DataFrame(seqnames=seqnames(roi)[subjectHits(olaps)], 
       start=start(roi)[subjectHits(olaps)], 
       Score=score(gffRD)[queryHits(olaps)]) 

olaps包含有关哪些查询匹配该主题的信息

> olaps 
Hits of length 2 
queryLength: 14 
subjectLength: 2 
    queryHits subjectHits 
    <integer> <integer> 
1   1   1 
2   3   2 

数据帧是

> df 
DataFrame with 2 rows and 3 columns 
           seqnames  start  Score 
            <Rle> <integer> <numeric> 
1 Escherichia_coli_K-12_complete_genome  337 5.347931 
2 Escherichia_coli_K-12_complete_genome  3734 6.230648