## ----setup, include=FALSE, cache=FALSE---------------------------------------- library(knitr) library(formatR) # set global chunk options options(formatR.arrow=FALSE) opts_chunk$set(fig.path='figure/Rplots-',fig.align='center',fig.show='hold',comment=NA,background='white',highlight=FALSE,tidy=TRUE,size="small",continue=" ") knit_hooks$set(source=function(x,options){ prp <- c("R> ") if(!options$prompt) prp <- "" wd <- getOption("width") if(!is.null(width <- options$tidy.opts$width)) options(width = width) x <- strwrap(x, width = getOption("width")) lenx <- length(x) pl <- unlist(sapply(gregexpr("\\(", x), function(el){ if((length(el) == 1)) if(unique(el) == -1) 0 else 1 else length(el)})) pr <- unlist(sapply(gregexpr("\\)", x), function(el){ if((length(el) == 1)) if(unique(el) == -1) 0 else 1 else length(el)})) wp <- rep(prp, length(x)) if(length(x) > 1){ xns <- gsub(" ","",x) op <- gregexpr("\\+|-|\\*|\\|=",x) ct <- sapply(1:(length(x) - 1), function(i, xns, op) (nchar(x[i]) %in% op[[i]]) | (1 %in% op[[i + 1]]), xns,op) for(i in 2:length(x)){ if((sum(pl[1:(i-1)]) != sum(pr[1:(i-1)])) | ct[i - 1]) wp[i] <- paste(options$continue, " ", sep = "") } } options(width = wd) paste(c("\\begin{Rinput}",paste(wp, x, sep= ""), "\\end{Rinput}",""), collapse = "\n") }, output=function(x,options){ if(all(gregexpr("begin\\{tabu|begin\\{longtab",x)[[1]] > 0)) x else paste(c("\\begin{Routput}\n",x, "\\end{Routput}\n"), sep = "") }) ## ----setup-lib, include=FALSE, cache=FALSE------------------------------------ library(ASMap) ## ----data0, eval = TRUE, echo = TRUE,prompt = TRUE---------------------------- data(mapDHf, package = "ASMap") data(mapDH, package = "ASMap") data(mapBCu, package = "ASMap") ## ----mst-df,eval=FALSE,echo=TRUE,prompt=FALSE--------------------------------- # mstmap.data.frame(object, pop.type = "DH", dist.fun = "kosambi", # objective.fun = "COUNT", p.value = 1e-06, noMap.dist = 15, # noMap.size = 0, miss.thresh = 1, mvest.bc = FALSE, detectBadData = FALSE, # as.cross = TRUE, return.imputed = TRUE, trace = FALSE, ...) ## ----datadf,eval=TRUE,echo=TRUE,prompt=TRUE----------------------------------- testd <- mstmap(mapDHf, dist.fun = "kosambi", trace = TRUE, as.cross = TRUE) nmar(testd) chrlen(testd) ## ----mst-cr,eval = FALSE,echo=TRUE-------------------------------------------- # mstmap.cross(object, chr, id = "Genotype", bychr = TRUE, # suffix = "numeric", anchor = FALSE, dist.fun = "kosambi", # objective.fun = "COUNT", p.value = 1e-06, noMap.dist = 15, # noMap.size = 0, miss.thresh = 1, mvest.bc = FALSE, detectBadData = # FALSE, return.imputed = FALSE, trace = FALSE, ...) ## ----data, eval = TRUE, echo = TRUE, prompt = TRUE---------------------------- nmar(mapDH) pull.map(mapDH)[[4]] ## ----mst1,eval=TRUE,echo=TRUE,prompt=TRUE------------------------------------- mapDHa <- mstmap(mapDH, bychr = FALSE, dist.fun = "kosambi", trace = TRUE) nmar(mapDHa) pull.map(mapDHa)[[4]] ## ----mst2,eval=TRUE,echo=TRUE,prompt=TRUE------------------------------------- mapDHb <- mstmap(mapDH, bychr = TRUE, dist.fun = "kosambi", anchor = TRUE, trace = TRUE) nmar(mapDHb) ## ----mst3,eval=TRUE,echo=TRUE,prompt=TRUE------------------------------------- mapDHc <- mstmap(mapDH, bychr = TRUE, dist.fun = "kosambi", anchor = TRUE, trace = TRUE, p.value = 1e-04) nmar(mapDHc) ## ----mst4,eval=TRUE,echo=TRUE,prompt=TRUE------------------------------------- mapDHd <- mstmap(mapDH, chr = names(mapDH$geno)[1:3], bychr = FALSE, dist.fun = "kosambi", trace = TRUE, p.value = 1e-04) nmar(mapDHd) ## ----pp1,eval=FALSE,echo=TRUE------------------------------------------------- # pullCross(object, chr, type = c("co.located","seg.distortion","missing"), # pars = NULL, replace = FALSE, ...) # pushCross(object, chr, type = c("co.located","seg.distortion","missing","unlinked"), # unlinked.chr = NULL, pars = NULL, replace = FALSE, ...) # pp.init(seg.thresh = 0.05, seg.ratio = NULL, miss.thresh = 0.1, max.rf = # 0.25, min.lod = 3) ## ----pp2,eval=TRUE,echo=TRUE,prompt=TRUE-------------------------------------- mapDHs <- pullCross(mapDH, type = "co.located") mapDHs <- pullCross(mapDHs, type = "seg.distortion", pars = list(seg.thresh = 0.02)) mapDHs <- pullCross(mapDHs, type = "missing", pars = list(miss.thresh = 0.03)) names(mapDHs) names(mapDHs$co.located) ## ----pp3,eval=TRUE,echo=TRUE,prompt=TRUE-------------------------------------- mapDHs$seg.distortion$table ## ----pp4,eval=TRUE,echo=TRUE,prompt=TRUE-------------------------------------- head(mapDHs$co.located$table) ## ----pp5,eval=TRUE,echo=TRUE,prompt=TRUE-------------------------------------- mapDHs <- mstmap(mapDHs, bychr = FALSE, dist.fun = "kosambi", trace = TRUE, anchor = TRUE) nmar(mapDHs) ## ----pp6,eval=TRUE,echo=TRUE,prompt=TRUE-------------------------------------- mapDHs <- pushCross(mapDHs, type = "co.located") mapDHs <- pushCross(mapDHs, type = "seg.distortion", pars = list(seg.thresh = 0.001)) mapDHs <- pushCross(mapDHs, type = "missing", pars = list(miss.thresh = 0.05)) names(mapDHs) ## ----pp7,eval=TRUE,echo=TRUE,prompt=TRUE-------------------------------------- pull.map(mapDHs)[[4]] pull.map(mapDHs)[[21]] ## ----pp8,eval=TRUE,echo=TRUE,prompt=TRUE-------------------------------------- mapDHs <- mstmap(mapDHs, bychr = TRUE, dist.fun = "kosambi", trace = TRUE, anchor = TRUE, p.value = 2) ## ----heat1,eval=FALSE,echo=TRUE----------------------------------------------- # heatMap(x, chr, mark, what = c("both", "lod", "rf"), lmax = 12, # rmin = 0, markDiagonal = FALSE, color = rev(rainbow(256, start = # 0, end = 2/3)), ...) ## ----heat2,echo=TRUE,eval=FALSE,prompt=TRUE----------------------------------- # heatMap(mapDH, lmax = 50) ## ----prof1, eval = FALSE------------------------------------------------------ # statGen(cross, chr, bychr = TRUE, stat.type = c("xo", "dxo", "miss"), id = "Genotype") # profileGen(cross, chr, bychr = TRUE, stat.type = c("xo", "dxo", "miss"), id = "Genotype", xo.lambda = NULL, ...) # statMark(cross, chr, stat.type = c("marker", "interval"), map.function = "kosambi") # profileMark(cross, chr, stat.type = "marker", use.dist = TRUE, map.function = "kosambi", crit.val = NULL, display.markers = FALSE, mark.line = FALSE, ...) ## ----prof2,fig.width = 15,fig.height = 8,fig.pos = "t",fig.env="figure",fig.scap="NA",fig.cap = "Genotype profiles of missing values, double recombinations and recombinations for \\texttt{mapDH}.",prompt=TRUE---- profileGen(mapDH, bychr = FALSE, stat.type = c("xo", "dxo", "miss"), id = "Genotype", xo.lambda = 25, layout = c(1,3), lty = 2) ## ----prof3,fig.width = 15,fig.height = 8,fig.pos = "t",fig.env="figure",fig.scap="NA",fig.cap = "Marker and interval profiles of segregation distortion, double crossovers, estimated recombination fractions and LOD scores for \\texttt{mapDH}.",prompt=TRUE, warning = FALSE---- profileMark(mapDH, stat.type = c("seg.dist", "dxo", "erf", "lod"), id = "Genotype", layout = c(1,4), type = "l") ## ----clones01,eval=FALSE,echo=TRUE,prompt=TRUE-------------------------------- # genClones(object, chr, tol = 0.9, id = "Genotype") # fixClones(object, gc, id = "Genotype", consensus = TRUE) ## ----clones02,eval=TRUE,echo=TRUE,prompt=TRUE--------------------------------- gc <- genClones(mapDH, tol = 0.9) gc$cgd ## ----clones03,eval=TRUE,echo=TRUE,prompt=TRUE--------------------------------- mapDHg <- fixClones(mapDH, gc$cgd, consensus = TRUE) levels(mapDHg$pheno[[1]])[grep("_", levels(mapDHg$pheno[[1]]))] ## ----mb1, eval = FALSE-------------------------------------------------------- # breakCross(cross, split = NULL, suffix = "numeric", sep = ".") # mergeCross(cross, merge = NULL, gap = 5) ## ----mb2, eval = TRUE,prompt=TRUE--------------------------------------------- mapDHb1 <- breakCross(mapDH, split = list("3B" = "3B.m.7","6A" = "6A.m.15")) nmar(mapDHb1) ## ----mb3, eval = TRUE,prompt=TRUE--------------------------------------------- mapDHb2 <- breakCross(mapDH, split = list("3B" = "3B.m.7"), suffix = list("3B" = c("3B1","3B2"))) nmar(mapDHb2) ## ----mb4,eval=TRUE,prompt=TRUE------------------------------------------------ mapDHm <- mergeCross(mapDHb1, merge = list("3B" = c("3B.1","3B.2"),"6A" = c("6A.1","6A.2"))) nmar(mapDHm) ## ----quick1,eval=FALSE-------------------------------------------------------- # quickEst(object, chr, map.function = "kosambi", ...) ## ----quick2,fig.width = 7,fig.height = 5,fig.pos = "t",fig.env="figure",fig.scap="NA",fig.cap = "Comparison of \\texttt{mapDH} using \\texttt{est.map} and \\texttt{quickEst}.",prompt=TRUE---- map1 <- est.map(mapDH, map.function = "kosambi") map1 <- subset(map1, chr = names(nmar(map1))[6:15]) map2 <- quickEst(mapDH, map.function = "kosambi") map2 <- subset(map2, chr = names(nmar(map2))[6:15]) plot.map(map1, map2) ## ----sc,eval=TRUE,prompt=TRUE------------------------------------------------- mapDH.s <- pullCross(mapDH, type = "seg.distortion") mapDH.s <- subsetCross(mapDH.s, ind = 3:218) dim(mapDH.s$seg.distortion$data)[1] ## ----comb1, eval = FALSE------------------------------------------------------ # combineMap(..., id = "Genotype", keep.all = TRUE) ## ----comb2,eval=TRUE,prompt=TRUE---------------------------------------------- mapDH1 <- mapDH names(mapDH1$geno)[5:14] <- paste("L",1:10, sep = "") mapDH1$geno <- lapply(mapDH1$geno, function(el){ names(el$map) <- dimnames(el$data)[[2]] <- paste(names(el$map), "A", sep = "") el}) mapDHc <- combineMap(mapDH, mapDH1) nmar(mapDHc) ## ----ex1, eval = FALSE-------------------------------------------------------- # data(mapBCu, package = "ASMap") ## ----ex3,eval=FALSE,echo=TRUE,prompt=TRUE------------------------------------- # plot.missing(mapBCu) ## ----ex4,echo=TRUE,prompt=TRUE------------------------------------------------ sg <- statGen(mapBCu, bychr = FALSE, stat.type = "miss") mapBC1 <- subset(mapBCu, ind = sg$miss < 1600) ## ----ex5,eval=TRUE,echo=TRUE,prompt=TRUE-------------------------------------- gc <- genClones(mapBC1, tol = 0.95) gc$cgd ## ----ex6,eval=TRUE,echo=TRUE,prompt=TRUE-------------------------------------- cgd <- gc$cgd[-c(1,4,5),] mapBC2 <- fixClones(mapBC1, cgd, consensus = TRUE) levels(mapBC2$pheno[[1]])[grep("_", levels(mapBC2$pheno[[1]]))] ## ----ex7,eval=FALSE,echo=TRUE,prompt=TRUE------------------------------------- # profileMark(mapBC2, stat.type = c("seg.dist", "prop", "miss"), crit.val = "bonf", layout = c(1,4), type = "l", cex = 0.5) ## ----ex8,echo=FALSE,fig.width=17,fig.height=10,warning=FALSE------------------ profileMark(mapBC2, stat.type = c("seg.dist", "prop", "miss"), crit.val = "bonf", layout = c(1,4), type = "l", cex = 0.5) ## ----ex9,eval=TRUE,echo=TRUE,prompt=TRUE-------------------------------------- mm <- statMark(mapBC2, stat.type = "marker")$marker$AB mapBC3 <- drop.markers(mapBC2, c(markernames(mapBC2)[mm > 0.98],markernames(mapBC2)[mm < 0.2])) ## ----ex10,eval=TRUE,echo=TRUE,prompt=TRUE------------------------------------- mapBC3 <- pullCross(mapBC3, type = "missing", pars = list(miss.thresh = 0.1)) mapBC3 <- pullCross(mapBC3, type = "seg.distortion", pars = list(seg.thresh = "bonf")) mapBC3 <- pullCross(mapBC3, type = "co.located") names(mapBC3) sum(ncol(mapBC3$missing$data),ncol(mapBC3$seg.dist$data),ncol(mapBC3$co.located$data)) ## ----ex11,eval=TRUE,echo=TRUE,prompt=TRUE,cache=TRUE-------------------------- mapBC4 <- mstmap(mapBC3, bychr = FALSE, trace = TRUE, dist.fun = "kosambi", p.value = 1e-12) chrlen(mapBC4) ## ----ex12,eval=FALSE,echo=TRUE,prompt=TRUE------------------------------------ # heatMap(mapBC4, lmax = 70) ## ----ex14,eval=FALSE,echo=TRUE,prompt=TRUE------------------------------------ # pg <- profileGen(mapBC4, bychr = FALSE, stat.type = c("xo","dxo","miss"), id = "Genotype", xo.lambda = 14, layout = c(1,3), lty = 2, cex = 0.7) ## ----ex15,echo=FALSE,fig.width=17,fig.height=10,warning=FALSE----------------- pg <- profileGen(mapBC4, bychr = FALSE, stat.type = c("xo","dxo","miss"), id = "Genotype", xo.lambda = 14, layout = c(1,3), lty = 2, cex = 0.7) ## ----ex16,eval=TRUE,echo=TRUE,cache = TRUE,prompt=TRUE------------------------ mapBC5 <- subsetCross(mapBC4, ind = !pg$xo.lambda) mapBC6 <- mstmap(mapBC5, bychr = TRUE, dist.fun = "kosambi", trace = TRUE, p.value = 1e-12) chrlen(mapBC6) ## ----ex17,eval=FALSE,echo=TRUE,prompt=TRUE------------------------------------ # profileMark(mapBC6, stat.type = c("seg.dist","prop","dxo","recomb"), layout = c(1,5), type = "l") ## ----ex18,echo=FALSE,fig.width=17,fig.height=12,warning=FALSE----------------- profileMark(mapBC6, stat.type = c("seg.dist","prop","dxo","recomb"), layout = c(1,5), type = "l") ## ----ex19,eval=TRUE,echo=TRUE,prompt=TRUE------------------------------------- mapBC6 <- pushCross(mapBC6, type = "missing", pars = list(miss.thresh = 0.22, max.rf = 0.3)) ## ----ex20,eval=FALSE,echo=TRUE,prompt=TRUE------------------------------------ # heatMap(mapBC6, chr = c("L.3","L.5","L.8","L.9"), lmax = 70) ## ----ex21,echo=FALSE,fig.width=14,fig.height=8,warning=FALSE,cache=TRUE------- heatMap(mapBC6, chr = c("L.3","L.5","L.8","L.9"), lmax = 70) ## ----ex22,eval=TRUE,echo=TRUE,prompt=TRUE,cache=TRUE-------------------------- mapBC6 <- mergeCross(mapBC6, merge = list("L.3" = c("L.3","L.5"), "L.8" = c("L.8","L.9"))) names(mapBC6$geno) <- paste("L.", 1:7, sep = "") mapBC7 <- mstmap(mapBC6, bychr = TRUE, trace = TRUE, dist.fun = "kosambi", p.value = 2) chrlen(mapBC7) ## ----ex23,eval=FALSE,echo=TRUE,prompt=TRUE------------------------------------ # pg1 <- profileGen(mapBC7, bychr = FALSE, stat.type = c("xo","dxo","miss"), id = "Genotype", xo.lambda = 14, layout = c(1,3), lty = 2, cex = 0.7) ## ----ex24,echo=FALSE,fig.width=17,fig.height=10,warning=FALSE----------------- pg1 <- profileGen(mapBC7, bychr = FALSE, stat.type = c("xo","dxo","miss"), id = "Genotype", xo.lambda = 14, layout = c(1,3), lty = 2, cex = 0.7) ## ----ex25,eval=TRUE,echo=TRUE,cache = TRUE,prompt=TRUE------------------------ mapBC8 <- subsetCross(mapBC7, ind = !pg1$xo.lambda) mapBC9 <- mstmap(mapBC8, bychr = TRUE, dist.fun = "kosambi", trace = TRUE, p.value = 2) chrlen(mapBC9) ## ----ex26,eval=FALSE,echo=TRUE,prompt=TRUE------------------------------------ # profileMark(mapBC9, stat.type = c("seg.dist","prop","dxo","recomb"), layout = c(1,5), type = "l") ## ----ex27,echo=FALSE,fig.width=17,fig.height=10,warning=FALSE----------------- profileMark(mapBC9, stat.type = c("seg.dist","prop"), layout = c(1,3), type = "l") ## ----ex28,eval=TRUE,echo=TRUE,prompt=TRUE------------------------------------- dm <- markernames(mapBC9, "L.2")[statMark(mapBC9, chr = "L.2", stat.type = "marker")$marker$neglog10P > 6] mapBC10 <- drop.markers(mapBC9, dm) mapBC11 <- pushCross(mapBC10, type = "seg.distortion", pars = list(seg.ratio = "70:30")) mapBC12 <- mstmap(mapBC11, bychr = TRUE, trace = TRUE, dist.fun = "kosambi", p.value = 2) round(chrlen(mapBC12) - chrlen(mapBC9), 5) nmar(mapBC12) - nmar(mapBC10) ## ----ex29,eval=TRUE,echo=TRUE,prompt=TRUE------------------------------------- mapBC <- pushCross(mapBC12, type = "co.located") names(mapBC) ## ----add1,eval=TRUE,echo=TRUE,prompt=TRUE------------------------------------- set.seed(123) add1 <- drop.markers(mapBC, markernames(mapBC)[sample(1:3019, 2700, replace = FALSE)]) mapBCs <- drop.markers(mapBC, markernames(add1)) add3 <- add2 <- add1 add2 <- subset(add2, chr = "L.1") add3$geno[[1]]$data <- pull.geno(add1) add3$geno[[1]]$map <- 1:ncol(add3$geno[[1]]$data) names(add3$geno[[1]]$map) <- markernames(add1) names(add3$geno)[1] <- "ALL" add3 <- subset(add3, chr = "ALL") ## ----add2,eval=TRUE,echo=TRUE,prompt=TRUE,cache=TRUE-------------------------- add1 <- subset(add1, ind = 2:300) full1 <- combineMap(mapBCs, add1, keep.all = TRUE) full1 <- mstmap(full1, bychr = TRUE, trace = TRUE, anchor = TRUE, p.value = 2) ## ----add3,eval=TRUE,echo=TRUE,prompt=TRUE,cache=TRUE-------------------------- add2 <- subset(add2, ind = 2:300) full2 <- combineMap(mapBCs, add2, keep.all = TRUE) full2 <- mstmap(full2, chr = "L.1", bychr = TRUE, trace = TRUE, anchor = TRUE, p.value = 2) ## ----add4,eval=TRUE,echo=TRUE,prompt=TRUE,cache=TRUE-------------------------- add3 <- subset(add3, ind = 2:300) full3 <- combineMap(mapBCs, add3, keep.all = TRUE) full3 <- pushCross(full3, type = "unlinked", unlinked.chr = "ALL") full3 <- mstmap(full3, bychr = TRUE, trace = TRUE, anchor = TRUE, p.value = 2) ## ----dist1,eval=FALSE,echo=TRUE,prompt=TRUE----------------------------------- # plot.missing(mapBC4) ## ----dist3,eval=TRUE,echo=TRUE,prompt=TRUE,cache=TRUE------------------------- mapBC4i <- mstmap(mapBC3, bychr = FALSE, trace = TRUE, dist.fun = "kosambi", p.value = 1e-12, return.imputed = TRUE) mapBC4i$geno[[1]]$map[1:14] mapBC4i$imputed.geno[[1]]$map[1:5] ## ----dist4,echo = TRUE,prompt=TRUE-------------------------------------------- len <- apply(mapBC4$geno[[1]]$data[,c(1,5)], 1, function(el) length(el[!is.na(el)])) length(len[len > 1]) bca <- apply(mapBC4i$geno[[1]]$data[,c(1,5)], 1, function(el){ el <- el[!is.na(el)] sum(abs(diff(el)))}) bca[bca > 0] ## ----dist5,echo=TRUE,prompt=TRUE---------------------------------------------- mapBC4i$imputed.geno[[1]]$data[pg$xo.lambda,1:5] ## ----dist6,echo=TRUE,prompt=TRUE---------------------------------------------- mapBC4e <- quickEst(mapBC4) chrlen(mapBC4) chrlen(mapBC4e) ## ----mvest1,eval=TRUE,echo=TRUE,prompt=TRUE,cache=TRUE------------------------ mapBC4a <- mstmap(mapBC3, bychr = FALSE, trace = TRUE, dist.fun = "kosambi", p.value = 1e-12, mvest.bc = TRUE) nmar(mapBC4) ## ----mvest2,eval=TRUE,echo=TRUE,prompt=TRUE----------------------------------- sapply(mapBC4a$geno, function(el) length(unique(round(el$map, 4)))) - sapply(mapBC4$geno, function(el) length(unique(round(el$map, 4)))) chrlen(mapBC4a) ## ----mvest3,eval=TRUE,echo=TRUE,prompt=TRUE----------------------------------- mapBC4b <- quickEst(mapBC4a) chrlen(mapBC4b) ## ----dbd1,eval=TRUE,echo=TRUE,prompt=TRUE------------------------------------- mapBCd <- mapBC mapBCd$geno <- lapply(mapBCd$geno, function(el){ ns <- sample(1:ncol(el$data), ncol(el$data)/2, replace = TRUE) ns <- cbind(sample(1:nrow(el$data), ncol(el$data)/2, replace = TRUE), ns) el$data[ns] <- abs(1 - el$data[ns]) el$data[el$data == 0] <- 2 el}) mapBCd <- quickEst(mapBCd) chrlen(mapBCd) ## ----dbd2,eval=TRUE,echo=TRUE,prompt=TRUE,cache=TRUE-------------------------- mapBCda <- mstmap(mapBCd, bychr = TRUE, trace = TRUE, dist.fun = "kosambi", p.value = 1e-12, detectBadData = TRUE) chrlen(mapBCda)