Search
Question: the Normalise function in csaw
0
gravatar for tangj
9 weeks ago by
tangj10
tangj10 wrote:

 

Dear Aaron,

 

Hi! I have used csaw before and it worked beautifully. Recently I tried to use csaw from Rstudio. When I get to the normalisation step, things started to look a bit funny:

> require(csaw)
> pe.bam <- c("X_1.bam", "X_2.bam", "Y_1.bam", "Y_2.bam")
> pe.param <- readParam(minq=50, restrict=c("Pf3D7_01_v3", "Pf3D7_02_v3", "Pf3D7_03_v3","Pf3D7_04_v3","Pf3D7_05_v3","Pf3D7_06_v3","Pf3D7_07_v3","Pf3D7_08_v3","Pf3D7_09_v3","Pf3D7_10_v3","Pf3D7_11_v3","Pf3D7_12_v3","Pf3D7_13_v3","Pf3D7_14_v3"), max.frag=1150, pe="both")
> data <- windowCounts(pe.bam, param=pe.param, spacing=50, width=300)
> design <- model.matrix(~factor(c('X', 'X', 'Y', 'Y')))
> colnames(design) <- c("intercept", "condition")
> head(assay(data))
     [,1] [,2] [,3] [,4]
[1,]    7    2    2    6
[2,]    8    8    4    8
[3,]    8   10    5   11
[4,]    9   12    5   13
[5,]    9   17    5   14
[6,]    9   21    5   17
> head(rowRanges(data))
GRanges object with 6 ranges and 0 metadata columns:
         seqnames     ranges strand
            <Rle>  <IRanges>  <Rle>
  [1] Pf3D7_01_v3 [  1, 300]      *
  [2] Pf3D7_01_v3 [ 51, 350]      *
  [3] Pf3D7_01_v3 [101, 400]      *
  [4] Pf3D7_01_v3 [151, 450]      *
  [5] Pf3D7_01_v3 [201, 500]      *
  [6] Pf3D7_01_v3 [251, 550]      *
  -------
  seqinfo: 14 sequences from an unspecified genome
> data$totals
[1] 1593882 2422822 1685087 3548254
> require(edgeR)
> abundances <- aveLogCPM(asDGEList(data))
> summary(abundances)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.9018  4.0230  4.6160  4.5440  5.2340  7.8680 
> keep.simple <- abundances > 2
> filtered.data <- data[keep.simple,]
> summary(keep.simple)
   Mode   FALSE    TRUE    NA's 
logical   11260  446392       0 
> data <- data[keep.simple,]                                                                                                                                                                      > require(edgeR)
> binned <- windowCounts(pe.bam, param=pe.param, bin=TRUE, width=10000)
> normfacs <- normalize(binned)
> normfacs
class: RangedSummarizedExperiment 
dim: 2335 4 
metadata(6): spacing width ... param final.ext
assays(1): counts
rownames: NULL
rowData names(0):
colnames: NULL
colData names(5): bam.files totals ext rlen norm.factors
> y <- asDGEList(data, norm.factors=normfacs)
Error in (function (counts = matrix(0, 0, 0), lib.size = colSums(counts),  : 
  Length of 'norm.factors' must equal number of columns in 'counts'

I have never seen this the last time I used csaw. Could you please kindly inform me what could have gone wrong?

Thank you very much from your time!

Jingyi from Melbourne

 

 

 

 

 

 

 

ADD COMMENTlink modified 9 weeks ago • written 9 weeks ago by tangj10
1
gravatar for tangj
9 weeks ago by
tangj10
tangj10 wrote:

Dear all, 

Hi! I know why! I have checked the latest user manual and realised that normalise function has been changed to normOffSsets function. I will need to re-read the updated user manual.

Cheers,

J

 

 

 

ADD COMMENTlink written 9 weeks ago by tangj10

FYI, I believe that the relevant change actually happened a couple of releases ago, when normalize stopped returning normalization factors directly and started returning a SummarizedExperiment object instead. normOffsets will have the same behaviour if the input object is a SummarizedExperiment. In any case, you should use normOffsets in the future; I am deprecating normalize as it is too general and runs the risk of clashing with other packages.

ADD REPLYlink written 9 weeks ago by Aaron Lun17k
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.2.0
Traffic: 153 users visited in the last hour