

###################################################################### exon mean, gene mean and splicing index 

 setwd("final")
 load ("attile.nonSFP.exon.RData")
 load ("mRNA.sc.nq.RData")

 mRNA.nonSFP.exon <- mRNA.nq[  which( rownames( mRNA.nq) %in% rownames(attile.nonSFP.exon) ),]



 #splicing index as a supplemental method to probe level analysis, so only analyze the tus which analyzed in probe level study
 load ("tmean.tgr.RData")
 tu.list <- names(tgr)[ tgr <= 0.25 ]    #exon probes/gene probes ratio #68022 exons in 15349 genes
 tu.matr <- sapply(tu.list, function(x) unlist( strsplit(x, " ") ) )
 gene.list <- names( table( tu.matr[1,]) )   
 tu.list <- paste(attile.nonSFP.exon$gene, attile.nonSFP.exon$tu) [ which( as.character(attile.nonSFP.exon$gene) %in% gene.list) ]
 tu.list <- names(table(tu.list))


 mean <- matrix(NA, nr=length(tu.list), nc=16)
 rownames(mean) <- tu.list

 for (i in 1:length(tu.list) )
 { 
  probes <- which( paste(attile.nonSFP.exon$gene, attile.nonSFP.exon$tu) == tu.list[i] )
  tmean <-  matrix(mRNA.nonSFP.exon[ probes, ], nc=16) 
  mean[i,] <- colMeans(tmean) 
  if(i/1000==trunc(i/1000)) cat(i, "\n")
 }

 tmean <- mean; rm(mean); gc()
 save(tmean, file="exon.expression.mean.RData", compress=T)

 q("no")




###

 setwd("final")
 

 load ("exon.expression.mean.RData")
 tu.list <- rownames(tmean)
 tu.matr <- sapply(tu.list, function(x) unlist( strsplit(x, " ") ) )
 gene.list <- names( table( tu.matr[1,]) ) 
 gene <- tu.matr[1,]  

 gene.mean <- matrix(NA, nr=length(gene.list), nc=4)
 rownames(gene.mean) <- gene.list
 for (i in 1:length(gene.list) )
 {
  gmean <-  matrix( tmean[ which(gene == gene.list[i]), ], nc=16)
  gene.mean[i,] <- c( mean( gmean[,1:4]), mean(gmean[,5:8]), mean(gmean[,9:12]), mean(gmean[,13:16])  )
  if(i/100 == trunc(i/100)) cat(i, "\n")
 }

 save(gene.mean, file="sindex.gene.expression.mean.RData", compress=T)
 q ("no")





###

 setwd ("final")
 load ("exon.expression.mean.RData")
 load ("sindex.gene.expression.mean.RData")

 tu.list <- rownames(tmean)
 tu.matr <- sapply(tu.list, function(x) unlist( strsplit(x, " ") ) )
 gene.list <- names( table( tu.matr[1,]) ) 
 gene <- tu.matr[1,]  

 index <- matrix(NA, nr=length(tu.list), nc=16) 
 rownames(index) <- tu.list
 gene.mean <- t( apply(gene.mean, 1, function(x) rep(x, each=4) ) )


 for (i in 1:length(tu.list) )
  {
  gmean <- gene.mean[which( rownames(gene.mean)==gene[i] ), ] 
  index[i,] <- tmean[i,]-gmean
  if(i/100 == trunc(i/100) ) cat(i, "\n")
  }


 load ("tmean.tgr.RData")
 tu.list <- names(tgr)[tgr<=0.25]
 index <- index[ which(rownames(index) %in% tu.list), ]
 save(index, file="sindex.RData", compress=T)






#################################################################### model of splicing index

 setwd ("final")

 load ("sindex.RData")

 add <- rep( c(1, -1, 0, 0), each=4)
 dom <- rep( c(0, 0, 1, 1), each=4)
 mat <- rep( c(0, 0, -1, 1), each=4)

 fac.mat <- data.frame(add, dom, mat)
 
 fit <- lsfit(fac.mat, t(index) )
 texpr.main <- list(coef=fit$coef, resid=fit$resid)

 save(texpr.main, file="tindex.main.RData", compress=T)

 q("no")





################################################################### permutation

 k <- 3

 setwd ("final")

 load ("sindex.RData")

 add <- rep( c(1, -1, 0, 0), each=4)
 dom <- rep( c(0, 0, 1, 1), each=4)
 mat <- rep( c(0, 0, -1, 1), each=4)

 fac.mat <- data.frame(add, dom, mat)


 rfit <- lsfit(fac.mat[, -k], t(index) )
 predict <-  t( as.matrix(fac.mat[,-k]) %*% rfit$coef [-1,] ) + rfit$coef[1,]  
 resid <- t(rfit$resid)




 nperm <- 1000	
 nsample=16
 load ( paste("samp.matrix", nsample, ".RData", sep="") )
 matr <- matrix(NA, nr=nrow(index), nc=nperm)
 texpr.perm <- list( coef=matr, std=matr)


 denom <- c(  sqrt( sum( (add-mean(add) )^2) ),  sqrt( sum( (add-mean(add) )^2) ), sqrt( sum( (dom-mean(dom) )^2) ), sqrt( sum( (mat-mean(mat) )^2) )  )


 for (iperm in 1:nperm)
 {
  perm.dat <- predict + resid[, samp.matrix[iperm,] ]
  pfit <- lsfit(fac.mat, t(perm.dat) )
  texpr.perm[[1]][,iperm] <- pfit$coef[k+1,]
  texpr.perm[[2]][,iperm] <- sqrt( colSums ( (pfit$resid)^2) / 12) / denom[k]

  if (iperm/100==trunc(iperm/100)) cat(iperm, "\n")
 }	


 save(texpr.perm, file =paste("Main.tindex.perm", k, ".RData", sep=""),  compress=T)

 q("no")





