2012-03-28 14 views
1

私は、rtracklayerパッケージのimport.bw()を使用してUにUCSCアライナビリティトラックをインポートしましたが、必要な値にアクセスできません。例えばR/BioconductorのIRangesオブジェクトから値を抽出する

:私は、染色体とベースを提供して、その位置にある値を返すようにしたいです。

私のオブジェクトがAL100と呼ばれている:私はchrosomeと位置を指定し、スコアを取り戻す機能をしたい

> 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 

。私は1つのまたは2つの値をしたい場合、これは簡単ですが、私はルックアップするために700万を持っているとき、ループは仕事に行くのではありません。 1つのクエリにつき4/5秒で、それはオプションではない約10ヶ月です。

は例えば、CHR 1、位置10011が(xは染色体と位置のリストを含む別のオブジェクトである)値0.002777778を返します

私がこれまでに見つけた唯一の方法は、私の立場ならば依頼することです同等以上の開始よりも、および/または同等またはそれに等しい、または範囲の端よりも小さいです。あまりよくない。

再現例えば
score(al100["chr1"])[ which(start(al100["chr1"]<=x$POS[1])) & end(al100["chr1"]<=x$POS[1])) ] 
+0

あるテーマ一致を問い合わせるかについての情報を含んでいます実行する秒の?そのクエリにバグがありますか?あなたはxのあなたの指定した位置( '終わり... <= xで...')未満の終わりを探しているように見えます。かっこは消えていますか?あるいは、 'start'関数は本当にブールベクトルを受け入れますか? –

答えて

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 

が間マッピングするfindOverlapsを使用し、次に関心

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

の領域を定義与えます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 

データフレームが4/5を取る1つの底部でのコードブロック

> 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