Question: Parallelise Watermelon Dasen normalisation
0
gravatar for lamia_203
13 days ago by
lamia_20350
lamia_20350 wrote:

Hi, I'm running quality control on 2 thousand samples and normalisation using the dasen function (from watermelon) - however it takes hours for this to run. I have attached the code below and want to parallelise the function to normalize.quantiles each type of probe at the same time on different clusters. I'm using R to parallelise it and I'm not sure where to start. Any help will be much appreciated.

dasen <- function(mns, uns, onetwo, alfa=100, MvalueConv=TRUE, ...){

   mnsc <- dfsfit(mns,  onetwo, ...)  
   unsc <- dfsfit(uns,  onetwo, roco=NULL)

   mnsc[onetwo=='I' ,] <- normalize.quantiles(mnsc[onetwo=='I', ])
   unsc[onetwo=='I' ,] <- normalize.quantiles(unsc[onetwo=='I', ])

   mnsc[onetwo=='II',] <- normalize.quantiles(mnsc[onetwo=='II',])
   unsc[onetwo=='II',] <- normalize.quantiles(unsc[onetwo=='II',])

   indexNegU <- which(!is.numeric(unsc), arr.ind=TRUE)
   indexNegM <- which(!is.numeric(mnsc), arr.ind=TRUE)
   if(length(indexNegU)>0 || length(indexNegM)>0){
     cat("\tWarning: NA values introduced. Value is replaced by 0.\n")

     unsc[indexNegU] <- 0
     mnsc[indexNegM] <- 0
   }

   #check and "correct" for negative values
   indexNegU <- which(unsc < 0, arr.ind=TRUE)
   indexNegM <- which(mnsc < 0, arr.ind=TRUE)
   unsc[indexNegU] <- 0
   mnsc[indexNegM] <- 0

   if(MvalueConv){
     return(log2((mnsc+alfa)/(unsc + alfa)))
   } else{
     return(mnsc/( mnsc + unsc + alfa ))
   }

}
ADD COMMENTlink written 13 days ago by lamia_20350
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.3.0
Traffic: 1561 users visited in the last hour