####################################################################################### FDR

 k <- 3

 setwd ("final")
 load ("tindex.main.RData")
 load ( paste ("Main.tindex.perm", k, ".RData", sep="") )


 add <- rep( c(1,-1,0, 0), each=4)
 dom <- rep( c(0, 0, 1, 1), each=4)
 mat <- rep( c(0, 0, -1, 1), each=4)

 denom <- c(  sqrt( sum( (add-mean(add) )^2) ),  sqrt( sum( (add-mean(add) )^2) ), sqrt( sum( (dom-mean(dom) )^2) ), sqrt( sum( (mat-mean(mat) )^2) )  )


 s0 <- quantile( texpr.perm[[2]], 0.5)
 std <- sqrt( colSums( texpr.main[[2]]^2)/12 ) / denom[k+1]
 main <- texpr.main[[1]][k+1,] / (std + s0)
 main <- sort(main)
 perm.mat <- texpr.perm[[1]]/(texpr.perm[[2]]+s0); rm(texpr.perm); gc()

 perm.num <- 1000
 for (i in 1:perm.num ) perm.mat[,i] <- sort( perm.mat[,i])
 null <- rowMeans(perm.mat)



 for (j in seq(0.2, 1.2, 0.1)) 
 { 
     real.vec <- main > null + j | main < null - j     
     threshold.mat <- matrix(FALSE, nr=length(main), nc=perm.num)
	for (i in 1:perm.num) threshold.mat[,i] <- perm.mat[,i] > null + j | perm.mat[,i] < null - j
     sam.tab <- cbind(table(real.vec), table(factor(threshold.mat ,c(FALSE,TRUE)))/perm.num) 
     cat(j,sam.tab[2,],sam.tab[2,1]-sam.tab[2,2],sam.tab[2,2]/sam.tab[2,1],"\n",sep="\t")
 }



 for (j in seq(0.2, 1.2, 0.1)) 
 { 
     real.vec <- main > null + j 
     threshold.mat <- matrix(FALSE, nr=length(main), nc=perm.num)
	for (i in 1:perm.num) threshold.mat[,i] <- perm.mat[,i] > null + j 
     sam.tab <- cbind(table(real.vec), table(factor(threshold.mat ,c(FALSE,TRUE)))/perm.num) 
     cat(j,sam.tab[2,],sam.tab[2,1]-sam.tab[2,2],sam.tab[2,2]/sam.tab[2,1],"\n",sep="\t")
 }



 for (j in seq(0.2, 1.2, 0.1)) 
 { 
     real.vec <-  main < null - j     
     threshold.mat <- matrix(FALSE, nr=length(main), nc=perm.num)
	for (i in 1:perm.num) threshold.mat[,i] <- perm.mat[,i] < null - j
     sam.tab <- cbind(table(real.vec), table(factor(threshold.mat ,c(FALSE,TRUE)))/perm.num) 
     cat(j,sam.tab[2,],sam.tab[2,1]-sam.tab[2,2],sam.tab[2,2]/sam.tab[2,1],"\n",sep="\t")
 }



###k <- 1
0.2     1219    1405.545        -186.545        1.153031
0.3     651     302.222 348.778 0.4642427
0.4     482     85.7    396.3   0.1778008
0.5     365     29.767  335.233 0.08155342
0.6     258     11.971  246.029 0.04639922
0.7     220     5.57    214.43  0.02531818
0.8     179     2.801   176.199 0.01564804
0.9     140     1.629   138.371 0.01163571
1       114     0.876   113.124 0.00768421
1.1     89      0.537   88.463  0.006033708
1.2     72      0.3     71.7    0.004166667


0.2     680     764.591 -84.591 1.124399
0.3     402     168.497 233.503 0.4191468
0.4     310     48.369  261.631 0.1560290
0.5     233     17.286  215.714 0.07418884
0.6     166     6.891   159.109 0.04151205
0.7     134     3.318   130.682 0.02476119
0.8     105     1.651   103.349 0.01572381
0.9     80      0.961   79.039  0.0120125
1       64      0.558   63.442  0.00871875
1.1     52      0.35    51.65   0.006730769
1.2     45      0.203   44.797  0.004511111



0.2     539     640.954 -101.954        1.189154
0.3     249     133.725 115.275 0.5370482
0.4     172     37.331  134.669 0.2170407
0.5     132     12.481  119.519 0.09455303
0.6     92      5.08    86.92   0.05521739
0.7     86      2.252   83.748  0.02618605
0.8     74      1.15    72.85   0.01554054
0.9     60      0.668   59.332  0.01113333
1       50      0.318   49.682  0.00636
1.1     37      0.187   36.813  0.005054054
1.2     27      0.097   26.903  0.003592593



###k <- 2
0.2     14228   4290.214        9937.786        0.3015332
0.3     3537    1377.98 2159.02 0.3895900
0.4     133     531.518 -398.518        3.996376
0.5     7       225.398 -218.398        32.19971
0.6     6       99.947  -93.947 16.65783
0.7     3       45.712  -42.712 15.23733
0.8     3       22.907  -19.907 7.635667
0.9     1       12.458  -11.458 12.458
1       1       7.318   -6.318  7.318
1.1     68022   4.464   68017.54        6.562583e-05
1.2     68022   2.875   68019.12        4.226574e-05



0.2     7441    2181.899        5259.101        0.2932266
0.3     2173    698.201 1474.799        0.3213074
0.4     133     267.36  -134.36 2.010226
0.5     7       113.417 -106.417        16.20243
0.6     6       50.867  -44.867 8.477833
0.7     3       23.87   -20.87  7.956667
0.8     3       12.81   -9.81   4.27
0.9     1       7.545   -6.545  7.545
1       1       4.754   -3.754  4.754
1.1     68022   3.16    68018.84        4.645556e-05
1.2     68022   2.161   68019.84        3.176913e-05


