2012-03-28 52 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