2016-12-01 24 views
0

GRangesオブジェクトのメタ列の特定のウィンドウで平均値を求めようとしています。ウィンドウ全体のビン平均平均値

だから私は、データオブジェクトを持っている:

> gr.data 
GRanges object with 10505026 ranges and 1 metadata column: 
     seqnames     ranges strand |  value 
      <Rle>    <IRanges> <Rle> | <numeric> 
    [1]  chr1   [10468, 10468]  + |   0 
    [2]  chr1   [10469, 10469]  - |   1 
    [3]  chr1   [10470, 10470]  + |  0.5 
    [4]  chr1   [10471, 10471]  - |   1 
    [5]  chr1   [10483, 10483]  + |  0.6 

とウィンドウオブジェクト:

gr.windows 
GRanges object with 6077 ranges and 0 metadata columns: 
    seqnames     ranges strand 
     <Rle>    <IRanges> <Rle> 
[1]  chr1  [  1, 100000]  * 
[2]  chr1  [100001, 200000]  * 
[3]  chr1  [200001, 300000]  * 
[4]  chr1  [300001, 400000]  * 
[5]  chr1  [400001, 500000]  * 

私はその後、RleListにデータオブジェクトを変換:

gr.RleList <- mcolAsRleList(gr.data, varname = "value") 

gr.RleList 
RleList of length 3 
$chr1 
numeric-Rle of length 249239887 with 5816335 runs 
Lengths:    10467     1     1     1 ...     1     1    13     2 
Values :    NA     0     1    0.5 ...     0    NaN    NA    NaN 

場合、私はその後、 binnedAverageを使うと、NAの値が得られます。

gr.binnedAvg <- binnedAverage(gr.windows, gr.RleList, "value") 
gr.binnedAvg 
GRanges object with 6077 ranges and 1 metadata column: 
    seqnames     ranges strand |  value 
     <Rle>    <IRanges> <Rle> | <numeric> 
[1]  chr1  [  1, 100000]  * |  <NA> 
[2]  chr1  [100001, 200000]  * |  <NA> 
[3]  chr1  [200001, 300000]  * |  <NA> 
[4]  chr1  [300001, 400000]  * |  <NA> 
[5]  chr1  [400001, 500000]  * |  <NA> 

unique(mcols(gr.binnedAvg)$value) 
[1] NA 

私は同じ結果で値を合計しました。 私のリストのNA値がこれを上回っているのですか、それとも私の問題がありますか?

最小例:

library(BSgenome.Hsapiens.UCSC.hg19) 
library(data.table) 

gr.windows <- tileGenome(seqinfo(Hsapiens), tilewidth=100000,cut.last.tile.in.chrom=TRUE) 

gr.data <- GRanges(c("chr1", "chr2"), IRanges(c(10, 50), c(15, 55)), value = c(20, 10)) 
gr.data.RleList <- mcolAsRleList(gr.data, varname = "value") 
seqlevels(gr.windows, force=TRUE) <- names(gr.data.RleList) 
gr.data.binnedAvg <- binnedAverage(gr.windows, gr.data.RleList, "value") 

gr.data.binnedAvg 
GRanges object with 4925 ranges and 1 metadata column: 
    seqnames     ranges strand |  value 
     <Rle>    <IRanges> <Rle> | <numeric> 
[1]  chr1  [  1, 100000]  * |  <NA> 
[2]  chr1  [100001, 200000]  * |   0 
[3]  chr1  [200001, 300000]  * |   0 
[4]  chr1  [300001, 400000]  * |   0 

はあなたの助けをありがとうございました!

+0

最小限の再現可能な例を投稿できますか? http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – emilliman5

+0

申し訳ありませんが、私は忘れました。だから私は今それを付けました。私はそれがウィンドウの値の欠落のためだと思いますか?しかし、私はそれを避ける方法を理解することはできません。 –

+0

'mcolAsRleList'と' binnedAverage'はロードしたライブラリの一部でも、 'GenomicRanges'パッケージにもありません – emilliman5

答えて

0
「最小例」、次の作品使用

library(BSgenome.Hsapiens.UCSC.hg19) 
library(GenomicRanges) 

gr.windows <- tileGenome(seqinfo(Hsapiens), tilewidth=100000, cut.last.tile.in.chrom=TRUE) 
gr.data <- GRanges(c("chr1", "chr2"), IRanges(c(10, 50), c(15, 55)), value=c(20, 10)) 

gr.data.cov <- GenomicRanges::coverage(gr.data, weight="value") 

seqlevels(gr.windows, pruning.mode="coarse") <- names(gr.data.cov) 

gr.data.binnedAvg <- binnedAverage(gr.windows, gr.data.cov, "value") 

後期応答を、将来の参照のために有用であり得ます。