0.2     6787    2108.315        4678.685        0.3106402
0.3     1364    679.779 684.221 0.4983717
0.4     68022   264.158 67757.84        0.00388342
0.5     68022   111.981 67910.02        0.001646247
0.6     68022   49.08   67972.92        0.0007215313
0.7     68022   21.842  68000.16        0.000321102
0.8     68022   10.097  68011.9 0.0001484373
0.9     68022   4.913   68017.09        7.222663e-05
1       68022   2.564   68019.44        3.769369e-05
1.1     68022   1.304   68020.7 1.917027e-05
1.2     68022   0.714   68021.29        1.049660e-05



###k<-3
0.2     6465    352.239 6112.761        0.05448399
0.3     1388    63.917  1324.083        0.04604971
0.4     316     14.311  301.689 0.04528797
0.5     78      4.065   73.935  0.05211538
0.6     23      1.514   21.486  0.06582609
0.7     68022   0.736   68021.26        1.082003e-05
0.8     68022   0.413   68021.59        6.071565e-06
0.9     68022   0.227   68021.77        3.337156e-06
1       68022   0.124   68021.88        1.822940e-06
1.1     68022   0.072   68021.93        1.058481e-06
1.2     68022   0.036   68021.96        5.292405e-07


0.2     2727    202.231 2524.769        0.07415878
0.3     321     37.049  283.951 0.1154174
0.4     15      7.551   7.449   0.5034
0.5     4       1.923   2.077   0.48075
0.6     68022   0.685   68021.32        1.007027e-05
0.7     68022   0.311   68021.69        4.57205e-06
0.8     68022   0.195   68021.8 2.866720e-06
0.9     68022   0.119   68021.88        1.749434e-06
1       68022   0.059   68021.94        8.673664e-07
1.1     68022   0.03    68021.97        4.410338e-07
1.2     68022   0.014   68021.99        2.058158e-07



0.2     3738    150.008 3587.992        0.04013055
0.3     1067    26.868  1040.132        0.02518088
0.4     301     6.76    294.24  0.02245847
0.5     74      2.142   71.858  0.02894595
0.6     23      0.829   22.171  0.03604348
0.7     68022   0.425   68021.57        6.247979e-06
0.8     68022   0.218   68021.78        3.204845e-06
0.9     68022   0.108   68021.89        1.587722e-06
1       68022   0.065   68021.93        9.555732e-07
1.1     68022   0.042   68021.96        6.174473e-07
1.2     68022   0.022   68021.98        3.234248e-07











##########################################################################enrichment


 
 setwd ("final")

 load ("attile.nonSFP.exon.RData")

 
 
 #maxClone==0.001, 0.002, 0.003,0.004 and each expressedClones/maxClones
 maxclone <- as.numeric( as.character(attile.nonSFP.exon$maxClone) )
 expressedclone <- as.numeric( as.character(attile.nonSFP.exon$expressedClones) )
 
 predicted.splice <- attile.nonSFP.exon[ (maxclone == 0.002 | maxclone==0.003 | maxclone==0.004) & ( expressedclone/maxclone <1 ), ]
 #predicted.splice <- paste(predicted.splice$gene, predicted.splice$tu)
 pre.splice.gene <- names( table( as.character(predicted.splice$gene) ) )


 predicted.nosplice <- attile.nonSFP.exon[ (maxclone==0.001 | maxclone == 0.002 | maxclone==0.003 | maxclone==0.004) & ( expressedclone/maxclone ==1 ), ]
 #predicted.nosplice <- paste(predicted.nosplice$gene, predicted.nosplice$tu)
 pre.nosplice.gene <- names( table( as.character(predicted.nosplice$gene) ) )

 splice <- attile.nonSFP.exon [ (maxclone != 0.001 & maxclone != 0.002 & maxclone != 0.003 & maxclone != 0.004) & (expressedclone/maxclone <1), ]
 #splice <- paste(splice$gene, splice$tu)
 splice.gene <- names( table( as.character(splice$gene) ) )

 nosplice <- attile.nonSFP.exon[ (maxclone != 0.001 & maxclone != 0.002 & maxclone != 0.003 & maxclone != 0.004) & (expressedclone/maxclone == 1), ]
 #nosplice <- paste(nosplice$gene, nosplice$tu)
 nosplice.gene <- names( table( as.character(nosplice$gene) ) )



 k <- 1
 load ("tindex.main.RData")  
 load ( paste("Main.tindex.perm", k, ".RData", sep="") )  
 
 load ("sindex.RData")
 total.list <- rownames(index); rm(index); gc()
 


 add <- rep( c(1,-1,0, 0), each=4)
 dom <- rep( c(0, 0, 1, 1), each=4)
 mat <- rep( c(0, 0, -1, 1), each=4)

 denom <- c(  sqrt( sum( (add-mean(add) )^2) ),  sqrt( sum( (add-mean(add) )^2) ), sqrt( sum( (dom-mean(dom) )^2) ), sqrt( sum( (mat-mean(mat) )^2) )  )

 s0 <- quantile( texpr.perm[[2]], 0.5); rm(texpr.perm); gc()
 std <- sqrt( colSums( texpr.main[[2]]^2)/12 ) / denom[k+1]
 main <- texpr.main[[1]][k+1,] / (std + s0)
 names (main) <- total.list


 total.gene <- matrix( unlist(strsplit(total.list, " ") ), byrow=T, nc=2)[,1]
 total.gene <- names(table(total.gene) )


 #310	172	482
 #64	50	114




 tu.list <- names( sort(main) ) [1:172]
 tu.list <- c(tu.list, names(sort(main, decreasing=T) )[1:310])
 #tu.list <- names( sort(main) ) [1:50]
 #tu.list <- c(tu.list, names(sort(main, decreasing=T) )[1:64])

 tu.gene <- matrix( unlist(strsplit(tu.list, " ") ), byrow=T, nc=2)[,1]
 tu.gene <- names( table(tu.gene) )



