git-svn-id: file:///home/git/hedgehog.fhcrc.org/bioconductor/trunk/madman/Rpacks/crlmm@38549 bc3139a8-67e5-0310-9ffc-ced21a209358
... | ... |
@@ -115,3 +115,9 @@ is decoded and scanned |
115 | 115 |
* Added documentation for snprma. |
116 | 116 |
|
117 | 117 |
* Removed 'svn:executable' property of readIdatFiles.Rd |
118 |
+ |
|
119 |
+2009-04-07 Rob Scharpf - committed versioni 1.0.75 |
|
120 |
+ |
|
121 |
+* modifications to chromosome X copy number estimation |
|
122 |
+ |
|
123 |
+ |
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
Package: crlmm |
2 | 2 |
Type: Package |
3 | 3 |
Title: Genotype Calling (CRLMM) and Copy Number Analysis tool for SNP 5.0 and 6.0 arrays. |
4 |
-Version: 1.0.74 |
|
4 |
+Version: 1.0.75 |
|
5 | 5 |
Date: 2008-12-30 |
6 | 6 |
Author: Rafael A Irizarry, Benilton S Carvalho <bcarvalh@jhsph.edu>, Robert Scharpf <rscharpf@jhsph.edu>, Matt Ritchie <mritchie@wehi.EDU.AU> |
7 | 7 |
Maintainer: Benilton S Carvalho <bcarvalh@jhsph.edu>, Robert Scharpf <rscharpf@jhsph.edu>, Matt Ritchie <mritchie@wehi.EDU.AU> |
... | ... |
@@ -48,9 +48,14 @@ nuphiAllele <- function(p, allele, Ystar, W, envir){ |
48 | 48 |
NOHET <- mean(Ns[, p, "AB"], na.rm=TRUE) < 0.05 |
49 | 49 |
if(missing(allele)) stop("must specify allele") |
50 | 50 |
if(CHR == 23){ |
51 |
- gender <- envir[["gender"]] |
|
52 |
- if(allele == "A") X <- cbind(1, c(1, 0, 2, 1, 0), c(0, 1, 0, 1, 2)) |
|
53 |
- if(allele == "B") X <- cbind(1, c(0, 1, 0, 1, 2), c(1, 0, 2, 1, 0)) |
|
51 |
+ ##Design matrix for X chromosome depends on whether there was a sufficient number of AB genotypes |
|
52 |
+ if(length(grep("AB", colnames(W))) > 0){ |
|
53 |
+ if(allele == "A") X <- cbind(1, c(1, 0, 2, 1, 0), c(0, 1, 0, 1, 2)) |
|
54 |
+ if(allele == "B") X <- cbind(1, c(0, 1, 0, 1, 2), c(1, 0, 2, 1, 0)) |
|
55 |
+ } else{ |
|
56 |
+ if(allele == "A") X <- cbind(1, c(1, 0, 2, 0), c(0, 1, 0, 2)) |
|
57 |
+ if(allele == "B") X <- cbind(1, c(0, 1, 0, 2), c(1, 0, 2, 0)) |
|
58 |
+ } |
|
54 | 59 |
} else {##autosome |
55 | 60 |
if(allele == "A") X <- cbind(1, 2:0) else X <- cbind(1, 0:2) |
56 | 61 |
if(NOHET) X <- X[-2, ] ##more than 1 X chromosome, but all homozygous |
... | ... |
@@ -63,6 +68,7 @@ nuphiAllele <- function(p, allele, Ystar, W, envir){ |
63 | 68 |
##How to quickly generate Xstar, Xstar = diag(W) %*% X |
64 | 69 |
Xstar <- apply(W, 1, generateX, X) |
65 | 70 |
IXTX <- apply(Xstar, 2, generateIXTX, nrow=nrow(X)) |
71 |
+ ##as.numeric(diag(W[1, ]) %*% X) |
|
66 | 72 |
if(CHR == 23){ |
67 | 73 |
betahat <- matrix(NA, 3, nrow(Ystar)) |
68 | 74 |
ses <- matrix(NA, 3, nrow(Ystar)) |
... | ... |
@@ -457,10 +463,11 @@ nonpolymorphic <- function(plateIndex, NP, envir, CONF.THR=0.99, DF.PRIOR=50, pk |
457 | 463 |
##calculate R2 |
458 | 464 |
if(CHR == 23){ |
459 | 465 |
cnvs <- envir[["cnvs"]] |
460 |
- loader("cnProbes", pkgname, .crlmmPkgEnv) |
|
466 |
+ loader("cnProbes.rda", pkgname=pkgname, envir=.crlmmPkgEnv) |
|
461 | 467 |
cnProbes <- get("cnProbes", envir=.crlmmPkgEnv) |
462 | 468 |
## data(cnProbes, package="genomewidesnp6Crlmm") |
463 | 469 |
cnProbes <- cnProbes[match(cnvs, rownames(cnProbes)), ] |
470 |
+ ##par:pseudo-autosomal regions |
|
464 | 471 |
par <- cnProbes[, "position"] < 2709520 | (cnProbes[, "position"] > 154584237 & cnProbes[, "position"] < 154913754) |
465 | 472 |
gender <- envir[["gender"]] |
466 | 473 |
mu1 <- rowMedians(NP[, gender=="male"], na.rm=TRUE) |
... | ... |
@@ -547,7 +554,6 @@ withinGenotypeMoments <- function(p, A, B, calls, conf, CONF.THR, DF.PRIOR, envi |
547 | 554 |
GT.A[[j]] <- GT*A |
548 | 555 |
GT.B[[j]] <- GT*B |
549 | 556 |
index[[j]] <- which(Ns[, p, j+2] > 0) |
550 |
- |
|
551 | 557 |
muA[, p, j+2] <- rowMedians(GT.A[[j]], na.rm=TRUE) |
552 | 558 |
muB[, p, j+2] <- rowMedians(GT.B[[j]], na.rm=TRUE) |
553 | 559 |
vA[, p, j+2] <- rowMAD(GT.A[[j]], na.rm=TRUE) |
... | ... |
@@ -558,6 +564,8 @@ withinGenotypeMoments <- function(p, A, B, calls, conf, CONF.THR, DF.PRIOR, envi |
558 | 564 |
DF[DF < 1] <- 1 |
559 | 565 |
v0A <- median(vA[, p, j+2], na.rm=TRUE) |
560 | 566 |
v0B <- median(vB[, p, j+2], na.rm=TRUE) |
567 |
+ if(v0A == 0) v0A <- NA |
|
568 |
+ if(v0B == 0) v0B <- NA |
|
561 | 569 |
vA[, p, j+2] <- (vA[, p, j+2]*DF + v0A*DF.PRIOR)/(DF.PRIOR+DF) |
562 | 570 |
vA[is.na(vA[, p, j+2]), p, j+2] <- v0A |
563 | 571 |
vB[, p, j+2] <- (vB[, p, j+2]*DF + v0B*DF.PRIOR)/(DF.PRIOR+DF) |
... | ... |
@@ -844,25 +852,34 @@ coefs <- function(plateIndex, conf, MIN.OBS=3, envir, CONF.THR=0.99){ |
844 | 852 |
vB <- vB[, p, 3:5] |
845 | 853 |
Np <- Ns[, p, 3:5] |
846 | 854 |
} else { |
847 |
- IA <- muA[, p, ] |
|
848 |
- IB <- muB[, p, ] |
|
849 |
- vA <- vA[, p, ] |
|
850 |
- vB <- vB[, p, ] |
|
851 |
- Np <- Ns[, p, ] |
|
855 |
+ NOHET <- is.na(median(vA[, p, "AB"], na.rm=TRUE)) |
|
856 |
+ if(NOHET){ |
|
857 |
+ IA <- muA[, p, -4] |
|
858 |
+ IB <- muB[, p, -4] |
|
859 |
+ vA <- vA[, p, -4] |
|
860 |
+ vB <- vB[, p, -4] |
|
861 |
+ Np <- Ns[, p, -4] |
|
862 |
+ } else{ |
|
863 |
+ IA <- muA[, p, ] |
|
864 |
+ IB <- muB[, p, ] |
|
865 |
+ vA <- vA[, p, ] |
|
866 |
+ vB <- vB[, p, ] |
|
867 |
+ Np <- Ns[, p, ] |
|
868 |
+ } |
|
852 | 869 |
} |
853 |
- NOHET <- mean(Ns[, p, "AB"], na.rm=TRUE) < 0.05 |
|
854 | 870 |
##--------------------------------------------------------------------------- |
855 | 871 |
## Estimate nu and phi |
856 | 872 |
##--------------------------------------------------------------------------- |
857 |
- if(NOHET){ |
|
858 |
- ##only homozygous |
|
859 |
- Np <- Np[, -2] |
|
860 |
- Np[Np < 1] <- 1 |
|
861 |
- IA <- IA[, c(1, 3)] |
|
862 |
- IB <- IB[, c(1, 3)] |
|
863 |
- vA <- vA[, c(3,5)] |
|
864 |
- vB <- vB[, c(3,5)] |
|
865 |
- }else Np[Np < 1] <- 1 |
|
873 |
+## if(NOHET){ |
|
874 |
+## ##only homozygous |
|
875 |
+## Np <- Np[, -2] |
|
876 |
+## Np[Np < 1] <- 1 |
|
877 |
+## IA <- IA[, c(1, 3)] |
|
878 |
+## IB <- IB[, c(1, 3)] |
|
879 |
+## vA <- vA[, c(3,5)] |
|
880 |
+## vB <- vB[, c(3,5)] |
|
881 |
+## }else Np[Np < 1] <- 1 |
|
882 |
+ Np[Np < 1] <- 1 |
|
866 | 883 |
vA2 <- vA^2/Np |
867 | 884 |
vB2 <- vB^2/Np |
868 | 885 |
wA <- sqrt(1/vA2) |