comparison SMART/DiffExpAnal/DESeqTools/pairwiseSERE.R @ 31:0ab839023fe4

Uploaded
author m-zytnicki
date Tue, 30 Apr 2013 14:33:21 -0400
parents 94ab73e8a190
children
comparison
equal deleted inserted replaced
30:5677346472b5 31:0ab839023fe4
1 # pairwiseSERE
2 # compute pairwise SERE statistics
3
4 # input : counts
5 # output : matrix of SERE values
6
7 # created october 19th, 2012
8 # Marie-Agnes Dillies
9
10
11 pairwiseSERE <- function( counts ){
12
13 sere <- matrix( NA, ncol=ncol(counts), nrow=ncol(counts) )
14 for (i in 1:ncol(counts)){
15 for (j in 1:ncol(counts)){
16 sere[i,j] <- sigfun_Pearson( counts[,c(i,j)] )
17 }
18 }
19 colnames(sere) <- rownames(sere) <- colnames(counts)
20 return( formatC(sere, format="f", digits=2) )
21 }
22
23 sigfun_Pearson <- function(observed) {
24 #calculate lambda and expected values
25 laneTotals<- colSums(observed);
26 total <- sum(laneTotals)
27 fullObserved <- observed[rowSums(observed)>0,];
28 fullLambda <- rowSums(fullObserved)/total;
29 fullLhat <- fullLambda > 0;
30 fullExpected<- outer(fullLambda, laneTotals);
31
32 #keep values
33 fullKeep <- which(fullExpected > 0);
34
35 #calculate degrees of freedom (nrow*(ncol -1) >> number of parameters - calculated (just lamda is calculated >> thats why minus 1)
36 #calculate pearson and deviance for all values
37 oeFull <- (fullObserved[fullKeep] - fullExpected[fullKeep])^2/ fullExpected[fullKeep] # pearson chisq test
38 dfFull <- length(fullKeep) - sum(fullLhat!=0);
39
40 return(c(sqrt(sum(oeFull)/dfFull)));
41 }