###spliced tu


 tab <- matrix(NA, nr=3, nc=4)
 rownames(tab) <- c("selected", "total", "percentage")
 colnames(tab) <- c("nosplice", "splice", "predicted.nosplice", "predicted.splice")

 tab [1,1] <- length( intersect(tu.list, nosplice ) )
 tab [1,2] <- length( intersect(tu.list, splice) )
 tab [1,3] <- length( intersect(tu.list, predicted.nosplice) )
 tab [1,4] <- length( intersect(tu.list, predicted.splice) )
 tab [2,1] <- length( intersect(total.list, nosplice ) )
 tab [2,2] <- length( intersect(total.list, splice) )
 tab [2,3] <- length( intersect(total.list, predicted.nosplice) )
 tab [2,4] <- length( intersect(total.list, predicted.splice) )
 tab [3,] <- tab[1,]/tab[2,]

 print(tab)

                nosplice       splice predicted.nosplice predicted.splice
selected   4.080000e+02 1.600000e+01       5.800000e+01                0
total      5.554200e+04 1.019000e+03       1.143300e+04               28
percentage 7.345792e-03 1.570167e-02       5.073034e-03                0

               nosplice       splice predicted.nosplice predicted.splice
selected   9.500000e+01 4.000000e+00       1.500000e+01                0
total      5.554200e+04 1.019000e+03       1.143300e+04               28
percentage 1.710417e-03 3.925417e-03       1.311992e-03                0





 tab1 <- matrix( c(tab[1,2], tab[2,2]-tab[1,2], tab[1,1], tab[2,1]-tab[1,1]), byrow=T, nc=2)
 print(tab1)
 cat( "fold enrichment", "\t", (tab1[1,1]/tab1[2,1]) / (tab1[1,2]/tab1[2,2]), "\n", "fisher'test pval", "\t", fisher.test(tab1, "l")$p.value, "\n")




###spliced gene
 

 tab <- matrix(NA, nr=3, nc=4)
 rownames(tab) <- c("selected", "total", "percentage")
 colnames(tab) <- c("nosplice", "splice", "predicted.nosplice", "predicted.splice")

 tab [1,1] <- length( intersect(tu.gene, nosplice.gene ) )
 tab [1,2] <- length( intersect(tu.gene, splice.gene) )
 tab [1,3] <- length( intersect(tu.gene, pre.nosplice.gene) )
 tab [1,4] <- length( intersect(tu.gene, pre.splice.gene) )
 tab [2,1] <- length( intersect(total.gene, nosplice.gene ) )
 tab [2,2] <- length( intersect(total.gene, splice.gene) )
 tab [2,3] <- length( intersect(total.gene, pre.nosplice.gene) )
 tab [2,4] <- length( intersect(total.gene, pre.splice.gene) )
 tab [3,] <- tab[1,]/tab[2,]

 print(tab)
               nosplice       splice predicted.nosplice predicted.splice
selected   3.690000e+02 6.300000e+01       4.600000e+01                0
total      1.246700e+04 1.548000e+03       2.882000e+03               42
percentage 2.959814e-02 4.069767e-02       1.596114e-02                0




 tab1 <- matrix( c(tab[1,2], tab[2,2]-tab[1,2], tab[1,1], tab[2,1]-tab[1,1]), byrow=T, nc=2)
 print(tab1)
 cat( "fold enrichment", "\t", (tab1[1,1]/tab1[2,1]) / (tab1[1,2]/tab1[2,2]), "\n", "fisher'test pval", "\t", fisher.test(tab1, "l")$p.value, "\n")

    [,1]  [,2]
[1,]   63  1485
[2,]  369 12098


fold enrichment          1.390917
 fisher'test pval        0.02336522












##############################################################verification





 setwd ("final")
 exon <- scan("verify.exon.txt", what="a")
 exon <- matrix(exon, byrow=T, nc=2)
 exon <- paste(exon[,1], exon[,2])
 exon.gene <- matrix( unlist(strsplit(exon, " ") ), byrow=T, nc=2)[,1]

 conf <- scan ("confirmed.exon.txt", what="a")



 k <- 1
 load ("tindex.main.RData")  
 load ( paste("Main.tindex.perm", k, ".RData", sep="") )  
 
 add <- rep( c(1,-1,0, 0), each=4)
 dom <- rep( c(0, 0, 1, 1), each=4)
 mat <- rep( c(0, 0, -1, 1), each=4)

 denom <- c(  sqrt( sum( (add-mean(add) )^2) ),  sqrt( sum( (add-mean(add) )^2) ), sqrt( sum( (dom-mean(dom) )^2) ), sqrt( sum( (mat-mean(mat) )^2) )  )


 s0 <- quantile( texpr.perm[[2]], 0.5); rm(texpr.perm); gc()
 std <- sqrt( colSums( texpr.main[[2]]^2)/12 ) / denom[k+1]
 main <- texpr.main[[1]][k+1,] / (std + s0)
 load ("sindex.RData")
 names(main) <- rownames(index); rm(index); gc()


 #310	172	482
 #64	50	114



 #tu.list <- names( sort(main) ) [1:172]
 #tu.list <- c(tu.list, names(sort(main, decreasing=T) )[1:310])
 tu.list <- names( sort(main) ) [1:50]
 tu.list <- c(tu.list, names(sort(main, decreasing=T) )[1:64])

 tu.list.gene <- matrix( unlist(strsplit(tu.list, " ") ), byrow=T, nc=2)[,1]


 test <- exon.gene[ which( exon.gene %in% tu.list.gene) ]
 length(test)

 true <- test[which(test %in% conf) ]
 length(true)
 
 cat(length(test), "\t", length(true), "\t", 100-length(true)/length(test)*100, "\n") 











#############################################################################qq plot


 setwd ("final")

 load ("tindex.main.RData")

 add <- rep( c(1,-1,0, 0), each=4)
 dom <- rep( c(0, 0, 1, 1), each=4)
 mat <- rep( c(0, 0, -1, 1), each=4)
 denom <- c(  sqrt( sum( (add-mean(add) )^2) ),  sqrt( sum( (add-mean(add) )^2) ), sqrt( sum( (dom-mean(dom) )^2) ), sqrt( sum( (mat-mean(mat) )^2) )   ) 



 k <- 1
 load ( paste("Main.tindex.perm", k, ".RData", sep="") )
 s0 <- quantile( texpr.perm [[2]], 0.5)
 perm.mat <- texpr.perm[[1]]/(texpr.perm[[2]]+s0); rm(texpr.perm); gc()
 for (i in 1:ncol(perm.mat) ) perm.mat[,i] <- sort( perm.mat[,i])
 null.add <- rowMeans(perm.mat)

 std <- sqrt( colSums( texpr.main[[2]]^2)/12 ) / denom[k+1]
 main <- texpr.main[[1]][k+1,] / (std + s0)  #dstatistic of probes
 main.add <- sort(main)


 k <- 2
 load ( paste("Main.tindex.perm", k, ".RData", sep="") )
 s0 <- quantile( texpr.perm [[2]], 0.5)
 perm.mat <- texpr.perm[[1]]/(texpr.perm[[2]]+s0); rm(texpr.perm); gc()
 for (i in 1:ncol(perm.mat) ) perm.mat[,i] <- sort( perm.mat[,i])
 null.dom <- rowMeans(perm.mat)

 std <- sqrt( colSums( texpr.main[[2]]^2)/12 ) / denom[k+1]
 main <- texpr.main[[1]][k+1,] / (std + s0)  #dstatistic of probes
 main.dom <- sort(main)


 k <- 3
 load ( paste("Main.tindex.perm", k, ".RData", sep="") )
 s0 <- quantile( texpr.perm [[2]], 0.5)
 perm.mat <- texpr.perm[[1]]/(texpr.perm[[2]]+s0); rm(texpr.perm); gc()
 for (i in 1:ncol(perm.mat) ) perm.mat[,i] <- sort( perm.mat[,i])
 null.mat <- rowMeans(perm.mat)

 std <- sqrt( colSums( texpr.main[[2]]^2)/12 ) / denom[k+1]
 main <- texpr.main[[1]][k+1,] / (std + s0)  #dstatistic of probes
 main.mat <- sort(main)





 bitmap ("tindex.qq.png", width=18, height=6)
  par( mfrow=c(1, 3), mai=c(1, 1, 0.5, 0.5) )

  xlim=c(-4.5, 4.5)
  ylim=c(-10, 10)

  plot(null.add, main.add, "p", pch=16, col="orange", cex=0.8, main="", xlab="null d", ylab="d", cex.lab=3, cex.axis=2, xlim=xlim, ylim=ylim)
  abline(0, 1)
  lines(null.add, null.add+0.3, lty=2)
  lines(null.add, null.add-0.3, lty=2)
  legend("topleft", "additive", bty="n", cex=3)

  plot(null.dom, main.dom, "p", pch=16,  col="orange", cex=0.8, main="", xlab="null d", ylab="d", cex.lab=3, cex.axis=2, xlim=xlim, ylim=ylim)
  lines(null.dom, null.dom+0.3, lty=2)
  lines(null.dom, null.dom-0.3, lty=2)
  abline(0, 1)
  legend("topleft", "dominant", bty="n", cex=3)


  plot(null.mat, main.mat, "p", pch=16,  col="orange", cex=0.8, main="", xlab="null d", ylab="d", cex.lab=3, cex.axis=2, xlim=xlim, ylim=ylim)
  lines(null.mat, null.mat+0.3, lty=2)
  lines(null.mat, null.mat-0.3, lty=2)
  abline(0, 1)
  legend("topleft", "maternal", bty="n", cex=3)

 dev.off()





################################################################exon/intron mean intensity


 setwd("final")
 load ("attile.nonSFP.exon.RData")
 load ("mRNA.sc.nq.RData")

 mRNA.nonSFP.exon <- mRNA.nq[  which( rownames( mRNA.nq) %in% rownames(attile.nonSFP.exon) ),]

 exon <- names(table(paste(attile.nonSFP.exon$gene, attile.nonSFP.exon$tu) ) )
 exon.mean <- matrix(NA, nr=length(exon), nc=4)
 rownames(exon.mean) <- exon

 for (i in 1:length(exon) )
 { 
  probes <- which( paste(attile.nonSFP.exon$gene, attile.nonSFP.exon$tu) == exon [i] )
  mRNA <- matrix( mRNA.nonSFP.exon[ probes, ], nc=16) 
  exon.mean [i,] <-  cbind( mean( mRNA[,1:4]), mean( mRNA[,5:8]), mean( mRNA[,9:12]), mean( mRNA[,13:16]) )  
  if(i/1000==trunc(i/1000)) cat(i, "\n")
 }
 
 save(exon.mean, file="all.exon.mean.RData", compress=T)



 load ("attile.nonSFP.RData")

 attile.nonSFP.intron <- attile.nonSFP[ - which( rownames(attile.nonSFP) %in% rownames(attile.nonSFP.exon) ), ]
 mRNA.nonSFP.intron <- mRNA.nq[ which(rownames(mRNA.nq) %in% rownames(attile.nonSFP.intron) ),]
 
 intron <- names( table( paste(attile.nonSFP.intron$gene, attile.nonSFP.intron$tu) ) )
 intron.mean <- matrix(NA, nr=length(intron), nc=4)
 rownames(intron.mean) <- intron

 for (i in 1:length(intron) )
 { 
  probes <- which( paste(attile.nonSFP.intron$gene, attile.nonSFP.intron$tu) == intron [i] )
  mRNA <- matrix( mRNA.nonSFP.intron [ probes, ], nc=16) 
  intron.mean [i,] <-  cbind( mean( mRNA[,1:4]), mean( mRNA[,5:8]), mean( mRNA[,9:12]), mean( mRNA[,13:16]) )  
  if(i/1000==trunc(i/1000)) cat(i, "\n")
 }
 
 save(intron.mean, file="all.intron.mean.RData", compress=T)


###

 setwd ("final")
 load ("all.exon.mean.RData")
 load ("all.intron.mean.RData")

 pdf ("exon.intron.mean.density.pdf")
   plot( density(exon.mean[,1:2]), col="orange", lwd=2, ylim=c(0, 1.7), main="", xlab="mean of probe log intensity" )
   lines (density(intron.mean[,1:2]), col="blue", lwd=2)
   legend ("topright", c("exon", "intron"), col=c ("orange", "blue"), lwd=2, lty=1, bty="n")
 dev.off()

 q("no")







################################################################### density for corrected exon by mean, by median and splicing index


 setwd ("final")


 pdf ("splicing.density.pdf", width=8, height=8)
 par( mfrow=c(2,2) )


 load ("attile.nonSFP.exon.RData")
 gene.probe <- tapply(attile.nonSFP.exon$bpstart, as.character( attile.nonSFP.exon$gene), length )
 tu.num <- tapply( as.character( attile.nonSFP.exon$tu), as.character( attile.nonSFP.exon$gene), function(x)nlevels( factor(x)) )



 #corrected by gene mean
 load ("tmean.tgr.RData")
 tu.list <- names(tgr)[tgr<=0.25]
 load ("resid.v2.RData")
 probes <- which( paste(attile.nonSFP.exon$gene, attile.nonSFP.exon$tu) %in% tu.list)
 resid <- resid[probes,]
 plot( density( resid), xlab="exon probe intensity corrected by gene mean", main="", lwd=2)



 #corrected by gene median
 load ("mRNA.sc.nq.RData")
 load ("gene.expression.mad.v2.RData")
 mRNA.nonSFP.exon <- mRNA.nq[ which(rownames(mRNA.nq) %in% rownames(attile.nonSFP.exon) ), ]
 tmean <- mRNA.nonSFP.exon[probes,]
 gene <- as.character(attile.nonSFP.exon$gene)[probes]
 gmean <- mad[ match(gene, rownames(mad) ), ]
 med <- tmean -gmean   
 plot( density( med), xlab = "exon probe intensity corrected by gene median", main="", lwd=2)


 #splicing index
 load ("sindex.RData")
 plot( density( index), xlab="exon splicing index", main="", lwd=2)


 #intron
 load ("attile.nonSFP.RData")
 attile.nonSFP.intron <- attile.nonSFP[ - which( rownames(attile.nonSFP) %in% rownames(attile.nonSFP.exon) ), ]
 mRNA.nonSFP.intron <- mRNA.nq[ which(rownames(mRNA.nq) %in% rownames(attile.nonSFP.intron) ),]

 gene.list <- intersect( names(gene.probe) [gene.probe >=3], names(tu.num)[tu.num >=2 ] ) 
 tu.probe <- tapply(attile.nonSFP.intron$bpstart, paste(attile.nonSFP.intron$gene, attile.nonSFP.intron$tu), length) 
 tu.list <- names(tu.probe) [tu.probe >=2 ] 
 tu.matr <- sapply(tu.list, function(x) unlist( strsplit(x, " ") ) )
 tu.matr <- tu.matr[, which(tu.matr[1,] %in% gene.list) ]  
 tu.list <- paste(tu.matr[1,], tu.matr[2,])  # 62859

 probes <- which( paste(attile.nonSFP.intron$gene, attile.nonSFP.intron$tu) %in% tu.list)
 imean <- mRNA.nonSFP.intron[probes,]
 plot( density(imean), xlab="intron probe intensity", main="", lwd=2)



 dev.off()






############################################################################vann diagram


 setwd ("final")

 load ("tmean.tgr.RData")
 qcut <- names(tgr)[ tgr <= 0.25 ]    #exon probes/gene probes ratio


 k <- 1

 load ("tmean.main.v2.RData")  
 load ( paste("Main.tmean.perm.v2.", k, ".RData", sep="") )  
 tu.list <- rownames(texpr.main[[k]])
 tmain <- texpr.main[[k]] [ which( tu.list %in% qcut), ]
 tperm2  <- texpr.perm[[2]] [ which( tu.list %in% qcut), ]
 rm(texpr.perm); gc()
 s0 <- quantile( tperm2, 0.5); rm(tperm2); gc()
 main <- tmain[,1] / (tmain[,2] + s0)
 names (main) <- rownames(tmain)
 #287 190 = 477
 tmean.list <- names( sort(main) ) [1:190]
 tmean.list <- c(tmean.list, names(sort(main, decreasing=T) )[1:287])
 #tmean.gene <- matrix( unlist(strsplit(tmean.list, " ") ), byrow=T, nc=2)[,1]
 #tmean.gene <- names( table(tmean.gene) )

 
 
 load ("tmedian.main.v2.RData")  
 load ( paste("Main.tmedian.perm.v2.", k, ".RData", sep="") )  
 tu.list <- rownames(texpr.main[[k]])
 tmain <- texpr.main[[k]] [ which( tu.list %in% qcut), ]
 tperm2  <- texpr.perm[[2]] [ which( tu.list %in% qcut), ]; rm(texpr.perm); gc()
 s0 <- quantile( tperm2, 0.5)
 main <- tmain[,1] / (tmain[,2] + s0)
 names (main) <- rownames(tmain) 
 #328 172 = 500
 tmedian.list <- names( sort(main) ) [1:172]
 tmedian.list <- c(tmedian.list, names(sort(main, decreasing=T) )[1:328])
 #tmedian.gene <- matrix( unlist(strsplit(tmedian.list, " ") ), byrow=T, nc=2)[,1]
 #tmedian.gene <- names( table(tmedian.gene) )

 
 
 add <- rep( c(1,-1,0, 0), each=4)
 dom <- rep( c(0, 0, 1, 1), each=4)
 mat <- rep( c(0, 0, -1, 1), each=4)
 denom <- c(  sqrt( sum( (add-mean(add) )^2) ),  sqrt( sum( (add-mean(add) )^2) ), sqrt( sum( (dom-mean(dom) )^2) ), sqrt( sum( (mat-mean(mat) )^2) )   ) 
 load ("sindex.RData")
 load ("tindex.main.RData")
 load ( paste("Main.tindex.perm", k, ".RData", sep="") )
 s0 <- quantile( texpr.perm [[2]], 0.5)
 std <- sqrt( colSums( texpr.main[[2]]^2)/12 ) / denom[k+1]
 main <- texpr.main[[1]][k+1,] / (std + s0)  #dstatistic of probes
 names(main) <- rownames(index)
 
 #310	172	482
 tindex.list <- names( sort(main) ) [1:172]
 tindex.list <- c(tindex.list, names(sort(main, decreasing=T) )[1:310])
 #tindex.gene <- matrix( unlist(strsplit(tindex.list, " ") ), byrow=T, nc=2)[,1]
 #tindex.gene <- names( table(tindex.gene) )
 

 vennc <- matrix(0, nr=length(qcut), nc=3)
 rownames(vennc) <- qcut
 colnames(vennc) <- c("mean", "median", "index")
 vennc[ which(rownames(vennc)%in% tmean.list), 1] <- 1
 vennc[ which(rownames(vennc) %in% tmedian.list), 2] <- 1
 vennc[ which(rownames(vennc) %in% tindex.list), 3] <- 1

 library(limma)
 pdf("exon.venn.pdf")
 vennDiagram( vennc, names=c("-gene.mean", "-gene.median", "splicing.index"), cex=0.8)
 dev.off()









#############################################################null d distribution for three approaches
 setwd ("final")


 load ("tmean.tgr.RData")
 tu.list <- names(tgr)  
 qcut <- names(tgr)[ tgr <= 0.25 ]    #exon probes/gene probes ratio #68022 exons in 15349 genes

 
 k <- 1
 load ( paste("Main.tmean.perm.v2.", k, ".RData", sep="") )
 tperm1  <- texpr.perm[[1]] [ which( tu.list %in% qcut), ]
 tperm2  <- texpr.perm[[2]] [ which( tu.list %in% qcut), ]; rm(texpr.perm); gc()
 s0 <- quantile( tperm2, 0.5)
 perm.mat <- tperm1 / (tperm2 +s0); rm(tperm1, tperm2); gc()
 perm.num <- 1000
 for (i in 1:perm.num) perm.mat[,i] <- sort(perm.mat[,i])
 null.add <- rowMeans(perm.mat)
 

 k <- 2
 load ( paste("Main.tmean.perm.v2.", k, ".RData", sep="") )
 tperm1  <- texpr.perm[[1]] [ which( tu.list %in% qcut), ]
 tperm2  <- texpr.perm[[2]] [ which( tu.list %in% qcut), ]; rm(texpr.perm); gc()
 s0 <- quantile( tperm2, 0.5)
 perm.mat <- tperm1 / (tperm2 +s0); rm(tperm1, tperm2); gc()
 perm.num <- 1000
 for (i in 1:perm.num) perm.mat[,i] <- sort(perm.mat[,i])
 null.dom <- rowMeans(perm.mat)
 


 k <- 3
 load ( paste("Main.tmean.perm.v2.", k, ".RData", sep="") )
 tperm1  <- texpr.perm[[1]] [ which( tu.list %in% qcut), ]
 tperm2  <- texpr.perm[[2]] [ which( tu.list %in% qcut), ]; rm(texpr.perm); gc()
 s0 <- quantile( tperm2, 0.5)
 perm.mat <- tperm1 / (tperm2 +s0); rm(tperm1, tperm2); gc()
 perm.num <- 1000
 for (i in 1:perm.num) perm.mat[,i] <- sort(perm.mat[,i])
 null.mat <- rowMeans(perm.mat)



 pdf ("nulldscore.exon.pdf", width=9, height=9)
 par( mfrow=c(2, 2) )
 plot ( density(null.add), col=1, main="", xlab="null d") 
 lines( density(null.dom), col=2)
 lines( density(null.mat), col=3)
 legend("topright", c("additive", "dominant", "maternal"), lty=1, col=c(1:3), bty="n" )
 legend ("topleft", "corretion by gene mean", bty="n")


###

 
 k <- 1
 load ( paste("Main.tmedian.perm.v2.", k, ".RData", sep="") )
 tperm1  <- texpr.perm[[1]] [ which( tu.list %in% qcut), ]
 tperm2  <- texpr.perm[[2]] [ which( tu.list %in% qcut), ]; rm(texpr.perm); gc()
 s0 <- quantile( tperm2, 0.5)
 perm.mat <- tperm1 / (tperm2 +s0); rm(tperm1, tperm2); gc()
 perm.num <- 1000
 for (i in 1:perm.num) perm.mat[,i] <- sort(perm.mat[,i])
 null.add <- rowMeans(perm.mat)
 

 k <- 2
 load ( paste("Main.tmedian.perm.v2.", k, ".RData", sep="") )
 tperm1  <- texpr.perm[[1]] [ which( tu.list %in% qcut), ]
 tperm2  <- texpr.perm[[2]] [ which( tu.list %in% qcut), ]; rm(texpr.perm); gc()
 s0 <- quantile( tperm2, 0.5)
 perm.mat <- tperm1 / (tperm2 +s0); rm(tperm1, tperm2); gc()
 perm.num <- 1000
 for (i in 1:perm.num) perm.mat[,i] <- sort(perm.mat[,i])
 null.dom <- rowMeans(perm.mat)
 


 k <- 3
 load ( paste("Main.tmedian.perm.v2.", k, ".RData", sep="") )
 tperm1  <- texpr.perm[[1]] [ which( tu.list %in% qcut), ]
 tperm2  <- texpr.perm[[2]] [ which( tu.list %in% qcut), ]; rm(texpr.perm); gc()
 s0 <- quantile( tperm2, 0.5)
 perm.mat <- tperm1 / (tperm2 +s0); rm(tperm1, tperm2); gc()
 perm.num <- 1000
 for (i in 1:perm.num) perm.mat[,i] <- sort(perm.mat[,i])
 null.mat <- rowMeans(perm.mat)




 plot ( density(null.add), col=1, main="", xlab="null d") 
 lines( density(null.dom), col=2)
 lines( density(null.mat), col=3)
 legend("topright", c("additive", "dominant", "maternal"), lty=1, col=c(1:3), bty="n" )
 legend ("topleft", "corretion by gene median", bty="n")




###

 

 add <- rep( c(1,-1,0, 0), each=4)
 dom <- rep( c(0, 0, 1, 1), each=4)
 mat <- rep( c(0, 0, -1, 1), each=4)
 denom <- c(  sqrt( sum( (add-mean(add) )^2) ),  sqrt( sum( (add-mean(add) )^2) ), sqrt( sum( (dom-mean(dom) )^2) ), sqrt( sum( (mat-mean(mat) )^2) )   ) 



 k <- 1
 load ( paste("Main.tindex.perm", k, ".RData", sep="") )
 s0 <- quantile( texpr.perm [[2]], 0.5)
 perm.mat <- texpr.perm[[1]]/(texpr.perm[[2]]+s0); rm(texpr.perm); gc()
 for (i in 1:ncol(perm.mat) ) perm.mat[,i] <- sort( perm.mat[,i])
 null.add <- rowMeans(perm.mat)


 k <- 2
 load ( paste("Main.tindex.perm", k, ".RData", sep="") )
 s0 <- quantile( texpr.perm [[2]], 0.5)
 perm.mat <- texpr.perm[[1]]/(texpr.perm[[2]]+s0); rm(texpr.perm); gc()
 for (i in 1:ncol(perm.mat) ) perm.mat[,i] <- sort( perm.mat[,i])
 null.dom <- rowMeans(perm.mat)

 
 k <- 3
 load ( paste("Main.tindex.perm", k, ".RData", sep="") )
 s0 <- quantile( texpr.perm [[2]], 0.5)
 perm.mat <- texpr.perm[[1]]/(texpr.perm[[2]]+s0); rm(texpr.perm); gc()
 for (i in 1:ncol(perm.mat) ) perm.mat[,i] <- sort( perm.mat[,i])
 null.mat <- rowMeans(perm.mat)


 plot ( density(null.add), col=1, main="", xlab="null d", xlim=c(-5, 5), ylim=c(0, 1.2)) 
 lines( density(null.dom), col=2)
 lines( density(null.mat), col=3)
 legend("topright", c("additive", "dominant", "maternal"), lty=1, col=c(1:3), bty="n" )
 legend ("topleft", "splicing index", bty="n")


###


 k <- 1
 load ( paste("Main.iexpr.perm.v2.", k, ".RData", sep="") )
 s0 <- quantile( iexpr.perm [[2]], 0.5)
 perm.mat <- iexpr.perm[[1]]/(iexpr.perm[[2]]+s0); rm(iexpr.perm); gc()
 for (i in 1:ncol(perm.mat) ) perm.mat[,i] <- sort( perm.mat[,i])
 null.add <- rowMeans(perm.mat)


 k <- 2
 load ( paste("Main.iexpr.perm.v2.", k, ".RData", sep="") )
 s0 <- quantile( iexpr.perm [[2]], 0.5)
 perm.mat <- iexpr.perm[[1]]/(iexpr.perm[[2]]+s0); rm(iexpr.perm); gc()
 for (i in 1:ncol(perm.mat) ) perm.mat[,i] <- sort( perm.mat[,i])
 null.dom <- rowMeans(perm.mat)


 k <- 3
 load ( paste("Main.iexpr.perm.v2.", k, ".RData", sep="") )
 s0 <- quantile( iexpr.perm [[2]], 0.5)
 perm.mat <- iexpr.perm[[1]]/(iexpr.perm[[2]]+s0); rm(iexpr.perm); gc()
 for (i in 1:ncol(perm.mat) ) perm.mat[,i] <- sort( perm.mat[,i])
 null.mat <- rowMeans(perm.mat)


 plot ( density(null.add), col=1, main="", xlab="null d") 
 lines( density(null.dom), col=2)
 lines( density(null.mat), col=3)
 legend("topright", c("additive", "dominant", "maternal"), lty=1, col=c(1:3), bty="n" )
 legend ("topleft", "intron", bty="n")


 dev.off()




















