diff --git a/.Rhistory b/.Rhistory new file mode 100644 index 0000000..b64f754 --- /dev/null +++ b/.Rhistory @@ -0,0 +1,512 @@ +temp +as.data.frame(temp) +gwas_df <- as.data.frame(temp) +sum(gwas_df$is_query_snp) +colnames(gwas_df) +head(gwas_df$GENCODE_name) +head(gwas_df$eQTL) +colnames(gwas_df) +keep_columns <- c("chr","pos_hg38","r2","D'","is_query_snp","rsID","ref","alt","AFR","AMR","ASN","EUR","GERP_cons", +"SiPhy_cons","GENCODE_id","GENCODE_name","GENCODE_direction","GENCODE_distance","RefSeq_id", +"RefSeq_name","RefSeq_direction","RefSeq_distance","query_snp_rsid") +gwas_df <- gwas_df[,keep_columns] +gwas_df +tf_gr <- readRDS("K:/Shared drives/Brain_Merged/Analysis/GTEx/190829_TF_PromoterRegions.rds") +tf_gr +ArchRx::countInsertions +?edgeR::cpm +se <- readRDS("K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/Cluster_Analyses/clusterFrags/ClusterGroups/190830_CellTypes_TF-Promoters_ArchRSE.rds") +se +norm_counts <- as.data.frame(assays(se)$log2norm) +head(norm_counts) +write.table(x = norm_counts, file = "190830_TF-Promoters_NormAccessibility.txt", col.names = NA, quote = FALSE, sep = "\t") +getwd() +library(GenomicRanges) +library(ArchRx) +snp_df <- read.table(file = snp_file, header = TRUE, sep = "\t", stringsAsFactors = FALSE) +snp_file <- "K:/Shared drives/Brain_Merged/Analysis/GWAS/ld_buddies_table_stage2.tsv" +snp_df <- read.table(file = snp_file, header = TRUE, sep = "\t", stringsAsFactors = FALSE) +head(snp_df) +snp_gr <- makeGRangesFromDataFrame(df = snp_df, +keep.extra.columns = TRUE, +ignore.strand = TRUE, +seqnames.field = "chr", +start.field = "pos", +end.field = "pos", +starts.in.df.are.0based = FALSE) +unique(snp_df$source_gwas) +snp_df <- read.table(file = snp_file, header = TRUE, sep = "\t", stringsAsFactors = FALSE) +snp_df$disease <- NA +snp_df$disease[which(snp_df$source_gwas == "23andme_PD_hg38.with.ld.buddies.txt")] <- "PD" +snp_df$disease[which(snp_df$source_gwas == "Chang_23andMe_Parkinsons_LeadSNPs.with.ld.buddies.txt")] <- "PD" +snp_df$disease[which(snp_df$source_gwas == "Nalls_23andMe_LeadSNPs.with.ld.buddies.txt")] <- "PD" +snp_df$disease[which(snp_df$source_gwas == "Parkinsons_Pankratz_2012.with.ld.buddies.txt")] <- "PD" +snp_df$disease[which(snp_df$source_gwas == "Alzheimers_Kunkle_2019.with.ld.buddies.txt")] <- "AD" +snp_df$disease[which(snp_df$source_gwas == "Alzheimers_Jansen_2018.with.ld.buddies.txt")] <- "AD" +snp_df$disease[which(snp_df$source_gwas == "Alzheimers_Lambert_2013.with.ld.buddies.txt")] <- "AD" +which(is.na(snp_df$disease)) +num_AD <- length(which(snp_df$disease == "AD")) +num_PD <- length(which(snp_df$disease == "PD")) +num_AD +num_PD +which(duplicated(paste0(snp_df$source_gwas,"_",snp_df$snp_id))) +which(duplicated(paste0(snp_df$disease,"_",snp_df$snp_id))) +snp_df_dedupDisease <- snp_df[which(duplicated(paste0(snp_df$disease,"_",snp_df$snp_id))),] +num_AD <- length(which(snp_df_dedupDisease$disease == "AD")) +num_PD <- length(which(snp_df_dedupDisease$disease == "PD")) +num_AD +num_PD +head(snp_df$snp_id) +snp_df_dedupDisease <- snp_df[which(duplicated(paste0(snp_df$disease,"_",snp_df$rsid))),] +length(which(snp_df_dedupDisease$disease == "AD")) +length(which(snp_df_dedupDisease$disease == "PD")) +num_AD <- length(which(snp_df_dedupDisease$disease == "AD")) +num_PD <- length(which(snp_df_dedupDisease$disease == "PD")) +which(snp_df_dedupDisease[which(snp_df_dedupDisease == "AD"),"snp_id"] %in% snp_df_dedupDisease[which(snp_df_dedupDisease == "PD"),"snp_id"]) +overlap <- which(snp_df_dedupDisease[which(snp_df_dedupDisease == "AD"),"snp_id"] %in% snp_df_dedupDisease[which(snp_df_dedupDisease == "PD"),"snp_id"]) +snp_df_dedupDisease <- snp_df[which(duplicated(paste0(snp_df$disease,"_",snp_df$rsid))),] +num_AD <- length(which(snp_df_dedupDisease$disease == "AD")) +num_PD <- length(which(snp_df_dedupDisease$disease == "PD")) +num_AD <- length(which(snp_df_dedupDisease$disease == "AD")) +num_PD <- length(which(snp_df_dedupDisease$disease == "PD")) +overlap <- length(which(snp_df_dedupDisease[which(snp_df_dedupDisease$disease == "AD"),"snp_id"] %in% snp_df_dedupDisease[which(snp_df_dedupDisease$disease == "PD"),"snp_id"])) +overlap +snp_df_dedupDisease[which(snp_df_dedupDisease$disease == "AD"),"snp_id"] +snp_df_dedupDisease[which(snp_df_dedupDisease$disease == "PD"),"snp_id"] +overlap <- length(which(snp_df_dedupDisease[which(snp_df_dedupDisease$disease == "AD"),"snp_id"] %in% snp_df_dedupDisease[which(snp_df_dedupDisease$disease == "PD"),"snp_id"])) +overlap +duplicated(paste0(snp_df$disease,"_",snp_df$rsid)) +snp_df_dedupDisease <- snp_df[which(!duplicated(paste0(snp_df$disease,"_",snp_df$rsid))),] +num_AD <- length(which(snp_df_dedupDisease$disease == "AD")) +num_PD <- length(which(snp_df_dedupDisease$disease == "PD")) +num_AD +num_PD +overlap <- length(which(snp_df_dedupDisease[which(snp_df_dedupDisease$disease == "AD"),"snp_id"] %in% snp_df_dedupDisease[which(snp_df_dedupDisease$disease == "PD"),"snp_id"])) +overlap +snp_df_dedupDisease +length(which(snp_df[which(snp_df$disease == "AD"),"snp_id"] %in% snp_df[which(snp_df$disease == "PD"),"snp_id"])) +ad_snp_gr <- makeGRangesFromDataFrame(df = snp_df_dedupDisease[which(snp_df_dedupDisease$disease == "AD"),], +keep.extra.columns = TRUE, +ignore.strand = TRUE, +seqnames.field = "chr", +start.field = "pos", +end.field = "pos", +starts.in.df.are.0based = FALSE) +pd_snp_gr <- makeGRangesFromDataFrame(df = snp_df_dedupDisease[which(snp_df_dedupDisease$disease == "PD"),], +keep.extra.columns = TRUE, +ignore.strand = TRUE, +seqnames.field = "chr", +start.field = "pos", +end.field = "pos", +starts.in.df.are.0based = FALSE) +bulk_gr <- readRDS("K:/Shared drives/Brain_Merged/Analysis/ArchR_KundajeCounts/PeakCalls/190716_Kundaje_IDR-Peaks_ControlsOnly_30percent.rds") +sc_gr <- readRDS("K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/peakCalls/190812_Kundaje_scATAC_IDR_MergedPeakSet.rds") +?overlapsAny +overlapsAny(query = ad_snp_gr, subject = bulk_gr, type = "any") +seqlevelsStyle(x = ad_snp_gr) <- "UCSC" +ad_snp_gr +seqlevelsStyle(x = pd_snp_gr) <- "UCSC" +which(overlapsAny(query = ad_snp_gr, subject = bulk_gr, type = "any")) +ad_overlaps <- intersect(which(overlapsAny(query = ad_snp_gr, subject = bulk_gr, type = "any")), +which(overlapsAny(query = ad_snp_gr, subject = sc_gr, type = "any"))) +ad_overlaps +pd_overlaps <- intersect(which(overlapsAny(query = pd_snp_gr, subject = bulk_gr, type = "any")), +which(overlapsAny(query = pd_snp_gr, subject = sc_gr, type = "any"))) +pd_overlaps +which(overlapsAny(query = ad_snp_gr, subject = bulk_gr, type = "any")) +which(overlapsAny(query = ad_snp_gr, subject = sc_gr, type = "any")) +union(which(overlapsAny(query = ad_snp_gr, subject = bulk_gr, type = "any")), +which(overlapsAny(query = ad_snp_gr, subject = sc_gr, type = "any"))) +union(which(overlapsAny(query = pd_snp_gr, subject = bulk_gr, type = "any")), +which(overlapsAny(query = pd_snp_gr, subject = sc_gr, type = "any"))) +ad_overlaps <- union(which(overlapsAny(query = ad_snp_gr, subject = bulk_gr, type = "any")), +which(overlapsAny(query = ad_snp_gr, subject = sc_gr, type = "any"))) +pd_overlaps <- union(which(overlapsAny(query = pd_snp_gr, subject = bulk_gr, type = "any")), +which(overlapsAny(query = pd_snp_gr, subject = sc_gr, type = "any"))) +length(ad_overlaps) +which(overlapsAny(query = ad_snp_gr, subject = bulk_gr, type = "any")) +which(overlapsAny(query = pd_snp_gr, subject = bulk_gr, type = "any")) +length(which(overlapsAny(query = pd_snp_gr, subject = bulk_gr, type = "any"))) +length(which(overlapsAny(query = ad_snp_gr, subject = bulk_gr, type = "any"))) +length(ad_overlaps) +ad_overlaps <- union(which(overlapsAny(query = ad_snp_gr, subject = bulk_gr, type = "any")), +which(overlapsAny(query = ad_snp_gr, subject = sc_gr, type = "any"))) +pd_overlaps <- union(which(overlapsAny(query = pd_snp_gr, subject = bulk_gr, type = "any")), +which(overlapsAny(query = pd_snp_gr, subject = sc_gr, type = "any"))) +length(pd_overlaps) +ad_snp_gr[union(which(overlapsAny(query = ad_snp_gr, subject = bulk_gr, type = "any")), +which(overlapsAny(query = ad_snp_gr, subject = sc_gr, type = "any")))] +ad_overlap_gr <- ad_snp_gr[union(which(overlapsAny(query = ad_snp_gr, subject = bulk_gr, type = "any")), +which(overlapsAny(query = ad_snp_gr, subject = sc_gr, type = "any")))] +pd_overlap_gr <- pd_snp_gr[union(which(overlapsAny(query = pd_snp_gr, subject = bulk_gr, type = "any")), +which(overlapsAny(query = pd_snp_gr, subject = sc_gr, type = "any")))] +pd_overlap_gr +pd_overlap_gr["11530"] +bed_files <- list.files(path = "K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/peakCalls/", pattern="narrowPeak") +bed_files +bed_files <- list.files(path = "K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/peakCalls/", pattern="narrowPeak", full.names = TRUE) +bed_files +library(rtracklayer) +for(i in bed_files) { +gr <- import.bed(con = i) +export.bed(object = gr, con = gsub(pattern = "narrowPeak", replacement = "rds", x = i)) +} +bed_files <- list.files(path = "K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/peakCalls/Cluster-based/", pattern = "narrowPeak", full.names = TRUE) +bed_files +for(i in bed_files) { +gr <- import.bed(con = i) +export.bed(object = gr, con = gsub(pattern = "narrowPeak", replacement = "rds", x = i)) +} +library(rtracklayer) +for(i in bed_files) { +gr <- import.bed(con = i) +export.bed(object = gr, con = gsub(pattern = "narrowPeak", replacement = "rds", x = i)) +} +bed_files +for(i in bed_files) { +gr <- import.bed(con = i) +export.bed(object = gr, con = gsub(pattern = "narrowPeak", replacement = "rds", x = i)) +} +?import.bed +for(i in bed_files) { +gr <- import.bed(con = i, format = "narrowPeak") +export.bed(object = gr, con = gsub(pattern = "narrowPeak", replacement = "rds", x = i)) +} +for(i in bed_files) { +gr <- import(con = i, format = "narrowPeak") +export.bed(object = gr, con = gsub(pattern = "narrowPeak", replacement = "rds", x = i)) +} +for(i in bed_files) { +gr <- import(con = i, format = "narrowPeak") +saveRDS(object = gr, file = gsub(pattern = "narrowPeak", replacement = "rds", x = i)) +} +bed_files <- list.files(path = "K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/peakCalls/CellType-based/", pattern = "narrowPeak", full.names = TRUE) +for(i in bed_files) { +gr <- import(con = i, format = "bed") +saveRDS(object = gr, file = gsub(pattern = "narrowPeak", replacement = "rds", x = i)) +} +if (!requireNamespace("BiocManager", quietly = TRUE)) +install.packages("BiocManager") +BiocManager::install("DEGreport") +library(DEGreport) +data(humanGender) +library(DESeq2) +idx <- c(1:10, 75:85) +dse <- DESeqDataSetFromMatrix(assays(humanGender)[[1]][1:1000, idx], +colData(humanGender)[idx,], design=~group) +res <- degCovariates(log2(counts(dse)+0.5), colData(dse)) +res <- degCovariates(log2(counts(dse)+0.5), +colData(dse), legacy = TRUE) +res$plot +res$scatterPlot[[1]] +res +res <- degCovariates(log2(counts(dse)+0.5), colData(dse), minPC = 0) +res +res <- degCovariates(log2(counts(dse)+0.5), colData(dse), minPC = 10) +res +degCovariates +se <- readRDS("K:/Shared drives/Brain_Merged/Analysis/ArchR_KundajeCounts/190716_ArchRSE_ControlsOnly_Kundaje_30percent_Counts_NormCounts.rds") +res <- degCovariates(counts = assays(se)$log2norm, metadata = colData(se), minPC = 5) +str(res) +res +degCovariates +counts <- assays(se)$log2norm +metadata <- colData(se) +minPC <- 5 +fdr = 0.1 +scale = FALSE +correlation = "kendall" +addCovDen = TRUE +legacy = FALSE +smart = TRUE +method = "lm" +plot = TRUE +title <- paste(ifelse(scale, "s", "un-s"), "caled ", " data in pca;\npve >= ", +minPC, "%;\n", correlation, " cor ", sep = "") +title +message(paste("\nrunning pca and calculating correlations for:\n", +title, sep = "")) +metadata <- as.data.frame(metadata) +metadata +metadata <- degClean(metadata) +metadata <- DEGreport:::degClean(metadata) +metadata +covar_class <- sapply(metadata[1, ], class) +covar_class +metadata <- metadata %>% mutate_all(as.numeric) %>% as.data.frame() %>% +set_rownames(row.names(metadata)) +metadata <- metadata %>% DEGreport:::mutate_all(as.numeric) %>% as.data.frame() %>% +set_rownames(row.names(metadata)) +DEGreport:::mutate_all +mutate_all +library(dplyr) +metadata <- metadata %>% mutate_all(as.numeric) %>% as.data.frame() %>% +set_rownames(row.names(metadata)) +stopifnot(identical(colnames(counts), rownames(metadata))) +pcares <- .runpca(genesbysamples = counts, scale_data_for_pca = scale, +min_pve_pct_pc = minPC) +DEGreport::runpca +.runpca <- function(genesbysamples, scale_data_for_pca = TRUE, +min_pve_pct_pc = 1.0) { +# estimate variance in data by pc: +pca.res <- prcomp(t(genesbysamples), center = TRUE, +scale. = scale_data_for_pca, retx = TRUE) +# examine how much variance is explained by pcs, +# and consider those with pve >= (min_pve_pct_pc %): +pc.var <- pca.res$sdev^2L +pve <- 100L * (pc.var / sum(pc.var)) +npca <- max(1L, length(which(pve >= min_pve_pct_pc))) +samplepcvals <- pca.res$x[, 1L:npca, drop = FALSE] +list(samplepcvals = samplepcvals, pve = pve) +} +pcares <- .runpca(genesbysamples = counts, scale_data_for_pca = scale, +min_pve_pct_pc = minPC) +pcares +samplepcvals <- pcares[["samplepcvals"]] +samplepcvals +pve <- pcares[["pve"]] +original_names <- colnames(samplepcvals) +original_names +pc_pct <- data.frame(pc = colnames(samplepcvals), pct = paste(" (", +sprintf("%.2f", pve[1L:ncol(samplepcvals)]), "%)", sep = ""), +stringsAsFactors = FALSE) +pc_pct +samplesbyfullcovariates <- metadata[, which(apply(metadata, +2L, function(dat) all(!is.na(dat)))), drop = FALSE] +samplesbyfullcovariates +covar_class <- covar_class[colnames(samplesbyfullcovariates)] +covar_class +exclude_vars_from_fdr <- setdiff(colnames(metadata), colnames(samplesbyfullcovariates)) +exclude_vars_from_fdr +covar_factors <- samplesbyfullcovariates[, names(covar_class)[covar_class != +"numeric"], drop = FALSE] +covar_factors +covar_numeric <- samplesbyfullcovariates[, names(covar_class)[covar_class == +"numeric"]] +covar_numeric +samplesbyfullcovariates = cbind(covar_factors, covar_numeric) +samplesbyfullcovariates +.calccompletecorandplot <- function(compare_data, covar_data, +correlationtype, title, +weights = NULL, +exclude_vars_from_fdr=NULL, +max_fdr = 0.1) { +# get factor and continuous covariates +character_vars <- lapply(covar_data, class) == "character" +if (sum(character_vars) > 0 ) +covar_data[, character_vars] <- apply(covar_data[, character_vars, +drop = FALSE], +1L, as.factor) +factorcovariates <- select_if(covar_data, is.factor) %>% colnames +contcovariates <- select_if(covar_data, is.numeric) %>% colnames +all_covariates <- cbind(covar_data[, contcovariates, drop = FALSE], +covar_data[, factorcovariates, drop = FALSE] %>% +mutate_all(as.numeric)) +cov_cor <- corr.test(compare_data, +all_covariates, +use = 'pairwise.complete.obs', +method = correlationtype, +adjust = "none") +all_cor_vals <- cov_cor[["r"]] +all_cor_p <- cov_cor[["p"]] +rownames(all_cor_vals) <- colnames(compare_data) +colnames(all_cor_vals) <- colnames(all_covariates) +rownames(all_cor_p) <- colnames(compare_data) +colnames(all_cor_p) <- colnames(all_covariates) +effects.significantcovars <- all_cor_vals +effects.significantcovars[all_cor_p > max_fdr] <- 0 +effects.significantcovars <- colSums(abs(effects.significantcovars) * replicate(dim(effects.significantcovars)[2L], weights / sum(weights))) +effects.significantcovars <- effects.significantcovars[order(abs(effects.significantcovars), decreasing = TRUE)] +cor_mat <- melt(all_cor_p, varnames = c("compare", "covar")) +colnames(cor_mat)[colnames(cor_mat) == "value"] <- "pvalue" +cor_mat[["compare"]] <- factor(cor_mat[["compare"]], +levels = rownames(all_cor_p)) +cor_mat[["covar"]] <- factor(cor_mat[["covar"]], +levels = colnames(all_cor_p)) +cor_mat[["r"]] <- melt(all_cor_vals)[["value"]] +cor_mat[["fdr"]] <- p.adjust(cor_mat[["pvalue"]], method = "fdr") +return(list(mat = cor_mat, +effects.significantcovars = effects.significantcovars)) +} +corrRes <- .calccompletecorandplot(samplepcvals, samplesbyfullcovariates, +correlation, title, weights = pve[1L:dim(samplepcvals)[2L]], +exclude_vars_from_fdr) +DEGreport::corr.test +install.packages("psych") +install.packages("psych") +install.packages("psych") +install.packages("psych") +library(psych) +GInteractionsToWashU <- function(gi, minDist = NULL, outfile = NULL, url = FALSE) { +#if minimum distance is supplied, threshold the gi object upfront +if(!is.null(minDist)) { +gi <- gi[which(gi$dist >= minDist)] +} +df <- data.frame() #this will hold the data for output +#store the information for the mid-point of each anchor +middleOne <- round((end(ranges(anchorOne(gi))) + start(ranges(anchorOne(gi))))/2 ) +middleTwo <- round((end(ranges(anchorTwo(gi))) + start(ranges(anchorTwo(gi))))/2 ) +if(url) { +df1 <- data.frame(chr1 = seqnames(anchorOne(gi)), +start1 = middleOne-1, +end1 = middleOne +1, +coord2 = paste0(seqnames(anchorTwo(gi)),":",middleTwo-1,"-",middleTwo+1,",",gi$coaccess), +orderID = seq(from = 1, to = length(gi), by = 1)) +df2 <- data.frame(chr1 = seqnames(anchorTwo(gi)), +start1 = middleTwo-1, +end1 = middleTwo +1, +coord2 = paste0(seqnames(anchorOne(gi)),":",middleOne-1,"-",middleOne+1,",",gi$coaccess), +orderID = seq(from = 1, to = length(gi), by = 1)) +df_url <- rbind(df1, df2) +df_url <- df_url[order(df_url$start1),] +df_url <- df_url[order(gsub(pattern = "chr", replacement = "", x = df_url$chr1)),] +df_url$orderID <- seq(from = 1, to = nrow(df_url), by = 1) +df_url$direction <- "." +df <- df_url +} else { +df <- as.data.frame(matrix(nrow = length(gi), ncol = 3, NA)) +colnames(df) <- c("anchor1", "anchor2", "score") +df$anchor1 <- paste(seqnames(anchorOne(gi)), middleOne-1, middleOne+1, sep = ",") +df$anchor2 <- paste(seqnames(anchorTwo(gi)), middleTwo-1, middleTwo+1, sep = ",") +df$score <- gi$coaccess +} +if(!is.null(outfile)) { +write.table(x = df, file = outfile, quote = FALSE, sep = "\t", col.names = FALSE, row.names = FALSE) +} else { +return(df) +} +} +gi <- readRDS("K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/CoAccessibility/Peaks-Co-Accessibility_Significant_KUNDAJE_GenomicInteractions.rds") +GInteractionsToWashU(gi = gi, minDist = 10000, outfile = "K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/CoAccessibility/Peaks-Co-Accessibility_Significant_KUNDAJE_GenomicInteractions_WashU.txt", url = TRUE) +#see http://wiki.wubrowse.org/Long-range +GInteractionsToWashU <- function(gi, minDist = NULL, outfile = NULL, url = FALSE) { +#if minimum distance is supplied, threshold the gi object upfront +if(!is.null(minDist)) { +gi <- gi[which(gi$dist >= minDist)] +} +df <- data.frame() #this will hold the data for output +#store the information for the mid-point of each anchor +middleOne <- round((end(ranges(anchorOne(gi))) + start(ranges(anchorOne(gi))))/2 ) +middleTwo <- round((end(ranges(anchorTwo(gi))) + start(ranges(anchorTwo(gi))))/2 ) +if(url) { +df1 <- data.frame(chr1 = seqnames(anchorOne(gi)), +start1 = middleOne-1, +end1 = middleOne +1, +coord2 = paste0(seqnames(anchorTwo(gi)),":",middleTwo-1,"-",middleTwo+1,",",gi$coaccess), +orderID = seq(from = 1, to = length(gi), by = 1)) +df2 <- data.frame(chr1 = seqnames(anchorTwo(gi)), +start1 = middleTwo-1, +end1 = middleTwo +1, +coord2 = paste0(seqnames(anchorOne(gi)),":",middleOne-1,"-",middleOne+1,",",gi$coaccess), +orderID = seq(from = 1, to = length(gi), by = 1)) +df_url <- as.data.frame(rbind(df1, df2)) +df_url <- df_url[order(df_url$start1),] +df_url <- df_url[order(gsub(pattern = "chr", replacement = "", x = df_url$chr1)),] +df_url$orderID <- seq(from = 1, to = nrow(df_url), by = 1) +df_url$direction <- "." +df <- df_url +} else { +df <- as.data.frame(matrix(nrow = length(gi), ncol = 3, NA)) +colnames(df) <- c("anchor1", "anchor2", "score") +df$anchor1 <- paste(seqnames(anchorOne(gi)), middleOne-1, middleOne+1, sep = ",") +df$anchor2 <- paste(seqnames(anchorTwo(gi)), middleTwo-1, middleTwo+1, sep = ",") +df$score <- gi$coaccess +} +if(!is.null(outfile)) { +write.table(x = df, file = outfile, quote = FALSE, sep = "\t", col.names = FALSE, row.names = FALSE) +} else { +return(df) +} +} +GInteractionsToWashU(gi = gi, minDist = 10000, outfile = "K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/CoAccessibility/Peaks-Co-Accessibility_Significant_KUNDAJE_GenomicInteractions_WashU.txt", url = TRUE) +middleOne <- round((end(ranges(anchorOne(gi))) + start(ranges(anchorOne(gi))))/2 ) +library(GenomicInteractions) +GInteractionsToWashU(gi = gi, minDist = 10000, outfile = "K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/CoAccessibility/Peaks-Co-Accessibility_Significant_KUNDAJE_GenomicInteractions_WashU.txt", url = TRUE) +GInteractionsToWashU(gi = gi, minDist = 10000, outfile = "K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/CoAccessibility/Peaks-Co-Accessibility_Significant_KUNDAJE_GenomicInteractions_WashU.txt", url = TRUE) +GInteractionsToWashU(gi = gi, minDist = 10000, outfile = "K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/CoAccessibility/Peaks-Co-Accessibility_Significant_KUNDAJE_GenomicInteractions_WashU.bed", url = FALSE) +GInteractionsToWashU(gi = gi, outfile = "K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/CoAccessibility/Peaks-Co-Accessibility_Significant_KUNDAJE_GenomicInteractions_WashU.bed", url = FALSE) +temp <- readRDS("K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/PCs-25-Peaks-25-25-25-Res-2-6-10.colData-metadata.rds") +temp +str(temp) +ArchRx::quantileCut() +quantileCut() +library(ArchRx) +library(SCArchR) +library(ggplot2) +quantileCut() +quantileCut +df <- readRDS("K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/PCs-25-Peaks-25-25-25-Res-2-6-10.colData-metadata.rds") +df +se <- df +se +str(se) +colData(se) +se$colData +df se$colData +df <- se$colData +write.table(x = df, file = "K:/Shared drives/Brain_Merged/Analysis/scATAC/190713/PCs-25-Peaks-25-25-25-Res-2-6-10.colData-metadata.txt", quote = FALSE, sep = "\t", col.names = NA) +?requireNamespace +library(ArchR) +getQuantiles <- function(v, len = length(v)){ +if(length(v) < len){ +v2 <- rep(0, len) +v2[seq_along(v)] <- v +}else{ +v2 <- v +} +p <- trunc(rank(v2))/length(v2) +if(length(v) < len){ +p <- p[seq_along(v)] +} +return(p) +} +df <- as.data.frame(matrix(nrow = 8, ncol =5, NA)) +colnames(df) <- c("id","tss","log10frags","quant_tss","quant_log10frags") +df$id <- 1:8 +df$tss <- c(9,4.5,20,12,13,8,11,17) +df$log10frags <- c(3.5,4.5,4,4.7,3,3.3,4.1,3.8) +df$quant_tss <- getQuantiles(df$tss) +df$quant_log10frags <- getQuantiles(df$log10frags) +df +dist(x = df[,4:5], method = "euclidean") +dist(x = df[,2:3], method = "euclidean") +pre <- ggPoint(x = df$tss, y = df$log10frags, color = df$id, discrete = TRUE, discreteSet = "stallion", baseSize = 8, +xlim = c(2.5,22.5), ylim = c(2.25,5.25), ratioYX = 3/20, size = 3, xlabel = "TSS Score", ylabel = "log10(Num Fragments)") +post <- ggPoint(x = df$quant_tss, y = df$quant_log10frags, color = df$id, discrete = TRUE, discreteSet = "stallion", baseSize = 8, +xlim = c(-0.1,1.1), ylim = c(-0.1,1.1), ratioYX = 1, size = 3, xlabel = "Quantile TSS Score", ylabel = "Quantile log10(Num Fragments)") +setwd("K:/My Drive/Work/GitHub/ArchR_Website/") +build_site() +library(pkgdown) +build_sit() +build_site() +setwd("K:/My Drive/Work/GitHub/ArchR_Website/bookdown/") +library(bookdown) +render_book(input = "index.Rmd") +render_book(input = "index.Rmd") +getwd() +getwd() +render_book(input = "index.Rmd") +render_book(input = "index.Rmd") +render_book(input = "index.Rmd") +render_book(input = "index.Rmd") +render_book(input = "index.Rmd") +render_book(input = "index.Rmd") +render_book(input = "index.Rmd") +render_book(input = "index.Rmd") +render_book(input = "index.Rmd") +render_book(input = "index.Rmd") +render_book(input = "index.Rmd") +render_book(input = "index.Rmd") +render_book(input = "index.Rmd") +setwd("K:/My Drive/Work/GitHub/ArchR_Website/") +library(pkgdown) +build_site() +biuld_home() +build_home() +build_home() +build_favicon() +build_favicons() +build_site() +build_favicons() +build_favicons(overwrite = TRUE) +build_site() diff --git a/bookdown/01_GettingStarted.Rmd b/bookdown/01_GettingStarted.Rmd index 6441342..08b46d9 100644 --- a/bookdown/01_GettingStarted.Rmd +++ b/bookdown/01_GettingStarted.Rmd @@ -5,7 +5,7 @@ setwd("/Volumes/JG_SSD_2/ArchR_Walkthrough/") save.image("Save-ArchR-Walkthrough-Chapter1-Feb13.Rdata") ``` -This chapter will introduce you to how to import data into ArchR. +This chapter will introduce you to how to import data into ArchR and how to create ArrowFiles, the base unit of ArchR analysis. ## What is an `ArrowFile` / `ArchRProject`? @@ -47,7 +47,9 @@ addArchRGenome("hg19") ArchR requires gene and genome annotations to do things such as calculate TSS enrichment scores, nucleotide content, and gene activity scores. Because our tutorial dataset uses scATAC-seq data that has already been aligned to the hg19 reference genome, we have set "hg19" as the default genome above. However, ArchR supports "hg19", "hg38", "mm9", and "mm10" natively but you can create your own using the `createGeneAnnotation()` and `createGenomeAnnotation()` functions. -Providing this information to ArchR is streamlined through the `addArchRGenome()` function. This function tells ArchR that, for all analysis in the current session, it should use the `genomeAnnotation` and `geneAnnotation` associated with the defined `ArchRGenome`. Each of the natively supported genomes are composed of a `BSgenome` object and a `GRanges` object containing a set of blacklisted regions. Below are examples of how to load gene and genome annotations for the natively supported genomes as well as information on their `BSgenome` and blacklist components. +Providing this information to ArchR is streamlined through the `addArchRGenome()` function. This function tells ArchR that, for all analyses in the current session, it should use the `genomeAnnotation` and `geneAnnotation` associated with the defined `ArchRGenome`. Each of the natively supported genomes are composed of a `BSgenome` object and a `GRanges` object containing a set of blacklisted regions. Below are examples of how to load gene and genome annotations for the natively supported genomes as well as information on their `BSgenome` and blacklist components. + +
The precompiled version of the __hg19__ genome in ArchR uses `BSgenome.Hsapiens.UCSC.hg19` and a blacklist that was merged using `ArchR::mergeGR()` from the [hg19 v2 blacklist regions](https://github.com/Boyle-Lab/Blacklist/blob/master/lists/hg19-blacklist.v2.bed.gz) and from [mitochondrial regions that show high mappability to the hg19 nuclear genome](https://github.com/caleblareau/mitoblacklist/blob/master/peaks/hg19_peaks.narrowPeak) from Caleb Lareau and Jason Buenrostro. To set a global genome default to the precompiled hg19 genome: @@ -56,6 +58,8 @@ addArchRGenome("hg19") # Setting default genome to Hg19. ``` +
+ The precompiled version of the __hg38__ genome in ArchR uses `BSgenome.Hsapiens.UCSC.hg38` and a blacklist that was merged using `ArchR::mergeGR()` from the [hg38 v2 blacklist regions](https://github.com/Boyle-Lab/Blacklist/blob/master/lists/hg38-blacklist.v2.bed.gz) and from [mitochondrial regions that show high mappability to the hg38 nuclear genome](https://github.com/caleblareau/mitoblacklist/blob/master/peaks/hg38_peaks.narrowPeak) from Caleb Lareau and Jason Buenrostro. To set a global genome default to the precompiled hg38 genome: ```{r eval=FALSE} @@ -63,6 +67,8 @@ addArchRGenome("hg38") # Setting default genome to Hg38. ``` +
+ The precompiled version of the __mm9__ genome in ArchR uses `BSgenome.Mmusculus.UCSC.mm9` and a blacklist that was merged using `ArchR::mergeGR()` from the [mm9 v1 blacklist regions](http://mitra.stanford.edu/kundaje/akundaje/release/blacklists/mm9-mouse/mm9-blacklist.bed.gz) from Anshul Kundaje and from [mitochondrial regions that show high mappability to the mm9 nuclear genome](https://github.com/caleblareau/mitoblacklist/blob/master/peaks/mm9_peaks.narrowPeak) from Caleb Lareau and Jason Buenrostro. To set a global genome default to the precompiled mm9 genome: ```{r eval=FALSE} @@ -70,6 +76,8 @@ addArchRGenome("mm9") # Setting default genome to Mm9. ``` +
+ The precompiled version of the __mm10__ genome in ArchR uses `BSgenome.Mmusculus.UCSC.mm10` and a blacklist that was merged using `ArchR::mergeGR()` from the [mm10 v2 blacklist regions](https://github.com/Boyle-Lab/Blacklist/blob/master/lists/mm10-blacklist.v2.bed.gz) and from [mitochondrial regions that show high mappability to the mm10 nuclear genome](https://github.com/caleblareau/mitoblacklist/blob/master/peaks/mm10_peaks.narrowPeak) from Caleb Lareau and Jason Buenrostro. To set a global genome default to the precompiled hg38 genome: ```{r eval=FALSE} @@ -77,8 +85,13 @@ addArchRGenome("mm10") # Setting default genome to Mm10. ``` -To instead create a custom genome annotation, we can use `createGenomeAnnotation()`. To do this, you will need the following information:
-1. A `BSgenome` object which contains the sequence information for a genome. These are commonly Bioconductor packages (for example, `BSgenome.Hsapiens.UCSC.hg38`) that can be easily found with google.
+
+ +### Creating a custom genome annotation + +To instead create a custom genome annotation, we can use `createGenomeAnnotation()`. To do this, you will need the following information: + +1. A `BSgenome` object which contains the sequence information for a genome. These are commonly Bioconductor packages (for example, `BSgenome.Hsapiens.UCSC.hg38`) that can be easily found with google. 2. A `GRanges` genomic ranges object containing a set of blacklisted regions that will be used to filter out unwanted regions from downstream analysis. This is not required but is recommended. ```{r eval=FALSE} @@ -89,10 +102,10 @@ genomeAnnotation <- createGenomeAnnotation(genome = BSgenome.Dmelanogaster.UCSC. # names(3): genome chromSizes blacklist ``` -To create a custom gene annotation for use instead we can use `createGeneAnnotation()`. To do this, you will need the following information:
+To create a custom gene annotation for use instead we can use `createGeneAnnotation()`. To do this, you will need the following information: -1. A `TxDb` object (transcript database) from Bioconductor which contains information for gene/transcript coordinates. For example, from `txdb <- TxDb.Hsapiens.UCSC.hg38.knownGene`.
-2. An `OrgDb` object (organism database) from Bioconductor which contains information for gene/transcript symbols from ids. For example, from `orgdb <- org.Hs.eg.db`.
+1. A `TxDb` object (transcript database) from Bioconductor which contains information for gene/transcript coordinates. For example, from `txdb <- TxDb.Hsapiens.UCSC.hg38.knownGene`. +2. An `OrgDb` object (organism database) from Bioconductor which contains information for gene/transcript symbols from ids. For example, from `orgdb <- org.Hs.eg.db`. ```{r eval=FALSE} @@ -105,7 +118,7 @@ geneAnnotation <- createGeneAnnnotation(TxDb = TxDb.Dmelanogaster.UCSC.dm6.ensGe # names(3): genes exons TSS ``` -Alternatively, if you dont have a `TxDb` and `OrgDb` object, you can create a `geneAnnotation` object from the following information :
+Alternatively, if you dont have a `TxDb` and `OrgDb` object, you can create a `geneAnnotation` object from the following information : 1. A `GRanges` object containing gene coordinates (start to end). Must have a symbols column matching the symbols column of `exons`. 2. A `GRanges` object containing gene exon coordinates. Must have a symbols column matching the symbols column of `genes`. @@ -121,7 +134,7 @@ geneAnnotation ## Creating Arrow Files -For this tutorial, we will use data from a gold-standard downsampled dataset of hematopoietic cells [Granja* et al. Nature Biotechnology 2019](https://www.ncbi.nlm.nih.gov/pubmed/31792411). This includes data from bone marrow mononuclear cells (BMMC), peripheral blood mononuclear cells (PBMC), and CD34+ hematopoietic stem and progenitor cells from bone marrow (CD34 BMMC). +For this tutorial, we will use data from a downsampled dataset of hematopoietic cells [Granja* et al. Nature Biotechnology 2019](https://www.ncbi.nlm.nih.gov/pubmed/31792411). This includes data from bone marrow mononuclear cells (BMMC), peripheral blood mononuclear cells (PBMC), and CD34+ hematopoietic stem and progenitor cells from bone marrow (CD34 BMMC). This data is downloaded as fragment files which contain the start and end genomic coordinates of all aligned sequenced fragments. Fragment files are one of the base file types of the 10x Genomics analytical platform (and other platforms) and can be easily created from any BAM file. See __QQQ__ for information on making your own fragment files for input to ArchR. Once we have our fragment files, we provide their paths as a character vector to `createArrowFiles()`. During creation, some basic metadata and matrices are added to each `ArrowFile` including a "TileMatrix" containing insertion counts across genome-wide 500-bp bins (see `addTileMatrix()`) and a "GeneScoreMatrix" that is determined based on weighting insertion counts in tiles nearby a gene promoter (see `addGeneScoreMatrix()`). @@ -139,12 +152,13 @@ inputFiles # "HemeFragments/scATAC_PBMC_R1.fragments.tsv.gz" ``` -Now we will create our Arrow Files (~10-15 minutes). For each sample, this step will:
-1. Read accessible fragments from the provided input files.
-2. Calculate quality control information for each cell (i.e. TSS enrichment scores and nucleosome info).
-3. Filter cells based on quality control parameters.
-4. Create a genome-wide TileMatrix using 500-bp bins.
-5. Create a GeneScoreMatrix using the custom `geneAnnotation` that was defined when we called `addArchRGenome()`.
+Now we will create our Arrow Files (10-15 minutes). For each sample, this step will: + +1. Read accessible fragments from the provided input files. +2. Calculate quality control information for each cell (i.e. TSS enrichment scores and nucleosome info). +3. Filter cells based on quality control parameters. +4. Create a genome-wide TileMatrix using 500-bp bins. +5. Create a GeneScoreMatrix using the custom `geneAnnotation` that was defined when we called `addArchRGenome()`. ```{r eval=FALSE} #Set Genome Annotations to be used to hg19 @@ -166,29 +180,22 @@ ArrowFiles # [3] "scATAC_PBMC_R1.arrow" ``` -This step will create a folder called "QualityControl" in your current working directory that will contain 2 plots associated with each of your samples:
-1. **TSS Enrichment Score by log10(Unique Fragments)** -
+This step will create a folder called "QualityControl" in your current working directory that will contain 2 plots associated with each of your samples: -For **BMMC** :
+1. TSS Enrichment Score by log10(Unique Fragments) +For **BMMC**:
![](images/HemeWalkthrough/PNG/scATAC_BMMC_R1-TSS_by_Unique_Frags_1.png){width=500 height=500} -
- -For **CD34 BMMC** :
+For **CD34 BMMC**:
![](images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-TSS_by_Unique_Frags_1.png){width=500 height=500} -
- -For **PBMC** :
+For **PBMC**:
![](images/HemeWalkthrough/PNG/scATAC_PBMC_R1-TSS_by_Unique_Frags_1.png){width=500 height=500} -
- -
-2. **Fragment Size Distribution** -
+2. Fragment Size Distribution For **BMMC** :
diff --git a/bookdown/03_ArchRProject.Rmd b/bookdown/03_ArchRProject.Rmd index d7c015f..5d76e92 100644 --- a/bookdown/03_ArchRProject.Rmd +++ b/bookdown/03_ArchRProject.Rmd @@ -36,13 +36,14 @@ projHeme1 # medianTSS(1): 16.832 # medianFrags(1): 3050 ``` -We can see from the above that our `ArchRProject` has been initialized with a few important attributes:
-1. The specified `outputDirectory`.
-2. The `sampleNames` of each sample which were obtained from the Arrow files.
-3. A matrix called `sampleColData` which contains data associated with each sample.
-4. A matrix called `cellColData` which contains data associated with each cell. Because we already computed doublet enrichment scores (using `addDoubletScores()`), which added those values to each cell in the Arrow files, we can see columns corresponding to the "DoubletEnrichment" and "DoubletScore" in the `cellColData` matrix.
-5. The total number of cells in our project which represents all samples after doublet identification and removal.
-6. The median TSS enrichment score and the median number of fragments across all cells and all samples.
+We can see from the above that our `ArchRProject` has been initialized with a few important attributes: + +1. The specified `outputDirectory`. +2. The `sampleNames` of each sample which were obtained from the Arrow files. +3. A matrix called `sampleColData` which contains data associated with each sample. +4. A matrix called `cellColData` which contains data associated with each cell. Because we already computed doublet enrichment scores (using `addDoubletScores()`), which added those values to each cell in the Arrow files, we can see columns corresponding to the "DoubletEnrichment" and "DoubletScore" in the `cellColData` matrix. +5. The total number of cells in our project which represents all samples after doublet identification and removal. +6. The median TSS enrichment score and the median number of fragments across all cells and all samples. We can check how much memory is used to store the `ArchRProject` in memory within R: @@ -62,7 +63,7 @@ getAvailableMatrices(projHeme1) ## Manipulating An ArchRProject Now that we have created an `ArchRProject`, there are many things that we can do to easily access or manipulate the associated data. -Example 1. The `$` accessor, this allows direct access to cellColData +Example 1. The `$` accessor allows direct access to `cellColData` ```{r eval=FALSE} #A. Access cell names associated with each cell @@ -83,7 +84,7 @@ quantile(projHeme1$TSSEnrichment) # 4.027 13.922 16.832 19.937 41.782 ``` -Example 2. Subsetting an ArchRProject By Cells +Example 2. Subsetting an `ArchRProject` by cells ```{r eval=FALSE} #A. Subset the project numerically @@ -140,7 +141,7 @@ projHeme1[cellsPass, ] # medianFrags(1): 3042 ``` -Example 3. Adding data to an ArchRProject +Example 3. Adding data to an `ArchRProject` ```{r eval=FALSE} #Add a column to cellColData that contains more legible sample names by removing excess info from the original sample names @@ -154,7 +155,8 @@ projHeme1$bioNames <- bioNames #Add a column to cellColData that only contains information for a subset of cells bioNames <- bioNames[1:10] cellNames <- projHeme1$cellNames[1:10] -projHeme1 <- addCellColData(ArchRProj = projHeme1, data = paste0(bioNames), cells = cellNames, name = "bioNames2") +projHeme1 <- addCellColData(ArchRProj = projHeme1, data = paste0(bioNames), + cells = cellNames, name = "bioNames2") #We can compare these two columns to see "NA" filled in where data wasnt available for bioNames2 getCellColData(projHeme1, select = c("bioNames", "bioNames2")) @@ -174,10 +176,11 @@ getCellColData(projHeme1, select = c("bioNames", "bioNames2")) # scATAC_PBMC_R1#CGCTATCGTGAGGTCA-1 PBMC NA ``` -Example 4. Obtaining Unique Fragment Counts +Example 4. Obtaining unique fragment counts ```{r eval=FALSE} -#Select the column from cellColData corresponding to the number of unique nuclear (non-mitochondrial) fragments per cell +#Select the column from cellColData corresponding to the number of unique +#nuclear (non-mitochondrial) fragments per cell df <- getCellColData(projHeme1, select = "nFrags") df # DataFrame with 10661 rows and 1 column @@ -195,7 +198,8 @@ df # scATAC_PBMC_R1#TTCGTTACATTGAACC-1 1033 # scATAC_PBMC_R1#CGCTATCGTGAGGTCA-1 1002 -#Or, instead of selecting a column by name, we can actually perform operations on a given column using its column name +#Or, instead of selecting a column by name, we can actually perform operations on a given +#column using its column name df <- getCellColData(projHeme1, select = c("log10(nFrags)", "nFrags - 1")) df # DataFrame with 10661 rows and 2 columns @@ -214,7 +218,7 @@ df # scATAC_PBMC_R1#CGCTATCGTGAGGTCA-1 3.00086772153123 1001 ``` -Example 5. Plotting QC metrics - log10(Unique Fragments) vs TSS Enrichment Score +Example 5. Plotting QC metrics - log10(Unique Fragments) vs TSS enrichment score ```{r eval=FALSE} df <- getCellColData(projHeme1, select = c("log10(nFrags)", "TSSEnrichment")) @@ -265,7 +269,11 @@ plotPDF(p, name = "TSS-vs-Frags.pdf", ArchRProj = projHeme1, addDOC = FALSE) ## Plotting Sample Statistics from an ArchRProject -Example 1. Make a Ridge Plot for each sample for the TSS enrichment scores. +When working with multiple distinct samples in a single integrated data set, it can be important to compare various metrics across all samples. ArchR provides two main plotting mechanisms for grouped data: ridge plots and violin plots. These are both accessed through the `plotGroups()` function. Of course, this plot type is not limited to sample-level data and can be used for plotting of downstream group-level information for groups such as clusters. + +Example 1. Make a ridge plot for each sample for the TSS enrichment scores. + +To make a ridge plot, we set `plotAs = "ridges"`. ```{r eval=FALSE} p1 <- plotGroups( @@ -280,7 +288,9 @@ p1 ![](images/HemeWalkthrough/PNG/QC-Sample-Statistics_1.png){width=500 height=500} -Example 2. Make a Violin Plot for each sample for the TSS enrichment scores. +Example 2. Make a violin plot for each sample for the TSS enrichment scores. + +To make a violin plot, we set `plotAs = "violin"`. ```{r eval=FALSE} p2 <- plotGroups( @@ -297,7 +307,7 @@ p2 ![](images/HemeWalkthrough/PNG/QC-Sample-Statistics_2.png){width=500 height=500} -Example 3. Make a Ridge Plot for each sample for the log10(unique nuclear fragments). +Example 3. Make a ridge plot for each sample for the log10(unique nuclear fragments). ```{r eval=FALSE} p3 <- plotGroups( @@ -312,7 +322,7 @@ p3 ![](images/HemeWalkthrough/PNG/QC-Sample-Statistics_3.png){width=500 height=500} -Example 4. Make a Violin Plot for each sample for the log10(unique nuclear fragments). +Example 4. Make a violin plot for each sample for the log10(unique nuclear fragments). ```{r eval=FALSE} p4 <- plotGroups( @@ -339,7 +349,9 @@ plotPDF(p1,p2,p3,p4, name = "QC-Sample-Statistics.pdf", ArchRProj = projHeme1, a ## Plotting Sample Fragment Size Distribution and TSS Enrichment Profiles. -ArchR can compute fragment size distributions from ArrowFiles very quickly because of how the data is stored and accessed. +Because of how the data is stored and accessed, ArchR can compute fragment size distributions and TSS enrichment profiles from Arrow files very quickly. + +Fragment size distributions: ```{r eval=FALSE} p1 <- plotFragmentSizes(ArchRProj = projHeme1) @@ -348,7 +360,7 @@ p1 ![](images/HemeWalkthrough/PNG/QC-Sample-FragSizes-TSSProfile_1.png){width=500 height=500} -ArchR can compute TSS enrichment profiles from ArrowFiles quickly for the same reason. +TSS enrichment profiles: ```{r eval=FALSE} p2 <- plotTSSEnrichment(ArchRProj = projHeme1) @@ -390,7 +402,7 @@ projHeme2 # medianFrags(1): 2994 ``` -If you want to filter more cells from the ArchR Project try a higher `filterRatio`. To see additional arguments that can be tweaked, try ?filterDoublets. +If you wanted to filter more cells from the ArchR Project, you would try a higher `filterRatio`. To see additional arguments that can be tweaked, try `?filterDoublets`. ```{r eval=FALSE} projHemeTmp <- filterDoublets(projHeme1, filterRatio = 1.5) @@ -401,9 +413,9 @@ projHemeTmp <- filterDoublets(projHeme1, filterRatio = 1.5) rm(projHemeTmp) ``` -We can now save our updated `projHeme1` using `saveArchRProject()` which will allow us to use this project in future chapters. +We can now save our updated `projHeme2` using `saveArchRProject()` which will allow us to use this project in future chapters. ```{r eval=FALSE} -saveArchRProject(projHeme1, copyArrows = FALSE) +saveArchRProject(projHeme2, copyArrows = FALSE) ``` diff --git a/bookdown/04_ReducedDims.Rmd b/bookdown/04_ReducedDims.Rmd index ac6f672..aaf8396 100644 --- a/bookdown/04_ReducedDims.Rmd +++ b/bookdown/04_ReducedDims.Rmd @@ -6,16 +6,23 @@ setwd("/Volumes/JG_SSD_2/ArchR_Walkthrough/") save.image("Save-ArchR-Walkthrough-Feb13-2130.Rdata") ``` -Dimensionality reduction with scATAC-seq is challenging due to the sparsity of the data. When we see multiple Tn5 insertions within a single peak it does not necessarily relate to that site being multiple times more accessible than -a different site. For this reason a lot of analytical strategies work on a binary scATAC-seq data matrix. First, it is important to determine which regions to use for dimensionality reduction. The main two strategies have been using ATAC-seq peaks or larger kilobase scale tiles genome-wide. However, determining a peak set is a bit challenging because it changes with the number of samples in each experiment. This makes comparisons of multiple data sets extremely challenging. Another strategy is to use large kilobase scale tiles which is promising because it solves the multiple sample comparison challenge by using a predetermined feature set. However, most of the time this is performed on a 5kb+ sized tiles which are much larger (10x) than an accessible region. ArchR was designed to merge these methods by creating a 500-bp genome-wide feature set. The challenge is that this cell by tile matrix is around 6 million features which is too large to read into R for many cells. Therefore, ArchR is designed to compute dimensionality reduction on a subset of these features that are more biologically relevant. +Dimensionality reduction with scATAC-seq is challenging due to the _sparsity_ of the data. In scATAC-seq, a particular site can either be accessible on one allele, both alleles, or no alleles. Even in higher-quality scATAC-seq data, the majority of accesible regions are not transposed and this leads to many loci having 0 accessibile alleles. Moreover, when we see (for example) three Tn5 insertions within a single peak region in a single cell, the sparsity of the data prevents us from confidently determining that this site in this cell is actually three times more accessible than another cell that only has one insertion in the same site. For this reason a lot of analytical strategies work on a binarized scATAC-seq data matrix. This binarized matrix still ends up being mostly 0s because transposition is rare. However, it is important to note that a 0 in scATAC-seq could mean "non-accessible" or "not sampled" and these two inferences are very different from a biological standpoint. Because of this, the 1s have information and the 0s do not. This low information content is what makes our scATAC-seq data _sparse_. -## Iterative Latent Semantic Indexing (LSI) +If you were to perform a standard dimensionality reduction, like Principal Component Analysis, on this sparse insertion counts matrix and plot the top two principal components, you would not obtain the desired result because the sparsity causes high inter-cell similarity at all of the 0 positions. To get around this issue, we use a layered dimensionality reduction approach. First, we use Latent Semantic Indexing (LSI), an approach from natural language processing that was originally designed to assess document similarity based on word counts. This solution was created for natural language processing because the data is sparse and noisy (many different words and many low frequency words). LSI was first introduced for scATAC-seq by [Cusanovich et al. (Science 2015)](https://www.ncbi.nlm.nih.gov/pubmed/25953818). In the case of scATAC-seq, different samples are the _documents_ and different regions/peaks are the _words_. First, we calculate the term frequency by depth normalization per single cell. These values are then normalized by the inverse document frequency which weights features by how often they occur to identify featres that are more "specific" rather than commonly accessible. The resultant term frequency-inverse document frequency (TF-IDF) matrix reflects how important a _word_ (aka region/peak) is to a _document_ (aka sample). Then, through a technique called singular value decomposition (SVD), the most _valuable_ information across samples is identified and represented in a lower dimensional space. LSI allows you to reduce the dimensionality of the sparse insertion counts matrix from many thousands to tens or hundreds. Then, a more conventional dimensionality reduction technique, such as Uniform Manifold Approximation and Projection (UMAP) or t-distributed stochastic neighbor embedding (t-SNE) can be used to visualize the data. In ArchR, these visualization methods are referred to as _embeddings_. + +## ArchR's LSI Implementation + +ArchR implements a few different LSI implementations and we have benchmarked many of these methods across multiple different test data sets. ArchR's default LSI implementation is related to the method introduced by Timothy Stuart in [Signac](https://satijalab.org/signac/), which uses a term frequency that has been depth normalized to a constant (10,000) followed by normalization with the inverse document frequency and then log-transforming the resultant matrix (aka `log(TF-IDF)`). -Latent semantic indexing (LSI) was first introduced for scATAC-seq by Cusanovich et al (Science 2015) as a form for analyzing scATAC-seq data. LSI commonly refers to computing the term frequency (TF) and then normalization by the inverse document frequency (IDF) to get a normalized matrix (TF-IDF) and then Singular Value Decomposition (SVD). The term frequency is simply dividing depth normalization per single cell. The inverse document frequency refers to weighting each feature by how often it occurs to weight features that are more "specific" rather than commonly accessible. There are many different TF-IDF transformations with their own merits. ArchR has a few LSI implementations and we have tested out many of these methods across many different test data sets. The default LSI implementation is related to the one introduced by Timothy Stuart, which depth normalizes to a constant (10,000) followed by normalization with the inverse document frequency and then log-transforming the resultant matrix (log(TF-IDF)).
+One of the key inputs to LSI dimensionality reduction is the starting matrix. Thus far, the main two strategies in scATAC-seq have been to (1) use peak regions or (2) genome-wide tiles. However, using peak regions for LSI is inherently challenging because we do not have clusters or cluster-specific peaks prior to dimensionality reduction. Moreover, calling peaks on aggregated cells prior to clustering obscures cell type-specific peaks. Moreover, any union peak set will change when new samples are added to an experiment, making this strategy less stable. The second strategy, using genome-wide tiles, mitigates these issues by using a consistent and unbiased feature set (genome-wide tiles). However, a genome-wide tile matrix of all cells by all regions can become prohibitively large. For this reason, most implementations use tiles that are greater than or equal to 5 kilobases in size. This drastically reduces the resolution of the approach because most accessible regions are only a few hundred basepairs long. + +Because of the way that Arrow files are designed, ArchR is able to perform LSI very rapidly using genome-wide 500-bp tiles. This solves the problem of resolution and allows for the identification of clusters prior to calling peaks. The challenge is that 500-bp bins generate around 6 million features to be included in the cell by tile matrix. While ArchR is able to read this large amount of data into R by chunking the relevant matrices, we have also implemented an "estimated LSI" approach that performs the initial dimensionality reduction on a subset of the total cells. + +## Iterative Latent Semantic Indexing (LSI) -In scRNA-seq identifying variable genes is a common way to compute dimensionality reduction (such as PCA). This is done becasue these genes are more likely to be biologically important and this reduces experimental noise. In scATAC-seq the data is binary and thus you cant identify variable peaks for dimensionality reduction. We have tried using the most accessible features instead, however the results when running multiple samples have had strong noise. To remedy this we introduced the iterative LSI approach (Satpathy+, Granja+ et al NBT 2019 and Granja+, Klemm+ and McGinnis+ et al NBT 2019). This approach computes an intial LSI transformation on the most accessible tiles and identifies lower resolution clusters that are not batch confounded (ie. in PBMCs just classifying T cells, B cells and Monocytes). Then ArchR computes the average accessibility for each of these clusters across all features creating "pseudobulks". Then ArchR identifies the variable peaks across these "pseudobulks" and then use these features for LSI again as these peaks are more similar to scRNA-seq's variable peaks. We have found this approach is very good for batch minimization and allows operations on a more reasonable sized matrix than a much larger sparse matrix. +In scRNA-seq identifying variable genes is a common way to compute dimensionality reduction (such as PCA). This is done becasue these genes are more likely to be biologically important and this reduces experimental noise. In scATAC-seq the data is binary and thus you cannot identify variable peaks for dimensionality reduction. Rather than identifying the most variable peaks, we have tried using the most accessible features as input to LSI; however, the results when running multiple samples have shown high degrees of noise and low reproducibility. To remedy this we introduced the "iterative LSI" approach ([Satpathy\*, Granja\* et al. Nature Biotechnology 2019](https://www.ncbi.nlm.nih.gov/pubmed/31375813) and [Granja\*, Klemm\* and McGinnis\* et al. Nature Biotechnology 2019](https://www.ncbi.nlm.nih.gov/pubmed/31792411)). This approach computes an intial LSI transformation on the most accessible tiles and identifies lower resolution clusters that are not batch confounded. For example, when performed on peripheral blood mononuclear cells, this will identify clusters corresponding to the major cell types (T cells, B cells, and monocytes). Then ArchR computes the average accessibility for each of these clusters across all features creating "pseudo-bulks". ArchR then identifies the most variable peaks across these pseudo-bulks and uses these features for LSI again. In this second iteration, the most variable peaks are more similar to the variable genes used in scRNA-seq LSI implementations. The user can set how many iterations of LSI should be performed. QQQ add new info on LSI implementation. We have found this approach to be very good for batch minimization and allows operations on a more reasonably sized feature matrix. -To do this we run `addIterativeLSI` with the default parameters which should cover most cases. See ?addIterativeLSI for more details on inputs. +To perform iterative LSI in ArchR, we use the `addIterativeLSI()` function. The default parameters which should cover most cases but we encourage you to explore the available parameters and how they each affect your particular data set. See `?addIterativeLSI` for more details on inputs. ```{r eval=FALSE} projHeme2 <- addIterativeLSI( @@ -33,7 +40,7 @@ projHeme2 <- addIterativeLSI( ) ``` -If you see downstream that you have subtle batch effects still another option is to add more LSI iterations and start from a lower intial clustering resolution as shown below. Additionally the number of variable features can be lowered to increase focus on the more variable features. +If you see downstream that you have subtle batch effects, another option is to add more LSI iterations and to start from a lower intial clustering resolution as shown below. Additionally the number of variable features can be lowered to increase focus on the more variable features. QQQ would be nice to see an example of what these batch effects look like and how this corrects them ```{r eval=FALSE} projHeme2 <- addIterativeLSI( @@ -51,7 +58,7 @@ projHeme2 <- addIterativeLSI( ) ``` -Additionally ArchR allows for a normal LSI transformation with `addLSI`, however we recommend the iterative procedure. +Additionally ArchR allows for a normal (non-iterative) LSI transformation via the `addLSI() function`, however we recommend the iterative procedure. ```{r eval=FALSE} projHeme2 <- addLSI( @@ -63,7 +70,7 @@ projHeme2 <- addLSI( ) ``` -Lastly, lets compute the iterativeLSI for the ArchRProject still containing doublets. +Lastly, lets compute the iterative LSI for the `ArchRProject` still containing doublets. ```{r eval=FALSE} projHeme1 <- addIterativeLSI( @@ -83,7 +90,7 @@ projHeme1 <- addIterativeLSI( ## Batch Effect Correction wtih Harmony -Sometimes the iterative LSI approach isnt enough of a correction for strong batch effect differences. For this reason we added a commonly used batch effect correction tool Harmony for scRNA (https://github.com/immunogenomics/harmony). We wrote a wrapper that will pass a dimensionality reduction object from ArchR directly to `HarmonyMatrix`. Additional arguments can be directly passed to `HarmonyMatrix` in the function. See ?addHarmony for more details. +Sometimes the iterative LSI approach isnt enough of a correction for strong batch effect differences. For this reason, ArchR implements a commonly used batch effect correction tool called [Harmony](https://github.com/immunogenomics/harmony) which was originally designed for scRNA-seq. We provide a wrapper that will pass a dimensionality reduction object from ArchR directly to the `HarmonyMatrix()` function. Additional arguments can be directly passed to `HarmonyMatrix` in the function. See `?addHarmony` for more details. Users should be aware of the caveats of batch correction for their particular application. ```{r eval=FALSE} projHeme2 <- addHarmony( diff --git a/bookdown/_book/.DS_Store b/bookdown/_book/.DS_Store deleted file mode 100644 index 90c9131..0000000 Binary files a/bookdown/_book/.DS_Store and /dev/null differ diff --git a/bookdown/_book/add-peak-matrix-1.html b/bookdown/_book/add-peak-matrix-1.html deleted file mode 100644 index af3ea36..0000000 --- a/bookdown/_book/add-peak-matrix-1.html +++ /dev/null @@ -1,346 +0,0 @@ - - - - - - - 15.3 Add Peak Matrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.3 Add Peak Matrix

-
getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-#~1-2 Minutes
-projHeme4 <- addPeakMatrix(projHeme4)
-
-getAvailableMatrices(projHeme4)
-# [1] "GeneIntegrationMatrix" "GeneScoreMatrix"       "PeakMatrix"           
-# [4] "TileMatrix" 
-

We can now save our original projHeme4 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme4)
- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/add-peak-matrix-2.html b/bookdown/_book/add-peak-matrix-2.html deleted file mode 100644 index 7cd086b..0000000 --- a/bookdown/_book/add-peak-matrix-2.html +++ /dev/null @@ -1,347 +0,0 @@ - - - - - - - 15.3 Add Peak Matrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.3 Add Peak Matrix

-
getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-#~1-2 Minutes
-projHeme4 <- addPeakMatrix(projHeme4)
-
-getAvailableMatrices(projHeme4)
-# [1] "GeneIntegrationMatrix" "GeneScoreMatrix"       "PeakMatrix"           
-# [4] "TileMatrix" 
-

We can now save our original projHeme4 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme4)
- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/add-peak-matrix-3.html b/bookdown/_book/add-peak-matrix-3.html deleted file mode 100644 index 7304f0b..0000000 --- a/bookdown/_book/add-peak-matrix-3.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - - - - 15.3 Add Peak Matrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.3 Add Peak Matrix

-
getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-#~1-2 Minutes
-projHeme4 <- addPeakMatrix(projHeme4)
-
-getAvailableMatrices(projHeme4)
-# [1] "GeneIntegrationMatrix" "GeneScoreMatrix"       "PeakMatrix"           
-# [4] "TileMatrix" 
-

We can now save our original projHeme4 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme4)
- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/add-peak-matrix-4.html b/bookdown/_book/add-peak-matrix-4.html deleted file mode 100644 index 51f12a2..0000000 --- a/bookdown/_book/add-peak-matrix-4.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - - - - 15.3 Add Peak Matrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.3 Add Peak Matrix

-
getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-#~1-2 Minutes
-projHeme4 <- addPeakMatrix(projHeme4)
-
-getAvailableMatrices(projHeme4)
-# [1] "GeneIntegrationMatrix" "GeneScoreMatrix"       "PeakMatrix"           
-# [4] "TileMatrix" 
-

We can now save our original projHeme4 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme4)
- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/add-peak-matrix-5.html b/bookdown/_book/add-peak-matrix-5.html deleted file mode 100644 index 945e4e5..0000000 --- a/bookdown/_book/add-peak-matrix-5.html +++ /dev/null @@ -1,331 +0,0 @@ - - - - - - - 15.3 Add Peak Matrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.3 Add Peak Matrix

-
getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-#~1-2 Minutes
-projHeme4 <- addPeakMatrix(projHeme4)
-
-getAvailableMatrices(projHeme4)
-# [1] "GeneIntegrationMatrix" "GeneScoreMatrix"       "PeakMatrix"           
-# [4] "TileMatrix" 
-

We can now save our original projHeme4 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme4)
- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/add-peak-matrix-6.html b/bookdown/_book/add-peak-matrix-6.html deleted file mode 100644 index afb6dbb..0000000 --- a/bookdown/_book/add-peak-matrix-6.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - 15.3 Add Peak Matrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.3 Add Peak Matrix

-
getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-#~1-2 Minutes
-projHeme4 <- addPeakMatrix(projHeme4)
-
-getAvailableMatrices(projHeme4)
-# [1] "GeneIntegrationMatrix" "GeneScoreMatrix"       "PeakMatrix"           
-# [4] "TileMatrix" 
-

We can now save our original projHeme4 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme4)
- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/add-peak-matrix.html b/bookdown/_book/add-peak-matrix.html deleted file mode 100644 index c6cbc7b..0000000 --- a/bookdown/_book/add-peak-matrix.html +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - 9.3 Add Peak Matrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

9.3 Add Peak Matrix

-

We can now save our original projHeme4 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme4)
-
getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-#~1-2 Minutes
-projHeme5 <- addPeakMatrix(projHeme4)
-
-getAvailableMatrices(projHeme5)
-# [1] "GeneIntegrationMatrix" "GeneScoreMatrix"       "PeakMatrix"           
-# [4] "TileMatrix" 
- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/adding-pseudo-scrna-profiles-for-each-scatac-cell.html b/bookdown/_book/adding-pseudo-scrna-profiles-for-each-scatac-cell.html deleted file mode 100644 index a8f4728..0000000 --- a/bookdown/_book/adding-pseudo-scrna-profiles-for-each-scatac-cell.html +++ /dev/null @@ -1,451 +0,0 @@ - - - - - - - 8.2 Adding Pseudo-scRNA profiles for each scATAC cell | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

8.2 Adding Pseudo-scRNA profiles for each scATAC cell

-

First we need to download scRNA data for hematopoiesis from Granja* et al (2019).

-
#259 MB Download
-if(!file.exists("scRNA-Healthy-Hematopoiesis-191120.rds")){
-    download.file(
-        url = "https://jeffgranja.s3.amazonaws.com/MPAL-10x/Supplementary_Data/Healthy-Data/scRNA-Healthy-Hematopoiesis-191120.rds",
-        destfile = "scRNA-Healthy-Hematopoiesis-191120.rds"
-    )
-}
-
-seRNA <- readRDS("scRNA-Healthy-Hematopoiesis-191120.rds")
-seRNA
-# class: RangedSummarizedExperiment 
-# dim: 20287 35582 
-# metadata(6): variableGenes optimizeLSI ... UMAP_Params colorMap
-# assays(1): counts
-# rownames(20287): FAM138A OR4F5 ... S100B PRMT2
-# rowData names(3): gene_name gene_id exonLength
-# colnames(35582): CD34_32_R5:AAACCTGAGTATCGAA-1
-#   CD34_32_R5:AAACCTGAGTCGTTTG-1 ...
-#   BMMC_10x_GREENLEAF_REP2:TTTGTTGCATGTGTCA-1
-#   BMMC_10x_GREENLEAF_REP2:TTTGTTGCATTGAAAG-1
-# colData names(10): Group nUMI_pre ... BioClassification Barcode
-
-colnames(colData(seRNA))
-# [1] "Group"             "nUMI_pre"          "nUMI"             
-# [4] "nGene"             "initialClusters"   "UMAP1"            
-# [7] "UMAP2"             "Clusters"          "BioClassification"
-# [10] "Barcode"          
-
-table(colData(seRNA)$BioClassification)
-#         01_HSC 02_Early.Eryth  03_Late.Eryth  04_Early.Baso    05_CMP.LMPP 
-#           1425           1653            446            111           2260 
-#       06_CLP.1         07_GMP    08_GMP.Neut         09_pDC         10_cDC 
-#            903           2097           1050            544            325 
-# 11_CD14.Mono.1 12_CD14.Mono.2   13_CD16.Mono         14_Unk       15_CLP.2 
-#           1800           4222            292            520            377 
-#       16_Pre.B           17_B      18_Plasma       19_CD8.N      20_CD4.N1 
-#            710           1711             62           1521           2470 
-#      21_CD4.N2       22_CD4.M      23_CD8.EM      24_CD8.CM          25_NK 
-#           2364           3539            796           2080           2143 
-#         26_Unk 
-#            161 
-

We can now save our original projHeme2 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme2)
-

Constrained Integration (recommended)

-
sampleList <- SimpleList(
-    scATAC_BMMC_R1 = grep("BMMC", colnames(seRNA), ignore.case = TRUE, value = TRUE),
-    scATAC_CD34_BMMC_R1 = grep("CD34", colnames(seRNA), ignore.case = TRUE, value = TRUE),
-    scATAC_PBMC_R1 = grep("PBMC", colnames(seRNA), ignore.case = TRUE, value = TRUE)
-)
-
-#To see size of each list element
-lapply(sampleList, length)
-# $scATAC_BMMC_R1
-# [1] 12602
-
-# $scATAC_CD34_BMMC_R1
-# [1] 8176
-
-# $scATAC_PBMC_R1
-# [1] 14804
-
-#~5 minutes
-projHeme3 <- addGeneIntegrationMatrix(
-    ArchRProj = projHeme2, 
-    seRNA = seRNA, 
-    sampleList = sampleList,
-    addToArrow = TRUE, # We are going to add scRNA to each Arrow
-    groupBy = "BioClassification",
-    nameGroup = "predictedGroup",
-    nameScore = "predictedScore"
-)
-

What matrices are available?

-
getAvailableMatrices(projHeme3)
-#[1] "GeneIntegrationMatrix" "GeneScoreMatrix"       "TileMatrix"
-

Now lets see how this effects our marker gene scores overlayed on our 2-d embedding.

-
markerGenes  <- c(
-    "CD34", #Early Progenitor
-    "GATA1", #Erythroid
-    "PAX5", "MS4A1", #B-Cell Trajectory
-    "CD14", #Monocytes
-    "CD3D", "CD8A", "TBX21", "IL7R" #TCells
-  )
-
-p1 <- plotEmbedding(
-    ArchRProj = projHeme3, 
-    colorBy = "GeneIntegrationMatrix", 
-    name = markerGenes, 
-    continuousSet = "horizonExtra",
-    embedding = "UMAP",
-    imputeWeights = getImputeWeights(projHeme3)
-)
-
-p2 <- plotEmbedding(
-    ArchRProj = projHeme3, 
-    colorBy = "GeneScoreMatrix", 
-    continuousSet = "horizonExtra",
-    name = markerGenes, 
-    embedding = "UMAP",
-    imputeWeights = getImputeWeights(projHeme3)
-)
-

To plot all marker genes we can use cowplot

-
#Rearrange for grid plotting
-p1c <- lapply(p1, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-
-#Rearrange for grid plotting
-p2c <- lapply(p2, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-
-do.call(cowplot::plot_grid, c(list(ncol = 3), p1c))
-

-
do.call(cowplot::plot_grid, c(list(ncol = 3), p2c))
-

-

To save a nice looking pdf we use plotPDF which removes white pages and tries to make the plots -nice looking.

-
plotPDF(plotList = p1, 
-    name = "Plot-UMAP-Marker-Genes-RNA-W-Imputation.pdf", 
-    ArchRProj = projHeme3, 
-    addDOC = FALSE, width = 5, height = 5)
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/archr-annotation-deviations-atac-seq.html b/bookdown/_book/archr-annotation-deviations-atac-seq.html deleted file mode 100644 index 483d6fc..0000000 --- a/bookdown/_book/archr-annotation-deviations-atac-seq.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - - - - 12.3 ArchR Annotation Deviations : ATAC-seq | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

12.3 ArchR Annotation Deviations : ATAC-seq

-

If you have not added motif annotations

-
projHeme5 <- addArchRAnnotations(ArchRProj = projHeme5, collection = "ATAC")
-

If you have not added background peaks

-
projHeme5 <- addBgdPeaks(projHeme5)
-

Add ChromVAR Deviations for Motifs

-
addArchRThreads(8)
-
-projHeme5 <- addDeviationsMatrix(
-  ArchRProj = projHeme5, 
-  peakAnnotation = "ATAC"
-)
-

Plot Variable Motif Annotations

-
plotVarDev <- getVarDeviations(projHeme5, plot = TRUE, name = "ATACMatrix")
-# DataFrame with 6 rows and 6 columns
-#     seqnames     idx                    name     combinedVars
-#        <Rle> <array>                 <array>        <numeric>
-# f22        z      22   IAtlas_T_CD8posCenMem 12.0581125421541
-# f86        z      86                Heme_CD8 11.6532963605177
-# f85        z      85                Heme_CD4 11.5670776340581
-# f23        z      23   IAtlas_T_CD8posEffMem 11.4627247478874
-# f33        z      33   IAtlas_T_Th1Precursor 11.4097813814495
-# f19        z      19 IAtlas_T_CD4posEffector  11.398315976261
-plotVarDev
-

-

We can then plot this as a nice PDF

-
plotPDF(plotVarDev, name = "Variable-ATAC-Deviation-Scores", width = 5, height = 5, ArchRProj = projHeme5, addDOC = FALSE)
-

If we want to get TF feature names for downstream plotting

-
ATACPeaks <- c("Heme_HSC", "Heme_LMPP", "Heme_Ery", "Heme_Mono", "Heme_CD4", "Heme_CD8", "Heme_B", "Heme_NK", "IAtlas_DC_Plasmacytoid")
-getFeatures(projHeme5, select = paste(ATACPeaks, collapse="|"), useMatrix = "ATACMatrix")
-#  [1] "z:Heme_NK"                         "z:Heme_Mono"                      
-#  [3] "z:Heme_MEP"                        "z:Heme_LMPP"                      
-#  [5] "z:Heme_HSC"                        "z:Heme_CD8"                       
-#  [7] "z:Heme_CD4"                        "z:Heme_B"                         
-#  [9] "z:IAtlas_DC_Plasmacytoid"          "deviations:Heme_NK"               
-# [11] "deviations:Heme_Mono"              "deviations:Heme_MEP"              
-# [13] "deviations:Heme_LMPP"              "deviations:Heme_HSC"              
-# [15] "deviations:Heme_CD8"               "deviations:Heme_CD4"              
-# [17] "deviations:Heme_B"                 "deviations:IAtlas_DC_Plasmacytoid"
-

To get deviation z-scores

-
markerATAC <- getFeatures(projHeme5, select = paste(ATACPeaks, collapse="|"), useMatrix = "ATACMatrix")
-markerATAC <- sort(grep("z:", markerATAC, value = TRUE))
-markerATAC
-# [1] "z:Heme_B"                 "z:Heme_CD4"              
-# [3] "z:Heme_CD8"               "z:Heme_HSC"              
-# [5] "z:Heme_MEP"               "z:Heme_Mono"             
-# [7] "z:Heme_NK"                "z:IAtlas_DC_Plasmacytoid"
-
p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "ATACMatrix", 
-    name = markerATAC, 
-    embedding = "UMAP",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-

To plot all motifs we can use cowplot

-
#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 3),p2))
-

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/archr-annotation-deviations-encode-tfbs.html b/bookdown/_book/archr-annotation-deviations-encode-tfbs.html deleted file mode 100644 index 01e28e3..0000000 --- a/bookdown/_book/archr-annotation-deviations-encode-tfbs.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - - - - 12.2 ArchR Annotation Deviations : Encode TFBS | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

12.2 ArchR Annotation Deviations : Encode TFBS

-

If you have not added motif annotations

-
projHeme5 <- addArchRAnnotations(ArchRProj = projHeme5, collection = "EncodeTFBS")
-

If you have not added background peaks

-
projHeme5 <- addBgdPeaks(projHeme5)
-

Add ChromVAR Deviations for Motifs

-
addArchRThreads(8)
-
-projHeme5 <- addDeviationsMatrix(
-  ArchRProj = projHeme5, 
-  peakAnnotation = "EncodeTFBS"
-)
-

Plot Variable Motif Annotations

-
plotVarDev <- getVarDeviations(projHeme5, plot = TRUE, name = "EncodeTFBSMatrix")
-# DataFrame with 6 rows and 6 columns
-#      seqnames     idx                    name     combinedVars
-#         <Rle> <array>                 <array>        <numeric>
-# f222        z     222     222.GATA2_S-K562... 13.3776606277002
-# f41         z      41      41.EZH2_39-NHEK... 12.9568688227648
-# f542        z     542     542.TAL1_SC-K562... 11.3037382536044
-# f498        z     498      498.GATA_2-K562... 10.2006515402356
-# f584        z     584 584.GATA_1-PBDEFetal... 10.0732825204346
-# f44         z      44      44.EZH2_39-NHLF... 9.67400298749933
-plotVarDev
-

-

We can then plot this as a nice PDF

-
plotPDF(plotVarDev, name = "Variable-EncodeTFBS-Deviation-Scores", width = 5, height = 5, ArchRProj = projHeme5, addDOC = FALSE)
-

If we want to get TF feature names for downstream plotting

-
tfs <- c("GATA_1", "CEBPB", "EBF1", "IRF4", "TBX21", "PAX5")
-getFeatures(projHeme5, select = paste(tfs, collapse="|"), useMatrix = "EncodeTFBSMatrix")
-#  [1] "z:584.GATA_1-PBDEFetal..."          "z:582.GATA_1-PBDE..."              
-#  [3] "z:497.GATA_1-K562..."               "z:477.CEBPB-K562..."               
-#  [5] "z:462.CEBPB-IMR90..."               "z:427.CEBPB-HepG2..."              
-#  [7] "z:426.CEBPB-HepG2..."               "z:379.CEBPB-HeLa_S3..."            
-#  [9] "z:344.CEBPB-H1_hESC..."             "z:293.EBF1_SC-GM12878..."          
-# [11] "z:278.CEBPB-A549..."                "z:213.CEBPB_S-K562..."             
-# [13] "z:173.CEBPB_S-HepG2..."             "z:130.PAX5_C2-GM12892..."          
-# [15] "z:123.PAX5_C2-GM12891..."           "z:102.PAX5_N1-GM12878..."          
-# [17] "z:101.PAX5_C2-GM12878..."           "z:93.IRF4_SC-GM12878..."           
-# [19] "z:87.EBF1_SC-GM12878..."            "z:86.CEBPB_S-GM12878..."           
-# [21] "deviations:584.GATA_1-PBDEFetal..." "deviations:582.GATA_1-PBDE..."     
-# [23] "deviations:497.GATA_1-K562..."      "deviations:477.CEBPB-K562..."      
-# [25] "deviations:462.CEBPB-IMR90..."      "deviations:427.CEBPB-HepG2..."     
-# [27] "deviations:426.CEBPB-HepG2..."      "deviations:379.CEBPB-HeLa_S3..."   
-# [29] "deviations:344.CEBPB-H1_hESC..."    "deviations:293.EBF1_SC-GM12878..." 
-# [31] "deviations:278.CEBPB-A549..."       "deviations:213.CEBPB_S-K562..."    
-# [33] "deviations:173.CEBPB_S-HepG2..."    "deviations:130.PAX5_C2-GM12892..." 
-# [35] "deviations:123.PAX5_C2-GM12891..."  "deviations:102.PAX5_N1-GM12878..." 
-# [37] "deviations:101.PAX5_C2-GM12878..."  "deviations:93.IRF4_SC-GM12878..."  
-# [39] "deviations:87.EBF1_SC-GM12878..."   "deviations:86.CEBPB_S-GM12878..."
-

To get deviation z-scores

-
markerTFs <- getFeatures(projHeme5, select = paste(tfs, collapse="|"), useMatrix = "EncodeTFBSMatrix")
-markerTFs <- sort(grep("z:", markerTFs, value = TRUE))
-TFnames <- stringr::str_split(stringr::str_split(markerTFs, pattern = "\\.", simplify=TRUE)[,2], pattern = "-", simplify = TRUE)[,1]
-markerTFs <- markerTFs[!duplicated(TFnames)]
-markerTFs
-# [1] "z:101.PAX5_C2-GM12878..." "z:102.PAX5_N1-GM12878..."
-# [3] "z:173.CEBPB_S-HepG2..."   "z:278.CEBPB-A549..."     
-# [5] "z:293.EBF1_SC-GM12878..." "z:497.GATA_1-K562..."    
-# [7] "z:93.IRF4_SC-GM12878..." 
-
p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "EncodeTFBSMatrix", 
-    name = markerTFs, 
-    embedding = "UMAP",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-

To plot all motifs we can use cowplot

-
#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 3),p2))
-

-

We can also plot the gene expression profiles for each of these TFs

-
markerRNA <- getFeatures(projHeme5, select = paste(gsub("_","",tfs), collapse="|"), useMatrix = "GeneScoreMatrix")
-markerRNA <- markerRNA[markerRNA %ni% c("SREBF1")]
-markerRNA
-#[1] "TBX21" "CEBPA" "EBF1"  "IRF4"  "PAX5"  "GATA1"
-
-p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "GeneScoreMatrix", 
-    name = sort(markerRNA), 
-    embedding = "UMAP",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-
-#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 3),p2))
-

-

We can also plot the gene expression profiles for each of these TFs

-
markerRNA <- getFeatures(projHeme5, select = paste(gsub("_","",tfs), collapse="|"), useMatrix = "GeneIntegrationMatrix")
-markerRNA <- markerRNA[markerRNA %ni% c("SREBF1","CEBPA-DT")]
-markerRNA
-#[1] "TBX21" "CEBPA" "EBF1"  "IRF4"  "PAX5"  "GATA1"
-
-p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "GeneIntegrationMatrix", 
-    name = sort(markerRNA), 
-    embedding = "UMAP",
-    continuousSet = "blueYellow",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-
-#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 3),p2))
-

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/archr-annotation-deviations.html b/bookdown/_book/archr-annotation-deviations.html deleted file mode 100644 index 21c3d52..0000000 --- a/bookdown/_book/archr-annotation-deviations.html +++ /dev/null @@ -1,526 +0,0 @@ - - - - - - - 12.2 ArchR Annotation Deviations | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

12.2 ArchR Annotation Deviations

-
-

12.2.1 Encode TFBS

-

If you have not added motif annotations

-
projHeme5 <- addArchRAnnotations(ArchRProj = projHeme5, collection = "EncodeTFBS")
-

If you have not added background peaks

-
projHeme5 <- addBgdPeaks(projHeme5)
-

Add ChromVAR Deviations for Motifs

-
addArchRThreads(8)
-
-projHeme5 <- addDeviationsMatrix(
-  ArchRProj = projHeme5, 
-  peakAnnotation = "EncodeTFBS"
-)
-

Plot Variable Motif Annotations

-
plotVarDev <- getVarDeviations(projHeme5, plot = TRUE, name = "EncodeTFBSMatrix")
-# DataFrame with 6 rows and 6 columns
-#      seqnames     idx                    name     combinedVars
-#         <Rle> <array>                 <array>        <numeric>
-# f222        z     222     222.GATA2_S-K562... 13.3776606277002
-# f41         z      41      41.EZH2_39-NHEK... 12.9568688227648
-# f542        z     542     542.TAL1_SC-K562... 11.3037382536044
-# f498        z     498      498.GATA_2-K562... 10.2006515402356
-# f584        z     584 584.GATA_1-PBDEFetal... 10.0732825204346
-# f44         z      44      44.EZH2_39-NHLF... 9.67400298749933
-plotVarDev
-

-

We can then plot this as a nice PDF

-
plotPDF(plotVarDev, name = "Variable-EncodeTFBS-Deviation-Scores", width = 5, height = 5, ArchRProj = projHeme5, addDOC = FALSE)
-

If we want to get TF feature names for downstream plotting

-
tfs <- c("GATA_1", "CEBPB", "EBF1", "IRF4", "TBX21", "PAX5")
-getFeatures(projHeme5, select = paste(tfs, collapse="|"), useMatrix = "EncodeTFBSMatrix")
-#  [1] "z:584.GATA_1-PBDEFetal..."          "z:582.GATA_1-PBDE..."              
-#  [3] "z:497.GATA_1-K562..."               "z:477.CEBPB-K562..."               
-#  [5] "z:462.CEBPB-IMR90..."               "z:427.CEBPB-HepG2..."              
-#  [7] "z:426.CEBPB-HepG2..."               "z:379.CEBPB-HeLa_S3..."            
-#  [9] "z:344.CEBPB-H1_hESC..."             "z:293.EBF1_SC-GM12878..."          
-# [11] "z:278.CEBPB-A549..."                "z:213.CEBPB_S-K562..."             
-# [13] "z:173.CEBPB_S-HepG2..."             "z:130.PAX5_C2-GM12892..."          
-# [15] "z:123.PAX5_C2-GM12891..."           "z:102.PAX5_N1-GM12878..."          
-# [17] "z:101.PAX5_C2-GM12878..."           "z:93.IRF4_SC-GM12878..."           
-# [19] "z:87.EBF1_SC-GM12878..."            "z:86.CEBPB_S-GM12878..."           
-# [21] "deviations:584.GATA_1-PBDEFetal..." "deviations:582.GATA_1-PBDE..."     
-# [23] "deviations:497.GATA_1-K562..."      "deviations:477.CEBPB-K562..."      
-# [25] "deviations:462.CEBPB-IMR90..."      "deviations:427.CEBPB-HepG2..."     
-# [27] "deviations:426.CEBPB-HepG2..."      "deviations:379.CEBPB-HeLa_S3..."   
-# [29] "deviations:344.CEBPB-H1_hESC..."    "deviations:293.EBF1_SC-GM12878..." 
-# [31] "deviations:278.CEBPB-A549..."       "deviations:213.CEBPB_S-K562..."    
-# [33] "deviations:173.CEBPB_S-HepG2..."    "deviations:130.PAX5_C2-GM12892..." 
-# [35] "deviations:123.PAX5_C2-GM12891..."  "deviations:102.PAX5_N1-GM12878..." 
-# [37] "deviations:101.PAX5_C2-GM12878..."  "deviations:93.IRF4_SC-GM12878..."  
-# [39] "deviations:87.EBF1_SC-GM12878..."   "deviations:86.CEBPB_S-GM12878..."
-

To get deviation z-scores

-
markerTFs <- getFeatures(projHeme5, select = paste(tfs, collapse="|"), useMatrix = "EncodeTFBSMatrix")
-markerTFs <- sort(grep("z:", markerTFs, value = TRUE))
-TFnames <- stringr::str_split(stringr::str_split(markerTFs, pattern = "\\.", simplify=TRUE)[,2], pattern = "-", simplify = TRUE)[,1]
-markerTFs <- markerTFs[!duplicated(TFnames)]
-markerTFs
-# [1] "z:101.PAX5_C2-GM12878..." "z:102.PAX5_N1-GM12878..."
-# [3] "z:173.CEBPB_S-HepG2..."   "z:278.CEBPB-A549..."     
-# [5] "z:293.EBF1_SC-GM12878..." "z:497.GATA_1-K562..."    
-# [7] "z:93.IRF4_SC-GM12878..." 
-
p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "EncodeTFBSMatrix", 
-    name = markerTFs, 
-    embedding = "UMAP",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-

To plot all motifs we can use cowplot

-
#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 3),p2))
-

-

We can also plot the gene expression profiles for each of these TFs

-
markerRNA <- getFeatures(projHeme5, select = paste(gsub("_","",tfs), collapse="|"), useMatrix = "GeneScoreMatrix")
-markerRNA <- markerRNA[markerRNA %ni% c("SREBF1")]
-markerRNA
-#[1] "TBX21" "CEBPA" "EBF1"  "IRF4"  "PAX5"  "GATA1"
-
-p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "GeneScoreMatrix", 
-    name = sort(markerRNA), 
-    embedding = "UMAP",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-
-#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 3),p2))
-

-

We can also plot the gene expression profiles for each of these TFs

-
markerRNA <- getFeatures(projHeme5, select = paste(gsub("_","",tfs), collapse="|"), useMatrix = "GeneIntegrationMatrix")
-markerRNA <- markerRNA[markerRNA %ni% c("SREBF1","CEBPA-DT")]
-markerRNA
-#[1] "TBX21" "CEBPA" "EBF1"  "IRF4"  "PAX5"  "GATA1"
-
-p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "GeneIntegrationMatrix", 
-    name = sort(markerRNA), 
-    embedding = "UMAP",
-    continuousSet = "blueYellow",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-
-#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 3),p2))
-

-
-
-

12.2.2 Bulk ATAC-seq

-

If you have not added motif annotations

-
projHeme5 <- addArchRAnnotations(ArchRProj = projHeme5, collection = "ATAC")
-

If you have not added background peaks

-
projHeme5 <- addBgdPeaks(projHeme5)
-

Add ChromVAR Deviations for Motifs

-
addArchRThreads(8)
-
-projHeme5 <- addDeviationsMatrix(
-  ArchRProj = projHeme5, 
-  peakAnnotation = "ATAC"
-)
-

Plot Variable Motif Annotations

-
plotVarDev <- getVarDeviations(projHeme5, plot = TRUE, name = "ATACMatrix")
-# DataFrame with 6 rows and 6 columns
-#     seqnames     idx                    name     combinedVars
-#        <Rle> <array>                 <array>        <numeric>
-# f22        z      22   IAtlas_T_CD8posCenMem 12.0581125421541
-# f86        z      86                Heme_CD8 11.6532963605177
-# f85        z      85                Heme_CD4 11.5670776340581
-# f23        z      23   IAtlas_T_CD8posEffMem 11.4627247478874
-# f33        z      33   IAtlas_T_Th1Precursor 11.4097813814495
-# f19        z      19 IAtlas_T_CD4posEffector  11.398315976261
-plotVarDev
-

-

We can then plot this as a nice PDF

-
plotPDF(plotVarDev, name = "Variable-ATAC-Deviation-Scores", width = 5, height = 5, ArchRProj = projHeme5, addDOC = FALSE)
-

If we want to get TF feature names for downstream plotting

-
ATACPeaks <- c("Heme_HSC", "Heme_LMPP", "Heme_Ery", "Heme_Mono", "Heme_CD4", "Heme_CD8", "Heme_B", "Heme_NK", "IAtlas_DC_Plasmacytoid")
-getFeatures(projHeme5, select = paste(ATACPeaks, collapse="|"), useMatrix = "ATACMatrix")
-#  [1] "z:Heme_NK"                         "z:Heme_Mono"                      
-#  [3] "z:Heme_MEP"                        "z:Heme_LMPP"                      
-#  [5] "z:Heme_HSC"                        "z:Heme_CD8"                       
-#  [7] "z:Heme_CD4"                        "z:Heme_B"                         
-#  [9] "z:IAtlas_DC_Plasmacytoid"          "deviations:Heme_NK"               
-# [11] "deviations:Heme_Mono"              "deviations:Heme_MEP"              
-# [13] "deviations:Heme_LMPP"              "deviations:Heme_HSC"              
-# [15] "deviations:Heme_CD8"               "deviations:Heme_CD4"              
-# [17] "deviations:Heme_B"                 "deviations:IAtlas_DC_Plasmacytoid"
-

To get deviation z-scores

-
markerATAC <- getFeatures(projHeme5, select = paste(ATACPeaks, collapse="|"), useMatrix = "ATACMatrix")
-markerATAC <- sort(grep("z:", markerATAC, value = TRUE))
-markerATAC
-# [1] "z:Heme_B"                 "z:Heme_CD4"              
-# [3] "z:Heme_CD8"               "z:Heme_HSC"              
-# [5] "z:Heme_MEP"               "z:Heme_Mono"             
-# [7] "z:Heme_NK"                "z:IAtlas_DC_Plasmacytoid"
-
p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "ATACMatrix", 
-    name = markerATAC, 
-    embedding = "UMAP",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-

To plot all motifs we can use cowplot

-
#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 3),p2))
-

-
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/archr-annotation-enrichment.html b/bookdown/_book/archr-annotation-enrichment.html deleted file mode 100644 index 350edfd..0000000 --- a/bookdown/_book/archr-annotation-enrichment.html +++ /dev/null @@ -1,401 +0,0 @@ - - - - - - - 11.2 ArchR Annotation Enrichment | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

11.2 ArchR Annotation Enrichment

-
-

11.2.1 Encode TFBS

-
projHeme5 <- addArchRAnnotations(ArchRProj = projHeme5, collection = "EncodeTFBS")
-
-#Identify EncodeTFBS Enrichments
-enrichEncode <- peakAnnoEnrichment(
-    seMarker = markersPeaks,
-    ArchRProj = projHeme5,
-    peakAnnotation = "EncodeTFBS",
-    cutOff = "FDR <= 0.1 & Log2FC >= 0.5"
-  )
-enrichEncode
-# class: SummarizedExperiment 
-# dim: 689 14 
-# metadata(0):
-# assays(10): mlog10Padj mlog10p ... CompareFrequency feature
-# rownames(689): 1.CTCF-Dnd41... 2.EZH2_39-Dnd41... ...
-#   688.CTCF-WERI_Rb_1... 689.CTCF-WI_38...
-# rowData names(0):
-# colnames(14): C1_Early.Eryth C2_CD4.N1 ... C13_CLP.2 C14_pDC
-# colData names(0):
-
-#Heatmap
-heatmapEncode <- enrichHeatmap(enrichEncode, n = 7, transpose = TRUE)
-draw(heatmapEncode, heatmap_legend_side = "bot", annotation_legend_side = "bot")
-

-

We can then plot this

-
plotPDF(heatmapEncode, name = "EncodeTFBS-Enriched-Marker-Heatmap", width = 8, height = 6, ArchRProj = projHeme5, addDOC = FALSE)
-
-
-

11.2.2 Bulk ATAC-seq

-
projHeme5 <- addArchRAnnotations(ArchRProj = projHeme5, collection = "ATAC")
-
-#Identify ATAC Enrichments
-enrichATAC <- peakAnnoEnrichment(
-    seMarker = markersPeaks,
-    ArchRProj = projHeme5,
-    peakAnnotation = "ATAC",
-    cutOff = "FDR <= 0.1 & Log2FC >= 0.5"
-  )
-enrichATAC
-# class: SummarizedExperiment 
-# dim: 96 14 
-# metadata(0):
-# assays(10): mlog10Padj mlog10p ... CompareFrequency feature
-# rownames(96): Brain_Astrocytes Brain_Excitatory_neurons ... Heme_MPP
-#   Heme_NK
-# rowData names(0):
-# colnames(14): C1_Early.Eryth C2_CD4.N1 ... C13_CLP.2 C14_pDC
-# colData names(0):
-
-#Heatmap
-heatmapATAC <- enrichHeatmap(enrichATAC, n = 7, transpose = TRUE)
-draw(heatmapATAC, heatmap_legend_side = "bot", annotation_legend_side = "bot")
-

-

We can then plot this

-
plotPDF(heatmapATAC, name = "ATAC-Enriched-Marker-Heatmap", width = 8, height = 6, ArchRProj = projHeme5, addDOC = FALSE)
-
-
-

11.2.3 Codex TFBS

-
projHeme5 <- addArchRAnnotations(ArchRProj = projHeme5, collection = "Codex")
-
-#Identify Codex Enrichments
-enrichCodex <- peakAnnoEnrichment(
-    seMarker = markersPeaks,
-    ArchRProj = projHeme5,
-    peakAnnotation = "Codex",
-    cutOff = "FDR <= 0.1 & Log2FC >= 0.5"
-  )
-enrichCodex
-# class: SummarizedExperiment 
-# dim: 189 14 
-# metadata(0):
-# assays(10): mlog10Padj mlog10p ... CompareFrequency feature
-# rownames(189): 1.STAT5-No_drug_(DMSO)... 2.RUNX3-GM12878_cell_fr... ...
-#   188.TP53-codex_Embryonic... 189.TP53-codex_Embryonic...
-# rowData names(0):
-# colnames(14): C1_Early.Eryth C2_CD4.N1 ... C13_CLP.2 C14_pDC
-# colData names(0):
-
-#Heatmap
-heatmapCodex <- enrichHeatmap(enrichCodex, n = 7, transpose = TRUE)
-draw(heatmapCodex, heatmap_legend_side = "bot", annotation_legend_side = "bot")
-

-

We can then plot this

-
plotPDF(heatmapCodex, name = "Codex-Enriched-Marker-Heatmap", width = 8, height = 6, ArchRProj = projHeme5, addDOC = FALSE)
-
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/archr-deviations.html b/bookdown/_book/archr-deviations.html deleted file mode 100644 index 73c64c7..0000000 --- a/bookdown/_book/archr-deviations.html +++ /dev/null @@ -1,525 +0,0 @@ - - - - - - - 12.2 ArchR Deviations | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

12.2 ArchR Deviations

-
-

12.2.1 Encode TFBS

-

If you have not added motif annotations

-
projHeme5 <- addArchRAnnotations(ArchRProj = projHeme5, collection = "EncodeTFBS")
-

If you have not added background peaks

-
projHeme5 <- addBgdPeaks(projHeme5)
-

Add ChromVAR Deviations for Motifs

-
addArchRThreads(8)
-
-projHeme5 <- addDeviationsMatrix(
-  ArchRProj = projHeme5, 
-  peakAnnotation = "EncodeTFBS"
-)
-

Plot Variable Motif Annotations

-
plotVarDev <- getVarDeviations(projHeme5, plot = TRUE, name = "EncodeTFBSMatrix")
-# DataFrame with 6 rows and 6 columns
-#      seqnames     idx                    name     combinedVars
-#         <Rle> <array>                 <array>        <numeric>
-# f222        z     222     222.GATA2_S-K562... 13.3776606277002
-# f41         z      41      41.EZH2_39-NHEK... 12.9568688227648
-# f542        z     542     542.TAL1_SC-K562... 11.3037382536044
-# f498        z     498      498.GATA_2-K562... 10.2006515402356
-# f584        z     584 584.GATA_1-PBDEFetal... 10.0732825204346
-# f44         z      44      44.EZH2_39-NHLF... 9.67400298749933
-plotVarDev
-

-

We can then plot this as a nice PDF

-
plotPDF(plotVarDev, name = "Variable-EncodeTFBS-Deviation-Scores", width = 5, height = 5, ArchRProj = projHeme5, addDOC = FALSE)
-

If we want to get TF feature names for downstream plotting

-
tfs <- c("GATA_1", "CEBPB", "EBF1", "IRF4", "TBX21", "PAX5")
-getFeatures(projHeme5, select = paste(tfs, collapse="|"), useMatrix = "EncodeTFBSMatrix")
-#  [1] "z:584.GATA_1-PBDEFetal..."          "z:582.GATA_1-PBDE..."              
-#  [3] "z:497.GATA_1-K562..."               "z:477.CEBPB-K562..."               
-#  [5] "z:462.CEBPB-IMR90..."               "z:427.CEBPB-HepG2..."              
-#  [7] "z:426.CEBPB-HepG2..."               "z:379.CEBPB-HeLa_S3..."            
-#  [9] "z:344.CEBPB-H1_hESC..."             "z:293.EBF1_SC-GM12878..."          
-# [11] "z:278.CEBPB-A549..."                "z:213.CEBPB_S-K562..."             
-# [13] "z:173.CEBPB_S-HepG2..."             "z:130.PAX5_C2-GM12892..."          
-# [15] "z:123.PAX5_C2-GM12891..."           "z:102.PAX5_N1-GM12878..."          
-# [17] "z:101.PAX5_C2-GM12878..."           "z:93.IRF4_SC-GM12878..."           
-# [19] "z:87.EBF1_SC-GM12878..."            "z:86.CEBPB_S-GM12878..."           
-# [21] "deviations:584.GATA_1-PBDEFetal..." "deviations:582.GATA_1-PBDE..."     
-# [23] "deviations:497.GATA_1-K562..."      "deviations:477.CEBPB-K562..."      
-# [25] "deviations:462.CEBPB-IMR90..."      "deviations:427.CEBPB-HepG2..."     
-# [27] "deviations:426.CEBPB-HepG2..."      "deviations:379.CEBPB-HeLa_S3..."   
-# [29] "deviations:344.CEBPB-H1_hESC..."    "deviations:293.EBF1_SC-GM12878..." 
-# [31] "deviations:278.CEBPB-A549..."       "deviations:213.CEBPB_S-K562..."    
-# [33] "deviations:173.CEBPB_S-HepG2..."    "deviations:130.PAX5_C2-GM12892..." 
-# [35] "deviations:123.PAX5_C2-GM12891..."  "deviations:102.PAX5_N1-GM12878..." 
-# [37] "deviations:101.PAX5_C2-GM12878..."  "deviations:93.IRF4_SC-GM12878..."  
-# [39] "deviations:87.EBF1_SC-GM12878..."   "deviations:86.CEBPB_S-GM12878..."
-

To get deviation z-scores

-
markerTFs <- getFeatures(projHeme5, select = paste(tfs, collapse="|"), useMatrix = "EncodeTFBSMatrix")
-markerTFs <- sort(grep("z:", markerTFs, value = TRUE))
-TFnames <- stringr::str_split(stringr::str_split(markerTFs, pattern = "\\.", simplify=TRUE)[,2], pattern = "-", simplify = TRUE)[,1]
-markerTFs <- markerTFs[!duplicated(TFnames)]
-markerTFs
-# [1] "z:101.PAX5_C2-GM12878..." "z:102.PAX5_N1-GM12878..."
-# [3] "z:173.CEBPB_S-HepG2..."   "z:278.CEBPB-A549..."     
-# [5] "z:293.EBF1_SC-GM12878..." "z:497.GATA_1-K562..."    
-# [7] "z:93.IRF4_SC-GM12878..." 
-
p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "EncodeTFBSMatrix", 
-    name = markerTFs, 
-    embedding = "UMAP",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-

To plot all motifs we can use cowplot

-
#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 3),p2))
-

-

We can also plot the gene expression profiles for each of these TFs

-
markerRNA <- getFeatures(projHeme5, select = paste(gsub("_","",tfs), collapse="|"), useMatrix = "GeneScoreMatrix")
-markerRNA <- markerRNA[markerRNA %ni% c("SREBF1")]
-markerRNA
-#[1] "TBX21" "CEBPA" "EBF1"  "IRF4"  "PAX5"  "GATA1"
-
-p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "GeneScoreMatrix", 
-    name = sort(markerRNA), 
-    embedding = "UMAP",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-
-#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 3),p2))
-

-

We can also plot the gene expression profiles for each of these TFs

-
markerRNA <- getFeatures(projHeme5, select = paste(gsub("_","",tfs), collapse="|"), useMatrix = "GeneIntegrationMatrix")
-markerRNA <- markerRNA[markerRNA %ni% c("SREBF1","CEBPA-DT")]
-markerRNA
-#[1] "TBX21" "CEBPA" "EBF1"  "IRF4"  "PAX5"  "GATA1"
-
-p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "GeneIntegrationMatrix", 
-    name = sort(markerRNA), 
-    embedding = "UMAP",
-    continuousSet = "blueYellow",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-
-#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 3),p2))
-

-
-
-

12.2.2 Bulk ATAC-seq

-

If you have not added motif annotations

-
projHeme5 <- addArchRAnnotations(ArchRProj = projHeme5, collection = "ATAC")
-

If you have not added background peaks

-
projHeme5 <- addBgdPeaks(projHeme5)
-

Add ChromVAR Deviations for Motifs

-
addArchRThreads(8)
-
-projHeme5 <- addDeviationsMatrix(
-  ArchRProj = projHeme5, 
-  peakAnnotation = "ATAC"
-)
-

Plot Variable Motif Annotations

-
plotVarDev <- getVarDeviations(projHeme5, plot = TRUE, name = "ATACMatrix")
-# DataFrame with 6 rows and 6 columns
-#     seqnames     idx                    name     combinedVars
-#        <Rle> <array>                 <array>        <numeric>
-# f22        z      22   IAtlas_T_CD8posCenMem 12.0581125421541
-# f86        z      86                Heme_CD8 11.6532963605177
-# f85        z      85                Heme_CD4 11.5670776340581
-# f23        z      23   IAtlas_T_CD8posEffMem 11.4627247478874
-# f33        z      33   IAtlas_T_Th1Precursor 11.4097813814495
-# f19        z      19 IAtlas_T_CD4posEffector  11.398315976261
-plotVarDev
-

-

We can then plot this as a nice PDF

-
plotPDF(plotVarDev, name = "Variable-ATAC-Deviation-Scores", width = 5, height = 5, ArchRProj = projHeme5, addDOC = FALSE)
-

If we want to get TF feature names for downstream plotting

-
ATACPeaks <- c("Heme_HSC", "Heme_LMPP", "Heme_Ery", "Heme_Mono", "Heme_CD4", "Heme_CD8", "Heme_B", "Heme_NK", "IAtlas_DC_Plasmacytoid")
-getFeatures(projHeme5, select = paste(ATACPeaks, collapse="|"), useMatrix = "ATACMatrix")
-#  [1] "z:Heme_NK"                         "z:Heme_Mono"                      
-#  [3] "z:Heme_MEP"                        "z:Heme_LMPP"                      
-#  [5] "z:Heme_HSC"                        "z:Heme_CD8"                       
-#  [7] "z:Heme_CD4"                        "z:Heme_B"                         
-#  [9] "z:IAtlas_DC_Plasmacytoid"          "deviations:Heme_NK"               
-# [11] "deviations:Heme_Mono"              "deviations:Heme_MEP"              
-# [13] "deviations:Heme_LMPP"              "deviations:Heme_HSC"              
-# [15] "deviations:Heme_CD8"               "deviations:Heme_CD4"              
-# [17] "deviations:Heme_B"                 "deviations:IAtlas_DC_Plasmacytoid"
-

To get deviation z-scores

-
markerATAC <- getFeatures(projHeme5, select = paste(ATACPeaks, collapse="|"), useMatrix = "ATACMatrix")
-markerATAC <- sort(grep("z:", markerATAC, value = TRUE))
-markerATAC
-# [1] "z:Heme_B"                 "z:Heme_CD4"              
-# [3] "z:Heme_CD8"               "z:Heme_HSC"              
-# [5] "z:Heme_MEP"               "z:Heme_Mono"             
-# [7] "z:Heme_NK"                "z:IAtlas_DC_Plasmacytoid"
-
p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "ATACMatrix", 
-    name = markerATAC, 
-    embedding = "UMAP",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-

To plot all motifs we can use cowplot

-
#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 3),p2))
-

-
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/archr-enrichment.html b/bookdown/_book/archr-enrichment.html deleted file mode 100644 index 0383504..0000000 --- a/bookdown/_book/archr-enrichment.html +++ /dev/null @@ -1,400 +0,0 @@ - - - - - - - 11.2 ArchR Enrichment | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

11.2 ArchR Enrichment

-
-

11.2.1 Encode TFBS

-
projHeme5 <- addArchRAnnotations(ArchRProj = projHeme5, collection = "EncodeTFBS")
-
-#Identify EncodeTFBS Enrichments
-enrichEncode <- peakAnnoEnrichment(
-    seMarker = markersPeaks,
-    ArchRProj = projHeme5,
-    peakAnnotation = "EncodeTFBS",
-    cutOff = "FDR <= 0.1 & Log2FC >= 0.5"
-  )
-enrichEncode
-# class: SummarizedExperiment 
-# dim: 689 14 
-# metadata(0):
-# assays(10): mlog10Padj mlog10p ... CompareFrequency feature
-# rownames(689): 1.CTCF-Dnd41... 2.EZH2_39-Dnd41... ...
-#   688.CTCF-WERI_Rb_1... 689.CTCF-WI_38...
-# rowData names(0):
-# colnames(14): C1_Early.Eryth C2_CD4.N1 ... C13_CLP.2 C14_pDC
-# colData names(0):
-
-#Heatmap
-heatmapEncode <- enrichHeatmap(enrichEncode, n = 7, transpose = TRUE)
-draw(heatmapEncode, heatmap_legend_side = "bot", annotation_legend_side = "bot")
-

-

We can then plot this

-
plotPDF(heatmapEncode, name = "EncodeTFBS-Enriched-Marker-Heatmap", width = 8, height = 6, ArchRProj = projHeme5, addDOC = FALSE)
-
-
-

11.2.2 Bulk ATAC-seq

-
projHeme5 <- addArchRAnnotations(ArchRProj = projHeme5, collection = "ATAC")
-
-#Identify ATAC Enrichments
-enrichATAC <- peakAnnoEnrichment(
-    seMarker = markersPeaks,
-    ArchRProj = projHeme5,
-    peakAnnotation = "ATAC",
-    cutOff = "FDR <= 0.1 & Log2FC >= 0.5"
-  )
-enrichATAC
-# class: SummarizedExperiment 
-# dim: 96 14 
-# metadata(0):
-# assays(10): mlog10Padj mlog10p ... CompareFrequency feature
-# rownames(96): Brain_Astrocytes Brain_Excitatory_neurons ... Heme_MPP
-#   Heme_NK
-# rowData names(0):
-# colnames(14): C1_Early.Eryth C2_CD4.N1 ... C13_CLP.2 C14_pDC
-# colData names(0):
-
-#Heatmap
-heatmapATAC <- enrichHeatmap(enrichATAC, n = 7, transpose = TRUE)
-draw(heatmapATAC, heatmap_legend_side = "bot", annotation_legend_side = "bot")
-

-

We can then plot this

-
plotPDF(heatmapATAC, name = "ATAC-Enriched-Marker-Heatmap", width = 8, height = 6, ArchRProj = projHeme5, addDOC = FALSE)
-
-
-

11.2.3 Codex TFBS

-
projHeme5 <- addArchRAnnotations(ArchRProj = projHeme5, collection = "Codex")
-
-#Identify Codex Enrichments
-enrichCodex <- peakAnnoEnrichment(
-    seMarker = markersPeaks,
-    ArchRProj = projHeme5,
-    peakAnnotation = "Codex",
-    cutOff = "FDR <= 0.1 & Log2FC >= 0.5"
-  )
-enrichCodex
-# class: SummarizedExperiment 
-# dim: 189 14 
-# metadata(0):
-# assays(10): mlog10Padj mlog10p ... CompareFrequency feature
-# rownames(189): 1.STAT5-No_drug_(DMSO)... 2.RUNX3-GM12878_cell_fr... ...
-#   188.TP53-codex_Embryonic... 189.TP53-codex_Embryonic...
-# rowData names(0):
-# colnames(14): C1_Early.Eryth C2_CD4.N1 ... C13_CLP.2 C14_pDC
-# colData names(0):
-
-#Heatmap
-heatmapCodex <- enrichHeatmap(enrichCodex, n = 7, transpose = TRUE)
-draw(heatmapCodex, heatmap_legend_side = "bot", annotation_legend_side = "bot")
-

-

We can then plot this

-
plotPDF(heatmapCodex, name = "Codex-Enriched-Marker-Heatmap", width = 8, height = 6, ArchRProj = projHeme5, addDOC = FALSE)
-
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/batch-effect-correction-wtih-harmony.html b/bookdown/_book/batch-effect-correction-wtih-harmony.html deleted file mode 100644 index 1f8cf8f..0000000 --- a/bookdown/_book/batch-effect-correction-wtih-harmony.html +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - 4.2 Batch Effect Correction wtih Harmony | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

4.2 Batch Effect Correction wtih Harmony

-

Sometimes the iterative LSI approach isnt enough of a correction for strong batch effect differences. For this reason we added a commonly used batch effect correction tool Harmony for scRNA (https://github.com/immunogenomics/harmony). We wrote a wrapper that will pass a dimensionality reduction object from ArchR directly to HarmonyMatrix. Additional arguments can be directly passed to HarmonyMatrix in the function. See ?addHarmony for more details.

-
projHeme2 <- addHarmony(
-    ArchRProj = projHeme2,
-    reducedDims = "IterativeLSI",
-    name = "Harmony",
-    groupBy = "Sample"
-)
- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-macs2-1.html b/bookdown/_book/calling-peaks-w-macs2-1.html deleted file mode 100644 index 551a61b..0000000 --- a/bookdown/_book/calling-peaks-w-macs2-1.html +++ /dev/null @@ -1,351 +0,0 @@ - - - - - - - 15.1 Calling Peaks w/ Macs2 | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.1 Calling Peaks w/ Macs2

-

We can now save our original projHeme3 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme3)
-
#Create Group Coverage Files that can be used for downstream analysis (~5-10 minutes)
-projHeme4 <- addGroupCoverages(ArchRProj = projHeme3, groupBy = "Clusters")
-
-#Find Path to Macs2 binary. This function sometimes struggles if you are using conda environment
-#for installation of python packages. If this function fails try providing a direct path manually
-pathToMacs2 <- findMacs2()
-
-#Call Reproducible Peaks w/ Macs2 (~5-10 minutes)
-projHeme4 <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters", 
-    pathToMacs2 = pathToMacs2
-)
-
-getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-macs2-2.html b/bookdown/_book/calling-peaks-w-macs2-2.html deleted file mode 100644 index 78981f9..0000000 --- a/bookdown/_book/calling-peaks-w-macs2-2.html +++ /dev/null @@ -1,352 +0,0 @@ - - - - - - - 15.1 Calling Peaks w/ Macs2 | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.1 Calling Peaks w/ Macs2

-

We can now save our original projHeme3 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme3)
-
#Create Group Coverage Files that can be used for downstream analysis (~5-10 minutes)
-projHeme4 <- addGroupCoverages(ArchRProj = projHeme3, groupBy = "Clusters")
-
-#Find Path to Macs2 binary. This function sometimes struggles if you are using conda environment
-#for installation of python packages. If this function fails try providing a direct path manually
-pathToMacs2 <- findMacs2()
-
-#Call Reproducible Peaks w/ Macs2 (~5-10 minutes)
-projHeme4 <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters", 
-    pathToMacs2 = pathToMacs2
-)
-
-getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-macs2-3.html b/bookdown/_book/calling-peaks-w-macs2-3.html deleted file mode 100644 index f849f44..0000000 --- a/bookdown/_book/calling-peaks-w-macs2-3.html +++ /dev/null @@ -1,345 +0,0 @@ - - - - - - - 15.1 Calling Peaks w/ Macs2 | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.1 Calling Peaks w/ Macs2

-

We can now save our original projHeme3 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme3)
-
#Create Group Coverage Files that can be used for downstream analysis (~5-10 minutes)
-projHeme4 <- addGroupCoverages(ArchRProj = projHeme3, groupBy = "Clusters")
-
-#Find Path to Macs2 binary. This function sometimes struggles if you are using conda environment
-#for installation of python packages. If this function fails try providing a direct path manually
-pathToMacs2 <- findMacs2()
-
-#Call Reproducible Peaks w/ Macs2 (~5-10 minutes)
-projHeme4 <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters", 
-    pathToMacs2 = pathToMacs2
-)
-
-getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-macs2-4.html b/bookdown/_book/calling-peaks-w-macs2-4.html deleted file mode 100644 index 22350c9..0000000 --- a/bookdown/_book/calling-peaks-w-macs2-4.html +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - 15.1 Calling Peaks w/ Macs2 | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.1 Calling Peaks w/ Macs2

-

We can now save our original projHeme3 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme3)
-
#Create Group Coverage Files that can be used for downstream analysis (~5-10 minutes)
-projHeme4 <- addGroupCoverages(ArchRProj = projHeme3, groupBy = "Clusters")
-
-#Find Path to Macs2 binary. This function sometimes struggles if you are using conda environment
-#for installation of python packages. If this function fails try providing a direct path manually
-pathToMacs2 <- findMacs2()
-
-#Call Reproducible Peaks w/ Macs2 (~5-10 minutes)
-projHeme4 <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters", 
-    pathToMacs2 = pathToMacs2
-)
-
-getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-macs2-5.html b/bookdown/_book/calling-peaks-w-macs2-5.html deleted file mode 100644 index 8e6fdec..0000000 --- a/bookdown/_book/calling-peaks-w-macs2-5.html +++ /dev/null @@ -1,336 +0,0 @@ - - - - - - - 15.1 Calling Peaks w/ Macs2 | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.1 Calling Peaks w/ Macs2

-

We can now save our original projHeme3 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme3)
-
#Create Group Coverage Files that can be used for downstream analysis (~5-10 minutes)
-projHeme4 <- addGroupCoverages(ArchRProj = projHeme3, groupBy = "Clusters")
-
-#Find Path to Macs2 binary. This function sometimes struggles if you are using conda environment
-#for installation of python packages. If this function fails try providing a direct path manually
-pathToMacs2 <- findMacs2()
-
-#Call Reproducible Peaks w/ Macs2 (~5-10 minutes)
-projHeme4 <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters", 
-    pathToMacs2 = pathToMacs2
-)
-
-getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-macs2-6.html b/bookdown/_book/calling-peaks-w-macs2-6.html deleted file mode 100644 index aeefbd7..0000000 --- a/bookdown/_book/calling-peaks-w-macs2-6.html +++ /dev/null @@ -1,337 +0,0 @@ - - - - - - - 15.1 Calling Peaks w/ Macs2 | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.1 Calling Peaks w/ Macs2

-

We can now save our original projHeme3 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme3)
-
#Create Group Coverage Files that can be used for downstream analysis (~5-10 minutes)
-projHeme4 <- addGroupCoverages(ArchRProj = projHeme3, groupBy = "Clusters")
-
-#Find Path to Macs2 binary. This function sometimes struggles if you are using conda environment
-#for installation of python packages. If this function fails try providing a direct path manually
-pathToMacs2 <- findMacs2()
-
-#Call Reproducible Peaks w/ Macs2 (~5-10 minutes)
-projHeme4 <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters", 
-    pathToMacs2 = pathToMacs2
-)
-
-getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-macs2.html b/bookdown/_book/calling-peaks-w-macs2.html deleted file mode 100644 index d9c5207..0000000 --- a/bookdown/_book/calling-peaks-w-macs2.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - - - - 9.1 Calling Peaks w/ Macs2 | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

9.1 Calling Peaks w/ Macs2

-

We can now save our original projHeme3 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme3)
-
#Create Group Coverage Files that can be used for downstream analysis (~5-10 minutes)
-projHeme4 <- addGroupCoverages(ArchRProj = projHeme3, groupBy = "Clusters")
-
-#Find Path to Macs2 binary. This function sometimes struggles if you are using conda environment
-#for installation of python packages. If this function fails try providing a direct path manually
-pathToMacs2 <- findMacs2()
-
-#Call Reproducible Peaks w/ Macs2 (~5-10 minutes)
-projHeme4 <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters", 
-    pathToMacs2 = pathToMacs2
-)
-
-getPeakSet(projHeme4)
-# GRanges object with 158378 ranges and 12 metadata columns:
-#             seqnames              ranges strand |     score
-#                <Rle>           <IRanges>  <Rle> | <numeric>
-#   Cluster10     chr1       752327-752827      * |   2.74288
-#    Cluster9     chr1       760866-761366      * |   2.65888
-#    Cluster2     chr1       762700-763200      * |   18.7147
-#    Cluster2     chr1       779639-780139      * |   2.81931
-#    Cluster8     chr1       793519-794019      * |   3.74498
-#         ...      ...                 ...    ... .       ...
-#    Cluster5     chrX 154841853-154842353      * |   3.43901
-#   Cluster12     chrX 154842354-154842854      * |   7.60796
-#    Cluster4     chrX 154862032-154862532      * |   9.27826
-#    Cluster5     chrX 154912371-154912871      * |   6.27394
-#    Cluster6     chrX 154996898-154997398      * |   2.65432
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-tilematrix-1.html b/bookdown/_book/calling-peaks-w-tilematrix-1.html deleted file mode 100644 index a2ef44a..0000000 --- a/bookdown/_book/calling-peaks-w-tilematrix-1.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - - 15.2 Calling Peaks w/ TileMatrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.2 Calling Peaks w/ TileMatrix

-
#Call Reproducible Peaks w/ TileMatrix (~2 minutes)
-projHemeTmp <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters",
-    peakMethod = "Tiles",
-    method = "p"
-)
-
-getPeakSet(projHemeTmp)
-# GRanges object with 277187 ranges and 9 metadata columns:
-#            seqnames              ranges strand |   mlog10p     Group
-#               <Rle>           <IRanges>  <Rle> | <numeric>     <Rle>
-#        [1]     chr1       752000-752499      * |     1.682 Cluster10
-#        [2]     chr1       752500-752999      * |     4.952 Cluster10
-#        [3]     chr1       758500-758999      * |     1.037  Cluster4
-#        [4]     chr1       761000-761499      * |     2.204  Cluster9
-#        [5]     chr1       762000-762499      * |     3.246  Cluster4
-#        ...      ...                 ...    ... .       ...       ...
-#   [277183]     chrX 154842000-154842499      * |     8.936 Cluster12
-#   [277184]     chrX 154842500-154842999      * |    12.546 Cluster12
-#   [277185]     chrX 154862000-154862499      * |     2.449  Cluster4
-#   [277186]     chrX 154912500-154912999      * |     2.484  Cluster5
-#   [277187]     chrX 154997000-154997499      * |     4.236  Cluster8
-

Lets see how well this compares to Macs2

-
#Peak Overlap
-length(subsetByOverlaps(getPeakSet(projHeme4), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9681079
-length(subsetByOverlaps(getPeakSet(projHemeTmp), getPeakSet(projHeme4))) / length(getPeakSet(projHemeTmp))
-# 0.7902066
-
-#Extend to 1kb
-length(subsetByOverlaps(resize(getPeakSet(projHeme4), 1000, "center"), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9750028
-length(subsetByOverlaps(getPeakSet(projHemeTmp), resize(getPeakSet(projHeme4), 1000, "center"))) / length(getPeakSet(projHemeTmp))
-# 0.858287
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-tilematrix-2.html b/bookdown/_book/calling-peaks-w-tilematrix-2.html deleted file mode 100644 index b4e95c2..0000000 --- a/bookdown/_book/calling-peaks-w-tilematrix-2.html +++ /dev/null @@ -1,356 +0,0 @@ - - - - - - - 15.2 Calling Peaks w/ TileMatrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.2 Calling Peaks w/ TileMatrix

-
#Call Reproducible Peaks w/ TileMatrix (~2 minutes)
-projHemeTmp <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters",
-    peakMethod = "Tiles",
-    method = "p"
-)
-
-getPeakSet(projHemeTmp)
-# GRanges object with 277187 ranges and 9 metadata columns:
-#            seqnames              ranges strand |   mlog10p     Group
-#               <Rle>           <IRanges>  <Rle> | <numeric>     <Rle>
-#        [1]     chr1       752000-752499      * |     1.682 Cluster10
-#        [2]     chr1       752500-752999      * |     4.952 Cluster10
-#        [3]     chr1       758500-758999      * |     1.037  Cluster4
-#        [4]     chr1       761000-761499      * |     2.204  Cluster9
-#        [5]     chr1       762000-762499      * |     3.246  Cluster4
-#        ...      ...                 ...    ... .       ...       ...
-#   [277183]     chrX 154842000-154842499      * |     8.936 Cluster12
-#   [277184]     chrX 154842500-154842999      * |    12.546 Cluster12
-#   [277185]     chrX 154862000-154862499      * |     2.449  Cluster4
-#   [277186]     chrX 154912500-154912999      * |     2.484  Cluster5
-#   [277187]     chrX 154997000-154997499      * |     4.236  Cluster8
-

Lets see how well this compares to Macs2

-
#Peak Overlap
-length(subsetByOverlaps(getPeakSet(projHeme4), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9681079
-length(subsetByOverlaps(getPeakSet(projHemeTmp), getPeakSet(projHeme4))) / length(getPeakSet(projHemeTmp))
-# 0.7902066
-
-#Extend to 1kb
-length(subsetByOverlaps(resize(getPeakSet(projHeme4), 1000, "center"), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9750028
-length(subsetByOverlaps(getPeakSet(projHemeTmp), resize(getPeakSet(projHeme4), 1000, "center"))) / length(getPeakSet(projHemeTmp))
-# 0.858287
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-tilematrix-3.html b/bookdown/_book/calling-peaks-w-tilematrix-3.html deleted file mode 100644 index 972f0f1..0000000 --- a/bookdown/_book/calling-peaks-w-tilematrix-3.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - 15.2 Calling Peaks w/ TileMatrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.2 Calling Peaks w/ TileMatrix

-
#Call Reproducible Peaks w/ TileMatrix (~2 minutes)
-projHemeTmp <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters",
-    peakMethod = "Tiles",
-    method = "p"
-)
-
-getPeakSet(projHemeTmp)
-# GRanges object with 277187 ranges and 9 metadata columns:
-#            seqnames              ranges strand |   mlog10p     Group
-#               <Rle>           <IRanges>  <Rle> | <numeric>     <Rle>
-#        [1]     chr1       752000-752499      * |     1.682 Cluster10
-#        [2]     chr1       752500-752999      * |     4.952 Cluster10
-#        [3]     chr1       758500-758999      * |     1.037  Cluster4
-#        [4]     chr1       761000-761499      * |     2.204  Cluster9
-#        [5]     chr1       762000-762499      * |     3.246  Cluster4
-#        ...      ...                 ...    ... .       ...       ...
-#   [277183]     chrX 154842000-154842499      * |     8.936 Cluster12
-#   [277184]     chrX 154842500-154842999      * |    12.546 Cluster12
-#   [277185]     chrX 154862000-154862499      * |     2.449  Cluster4
-#   [277186]     chrX 154912500-154912999      * |     2.484  Cluster5
-#   [277187]     chrX 154997000-154997499      * |     4.236  Cluster8
-

Lets see how well this compares to Macs2

-
#Peak Overlap
-length(subsetByOverlaps(getPeakSet(projHeme4), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9681079
-length(subsetByOverlaps(getPeakSet(projHemeTmp), getPeakSet(projHeme4))) / length(getPeakSet(projHemeTmp))
-# 0.7902066
-
-#Extend to 1kb
-length(subsetByOverlaps(resize(getPeakSet(projHeme4), 1000, "center"), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9750028
-length(subsetByOverlaps(getPeakSet(projHemeTmp), resize(getPeakSet(projHeme4), 1000, "center"))) / length(getPeakSet(projHemeTmp))
-# 0.858287
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-tilematrix-4.html b/bookdown/_book/calling-peaks-w-tilematrix-4.html deleted file mode 100644 index 79b99ba..0000000 --- a/bookdown/_book/calling-peaks-w-tilematrix-4.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - - - - 15.2 Calling Peaks w/ TileMatrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.2 Calling Peaks w/ TileMatrix

-
#Call Reproducible Peaks w/ TileMatrix (~2 minutes)
-projHemeTmp <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters",
-    peakMethod = "Tiles",
-    method = "p"
-)
-
-getPeakSet(projHemeTmp)
-# GRanges object with 277187 ranges and 9 metadata columns:
-#            seqnames              ranges strand |   mlog10p     Group
-#               <Rle>           <IRanges>  <Rle> | <numeric>     <Rle>
-#        [1]     chr1       752000-752499      * |     1.682 Cluster10
-#        [2]     chr1       752500-752999      * |     4.952 Cluster10
-#        [3]     chr1       758500-758999      * |     1.037  Cluster4
-#        [4]     chr1       761000-761499      * |     2.204  Cluster9
-#        [5]     chr1       762000-762499      * |     3.246  Cluster4
-#        ...      ...                 ...    ... .       ...       ...
-#   [277183]     chrX 154842000-154842499      * |     8.936 Cluster12
-#   [277184]     chrX 154842500-154842999      * |    12.546 Cluster12
-#   [277185]     chrX 154862000-154862499      * |     2.449  Cluster4
-#   [277186]     chrX 154912500-154912999      * |     2.484  Cluster5
-#   [277187]     chrX 154997000-154997499      * |     4.236  Cluster8
-

Lets see how well this compares to Macs2

-
#Peak Overlap
-length(subsetByOverlaps(getPeakSet(projHeme4), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9681079
-length(subsetByOverlaps(getPeakSet(projHemeTmp), getPeakSet(projHeme4))) / length(getPeakSet(projHemeTmp))
-# 0.7902066
-
-#Extend to 1kb
-length(subsetByOverlaps(resize(getPeakSet(projHeme4), 1000, "center"), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9750028
-length(subsetByOverlaps(getPeakSet(projHemeTmp), resize(getPeakSet(projHeme4), 1000, "center"))) / length(getPeakSet(projHemeTmp))
-# 0.858287
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-tilematrix-5.html b/bookdown/_book/calling-peaks-w-tilematrix-5.html deleted file mode 100644 index 5dcdb50..0000000 --- a/bookdown/_book/calling-peaks-w-tilematrix-5.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - - - - 15.2 Calling Peaks w/ TileMatrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.2 Calling Peaks w/ TileMatrix

-
#Call Reproducible Peaks w/ TileMatrix (~2 minutes)
-projHemeTmp <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters",
-    peakMethod = "Tiles",
-    method = "p"
-)
-
-getPeakSet(projHemeTmp)
-# GRanges object with 277187 ranges and 9 metadata columns:
-#            seqnames              ranges strand |   mlog10p     Group
-#               <Rle>           <IRanges>  <Rle> | <numeric>     <Rle>
-#        [1]     chr1       752000-752499      * |     1.682 Cluster10
-#        [2]     chr1       752500-752999      * |     4.952 Cluster10
-#        [3]     chr1       758500-758999      * |     1.037  Cluster4
-#        [4]     chr1       761000-761499      * |     2.204  Cluster9
-#        [5]     chr1       762000-762499      * |     3.246  Cluster4
-#        ...      ...                 ...    ... .       ...       ...
-#   [277183]     chrX 154842000-154842499      * |     8.936 Cluster12
-#   [277184]     chrX 154842500-154842999      * |    12.546 Cluster12
-#   [277185]     chrX 154862000-154862499      * |     2.449  Cluster4
-#   [277186]     chrX 154912500-154912999      * |     2.484  Cluster5
-#   [277187]     chrX 154997000-154997499      * |     4.236  Cluster8
-

Lets see how well this compares to Macs2

-
#Peak Overlap
-length(subsetByOverlaps(getPeakSet(projHeme4), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9681079
-length(subsetByOverlaps(getPeakSet(projHemeTmp), getPeakSet(projHeme4))) / length(getPeakSet(projHemeTmp))
-# 0.7902066
-
-#Extend to 1kb
-length(subsetByOverlaps(resize(getPeakSet(projHeme4), 1000, "center"), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9750028
-length(subsetByOverlaps(getPeakSet(projHemeTmp), resize(getPeakSet(projHeme4), 1000, "center"))) / length(getPeakSet(projHemeTmp))
-# 0.858287
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-tilematrix-6.html b/bookdown/_book/calling-peaks-w-tilematrix-6.html deleted file mode 100644 index 620233c..0000000 --- a/bookdown/_book/calling-peaks-w-tilematrix-6.html +++ /dev/null @@ -1,341 +0,0 @@ - - - - - - - 15.2 Calling Peaks w/ TileMatrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.2 Calling Peaks w/ TileMatrix

-
#Call Reproducible Peaks w/ TileMatrix (~2 minutes)
-projHemeTmp <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters",
-    peakMethod = "Tiles",
-    method = "p"
-)
-
-getPeakSet(projHemeTmp)
-# GRanges object with 277187 ranges and 9 metadata columns:
-#            seqnames              ranges strand |   mlog10p     Group
-#               <Rle>           <IRanges>  <Rle> | <numeric>     <Rle>
-#        [1]     chr1       752000-752499      * |     1.682 Cluster10
-#        [2]     chr1       752500-752999      * |     4.952 Cluster10
-#        [3]     chr1       758500-758999      * |     1.037  Cluster4
-#        [4]     chr1       761000-761499      * |     2.204  Cluster9
-#        [5]     chr1       762000-762499      * |     3.246  Cluster4
-#        ...      ...                 ...    ... .       ...       ...
-#   [277183]     chrX 154842000-154842499      * |     8.936 Cluster12
-#   [277184]     chrX 154842500-154842999      * |    12.546 Cluster12
-#   [277185]     chrX 154862000-154862499      * |     2.449  Cluster4
-#   [277186]     chrX 154912500-154912999      * |     2.484  Cluster5
-#   [277187]     chrX 154997000-154997499      * |     4.236  Cluster8
-

Lets see how well this compares to Macs2

-
#Peak Overlap
-length(subsetByOverlaps(getPeakSet(projHeme4), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9681079
-length(subsetByOverlaps(getPeakSet(projHemeTmp), getPeakSet(projHeme4))) / length(getPeakSet(projHemeTmp))
-# 0.7902066
-
-#Extend to 1kb
-length(subsetByOverlaps(resize(getPeakSet(projHeme4), 1000, "center"), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9750028
-length(subsetByOverlaps(getPeakSet(projHemeTmp), resize(getPeakSet(projHeme4), 1000, "center"))) / length(getPeakSet(projHemeTmp))
-# 0.858287
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-w-tilematrix.html b/bookdown/_book/calling-peaks-w-tilematrix.html deleted file mode 100644 index 09e893b..0000000 --- a/bookdown/_book/calling-peaks-w-tilematrix.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - - - - 9.2 Calling Peaks w/ TileMatrix | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

9.2 Calling Peaks w/ TileMatrix

-
#Call Reproducible Peaks w/ TileMatrix (~2 minutes)
-projHemeTmp <- addReproduciblePeakSet(
-    ArchRProj = projHeme4, 
-    groupBy = "Clusters",
-    peakMethod = "Tiles",
-    method = "p"
-)
-
-getPeakSet(projHemeTmp)
-# GRanges object with 277187 ranges and 9 metadata columns:
-#            seqnames              ranges strand |   mlog10p     Group
-#               <Rle>           <IRanges>  <Rle> | <numeric>     <Rle>
-#        [1]     chr1       752000-752499      * |     1.682 Cluster10
-#        [2]     chr1       752500-752999      * |     4.952 Cluster10
-#        [3]     chr1       758500-758999      * |     1.037  Cluster4
-#        [4]     chr1       761000-761499      * |     2.204  Cluster9
-#        [5]     chr1       762000-762499      * |     3.246  Cluster4
-#        ...      ...                 ...    ... .       ...       ...
-#   [277183]     chrX 154842000-154842499      * |     8.936 Cluster12
-#   [277184]     chrX 154842500-154842999      * |    12.546 Cluster12
-#   [277185]     chrX 154862000-154862499      * |     2.449  Cluster4
-#   [277186]     chrX 154912500-154912999      * |     2.484  Cluster5
-#   [277187]     chrX 154997000-154997499      * |     4.236  Cluster8
-

Lets see how well this compares to Macs2

-
#Peak Overlap
-length(subsetByOverlaps(getPeakSet(projHeme4), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9681079
-length(subsetByOverlaps(getPeakSet(projHemeTmp), getPeakSet(projHeme4))) / length(getPeakSet(projHemeTmp))
-# 0.7902066
-
-#Extend to 1kb
-length(subsetByOverlaps(resize(getPeakSet(projHeme4), 1000, "center"), getPeakSet(projHemeTmp))) / length(getPeakSet(projHeme4))
-# 0.9750028
-length(subsetByOverlaps(getPeakSet(projHemeTmp), resize(getPeakSet(projHeme4), 1000, "center"))) / length(getPeakSet(projHemeTmp))
-# 0.858287
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-with-archr-1.html b/bookdown/_book/calling-peaks-with-archr-1.html deleted file mode 100644 index 2cae6cf..0000000 --- a/bookdown/_book/calling-peaks-with-archr-1.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - Chapter 15 Calling Peaks with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 15 Calling Peaks with ArchR

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-with-archr-2.html b/bookdown/_book/calling-peaks-with-archr-2.html deleted file mode 100644 index 40441f5..0000000 --- a/bookdown/_book/calling-peaks-with-archr-2.html +++ /dev/null @@ -1,321 +0,0 @@ - - - - - - - Chapter 15 Calling Peaks with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 15 Calling Peaks with ArchR

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-with-archr-3.html b/bookdown/_book/calling-peaks-with-archr-3.html deleted file mode 100644 index ef02855..0000000 --- a/bookdown/_book/calling-peaks-with-archr-3.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - Chapter 15 Calling Peaks with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 15 Calling Peaks with ArchR

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-with-archr-4.html b/bookdown/_book/calling-peaks-with-archr-4.html deleted file mode 100644 index a016a95..0000000 --- a/bookdown/_book/calling-peaks-with-archr-4.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - Chapter 15 Calling Peaks with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 15 Calling Peaks with ArchR

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-with-archr-5.html b/bookdown/_book/calling-peaks-with-archr-5.html deleted file mode 100644 index b0f38dd..0000000 --- a/bookdown/_book/calling-peaks-with-archr-5.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - - - - Chapter 15 Calling Peaks with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 15 Calling Peaks with ArchR

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/calling-peaks-with-archr-6.html b/bookdown/_book/calling-peaks-with-archr-6.html deleted file mode 100644 index c0e0111..0000000 --- a/bookdown/_book/calling-peaks-with-archr-6.html +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - Chapter 15 Calling Peaks with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 15 Calling Peaks with ArchR

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/chapter-1.html b/bookdown/_book/chapter-1.html deleted file mode 100644 index 1f4b929..0000000 --- a/bookdown/_book/chapter-1.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - - - - Chapter 1 CHAPTER 1 | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 1 CHAPTER 1

-

The following tutorial shows the basics of setting up and interacting with an ArchRProject using a gold-standard downsampled dataset of hematopoietic cells Granja* et al. Nature Biotechnology 2019. This tutorial and all of the accompanying vignettes assume that you are running ArchR locally. QQQ Once all of these steps work for you, feel free to set up ArchR to work in a cluster environment. This tutorial does not explain every detail of every step but rather shows you how to perform the most common analyses. Please see the Vignettes section for more details on each major analytical step and all of the major features of ArchR.

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/chromvar-deviatons-enrichment-with-archr.html b/bookdown/_book/chromvar-deviatons-enrichment-with-archr.html deleted file mode 100644 index fedf577..0000000 --- a/bookdown/_book/chromvar-deviatons-enrichment-with-archr.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - Chapter 12 ChromVAR Deviatons Enrichment with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 12 ChromVAR Deviatons Enrichment with ArchR

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/clustering-with-archr.html b/bookdown/_book/clustering-with-archr.html deleted file mode 100644 index b9d0266..0000000 --- a/bookdown/_book/clustering-with-archr.html +++ /dev/null @@ -1,358 +0,0 @@ - - - - - - - Chapter 5 Clustering with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 5 Clustering with ArchR

-

Most single-cell clustering methods focus on computing nearest neighbor graphs in reduced dimensions and then identifying “communities” or clusters. These approaches work extremely well and are a standard practice in scRNA. For this reason, we import existing state of the art clustering methods from scRNA-seq packages for clustering. In our experience, we have had the most success using Seurat’s (https://github.com/satijalab/seurat) graph clustering approach. Additional clustering params can be passed to Seurat::FindClusters from this function.

-
projHeme2 <- addClusters(
-    input = projHeme2,
-    reducedDims = "IterativeLSI",
-    method = "Seurat",
-    name = "Clusters",
-    resolution = 0.8
-)
-

To access these clusters we can use the $ accessor

-
head(projHeme2$Clusters)
-# [1] "Cluster11" "Cluster2"  "Cluster12" "Cluster1"  "Cluster12" "Cluster8"
-
-table(projHeme2$Clusters)
-# Cluster1 Cluster10 Cluster11 Cluster12 Cluster13 Cluster14  Cluster2  Cluster3 
-#       28      1070       425       351       408       345      1330       562 
-# Cluster4  Cluster5  Cluster6  Cluster7  Cluster8  Cluster9 
-#      901       860      1218       974       274      1505
-

We can also create a cluster confusion matrix across each sample. JJJ

-
ArchR:::.confusionMatrix(paste0(projHeme2$Clusters), paste0(projHeme2$Sample))
-# 14 x 3 sparse Matrix of class "dgCMatrix"
-#           scATAC_BMMC_R1 scATAC_CD34_BMMC_R1 scATAC_PBMC_R1
-# Cluster11            247                   6            172
-# Cluster2            1254                   .             76
-# Cluster12            351                   .              .
-# Cluster1              28                   .              .
-# Cluster8             247                  27              .
-# Cluster4             315                   .            586
-# Cluster9            1456                   5             44
-# Cluster5             214                 639              7
-# Cluster7              83                 887              4
-# Cluster14            161                 174             10
-# Cluster3              52                   .            510
-# Cluster10             84                   1            985
-# Cluster6             117                1101              .
-# Cluster13             80                 328              .
-

Determining the appropriate cluster params is useful once you have computed a 2-dimensional embedding. This is because you should be adjusting both the clustering and embedding params to where they both agree.

-

Additionally, one can call clusters with scran (https://bioconductor.org/packages/release/bioc/html/scran.html).

-
projHeme2 <- addClusters(
-    input = projHeme2,
-    reducedDims = "IterativeLSI",
-    method = "scran",
-    name = "ScranClusters",
-    k = 15
-)
- -
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/coaccessibility-with-archr.html b/bookdown/_book/coaccessibility-with-archr.html deleted file mode 100644 index 463c555..0000000 --- a/bookdown/_book/coaccessibility-with-archr.html +++ /dev/null @@ -1,455 +0,0 @@ - - - - - - - 15.1 CoAccessibility with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

15.1 CoAccessibility with ArchR

-
projHeme5 <- addCoAccessibility(
-    ArchRProj = projHeme5,
-    reducedDims = "IterativeLSI"
-)
-
cA <- getCoAccessibility(
-    ArchRProj = projHeme5,
-    corCutOff = 0.5,
-    resolution = 1,
-    returnLoops = FALSE
-)
-
-cA
-# DataFrame with 65736 rows and 4 columns
-#       queryHits subjectHits seqnames       correlation
-#       <integer>   <integer>    <Rle>         <numeric>
-# 1             8          13     chr1  0.69736362363962
-# 2            13           8     chr1  0.69736362363962
-# 3            52          64     chr1 0.502479053390956
-# 4            54          55     chr1 0.573405135422231
-# 5            55          54     chr1 0.573405135422231
-# ...         ...         ...      ...               ...
-# 65732    158297      158296     chrX   0.5541398895206
-# 65733    158332      158333     chrX 0.504941172383233
-# 65734    158333      158332     chrX 0.504941172383233
-# 65735    158339      158340     chrX 0.506143160385986
-# 65736    158340      158339     chrX 0.506143160385985
-
-metadata(cA)[[1]]
-# GRanges object with 158378 ranges and 0 metadata columns:
-#             seqnames              ranges strand
-#                <Rle>           <IRanges>  <Rle>
-#   Cluster10     chr1       752327-752827      *
-#    Cluster9     chr1       760866-761366      *
-#    Cluster2     chr1       762700-763200      *
-#    Cluster2     chr1       779639-780139      *
-#    Cluster8     chr1       793519-794019      *
-#         ...      ...                 ...    ...
-#    Cluster5     chrX 154841853-154842353      *
-#   Cluster12     chrX 154842354-154842854      *
-#    Cluster4     chrX 154862032-154862532      *
-#    Cluster5     chrX 154912371-154912871      *
-#    Cluster6     chrX 154996898-154997398      *
-
-
-cA <- getCoAccessibility(
-    ArchRProj = projHeme5,
-    corCutOff = 0.5,
-    resolution = 1,
-    returnLoops = TRUE
-)
-
-# GenomicRangesList of length 1
-# names(1): CoAccessibility
-
-cA[[1]]
-# GRanges object with 32868 ranges and 1 metadata column:
-#           seqnames              ranges strand |             value
-#              <Rle>           <IRanges>  <Rle> |         <numeric>
-#       [1]     chr1       845640-856561      * |  0.69736362363962
-#       [2]     chr1      968601-1004143      * | 0.502479053390956
-#       [3]     chr1       974287-975100      * | 0.573405135422231
-#       [4]     chr1     1034332-1034887      * | 0.807870076075987
-#       [5]     chr1     1072846-1079621      * | 0.591975205782561
-#       ...      ...                 ...    ... .               ...
-#   [32864]     chrX 153597267-153637554      * | 0.501648373320333
-#   [32865]     chrX 153637554-153659408      * | 0.534554389595235
-#   [32866]     chrX 153659408-153659914      * |   0.5541398895206
-#   [32867]     chrX 153959662-153960350      * | 0.504941172383233
-#   [32868]     chrX 153980214-153990355      * | 0.506143160385986
-
cA <- getCoAccessibility(
-    ArchRProj = projHeme5,
-    corCutOff = 0.5,
-    resolution = 1000,
-    returnLoops = TRUE
-)
-
-cA[[1]]
-# GRanges object with 30315 ranges and 1 metadata column:
-#           seqnames              ranges strand |             value
-#              <Rle>           <IRanges>  <Rle> |         <numeric>
-#       [1]     chr1       845500-856500      * |  0.69736362363962
-#       [2]     chr1      968500-1004500      * | 0.502479053390956
-#       [3]     chr1       974500-975500      * | 0.573405135422231
-#       [4]     chr1     1072500-1079500      * | 0.591975205782561
-#       [5]     chr1     1072500-1109500      * | 0.509755959269061
-#       ...      ...                 ...    ... .               ...
-#   [30311]     chrX 153596500-153597500      * | 0.526200963980073
-#   [30312]     chrX 153597500-153637500      * | 0.501648373320333
-#   [30313]     chrX 153637500-153659500      * | 0.534554389595235
-#   [30314]     chrX 153959500-153960500      * | 0.504941172383233
-#   [30315]     chrX 153980500-153990500      * | 0.506143160385986
-#   -------
-#   seqinfo: 23 sequences from an unspecified genome; no seqlengths
-
cA <- getCoAccessibility(
-    ArchRProj = projHeme5,
-    corCutOff = 0.5,
-    resolution = 10000,
-    returnLoops = TRUE
-)
-
-cA[[1]]
-# GRanges object with 15990 ranges and 1 metadata column:
-#           seqnames              ranges strand |             value
-#              <Rle>           <IRanges>  <Rle> |         <numeric>
-#       [1]     chr1       845000-855000      * |  0.69736362363962
-#       [2]     chr1      965000-1005000      * | 0.502479053390956
-#       [3]     chr1     1075000-1085000      * | 0.542909007799088
-#       [4]     chr1     1075000-1105000      * | 0.522706329518404
-#       [5]     chr1     1105000-1115000      * | 0.607428937524039
-#       ...      ...                 ...    ... .               ...
-#   [15986]     chrX 153305000-153345000      * |  0.63313940661629
-#   [15987]     chrX 153595000-153635000      * | 0.501648373320333
-#   [15988]     chrX 153635000-153655000      * | 0.534554389595235
-#   [15989]     chrX 153955000-153965000      * | 0.504941172383233
-#   [15990]     chrX 153985000-153995000      * | 0.506143160385986
-#   -------
-#   seqinfo: 23 sequences from an unspecified genome; no seqlengths
-

Plotting browser tracks with CoAccessibility

-
markerGenes  <- c(
-    "CD34", #Early Progenitor
-    "GATA1", #Erythroid
-    "PAX5", "MS4A1", #B-Cell Trajectory
-    "CD14", #Monocytes
-    "CD3D", "CD8A", "TBX21", "IL7R" #TCells
-  )
-
-p <- ArchRBrowserTrack(
-    ArchRProj = projHeme5, 
-    groupBy = "Clusters2", 
-    geneSymbol = markerGenes, 
-    upstream = 50000,
-    downstream = 50000
-)
-

To plot a track we can simply print one from the list

-
grid::grid.newpage()
-grid::grid.draw(p$CD14)
-

-
plotPDF(plotList = p, 
-    name = "Plot-Tracks-Marker-Genes-with-CoAccessibility.pdf", 
-    ArchRProj = projHeme5, 
-    addDOC = FALSE, width = 5, height = 5)
-

Download PDF : Plot-Tracks-Marker-Genes.pdf

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/creating-an-archrproject-1.html b/bookdown/_book/creating-an-archrproject-1.html deleted file mode 100644 index c5aadd7..0000000 --- a/bookdown/_book/creating-an-archrproject-1.html +++ /dev/null @@ -1,345 +0,0 @@ - - - - - - - 3.1 Creating An ArchRProject | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

3.1 Creating An ArchRProject

-

First, we must create our ArchRProject by providing a list of Arrow files and a few other parameters. The outputDirectory here describes where all downstream analyses and plots will be saved. ArchR will automatically associate the geneAnnotation and genomeAnnotation with the new ArchRProject. These were stored when we ran addArchRGenome("hg19") in a previous chapter.

-
#Create ArchRProject
-projHeme1 <- ArchRProject(
-  ArrowFiles = ArrowFiles, 
-  outputDirectory = "HemeTutorial",
-  copyArrows = TRUE #This is recommened so that if you modify the ArrowFiles you have an original copy for later usage.
-)
-

We call this ArchRProject “projHeme1” because it is the first iteration of our hematopoiesis project. Throughout this walkthrough we will modify and update this ArchRProject and keep track of which version of the project we are using by iterating the project number (i.e. “projHeme2”).

-

Lets look at our ArchRProject:

-
projHeme1
-# class: ArchRProject 
-# outputDirectory: /Volumes/JG_SSD_2/ArchR_Walkthrough/HemeTutorial 
-# samples(3): scATAC_BMMC_R1 scATAC_CD34_BMMC_R1 scATAC_PBMC_R1
-# sampleColData names(1): ArrowFiles
-# cellColData names(11): DoubletEnrichment DoubletScore ... Sample
-#   TSSEnrichment
-# numberOfCells(1): 10661
-# medianTSS(1): 16.832
-# medianFrags(1): 3050
-

We can see from the above that our ArchRProject has been initialized with a few important attributes:
-1. The specified outputDirectory.
-2. The sampleNames of each sample which were obtained from the Arrow files.
-3. A matrix called sampleColData which contains data associated with each sample.
-4. A matrix called cellColData which contains data associated with each cell. Because we already computed doublet enrichment scores (using addDoubletScores()), which added those values to each cell in the Arrow files, we can see columns corresponding to the “DoubletEnrichment” and “DoubletScore” in the cellColData matrix.
-5. The total number of cells in our project which represents all samples after doublet identification and removal.
-6. The median TSS enrichment score and the median number of fragments across all cells and all samples.

-

We can check how much memory is used to store the ArchRProject in memory within R:

-
paste0("Memory Size = ", round(object.size(projHeme1) / 10^6, 3), " MB")
-#[1] "Memory Size = 37.135 MB"
-

We can also ask which data matrices are available within the ArchRProject which will be useful downstream once we start adding to this project:

-
getAvailableMatrices(projHeme1)
-#[1] "GeneScoreMatrix" "TileMatrix" 
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/creating-an-archrproject.html b/bookdown/_book/creating-an-archrproject.html deleted file mode 100644 index b44a443..0000000 --- a/bookdown/_book/creating-an-archrproject.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - Chapter 3 Creating an ArchRProject | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 3 Creating an ArchRProject

-

An ArchRProject allows us to group multiple Arrow files together into a single project. This ArchRProject is small and is stored in memory. By interacting with the ArchRProject we can rapidly push and pull data from the Arrow files. As such, it forms the basis of nearly all ArchR functions and analytical workflows. This chapter describes how to create and interact with an ArchRProject object.

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/creating-arrow-files-1.html b/bookdown/_book/creating-arrow-files-1.html deleted file mode 100644 index 4c68141..0000000 --- a/bookdown/_book/creating-arrow-files-1.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - Chapter 2 Creating Arrow Files | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 2 Creating Arrow Files

-

For this tutorial, we will download a collection of fragment files. Fragment files are one of the base file types of the 10x Genomics analytical platform (and other platforms) and can be easily created from any BAM file. See the ArchR input file types vignette for information on making your own fragment files for input to ArchR. Once we have our fragment files, we provide their paths as a character vector to createArrowFiles(). During creation, some basic metadata and matrices are added to each ArrowFile including a “TileMatrix” containing insertion counts across genome-wide 500-bp bins (see addTileMatrix()) and a “GeneScoreMatrix” that is determined based on weighting insertion counts in tiles nearby a gene promoter (see addGeneScoreMatrix()). These gene activity scores are described in more depth in the Gene Activity Score vignette.

-
#Get Tutorial Data ~1GB To Download (if downloaded already ArchR will bypass downloading).
-inputFiles <- getTutorialData("Hematopoiesis")
-
-#Create Arrow Files (~10-15 minutes) w/ helpful messages displaying progress.
-#For each sample, this step will:
-# 1. Read accessible fragments.
-# 2. Calculate QC Information for each cell (TSS Enrichment, Nucleosome info).
-# 3. Filter cells based on QC parameters.
-# 4. Create a genome-wide TileMatrix using 500-bp bins.
-# 5. Create a GeneScoreMatrix using the provided geneAnnotation.
-ArrowFiles <- createArrowFiles(
-  inputFiles = inputFiles,
-  sampleNames = names(inputFiles),
-  filterTSS = 4, #Dont set this too high because you can always increase later
-  filterFrags = 1000, 
-  addTileMat = TRUE,
-  addGeneScoreMat = TRUE
-  )
-
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/creating-arrow-files.html b/bookdown/_book/creating-arrow-files.html deleted file mode 100644 index b0f5dd1..0000000 --- a/bookdown/_book/creating-arrow-files.html +++ /dev/null @@ -1,380 +0,0 @@ - - - - - - - 1.4 Creating Arrow Files | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

1.4 Creating Arrow Files

-

For this tutorial, we will use data from a gold-standard downsampled dataset of hematopoietic cells Granja* et al. Nature Biotechnology 2019. This includes data from bone marrow mononuclear cells (BMMC), peripheral blood mononuclear cells (PBMC), and CD34+ hematopoietic stem and progenitor cells from bone marrow (CD34 BMMC).

-

This data is downloaded as fragment files which contain the start and end genomic coordinates of all aligned sequenced fragments. Fragment files are one of the base file types of the 10x Genomics analytical platform (and other platforms) and can be easily created from any BAM file. See QQQ for information on making your own fragment files for input to ArchR. Once we have our fragment files, we provide their paths as a character vector to createArrowFiles(). During creation, some basic metadata and matrices are added to each ArrowFile including a “TileMatrix” containing insertion counts across genome-wide 500-bp bins (see addTileMatrix()) and a “GeneScoreMatrix” that is determined based on weighting insertion counts in tiles nearby a gene promoter (see addGeneScoreMatrix()).

-
library(ArchR)
-
-#Get Tutorial Data ~0.6GB To Download (if downloaded already ArchR will bypass downloading).
-inputFiles <- getTutorialData("Hematopoiesis")
-inputFiles
-#                                      scATAC_BMMC_R1 
-#      "HemeFragments/scATAC_BMMC_R1.fragments.tsv.gz" 
-#                                  scATAC_CD34_BMMC_R1 
-# "HemeFragments/scATAC_CD34_BMMC_R1.fragments.tsv.gz" 
-#                                       scATAC_PBMC_R1 
-#      "HemeFragments/scATAC_PBMC_R1.fragments.tsv.gz" 
-

Now we will create our Arrow Files (~10-15 minutes). For each sample, this step will:
-1. Read accessible fragments from the provided input files.
-2. Calculate quality control information for each cell (i.e. TSS enrichment scores and nucleosome info).
-3. Filter cells based on quality control parameters.
-4. Create a genome-wide TileMatrix using 500-bp bins.
-5. Create a GeneScoreMatrix using the custom geneAnnotation that was defined when we called addArchRGenome().

-
#Set Genome Annotations to be used to hg19
-addArchRGenome("hg19")
-
-#Set Default Threads for ArchR Functions
-addArchRThreads(threads = 6) 
-
-ArrowFiles <- createArrowFiles(
-  inputFiles = inputFiles,
-  sampleNames = names(inputFiles),
-  filterTSS = 4, #Dont set this too high because you can always increase later
-  filterFrags = 1000, 
-  addTileMat = TRUE,
-  addGeneScoreMat = TRUE
- )
-ArrowFiles
-# [1] "scATAC_BMMC_R1.arrow"      "scATAC_CD34_BMMC_R1.arrow"
-# [3] "scATAC_PBMC_R1.arrow"
-

This step will create a folder called “QualityControl” in your current working directory that will contain 2 plots associated with each of your samples:
-1. TSS Enrichment Score by log10(Unique Fragments) -

-

For BMMC :

-

-


-

For CD34 BMMC :

-

-


-

For PBMC :

-

-


-


-2. Fragment Size Distribution -

-

For BMMC :

-

-


-

For CD34 BMMC :

-

-


-

For PBMC :

-

-

To download the TSS by Frags PDFs for each sample:

-

Download PDF : scATAC_BMMC_R1-TSS_by_Unique_Frags.pdf
-Download PDF : scATAC_CD34_BMMC_R1-TSS_by_Unique_Frags.pdf
-Download PDF : scATAC_PBMC_R1-TSS_by_Unique_Frags.pdf

-

To download the Fragment Sizes PDFs for each sample:

-

Download PDF : scATAC_BMMC_R1-Fragment_Size_Distribution.pdf
-Download PDF : scATAC_CD34_BMMC_R1-Fragment_Size_Distribution.pdf
-Download PDF : scATAC_PBMC_R1-Fragment_Size_Distribution.pdf

- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/custom-deviations.html b/bookdown/_book/custom-deviations.html deleted file mode 100644 index 004d983..0000000 --- a/bookdown/_book/custom-deviations.html +++ /dev/null @@ -1,374 +0,0 @@ - - - - - - - 12.3 Custom Deviations | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

12.3 Custom Deviations

-

If you have not added motif annotations

-
#Custom Peak Annotations
-EncodePeaks <- c(
-  Encode_K562_GATA1 = "https://www.encodeproject.org/files/ENCFF632NQI/@@download/ENCFF632NQI.bed.gz",
-  Encode_GM12878_CEBPB = "https://www.encodeproject.org/files/ENCFF761MGJ/@@download/ENCFF761MGJ.bed.gz",
-  Encode_K562_Ebf1 = "https://www.encodeproject.org/files/ENCFF868VSY/@@download/ENCFF868VSY.bed.gz",
-  Encode_K562_Pax5 = "https://www.encodeproject.org/files/ENCFF339KUO/@@download/ENCFF339KUO.bed.gz"
-)
-projHeme5 <- addPeakAnnotations(ArchRProj = projHeme5, regions = EncodePeaks, name = "ChIP")
-

If you have not added background peaks

-
projHeme5 <- addBgdPeaks(projHeme5)
-

Add ChromVAR Deviations for Motifs

-
addArchRThreads(8)
-
-projHeme5 <- addDeviationsMatrix(
-  ArchRProj = projHeme5, 
-  peakAnnotation = "ChIP"
-)
-

Plot Variable Motif Annotations

-
plotVarDev <- getVarDeviations(projHeme5, plot = TRUE, name = "ChIPMatrix")
-# DataFrame with 4 rows and 6 columns
-#    seqnames     idx                 name      combinedVars        combinedMeans
-#       <Rle> <array>              <array>         <numeric>            <numeric>
-# f1        z       1    Encode_K562_GATA1  6.19256551652079  -0.0229048763845575
-# f3        z       3     Encode_K562_Ebf1  3.31156290837234   0.0394899516880888
-# f4        z       4     Encode_K562_Pax5  2.93016136274537 -0.00867706262058369
-# f2        z       2 Encode_GM12878_CEBPB 0.779863387389073  0.00919359271019273
-plotVarDev
-

-

We can then plot this as a nice PDF

-
plotPDF(plotVarDev, name = "Variable-ChIP-Deviation-Scores", width = 5, height = 5, ArchRProj = projHeme5, addDOC = FALSE)
-

To get deviation z-scores

-
markerChIP <- getFeatures(projHeme5, useMatrix = "ChIPMatrix")
-markerChIP <- sort(grep("z:", markerChIP, value = TRUE))
-markerChIP
-# [1] "z:Encode_GM12878_CEBPB" "z:Encode_K562_Ebf1"     "z:Encode_K562_GATA1"   
-# [4] "z:Encode_K562_Pax5"    
-
p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "ChIPMatrix", 
-    name = markerChIP, 
-    embedding = "UMAP",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-

To plot all motifs we can use cowplot

-
#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 2),p2))
-

- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/custom-enrichment.html b/bookdown/_book/custom-enrichment.html deleted file mode 100644 index e559afa..0000000 --- a/bookdown/_book/custom-enrichment.html +++ /dev/null @@ -1,348 +0,0 @@ - - - - - - - 11.3 Custom Enrichment | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

11.3 Custom Enrichment

-
#Custom Peak Annotations
-EncodePeaks <- c(
-  Encode_K562_GATA1 = "https://www.encodeproject.org/files/ENCFF632NQI/@@download/ENCFF632NQI.bed.gz",
-  Encode_GM12878_CEBPB = "https://www.encodeproject.org/files/ENCFF761MGJ/@@download/ENCFF761MGJ.bed.gz",
-  Encode_K562_Ebf1 = "https://www.encodeproject.org/files/ENCFF868VSY/@@download/ENCFF868VSY.bed.gz",
-  Encode_K562_Pax5 = "https://www.encodeproject.org/files/ENCFF339KUO/@@download/ENCFF339KUO.bed.gz"
-)
-projHeme5 <- addPeakAnnotations(ArchRProj = projHeme5, regions = EncodePeaks, name = "ChIP")
-
-#Identify ChIP Enrichments
-enrichRegions <- peakAnnoEnrichment(
-    seMarker = markersPeaks,
-    ArchRProj = projHeme5,
-    peakAnnotation = "ChIP",
-    cutOff = "FDR <= 0.1 & Log2FC >= 0.5"
-  )
-enrichRegions
-# class: SummarizedExperiment 
-# dim: 4 14 
-# metadata(0):
-# assays(10): mlog10Padj mlog10p ... CompareFrequency feature
-# rownames(4): Encode_K562_GATA1 Encode_GM12878_CEBPB Encode_K562_Ebf1
-#   Encode_K562_Pax5
-# rowData names(0):
-# colnames(14): C1_Early.Eryth C2_CD4.N1 ... C13_CLP.2 C14_pDC
-# colData names(0):
-
-#Heatmap
-heatmapRegions <- enrichHeatmap(enrichRegions, n = 7, transpose = TRUE)
-draw(heatmapRegions, heatmap_legend_side = "bot", annotation_legend_side = "bot")
-

-

We can then plot this

-
plotPDF(heatmapRegions, name = "Regions-Enriched-Marker-Heatmap", width = 8, height = 6, ArchRProj = projHeme5, addDOC = FALSE)
- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/custom-region-annotation-deviations.html b/bookdown/_book/custom-region-annotation-deviations.html deleted file mode 100644 index 6a4a886..0000000 --- a/bookdown/_book/custom-region-annotation-deviations.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - - - - 12.3 Custom Region Annotation Deviations | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

12.3 Custom Region Annotation Deviations

-

If you have not added motif annotations

-
#Custom Peak Annotations
-EncodePeaks <- c(
-  Encode_K562_GATA1 = "https://www.encodeproject.org/files/ENCFF632NQI/@@download/ENCFF632NQI.bed.gz",
-  Encode_GM12878_CEBPB = "https://www.encodeproject.org/files/ENCFF761MGJ/@@download/ENCFF761MGJ.bed.gz",
-  Encode_K562_Ebf1 = "https://www.encodeproject.org/files/ENCFF868VSY/@@download/ENCFF868VSY.bed.gz",
-  Encode_K562_Pax5 = "https://www.encodeproject.org/files/ENCFF339KUO/@@download/ENCFF339KUO.bed.gz"
-)
-projHeme5 <- addPeakAnnotations(ArchRProj = projHeme5, regions = EncodePeaks, name = "ChIP")
-

If you have not added background peaks

-
projHeme5 <- addBgdPeaks(projHeme5)
-

Add ChromVAR Deviations for Motifs

-
addArchRThreads(8)
-
-projHeme5 <- addDeviationsMatrix(
-  ArchRProj = projHeme5, 
-  peakAnnotation = "ChIP"
-)
-

Plot Variable Motif Annotations

-
plotVarDev <- getVarDeviations(projHeme5, plot = TRUE, name = "ChIPMatrix")
-# DataFrame with 4 rows and 6 columns
-#    seqnames     idx                 name      combinedVars        combinedMeans
-#       <Rle> <array>              <array>         <numeric>            <numeric>
-# f1        z       1    Encode_K562_GATA1  6.19256551652079  -0.0229048763845575
-# f3        z       3     Encode_K562_Ebf1  3.31156290837234   0.0394899516880888
-# f4        z       4     Encode_K562_Pax5  2.93016136274537 -0.00867706262058369
-# f2        z       2 Encode_GM12878_CEBPB 0.779863387389073  0.00919359271019273
-plotVarDev
-

-

We can then plot this as a nice PDF

-
plotPDF(plotVarDev, name = "Variable-ChIP-Deviation-Scores", width = 5, height = 5, ArchRProj = projHeme5, addDOC = FALSE)
-

To get deviation z-scores

-
markerChIP <- getFeatures(projHeme5, useMatrix = "ChIPMatrix")
-markerChIP <- sort(grep("z:", markerChIP, value = TRUE))
-markerChIP
-# [1] "z:Encode_GM12878_CEBPB" "z:Encode_K562_Ebf1"     "z:Encode_K562_GATA1"   
-# [4] "z:Encode_K562_Pax5"    
-
p <- plotEmbedding(
-    ArchRProj = projHeme5, 
-    colorBy = "ChIPMatrix", 
-    name = markerChIP, 
-    embedding = "UMAP",
-    imputeWeights = getImputeWeights(projHeme5)
-)
-

To plot all motifs we can use cowplot

-
#Rearrange for grid plotting
-p2 <- lapply(p, function(x){
-    x + guides(color = FALSE, fill = FALSE) + 
-    theme_ArchR(baseSize = 6.5) +
-    theme(plot.margin = unit(c(0, 0, 0, 0), "cm")) +
-    theme(
-        axis.text.x=element_blank(), 
-        axis.ticks.x=element_blank(), 
-        axis.text.y=element_blank(), 
-        axis.ticks.y=element_blank()
-    )
-})
-do.call(cowplot::plot_grid, c(list(ncol = 2),p2))
-

- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/custom-region-enrichment.html b/bookdown/_book/custom-region-enrichment.html deleted file mode 100644 index 16c3892..0000000 --- a/bookdown/_book/custom-region-enrichment.html +++ /dev/null @@ -1,349 +0,0 @@ - - - - - - - 11.3 Custom Region Enrichment | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

11.3 Custom Region Enrichment

-
#Custom Peak Annotations
-EncodePeaks <- c(
-  Encode_K562_GATA1 = "https://www.encodeproject.org/files/ENCFF632NQI/@@download/ENCFF632NQI.bed.gz",
-  Encode_GM12878_CEBPB = "https://www.encodeproject.org/files/ENCFF761MGJ/@@download/ENCFF761MGJ.bed.gz",
-  Encode_K562_Ebf1 = "https://www.encodeproject.org/files/ENCFF868VSY/@@download/ENCFF868VSY.bed.gz",
-  Encode_K562_Pax5 = "https://www.encodeproject.org/files/ENCFF339KUO/@@download/ENCFF339KUO.bed.gz"
-)
-projHeme5 <- addPeakAnnotations(ArchRProj = projHeme5, regions = EncodePeaks, name = "ChIP")
-
-#Identify ChIP Enrichments
-enrichRegions <- peakAnnoEnrichment(
-    seMarker = markersPeaks,
-    ArchRProj = projHeme5,
-    peakAnnotation = "ChIP",
-    cutOff = "FDR <= 0.1 & Log2FC >= 0.5"
-  )
-enrichRegions
-# class: SummarizedExperiment 
-# dim: 4 14 
-# metadata(0):
-# assays(10): mlog10Padj mlog10p ... CompareFrequency feature
-# rownames(4): Encode_K562_GATA1 Encode_GM12878_CEBPB Encode_K562_Ebf1
-#   Encode_K562_Pax5
-# rowData names(0):
-# colnames(14): C1_Early.Eryth C2_CD4.N1 ... C13_CLP.2 C14_pDC
-# colData names(0):
-
-#Heatmap
-heatmapRegions <- enrichHeatmap(enrichRegions, n = 7, transpose = TRUE)
-draw(heatmapRegions, heatmap_legend_side = "bot", annotation_legend_side = "bot")
-

-

We can then plot this

-
plotPDF(heatmapRegions, name = "Regions-Enriched-Marker-Heatmap", width = 8, height = 6, ArchRProj = projHeme5, addDOC = FALSE)
- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/dimensionality-reduction-with-archr.html b/bookdown/_book/dimensionality-reduction-with-archr.html deleted file mode 100644 index be41c77..0000000 --- a/bookdown/_book/dimensionality-reduction-with-archr.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - Chapter 4 Dimensionality Reduction with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 4 Dimensionality Reduction with ArchR

-

Dimensionality reduction with scATAC-seq is challenging due to the sparsity of the data. When we see multiple Tn5 insertions within a single peak it does not necessarily relate to that site being multiple times more accessible than -a different site. For this reason a lot of analytical strategies work on a binary scATAC-seq data matrix. First, it is important to determine which regions to use for dimensionality reduction. The main two strategies have been using ATAC-seq peaks or larger kilobase scale tiles genome-wide. However, determining a peak set is a bit challenging because it changes with the number of samples in each experiment. This makes comparisons of multiple data sets extremely challenging. Another strategy is to use large kilobase scale tiles which is promising because it solves the multiple sample comparison challenge by using a predetermined feature set. However, most of the time this is performed on a 5kb+ sized tiles which are much larger (10x) than an accessible region. ArchR was designed to merge these methods by creating a 500-bp genome-wide feature set. The challenge is that this cell by tile matrix is around 6 million features which is too large to read into R for many cells. Therefore, ArchR is designed to compute dimensionality reduction on a subset of these features that are more biologically relevant.

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/doublet-inference-with-archr.html b/bookdown/_book/doublet-inference-with-archr.html deleted file mode 100644 index 4b42e83..0000000 --- a/bookdown/_book/doublet-inference-with-archr.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - Chapter 2 Doublet Inference with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 2 Doublet Inference with ArchR

-

One major source of trouble in single-cell data is the contribution of “doublets” to the analysis. A doublet refers to a single droplet that received a single barcoded bead and more than one nucleus. This causes the reads from more than one cell to appear as a single cell that is effectively the average of the two cells. We remove these computationally and describe this doublet removal process in depth in this chapter.

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/feature-footprinting.html b/bookdown/_book/feature-footprinting.html deleted file mode 100644 index c5fd61c..0000000 --- a/bookdown/_book/feature-footprinting.html +++ /dev/null @@ -1,335 +0,0 @@ - - - - - - - 13.2 Feature Footprinting | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

13.2 Feature Footprinting

-
#Create Group Coverage Files if you have not done so already
-projHeme5 <- addGroupCoverages(ArchRProj = projHeme5, groupBy = "Clusters2")
-
-

13.2.1 No Normalization

-
#Plot Motif Footprints from positions list
-#Recommend doing a few motifs not entire motif set
-seTSS_None <- plotFootprints(
-  ArchRProj = projHeme5, 
-  positions = GRangesList(TSS = getTSS(projHeme5)), 
-  groupBy = "Clusters2",
-  normMethod = "none",
-  plotName = "TSS-No-Normalization",
-  flank = 2000,
-  flankNorm = 100
-)
-

By default the plots will be in the outputDirectory of the ArchRProject. The challenge is that if you requested to plot all motifs and returned this as a ggplot object it could be extremely large. An example of motif footprints ran from this function are seen below.

-
- -
- -
-
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/filtering-doublets-from-an-archrproject.html b/bookdown/_book/filtering-doublets-from-an-archrproject.html deleted file mode 100644 index 275678f..0000000 --- a/bookdown/_book/filtering-doublets-from-an-archrproject.html +++ /dev/null @@ -1,344 +0,0 @@ - - - - - - - 3.5 Filtering Doublets from an ArchRProject | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

3.5 Filtering Doublets from an ArchRProject

-
#Remove doublets as normal
-#If you feel there are more doublets try increasing filterRatio like below
-projHeme2 <- filterDoublets(projHeme1)
-# Filtering 410 cells from ArchRProject!
-#   scATAC_BMMC_R1 : 243 of 4932 (4.9%)
-#   scATAC_CD34_BMMC_R1 : 107 of 3275 (3.3%)
-#   scATAC_PBMC_R1 : 60 of 2454 (2.4%)
-
-#Lets see the project now
-projHeme2
-# class: ArchRProject 
-# outputDirectory: /Volumes/JG_SSD_2/ArchR_Walkthrough/HemeTutorial 
-# samples(3): scATAC_BMMC_R1 scATAC_CD34_BMMC_R1 scATAC_PBMC_R1
-# sampleColData names(1): ArrowFiles
-# cellColData names(11): DoubletEnrichment DoubletScore ... Sample
-#   TSSEnrichment
-# numberOfCells(1): 10251
-# medianTSS(1): 16.851
-# medianFrags(1): 2994
-

If you want to filter more cells from the ArchR Project try a higher filterRatio. -To see additional arguments try ?filterDoublets

-
projHemeTmp <- filterDoublets(projHeme1, filterRatio = 1.5)
-# Filtering 614 cells from ArchRProject!
-#   scATAC_BMMC_R1 : 364 of 4932 (7.4%)
-#   scATAC_CD34_BMMC_R1 : 160 of 3275 (4.9%)
-#   scATAC_PBMC_R1 : 90 of 2454 (3.7%)
-rm(projHemeTmp)
-

We can now save our original projHeme1 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme1, copyArrows = FALSE)
- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/footprinting-with-archr.html b/bookdown/_book/footprinting-with-archr.html deleted file mode 100644 index 4e88bc9..0000000 --- a/bookdown/_book/footprinting-with-archr.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - Chapter 13 Footprinting with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 13 Footprinting with ArchR

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/getting-set-up.html b/bookdown/_book/getting-set-up.html deleted file mode 100644 index de058bd..0000000 --- a/bookdown/_book/getting-set-up.html +++ /dev/null @@ -1,328 +0,0 @@ - - - - - - - 1.2 Getting Set Up | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

1.2 Getting Set Up

-

The first thing we do is set up our working directory and set the number of threads we would like to use, and load our gene and genome annotations. Depending on the configuration of your local environment, you may need to modify the number of threads used below in addArchRThreads(). By default ArchR uses half of the total number of threads available but you can adjust this manually as you see fit. If you are using windows, the usable threads will automatically be set to 1 because the parallel processing in ArchR is build for Unix-based operating systems.

-
#Load R Libraries
-library(ArchR)
-
-#Create a new folder and set this as the working directory for tutorial analyses
-wd <- "ArchR_Walkthrough"
-dir.create(wd, showWarnings = FALSE, recursive = TRUE)
-setwd(wd)
-
-#Set Default Threads for ArchR Functions
-#The recommendation is to set it around 1/2 to 3/4 of the total available cores.
-addArchRThreads(threads = 6) 
-
-#Set Gene and Genome Annotations to be used
-addArchRGenome("hg19")
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/getting-started-with-archr.html b/bookdown/_book/getting-started-with-archr.html deleted file mode 100644 index 88a8347..0000000 --- a/bookdown/_book/getting-started-with-archr.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - Chapter 1 Getting Started with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 1 Getting Started with ArchR

-

This chapter will introduce you to how to import data into ArchR.

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/identification-of-marker-genes-1.html b/bookdown/_book/identification-of-marker-genes-1.html deleted file mode 100644 index f659190..0000000 --- a/bookdown/_book/identification-of-marker-genes-1.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - 7.1 Identification of Marker Genes | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

7.1 Identification of Marker Genes

-

Identify Marker Gene through Pairwise Test vs Bias-Matched Background

-
markersGS <- markerFeatures(
-    ArchRProj = projHemeND, 
-    useMatrix = "GeneScoreMatrix", 
-    groupBy = "Clusters",
-    bias = c("TSSEnrichment", "log10(nFrags)"),
-    testMethod = "wilcoxon"
-)
-
markerList <- getMarkers(markersGS, cutOff = "FDR <= 0.01 & Log2FC >= 1.25")
-markerList$Cluster4
-# DataFrame with 210 rows and 6 columns
-#       seqnames     start           name     idx           Log2FC
-#          <Rle>   <array>        <array> <array>        <numeric>
-# 14759    chr22  37545962          IL2RB     301 2.09731361787433
-# 6856     chr14  99737822         BCL11B     595 1.42193213075962
-# 13123     chr2 192038902          STAT4    1064 1.90075014141832
-# 12597     chr2  87035519           CD8A     538 1.96747880033344
-# 9299     chr17  34207377           CCL5     540 2.65385587389937
-# ...        ...       ...            ...     ...              ...
-# 1488      chr1 156182779           PMF1    1488 1.35708770978464
-# 22735     chrX 101854276 ARMCX5-GPRASP2     518 1.59283344451927
-# 19680     chr7  45144641        SNORA5C     318 1.27027443652085
-# 1856      chr1 196659182          CFHR4    1856 1.92661384224492
-# 17830     chr5 140739703        PCDHGB2     690 2.93899133419389
-

We can then plot this as a heatmap

-
markerGenes  <- c(
-    "CD34", #Early Progenitor
-    "GATA1", #Erythroid
-    "PAX5", "MS4A1", #B-Cell Trajectory
-    "CD14", #Monocytes
-    "CD3D", "CD8A", "TBX21", "IL7R" #TCells
-  )
-
-heatmapGS <- markerHeatmap(
-  seMarker = markersGS, 
-  cutOff = "FDR <= 0.01 & Log2FC >= 1.25", 
-  labelMarkers = markerGenes,
-  transpose = TRUE
-)
-
-draw(heatmapGS, heatmap_legend_side = "bot", annotation_legend_side = "bot")
-

We can then plot this

-
plotPDF(heatmapGS, name = "GeneScores-Marker-Heatmap", width = 9, height = 7, ArchRProj = projHemeND, addDOC = FALSE)
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/identification-of-marker-genes.html b/bookdown/_book/identification-of-marker-genes.html deleted file mode 100644 index b300bac..0000000 --- a/bookdown/_book/identification-of-marker-genes.html +++ /dev/null @@ -1,358 +0,0 @@ - - - - - - - 7.1 Identification of Marker Genes | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

7.1 Identification of Marker Genes

-

Identify Marker Gene through Pairwise Test vs Bias-Matched Background

-
markersGS <- markerFeatures(
-    ArchRProj = projHeme2, 
-    useMatrix = "GeneScoreMatrix", 
-    groupBy = "Clusters",
-    bias = c("TSSEnrichment", "log10(nFrags)"),
-    testMethod = "wilcoxon"
-)
-
markerList <- getMarkers(markersGS, cutOff = "FDR <= 0.01 & Log2FC >= 1.25")
-markerList$Cluster4
-# DataFrame with 210 rows and 6 columns
-#       seqnames     start           name     idx           Log2FC
-#          <Rle>   <array>        <array> <array>        <numeric>
-# 14759    chr22  37545962          IL2RB     301 2.09731361787433
-# 6856     chr14  99737822         BCL11B     595 1.42193213075962
-# 13123     chr2 192038902          STAT4    1064 1.90075014141832
-# 12597     chr2  87035519           CD8A     538 1.96747880033344
-# 9299     chr17  34207377           CCL5     540 2.65385587389937
-# ...        ...       ...            ...     ...              ...
-# 1488      chr1 156182779           PMF1    1488 1.35708770978464
-# 22735     chrX 101854276 ARMCX5-GPRASP2     518 1.59283344451927
-# 19680     chr7  45144641        SNORA5C     318 1.27027443652085
-# 1856      chr1 196659182          CFHR4    1856 1.92661384224492
-# 17830     chr5 140739703        PCDHGB2     690 2.93899133419389
-

We can then plot this as a heatmap

-
markerGenes  <- c(
-    "CD34", #Early Progenitor
-    "GATA1", #Erythroid
-    "PAX5", "MS4A1", #B-Cell Trajectory
-    "CD14", #Monocytes
-    "CD3D", "CD8A", "TBX21", "IL7R" #TCells
-  )
-
-heatmapGS <- markerHeatmap(
-  seMarker = markersGS, 
-  cutOff = "FDR <= 0.01 & Log2FC >= 1.25", 
-  labelMarkers = markerGenes,
-  transpose = TRUE
-)
-
-draw(heatmapGS, heatmap_legend_side = "bot", annotation_legend_side = "bot")
-

-

We can then plot this

-
plotPDF(heatmapGS, name = "GeneScores-Marker-Heatmap", width = 8, height = 6, ArchRProj = projHeme2, addDOC = FALSE)
-

Download PDF : GeneScores-Marker-Heatmap.pdf

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/identifying-marker-peaks-with-archr-1.html b/bookdown/_book/identifying-marker-peaks-with-archr-1.html deleted file mode 100644 index 124947a..0000000 --- a/bookdown/_book/identifying-marker-peaks-with-archr-1.html +++ /dev/null @@ -1,423 +0,0 @@ - - - - - - - 10.1 Identifying Marker Peaks with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

10.1 Identifying Marker Peaks with ArchR

-

Often times, we are interested to know which peaks are unique to an individual cluster or a small group of clusters. We can do this in an unsupervised fashion in ArchR:

-
addArchRThreads(8)
-
-#Our scRNA labels
-table(projHeme5$Clusters2)
-# C1_Early.Eryth C10_CD14.Mono.2           C11_B       C12_Pre.B       C13_CLP.2 
-#             28            1070             425             351             408 
-#        C14_pDC       C2_CD4.N1       C3_CD4.N2           C4_NK   C5_Late.Eryth 
-#            345            1330             562             901             860 
-#         C6_HSC     C7_CMP.LMPP     C8_GMP.Neut  C9_CD14.Mono.1 
-#           1218             974             274            1505 
-
-#Identify Marker Peaks while controling for TSS and Depth Biases
-markersPeaks <- markerFeatures(
-    ArchRProj = projHeme5, 
-    useMatrix = "PeakMatrix", 
-    groupBy = "Clusters2",
-    bias = c("TSSEnrichment", "log10(nFrags)"),
-    testMethod = "wilcoxon"
-)
-
-markersPeaks
-# class: SummarizedExperiment 
-# dim: 158378 14 
-# metadata(2): MatchInfo Params
-# assays(5): Log2FC Mean FDR AUC MeanBGD
-# rownames(158378): 1 2 ... 158377 158378
-# rowData names(4): seqnames idx start end
-# colnames(14): C1_Early.Eryth C2_CD4.N1 ... C13_CLP.2 C14_pDC
-# colData names(0):
-

We can get the peak regions for each marker as DataFrame or GRanges.

-
#DataFrame
-markerList <- getMarkers(markersPeaks, cutOff = "FDR <= 0.01 & Log2FC >= 1")
-markerList
-# List of length 14
-# names(14): C1_Early.Eryth C2_CD4.N1 C3_CD4.N2 ... C12_Pre.B C13_CLP.2 C14_pDC
-
-markerList$C5_Late.Eryth
-# DataFrame with 2262 rows and 6 columns
-#        seqnames     idx     start       end           Log2FC
-#           <Rle> <array>   <array>   <array>        <numeric>
-# 97705     chr22    1313  30129829  30130329 3.51592607805769
-# 10135      chr1   10135 164681301 164681801 4.44617535438744
-# 48828     chr15    1349  50552672  50553172 5.18141784055201
-# 54061     chr16    1457  15615745  15616245 8.33999798117364
-# 2928       chr1    2928  27869062  27869562 5.21444029812509
-# ...         ...     ...       ...       ...              ...
-# 41787     chr13    3145 112037183 112037683 3.09392983218513
-# 97647     chr22    1255  29702383  29702883 2.97001510006876
-# 143218     chr8    1908  37949093  37949593  2.9624832757185
-# 39746     chr13    1104  41255455  41255955 1.27203148042162
-# 128023     chr6    3784  41169564  41170064 2.67070386367678
-
-#GRanges
-markerList <- getMarkers(markersPeaks, cutOff = "FDR <= 0.01 & Log2FC >= 1", returnGR = TRUE)
-markerList
-# GenomicRangesList of length 14
-# names(14): C1_Early.Eryth C2_CD4.N1 C3_CD4.N2 ... C12_Pre.B C13_CLP.2 C14_pDC
-
-markerList$C5_Late.Eryth
-# GRanges object with 2262 ranges and 2 metadata columns:
-#          seqnames              ranges strand |           Log2FC
-#             <Rle>           <IRanges>  <Rle> |        <numeric>
-#      [1]    chr22   30129829-30130329      * | 3.51592607805769
-#      [2]     chr1 164681301-164681801      * | 4.44617535438744
-#      [3]    chr15   50552672-50553172      * | 5.18141784055201
-#      [4]    chr16   15615745-15616245      * | 8.33999798117364
-#      [5]     chr1   27869062-27869562      * | 5.21444029812509
-#      ...      ...                 ...    ... .              ...
-#   [2258]    chr13 112037183-112037683      * | 3.09392983218513
-#   [2259]    chr22   29702383-29702883      * | 2.97001510006876
-#   [2260]     chr8   37949093-37949593      * |  2.9624832757185
-#   [2261]    chr13   41255455-41255955      * | 1.27203148042162
-#   [2262]     chr6   41169564-41170064      * | 2.67070386367678
-

We can visualize this as a heatmap

-
#Visualize Markers as a heatmap
-heatmapPeaks <- markerHeatmap(
-  seMarker = markersPeaks, 
-  cutOff = "FDR <= 0.1 & Log2FC >= 0.5",
-  transpose = TRUE
-)
-
-draw(heatmapPeaks, heatmap_legend_side = "bot", annotation_legend_side = "bot")
-

-

We can then plot this

-
plotPDF(heatmapPeaks, name = "Peak-Marker-Heatmap", width = 8, height = 6, ArchRProj = projHeme5, addDOC = FALSE)
-

We can also plot an MA/Volcano Plot for any individual cluster

-
#Marker Peaks for Erythroid
-pma <- markerPlot(seMarker = markersPeaks, name = "C5_Late.Eryth", cutOff = "FDR <= 0.1 & Log2FC >= 1", plotAs = "MA")
-pma
-

-
pv <- markerPlot(seMarker = markersPeaks, name = "C5_Late.Eryth", cutOff = "FDR <= 0.1 & Log2FC >= 1", plotAs = "Volcano")
-pv
-

-

We can then plot this as a nice pdf

-
plotPDF(pma, pv, name = "Erythroid-Markers-MA-Volcano", width = 5, height = 5, ArchRProj = projHeme5, addDOC = FALSE)
-

Additionally we can see these peak regions overlayed on our browser tracks

-
p <- ArchRBrowserTrack(
-    ArchRProj = projHeme5, 
-    groupBy = "Clusters", 
-    geneSymbol = c("GATA1"),
-    features =  getMarkers(markersPeaks, cutOff = "FDR <= 0.1 & Log2FC >= 1", returnGR = TRUE)["C5_Late.Eryth"],
-    upstream = 50000,
-    downstream = 50000
-)
-grid::grid.newpage()
-grid::grid.draw(p$GATA1)
-

-

We can then plot this as a nice pdf

-
plotPDF(p, name = "Plot-Tracks-With-Features", width = 5, height = 5, ArchRProj = projHeme5, addDOC = FALSE)
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/identifying-marker-peaks-with-archr.html b/bookdown/_book/identifying-marker-peaks-with-archr.html deleted file mode 100644 index 0795e45..0000000 --- a/bookdown/_book/identifying-marker-peaks-with-archr.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - Chapter 10 Identifying Marker Peaks with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 10 Identifying Marker Peaks with ArchR

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/images/.DS_Store b/bookdown/_book/images/.DS_Store deleted file mode 100644 index ad1c976..0000000 Binary files a/bookdown/_book/images/.DS_Store and /dev/null differ diff --git a/bookdown/_book/images/ArchRProject_Schematic.png b/bookdown/_book/images/ArchRProject_Schematic.png deleted file mode 100644 index 993a3ac..0000000 Binary files a/bookdown/_book/images/ArchRProject_Schematic.png and /dev/null differ diff --git a/bookdown/_book/images/ArchR_FunctionSchematic.png b/bookdown/_book/images/ArchR_FunctionSchematic.png deleted file mode 100644 index efc00a1..0000000 Binary files a/bookdown/_book/images/ArchR_FunctionSchematic.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/.DS_Store b/bookdown/_book/images/HemeWalkthrough/.DS_Store deleted file mode 100644 index 2756822..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/.DS_Store and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/GeneScores-Marker-Heatmap.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/GeneScores-Marker-Heatmap.pdf deleted file mode 100755 index a50780d..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/GeneScores-Marker-Heatmap.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-TSNE-Sample-Clusters.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/Plot-TSNE-Sample-Clusters.pdf deleted file mode 100755 index a531f9f..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-TSNE-Sample-Clusters.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-TSNE2Harmony-Sample-Clusters.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/Plot-TSNE2Harmony-Sample-Clusters.pdf deleted file mode 100755 index 9a79293..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-TSNE2Harmony-Sample-Clusters.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-Tracks-Marker-Genes-with-CoAccessibility.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/Plot-Tracks-Marker-Genes-with-CoAccessibility.pdf deleted file mode 100644 index c1aa5c8..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-Tracks-Marker-Genes-with-CoAccessibility.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-Tracks-Marker-Genes.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/Plot-Tracks-Marker-Genes.pdf deleted file mode 100755 index 64abc7f..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-Tracks-Marker-Genes.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP-Marker-Genes-W-Imputation.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP-Marker-Genes-W-Imputation.pdf deleted file mode 100755 index 9a097df..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP-Marker-Genes-W-Imputation.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP-Marker-Genes-WO-Imputation.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP-Marker-Genes-WO-Imputation.pdf deleted file mode 100755 index fc1f7b0..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP-Marker-Genes-WO-Imputation.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP-Sample-Clusters.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP-Sample-Clusters.pdf deleted file mode 100755 index a95bb31..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP-Sample-Clusters.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP-Sample-ScranClusters.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP-Sample-ScranClusters.pdf deleted file mode 100755 index f6389d8..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP-Sample-ScranClusters.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP2Harmony-Sample-Clusters.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP2Harmony-Sample-Clusters.pdf deleted file mode 100755 index 99c4717..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-UMAP2Harmony-Sample-Clusters.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-tSNE-Sample-ScranClusters.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/Plot-tSNE-Sample-ScranClusters.pdf deleted file mode 100755 index 87f1fe5..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/Plot-tSNE-Sample-ScranClusters.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/QC-Sample-FragSizes-TSSProfile.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/QC-Sample-FragSizes-TSSProfile.pdf deleted file mode 100755 index 306b07e..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/QC-Sample-FragSizes-TSSProfile.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/QC-Sample-Statistics.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/QC-Sample-Statistics.pdf deleted file mode 100755 index 862ae54..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/QC-Sample-Statistics.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/TSS-vs-Frags.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/TSS-vs-Frags.pdf deleted file mode 100755 index 70c2edf..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/TSS-vs-Frags.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_BMMC_R1-Doublet-Summary.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_BMMC_R1-Doublet-Summary.pdf deleted file mode 100755 index 3024a07..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_BMMC_R1-Doublet-Summary.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_BMMC_R1-Fragment_Size_Distribution.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_BMMC_R1-Fragment_Size_Distribution.pdf deleted file mode 100755 index 75b4900..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_BMMC_R1-Fragment_Size_Distribution.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_BMMC_R1-TSS_by_Unique_Frags.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_BMMC_R1-TSS_by_Unique_Frags.pdf deleted file mode 100755 index 5dfbb65..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_BMMC_R1-TSS_by_Unique_Frags.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_CD34_BMMC_R1-Doublet-Summary.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_CD34_BMMC_R1-Doublet-Summary.pdf deleted file mode 100755 index f118246..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_CD34_BMMC_R1-Doublet-Summary.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_CD34_BMMC_R1-Fragment_Size_Distribution.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_CD34_BMMC_R1-Fragment_Size_Distribution.pdf deleted file mode 100755 index 2b1367e..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_CD34_BMMC_R1-Fragment_Size_Distribution.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_CD34_BMMC_R1-TSS_by_Unique_Frags.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_CD34_BMMC_R1-TSS_by_Unique_Frags.pdf deleted file mode 100755 index 28eac83..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_CD34_BMMC_R1-TSS_by_Unique_Frags.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_PBMC_R1-Doublet-Summary.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_PBMC_R1-Doublet-Summary.pdf deleted file mode 100755 index 324b266..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_PBMC_R1-Doublet-Summary.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_PBMC_R1-Fragment_Size_Distribution.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_PBMC_R1-Fragment_Size_Distribution.pdf deleted file mode 100755 index 29e69db..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_PBMC_R1-Fragment_Size_Distribution.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_PBMC_R1-TSS_by_Unique_Frags.pdf b/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_PBMC_R1-TSS_by_Unique_Frags.pdf deleted file mode 100755 index 53baa3e..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PDF/scATAC_PBMC_R1-TSS_by_Unique_Frags.pdf and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/ATAC-Enriched-Marker-Heatmap_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/ATAC-Enriched-Marker-Heatmap_1.png deleted file mode 100755 index 1bb00c6..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/ATAC-Enriched-Marker-Heatmap_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/ArchRBrowser_CD14.png b/bookdown/_book/images/HemeWalkthrough/PNG/ArchRBrowser_CD14.png deleted file mode 100644 index cd48e50..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/ArchRBrowser_CD14.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_1.png deleted file mode 100644 index b7d23de..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_2.png deleted file mode 100644 index f489cde..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_3.png deleted file mode 100644 index 0953326..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_4.png b/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_4.png deleted file mode 100644 index d2e02fd..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_4.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_5.png b/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_5.png deleted file mode 100644 index c017267..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_5.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_6.png b/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_6.png deleted file mode 100644 index cf097c1..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/ArchR_Browser_6.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Codex-Enriched-Marker-Heatmap_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Codex-Enriched-Marker-Heatmap_1.png deleted file mode 100755 index 8e05d1b..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Codex-Enriched-Marker-Heatmap_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/EncodeTFBS-Enriched-Marker-Heatmap_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/EncodeTFBS-Enriched-Marker-Heatmap_1.png deleted file mode 100755 index 7265a4b..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/EncodeTFBS-Enriched-Marker-Heatmap_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-Markers-MA-Volcano_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-Markers-MA-Volcano_1.png deleted file mode 100755 index 9f94e6b..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-Markers-MA-Volcano_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-Markers-MA-Volcano_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-Markers-MA-Volcano_2.png deleted file mode 100755 index 9e64176..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-Markers-MA-Volcano_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-vs-HSC-Markers-MA-Volcano_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-vs-HSC-Markers-MA-Volcano_1.png deleted file mode 100755 index e3cdc81..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-vs-HSC-Markers-MA-Volcano_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-vs-HSC-Markers-MA-Volcano_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-vs-HSC-Markers-MA-Volcano_2.png deleted file mode 100755 index 0de18bc..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-vs-HSC-Markers-MA-Volcano_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-vs-HSC-Markers-Motifs-Enriched_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-vs-HSC-Markers-Motifs-Enriched_1.png deleted file mode 100755 index 2206431..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-vs-HSC-Markers-Motifs-Enriched_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-vs-HSC-Markers-Motifs-Enriched_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-vs-HSC-Markers-Motifs-Enriched_2.png deleted file mode 100755 index 386d985..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Erythroid-vs-HSC-Markers-Motifs-Enriched_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Divide-Bias_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Divide-Bias_1.png deleted file mode 100755 index e998902..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Divide-Bias_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Divide-Bias_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Divide-Bias_2.png deleted file mode 100755 index a4234f6..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Divide-Bias_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Divide-Bias_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Divide-Bias_3.png deleted file mode 100755 index 49a1168..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Divide-Bias_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-No-Normalization_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-No-Normalization_1.png deleted file mode 100755 index 79b0ad0..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-No-Normalization_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-No-Normalization_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-No-Normalization_2.png deleted file mode 100755 index 2bca34a..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-No-Normalization_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-No-Normalization_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-No-Normalization_3.png deleted file mode 100755 index 6e8f554..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-No-Normalization_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Subtract-Bias_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Subtract-Bias_1.png deleted file mode 100755 index a463169..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Subtract-Bias_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Subtract-Bias_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Subtract-Bias_2.png deleted file mode 100755 index 1978a5f..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Subtract-Bias_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Subtract-Bias_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Subtract-Bias_3.png deleted file mode 100755 index 682e5bf..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Footprints-Subtract-Bias_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/GeneScores-Marker-Heatmap_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/GeneScores-Marker-Heatmap_1.png deleted file mode 100755 index 51e3e83..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/GeneScores-Marker-Heatmap_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Motifs-Enriched-Marker-Heatmap_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Motifs-Enriched-Marker-Heatmap_1.png deleted file mode 100755 index 698a10b..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Motifs-Enriched-Marker-Heatmap_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Peak-Call-Summary_Date-2020-02-17_Time-02-25-49_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Peak-Call-Summary_Date-2020-02-17_Time-02-25-49_1.png deleted file mode 100755 index 7b6017e..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Peak-Call-Summary_Date-2020-02-17_Time-02-25-49_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Peak-Call-Summary_Date-2020-02-17_Time-02-47-12_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Peak-Call-Summary_Date-2020-02-17_Time-02-47-12_1.png deleted file mode 100755 index 05c25c5..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Peak-Call-Summary_Date-2020-02-17_Time-02-47-12_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Peak-Marker-Heatmap_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Peak-Marker-Heatmap_1.png deleted file mode 100755 index ae3a9d5..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Peak-Marker-Heatmap_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation-Cowplot_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation-Cowplot_1.png deleted file mode 100755 index cc45af0..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation-Cowplot_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_1.png deleted file mode 100755 index 1c54fd4..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_2.png deleted file mode 100755 index c4402e3..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_3.png deleted file mode 100755 index 7e62216..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_4.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_4.png deleted file mode 100755 index d363a4f..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_4.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_5.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_5.png deleted file mode 100755 index 2f93831..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_5.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_6.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_6.png deleted file mode 100755 index 083b140..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Groups-Deviations-w-Imputation_6.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-RNA-GS_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-RNA-GS_1.png deleted file mode 100755 index d54e085..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-RNA-GS_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-Heatmaps_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-Heatmaps_1.png deleted file mode 100755 index 17fdd2a..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-Heatmaps_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-Heatmaps_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-Heatmaps_2.png deleted file mode 100755 index e1ea8d7..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-Heatmaps_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-Heatmaps_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-Heatmaps_3.png deleted file mode 100755 index 40c1de4..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-Heatmaps_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-Heatmaps_4.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-Heatmaps_4.png deleted file mode 100755 index 8d0f9fa..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-Heatmaps_4.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-UMAP_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-UMAP_1.png deleted file mode 100755 index c3d714d..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-LymphoidU-Traj-UMAP_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-RNA-GS_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-RNA-GS_1.png deleted file mode 100755 index 021d02a..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-RNA-GS_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-Heatmaps_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-Heatmaps_1.png deleted file mode 100755 index 3991266..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-Heatmaps_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-Heatmaps_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-Heatmaps_2.png deleted file mode 100755 index 358db43..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-Heatmaps_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-Heatmaps_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-Heatmaps_3.png deleted file mode 100755 index fdbce9c..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-Heatmaps_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-Heatmaps_4.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-Heatmaps_4.png deleted file mode 100755 index 0775f6c..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-Heatmaps_4.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-UMAP_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-UMAP_1.png deleted file mode 100755 index f3ec4b1..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-MyeloidU-Traj-UMAP_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE-Sample-Clusters-Combined_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE-Sample-Clusters-Combined_1.png deleted file mode 100755 index 7285a43..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE-Sample-Clusters-Combined_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE-Sample-Clusters_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE-Sample-Clusters_1.png deleted file mode 100755 index 14b4dea..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE-Sample-Clusters_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE-Sample-Clusters_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE-Sample-Clusters_2.png deleted file mode 100755 index 0337803..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE-Sample-Clusters_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2-Sample-Clusters-Combined_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2-Sample-Clusters-Combined_1.png deleted file mode 100755 index 0d4c197..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2-Sample-Clusters-Combined_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2Harmony-Sample-Clusters_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2Harmony-Sample-Clusters_1.png deleted file mode 100755 index 1934a00..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2Harmony-Sample-Clusters_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2Harmony-Sample-Clusters_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2Harmony-Sample-Clusters_2.png deleted file mode 100755 index 75829a6..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2Harmony-Sample-Clusters_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2Harmony-Sample-Clusters_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2Harmony-Sample-Clusters_3.png deleted file mode 100755 index 5c9720a..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2Harmony-Sample-Clusters_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2Harmony-Sample-Clusters_4.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2Harmony-Sample-Clusters_4.png deleted file mode 100755 index fb010e1..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNE2Harmony-Sample-Clusters_4.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNEHarmony-Sample-Clusters-Combined_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNEHarmony-Sample-Clusters-Combined_1.png deleted file mode 100755 index 26cc8c4..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-TSNEHarmony-Sample-Clusters-Combined_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes-with-CoAccessibility_5.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes-with-CoAccessibility_5.png deleted file mode 100755 index ddb7407..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes-with-CoAccessibility_5.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_1.png deleted file mode 100755 index ecf8da2..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_2.png deleted file mode 100755 index d62dfcf..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_3.png deleted file mode 100755 index a1cc759..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_4.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_4.png deleted file mode 100755 index e614411..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_4.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_5.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_5.png deleted file mode 100755 index a29f920..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_5.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_6.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_6.png deleted file mode 100755 index f26d20a..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_6.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_7.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_7.png deleted file mode 100755 index 9ff4a75..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_7.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_8.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_8.png deleted file mode 100755 index 9dcc975..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_8.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_9.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_9.png deleted file mode 100755 index 7efd95c..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-Marker-Genes_9.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-With-Features_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-With-Features_1.png deleted file mode 100755 index 14bc3ea..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-Tracks-With-Features_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-CEBPB-Combined2_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-CEBPB-Combined2_1.png deleted file mode 100755 index a1025f0..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-CEBPB-Combined2_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-CEBPB-Combined_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-CEBPB-Combined_1.png deleted file mode 100755 index b09eef8..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-CEBPB-Combined_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Clusters12-Combined_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Clusters12-Combined_1.png deleted file mode 100755 index 0ecf30b..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Clusters12-Combined_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-EncodeTFBS-W-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-EncodeTFBS-W-Imputation_1.png deleted file mode 100755 index 84ebb0f..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-EncodeTFBS-W-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-EncodeTFBSGS-W-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-EncodeTFBSGS-W-Imputation_1.png deleted file mode 100755 index bf0e096..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-EncodeTFBSGS-W-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-EncodeTFBSRNA-W-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-EncodeTFBSRNA-W-Imputation_1.png deleted file mode 100755 index 3baae10..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-EncodeTFBSRNA-W-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_1.png deleted file mode 100755 index 5251a9a..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_2.png deleted file mode 100755 index 3584fde..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_3.png deleted file mode 100755 index c2a5bb6..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_4.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_4.png deleted file mode 100755 index 071681f..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_4.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_5.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_5.png deleted file mode 100755 index 2cc5ff6..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_5.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_6.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_6.png deleted file mode 100755 index 1e0bc77..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_6.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_7.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_7.png deleted file mode 100755 index 20b5333..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_7.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_8.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_8.png deleted file mode 100755 index 24d989d..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_8.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_9.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_9.png deleted file mode 100755 index 9aca4ef..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-RNA-W-Imputation_9.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_1.png deleted file mode 100755 index cd23670..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_2.png deleted file mode 100755 index 26caef2..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_3.png deleted file mode 100755 index 9bfb1a3..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_4.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_4.png deleted file mode 100755 index 3856ce0..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_4.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_5.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_5.png deleted file mode 100755 index aea59c6..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_5.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_6.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_6.png deleted file mode 100755 index 3d1a9c0..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_6.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_7.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_7.png deleted file mode 100755 index 8151d2a..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_7.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_8.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_8.png deleted file mode 100755 index a14d29b..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_8.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_9.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_9.png deleted file mode 100755 index fe50cd3..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-W-Imputation_9.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_1.png deleted file mode 100755 index 84197ea..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_2.png deleted file mode 100755 index 64a2b17..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_3.png deleted file mode 100755 index a8493af..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_4.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_4.png deleted file mode 100755 index e5a40dc..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_4.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_5.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_5.png deleted file mode 100755 index 386c230..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_5.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_6.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_6.png deleted file mode 100755 index 4ea83a5..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_6.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_7.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_7.png deleted file mode 100755 index 925e34a..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_7.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_8.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_8.png deleted file mode 100755 index 79b017b..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_8.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_9.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_9.png deleted file mode 100755 index 73c5339..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Marker-Genes-WO-Imputation_9.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerATAC-W-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerATAC-W-Imputation_1.png deleted file mode 100755 index 61409b4..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerATAC-W-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerChIP-W-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerChIP-W-Imputation_1.png deleted file mode 100755 index c221b53..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerChIP-W-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerMotifs-W-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerMotifs-W-Imputation_1.png deleted file mode 100755 index 83e97d4..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerMotifs-W-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerMotifsGS-W-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerMotifsGS-W-Imputation_1.png deleted file mode 100755 index 382b489..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerMotifsGS-W-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerMotifsRNA-W-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerMotifsRNA-W-Imputation_1.png deleted file mode 100755 index 3c75d3d..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-MarkerMotifsRNA-W-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Markers-RNA-W-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Markers-RNA-W-Imputation_1.png deleted file mode 100755 index edacdcb..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Markers-RNA-W-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Markers-RNA-W-Imputation_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Markers-RNA-W-Imputation_2.png deleted file mode 100755 index a376536..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Markers-RNA-W-Imputation_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Markers-W-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Markers-W-Imputation_1.png deleted file mode 100755 index a376536..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Markers-W-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Markers-WO-Imputation_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Markers-WO-Imputation_1.png deleted file mode 100755 index d7ea8b5..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Markers-WO-Imputation_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-PAX5-Combined2_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-PAX5-Combined2_1.png deleted file mode 100755 index 2420d1a..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-PAX5-Combined2_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-PAX5-Combined_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-PAX5-Combined_1.png deleted file mode 100755 index 10b7d17..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-PAX5-Combined_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-RNA-Integration_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-RNA-Integration_1.png deleted file mode 100755 index d25e0cb..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-RNA-Integration_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-RNA-Integration_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-RNA-Integration_2.png deleted file mode 100755 index f15844e..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-RNA-Integration_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Remap-Clusters_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Remap-Clusters_1.png deleted file mode 100755 index 85ee78f..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Remap-Clusters_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-Clusters-Combined_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-Clusters-Combined_1.png deleted file mode 100755 index b0f5014..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-Clusters-Combined_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-Clusters_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-Clusters_1.png deleted file mode 100755 index 83e0e1b..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-Clusters_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-Clusters_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-Clusters_2.png deleted file mode 100755 index 5fd983e..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-Clusters_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-ScranClusters-Combined_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-ScranClusters-Combined_1.png deleted file mode 100755 index b9c2725..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-ScranClusters-Combined_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-ScranClusters_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-ScranClusters_1.png deleted file mode 100755 index 83e0e1b..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-ScranClusters_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-ScranClusters_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-ScranClusters_2.png deleted file mode 100755 index 37247ed..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP-Sample-ScranClusters_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2-Sample-Clusters-Combined_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2-Sample-Clusters-Combined_1.png deleted file mode 100755 index 6a92bfe..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2-Sample-Clusters-Combined_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2Harmony-Sample-Clusters_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2Harmony-Sample-Clusters_1.png deleted file mode 100755 index ef96aea..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2Harmony-Sample-Clusters_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2Harmony-Sample-Clusters_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2Harmony-Sample-Clusters_2.png deleted file mode 100755 index 7dd99e2..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2Harmony-Sample-Clusters_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2Harmony-Sample-Clusters_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2Harmony-Sample-Clusters_3.png deleted file mode 100755 index 4588003..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2Harmony-Sample-Clusters_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2Harmony-Sample-Clusters_4.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2Harmony-Sample-Clusters_4.png deleted file mode 100755 index f4dd568..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAP2Harmony-Sample-Clusters_4.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAPHarmony-Sample-Clusters-Combined_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAPHarmony-Sample-Clusters-Combined_1.png deleted file mode 100755 index ed1bb64..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-UMAPHarmony-Sample-Clusters-Combined_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-tSNE-Sample-ScranClusters-Combined_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-tSNE-Sample-ScranClusters-Combined_1.png deleted file mode 100755 index 5232fdd..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-tSNE-Sample-ScranClusters-Combined_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-tSNE-Sample-ScranClusters_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-tSNE-Sample-ScranClusters_1.png deleted file mode 100755 index 14b4dea..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-tSNE-Sample-ScranClusters_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-tSNE-Sample-ScranClusters_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/Plot-tSNE-Sample-ScranClusters_2.png deleted file mode 100755 index 6c47dc9..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Plot-tSNE-Sample-ScranClusters_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-FragSizes-TSSProfile_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-FragSizes-TSSProfile_1.png deleted file mode 100755 index 10379c7..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-FragSizes-TSSProfile_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-FragSizes-TSSProfile_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-FragSizes-TSSProfile_2.png deleted file mode 100755 index 1d25783..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-FragSizes-TSSProfile_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-Statistics_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-Statistics_1.png deleted file mode 100755 index ba3e606..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-Statistics_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-Statistics_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-Statistics_2.png deleted file mode 100755 index 408bb8b..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-Statistics_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-Statistics_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-Statistics_3.png deleted file mode 100755 index b490469..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-Statistics_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-Statistics_4.png b/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-Statistics_4.png deleted file mode 100755 index 2d105bb..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/QC-Sample-Statistics_4.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Regions-Enriched-Marker-Heatmap_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Regions-Enriched-Marker-Heatmap_1.png deleted file mode 100755 index 970690a..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Regions-Enriched-Marker-Heatmap_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/TSS-No-Normalization_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/TSS-No-Normalization_1.png deleted file mode 100755 index 776c7ae..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/TSS-No-Normalization_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/TSS-vs-Frags_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/TSS-vs-Frags_1.png deleted file mode 100755 index b63f939..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/TSS-vs-Frags_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Variable-ATAC-Deviation-Scores_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Variable-ATAC-Deviation-Scores_1.png deleted file mode 100755 index c6e2184..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Variable-ATAC-Deviation-Scores_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Variable-EncodeTFBS-Deviation-Scores_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Variable-EncodeTFBS-Deviation-Scores_1.png deleted file mode 100755 index 9660308..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Variable-EncodeTFBS-Deviation-Scores_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/Variable-Motif-Deviation-Scores_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/Variable-Motif-Deviation-Scores_1.png deleted file mode 100755 index f6288bd..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/Variable-Motif-Deviation-Scores_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-Doublet-Summary_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-Doublet-Summary_1.png deleted file mode 100755 index 81e19b4..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-Doublet-Summary_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-Doublet-Summary_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-Doublet-Summary_2.png deleted file mode 100755 index b518c20..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-Doublet-Summary_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-Doublet-Summary_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-Doublet-Summary_3.png deleted file mode 100755 index 5c34cb4..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-Doublet-Summary_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-Fragment_Size_Distribution_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-Fragment_Size_Distribution_1.png deleted file mode 100755 index 5b38f1f..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-Fragment_Size_Distribution_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-TSS_by_Unique_Frags_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-TSS_by_Unique_Frags_1.png deleted file mode 100755 index 3994ecf..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_BMMC_R1-TSS_by_Unique_Frags_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-Doublet-Summary_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-Doublet-Summary_1.png deleted file mode 100755 index 27042ab..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-Doublet-Summary_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-Doublet-Summary_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-Doublet-Summary_2.png deleted file mode 100755 index b2b9d84..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-Doublet-Summary_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-Doublet-Summary_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-Doublet-Summary_3.png deleted file mode 100755 index ea2714d..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-Doublet-Summary_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-Fragment_Size_Distribution_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-Fragment_Size_Distribution_1.png deleted file mode 100755 index 7cb8302..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-Fragment_Size_Distribution_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-TSS_by_Unique_Frags_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-TSS_by_Unique_Frags_1.png deleted file mode 100755 index 9987bd1..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_CD34_BMMC_R1-TSS_by_Unique_Frags_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-Doublet-Summary_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-Doublet-Summary_1.png deleted file mode 100755 index 7c0a6ce..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-Doublet-Summary_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-Doublet-Summary_2.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-Doublet-Summary_2.png deleted file mode 100755 index 7f5a414..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-Doublet-Summary_2.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-Doublet-Summary_3.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-Doublet-Summary_3.png deleted file mode 100755 index 80620d6..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-Doublet-Summary_3.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-Fragment_Size_Distribution_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-Fragment_Size_Distribution_1.png deleted file mode 100755 index 31e46d3..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-Fragment_Size_Distribution_1.png and /dev/null differ diff --git a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-TSS_by_Unique_Frags_1.png b/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-TSS_by_Unique_Frags_1.png deleted file mode 100755 index 87b4673..0000000 Binary files a/bookdown/_book/images/HemeWalkthrough/PNG/scATAC_PBMC_R1-TSS_by_Unique_Frags_1.png and /dev/null differ diff --git a/bookdown/_book/images/doubletRemoval.png b/bookdown/_book/images/doubletRemoval.png deleted file mode 100644 index c328fed..0000000 Binary files a/bookdown/_book/images/doubletRemoval.png and /dev/null differ diff --git a/bookdown/_book/index.html b/bookdown/_book/index.html deleted file mode 100644 index d9c8cb7..0000000 --- a/bookdown/_book/index.html +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - - ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
- -
-

Preface

-

ArchR is a full-featured software suite for the analysis of single-cell chromatin accessibility data. It is designed to handle hundreds of thousands of single cells without large memory or computational requirements, keeping pace with the experimental scale that is achievable with commercial platforms such as the 10x Genomics Chromium system.

-

This website is a complete user’s guide to ArchR. We explain how to use ArchR by walking through examples of every analysis we could think of. We also include some more extensive documention on some of the more salient points of scATAC-seq analysis such as dimensionality reduction and clustering. All of the chapters will utilize the same gold-standard downsampled dataset of hematopoietic cells Granja* et al. Nature Biotechnology 2019. Each chapter will build on the previous and we provide intermediate files for you to jump in at any point. Importantly, these tutorials assume that you are running ArchR locally.

-

This walkthrough assumes that you have already successfully installed ArchR and all dependencies. If that is not the case, please visit the home page for installation instructions.

-

Cant find what you are looking for?

-

There is a search feature that can be enabled using the magnifying glass in the navigation bar above which will help you find whatever it is you are looking for. If you dont find it in this book, or if you think the documentation on this website or in the function annotations is unclear, please submit an issue on Github with the documentation tag and we will do our best to clarify. If none of these options help, send us an email and we will do our best to respond in a timely fashion.

- -
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/inferring-scatac-seq-doublets-with-archr-1.html b/bookdown/_book/inferring-scatac-seq-doublets-with-archr-1.html deleted file mode 100644 index cd1a346..0000000 --- a/bookdown/_book/inferring-scatac-seq-doublets-with-archr-1.html +++ /dev/null @@ -1,300 +0,0 @@ - - - - - - - 2.1 Inferring scATAC-seq Doublets with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

2.1 Inferring scATAC-seq Doublets with ArchR

-
#Add Infered Doublet Scores to each Arrow File (~2-5 min per sample)
-#By default ArchR uses the doublet params as described in the ArchR paper.
-#We show some of the main adjustable features below for more information 
-#Try ?addDoubletScores to see further documentation on parameters for doublet identification.
-doubScores <- addDoubletScores(
-    input = ArrowFiles,
-    k = 10, #Refers to how many cells near a "pseudo-doublet" to count.
-    knnMethod = "UMAP", #Refers to embedding to use for nearest neighbor search with doublet projection.
-    LSIMethod = 1
-)
-

Now we can look at the results in a folder “QualityControl” in your current working directory. There are 3 plots associated with each of your samples in this folder :
-1. Doublet Enrichments - These represent the enrichment of simulated doublets nearby each single cell compared to the expected if we assume a uniform distribution.

-

For BMMC :

-

-


-

For CD34 BMMC :

-

-


-

For PBMC :

-

-


-


-2. Doublet Scores - These represent the significance (-log10 binomial adjusted p-value) of simulated doublets nearby each single cell compared to the expected if we assume a uniform distribution. We have found this value is not as consistent as the doublet enrichments for doublet identification.

-

For BMMC :

-

-


-

For CD34 BMMC :

-

-


-

For PBMC :

-

-


-3. Doublet Density - This represents the density of the simulated doublet projections so you can visually where the doublets are located in your 2-d embedding.

-

For BMMC :

-

-


-

For CD34 BMMC :

-

-


-

For PBMC :

-

- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/inferring-scatac-seq-doublets-with-archr.html b/bookdown/_book/inferring-scatac-seq-doublets-with-archr.html deleted file mode 100644 index 767e3d2..0000000 --- a/bookdown/_book/inferring-scatac-seq-doublets-with-archr.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - 2.1 Inferring scATAC-seq Doublets with ArchR | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

2.1 Inferring scATAC-seq Doublets with ArchR

-

Single-cell data generated on essentially any platform is susceptible to the presence of doublets. A doublet refers to a single droplet that received a single barcoded bead and more than one nucleus. This causes the reads from more than one cell to appear as a single cell. For 10x, the percentage of total “cells” that are actually doublets is proportional to the number of cells loaded into the reaction. Even at the lower levels of doublets that result from standard kit use, more than 5% of the data may come from doublets and this exerts substantial effects on clustering. This issue becomes particularly problematic in the context of developmental/trajectory data because doublets look like a mixture between two cell types and this can be confounded with intermediate cell types or cell states.

-

To predict which “cells” are actually doublets, we synthesize in silico doublets from the data by mixing the reads from thousands of combinations of individual cells. We then project these synthetic doublets into the UMAP embedding and identify their nearest neighbor. By iterating this procedure thousands of times, we can identify “cells” in our data whose signal looks very similar to synthetic doublets.

-

-

By default ArchR uses the doublet parameters described in the ArchR manuscript. This is likely a good place to start but we encourage all users to inspect the pre- and post-doublet removal data to understand how doublet removal is affecting the cells. We show some of the main adjustable features below to illustrate how this can be customized to a given application.

-

In ArchR, doublet removal is performed in a single step using addDoubletScores().

-
#Add Infered Doublet Scores to each Arrow File (~2-5 min per sample)
-#Try ?addDoubletScores to see further documentation on parameters for doublet identification.
-doubScores <- addDoubletScores(
-    input = ArrowFiles,
-    k = 10, #Refers to how many cells near a "pseudo-doublet" to count.
-    knnMethod = "UMAP", #Refers to embedding to use for nearest neighbor search with doublet projection.
-    LSIMethod = 1
-)
-

This command will create plots in the “QualityControl” directory. There are 3 plots associated with each of your samples in this folder:
-1. Doublet Enrichments - These represent the enrichment of simulated doublets nearby each single cell compared to the expected if we assume a uniform distribution.

-

For BMMC :

-

-


-

For CD34 BMMC :

-

-


-

For PBMC :

-

-


-


-2. Doublet Scores - These represent the significance (-log10(binomial adjusted p-value)) of simulated doublets nearby each single cell compared to the expected if we assume a uniform distribution. We have found this value to be less consistent than the doublet enrichments and therefore use doublet enrichments for doublet identification.

-

For BMMC :

-

-


-

For CD34 BMMC :

-

-


-

For PBMC :

-

-


-3. Doublet Density - This represents the density of the simulated doublet projections so you can visualize where the synthetic doublets were located after projection into your 2-dimensional embedding.

-

For BMMC :

-

-


-

For CD34 BMMC :

-

-


-

For PBMC :

-

-

QQQ - I would have liked to see a pre- and post- doublet removal UMAP here so that we can illustrate what happens.

-

To download the PDFs for each sample

-

Download PDF : scATAC_BMMC_R1-Doublet-Summary.pdf
-Download PDF : scATAC_CD34_BMMC_R1-Doublet-Summary.pdf
-Download PDF : scATAC_PBMC_R1-Doublet-Summary.pdf

- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/iterative-latent-semantic-indexing-lsi.html b/bookdown/_book/iterative-latent-semantic-indexing-lsi.html deleted file mode 100644 index ccff989..0000000 --- a/bookdown/_book/iterative-latent-semantic-indexing-lsi.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - - 4.1 Iterative Latent Semantic Indexing (LSI) | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

4.1 Iterative Latent Semantic Indexing (LSI)

-

Latent semantic indexing (LSI) was first introduced for scATAC-seq by Cusanovich et al (Science 2015) as a form for analyzing scATAC-seq data. LSI commonly refers to computing the term frequency (TF) and then normalization by the inverse document frequency (IDF) to get a normalized matrix (TF-IDF) and then Singular Value Decomposition (SVD). The term frequency is simply dividing depth normalization per single cell. The inverse document frequency refers to weighting each feature by how often it occurs to weight features that are more “specific” rather than commonly accessible. There are many different TF-IDF transformations with their own merits. ArchR has a few LSI implementations and we have tested out many of these methods across many different test data sets. The default LSI implementation is related to the one introduced by Timothy Stuart, which depth normalizes to a constant (10,000) followed by normalization with the inverse document frequency and then log-transforming the resultant matrix (log(TF-IDF)).

-

In scRNA-seq identifying variable genes is a common way to compute dimensionality reduction (such as PCA). This is done becasue these genes are more likely to be biologically important and this reduces experimental noise. In scATAC-seq the data is binary and thus you cant identify variable peaks for dimensionality reduction. We have tried using the most accessible features instead, however the results when running multiple samples have had strong noise. To remedy this we introduced the iterative LSI approach (Satpathy+, Granja+ et al NBT 2019 and Granja+, Klemm+ and McGinnis+ et al NBT 2019). This approach computes an intial LSI transformation on the most accessible tiles and identifies lower resolution clusters that are not batch confounded (ie. in PBMCs just classifying T cells, B cells and Monocytes). Then ArchR computes the average accessibility for each of these clusters across all features creating “pseudobulks”. Then ArchR identifies the variable peaks across these “pseudobulks” and then use these features for LSI again as these peaks are more similar to scRNA-seq’s variable peaks. We have found this approach is very good for batch minimization and allows operations on a more reasonable sized matrix than a much larger sparse matrix.

-

To do this we run addIterativeLSI with the default parameters which should cover most cases. See ?addIterativeLSI for more details on inputs.

-
projHeme2 <- addIterativeLSI(
-    ArchRProj = projHeme2,
-    useMatrix = "TileMatrix", 
-    name = "IterativeLSI", 
-    iterations = 2, 
-    clusterParams = list(
-        resolution = c(0.2), 
-        sampleCells = 10000, 
-        n.start = 10
-    ), 
-    varFeatures = 25000, 
-    dimsToUse = 1:30
-)
-

If you see downstream that you have subtle batch effects still another option is to add more LSI iterations and start from a lower intial clustering resolution as shown below. Additionally the number of variable features can be lowered to increase focus on the more variable features.

-
projHeme2 <- addIterativeLSI(
-    ArchRProj = projHeme2,
-    useMatrix = "TileMatrix", 
-    name = "IterativeLSI2", 
-    iterations = 4, 
-    clusterParams = list(
-        resolution = c(0.1, 0.2, 0.4), 
-        sampleCells = 10000, 
-        n.start = 10
-    ), 
-    varFeatures = 15000, 
-    dimsToUse = 1:30
-)
-

Additionally ArchR allows for a normal LSI transformation with addLSI, however we recommend the iterative procedure.

-
projHeme2 <- addLSI(
-    ArchRProj = projHeme2,
-    useMatrix = "TileMatrix", 
-    name = "LSI", 
-    topFeatures = 25000, 
-    dimsToUse = 1:30
-)
-

Lastly, lets compute the iterativeLSI for the ArchRProject still containing doublets.

-
projHeme1 <- addIterativeLSI(
-    ArchRProj = projHeme1,
-    useMatrix = "TileMatrix", 
-    name = "IterativeLSI", 
-    iterations = 2, 
-    clusterParams = list(
-        resolution = c(0.2), 
-        sampleCells = 10000, 
-        n.start = 10
-    ), 
-    varFeatures = 25000, 
-    dimsToUse = 1:30
-)
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/labeling-clusters-with-scrna.html b/bookdown/_book/labeling-clusters-with-scrna.html deleted file mode 100644 index 99925e6..0000000 --- a/bookdown/_book/labeling-clusters-with-scrna.html +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - Chapter 8 Labeling Clusters with scRNA | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

Chapter 8 Labeling Clusters with scRNA

-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/labeling-scatac-cells-with-scrna-clusters.html b/bookdown/_book/labeling-scatac-cells-with-scrna-clusters.html deleted file mode 100644 index 0df1445..0000000 --- a/bookdown/_book/labeling-scatac-cells-with-scrna-clusters.html +++ /dev/null @@ -1,417 +0,0 @@ - - - - - - - 8.1 Labeling scATAC cells with scRNA clusters | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

8.1 Labeling scATAC cells with scRNA clusters

-

First we need to download scRNA data for hematopoiesis from Granja* et al (2019).

-
#259 MB Download
-if(!file.exists("scRNA-Healthy-Hematopoiesis-191120.rds")){
-    download.file(
-        url = "https://jeffgranja.s3.amazonaws.com/MPAL-10x/Supplementary_Data/Healthy-Data/scRNA-Healthy-Hematopoiesis-191120.rds",
-        destfile = "scRNA-Healthy-Hematopoiesis-191120.rds"
-    )
-}
-
-seRNA <- readRDS("scRNA-Healthy-Hematopoiesis-191120.rds")
-seRNA
-# class: RangedSummarizedExperiment 
-# dim: 20287 35582 
-# metadata(6): variableGenes optimizeLSI ... UMAP_Params colorMap
-# assays(1): counts
-# rownames(20287): FAM138A OR4F5 ... S100B PRMT2
-# rowData names(3): gene_name gene_id exonLength
-# colnames(35582): CD34_32_R5:AAACCTGAGTATCGAA-1
-#   CD34_32_R5:AAACCTGAGTCGTTTG-1 ...
-#   BMMC_10x_GREENLEAF_REP2:TTTGTTGCATGTGTCA-1
-#   BMMC_10x_GREENLEAF_REP2:TTTGTTGCATTGAAAG-1
-# colData names(10): Group nUMI_pre ... BioClassification Barcode
-
-colnames(colData(seRNA))
-# [1] "Group"             "nUMI_pre"          "nUMI"             
-# [4] "nGene"             "initialClusters"   "UMAP1"            
-# [7] "UMAP2"             "Clusters"          "BioClassification"
-# [10] "Barcode"          
-
-table(colData(seRNA)$BioClassification)
-#         01_HSC 02_Early.Eryth  03_Late.Eryth  04_Early.Baso    05_CMP.LMPP 
-#           1425           1653            446            111           2260 
-#       06_CLP.1         07_GMP    08_GMP.Neut         09_pDC         10_cDC 
-#            903           2097           1050            544            325 
-# 11_CD14.Mono.1 12_CD14.Mono.2   13_CD16.Mono         14_Unk       15_CLP.2 
-#           1800           4222            292            520            377 
-#       16_Pre.B           17_B      18_Plasma       19_CD8.N      20_CD4.N1 
-#            710           1711             62           1521           2470 
-#      21_CD4.N2       22_CD4.M      23_CD8.EM      24_CD8.CM          25_NK 
-#           2364           3539            796           2080           2143 
-#         26_Unk 
-#            161 
-

Unconstrained Integration (not-recommended)

-
#~5 minutes
-projHeme2 <- addGeneIntegrationMatrix(
-    ArchRProj = projHeme2, 
-    seRNA = seRNA, 
-    addToArrow = FALSE,
-    groupBy = "BioClassification",
-    nameGroup = "predictedGroup1",
-    nameScore = "predictedScore1"
-)
-

Constrained Integration (recommended)

-
sampleList <- SimpleList(
-    scATAC_BMMC_R1 = grep("BMMC", colnames(seRNA), ignore.case = TRUE, value = TRUE),
-    scATAC_CD34_BMMC_R1 = grep("CD34", colnames(seRNA), ignore.case = TRUE, value = TRUE),
-    scATAC_PBMC_R1 = grep("PBMC", colnames(seRNA), ignore.case = TRUE, value = TRUE)
-)
-
-#To see size of each list element
-lapply(sampleList, length)
-# $scATAC_BMMC_R1
-# [1] 12602
-
-# $scATAC_CD34_BMMC_R1
-# [1] 8176
-
-# $scATAC_PBMC_R1
-# [1] 14804
-
-#~5 minutes
-projHeme2 <- addGeneIntegrationMatrix(
-    ArchRProj = projHeme2, 
-    seRNA = seRNA, 
-    sampleList = sampleList,
-    addToArrow = FALSE,
-    groupBy = "BioClassification",
-    nameGroup = "predictedGroup2",
-    nameScore = "predictedScore2"
-)
-

Compare results

-
pal <- paletteDiscrete(values = colData(seRNA)$BioClassification)
-pal
-#         01_HSC 02_Early.Eryth  03_Late.Eryth  04_Early.Baso    05_CMP.LMPP 
-#      "#D51F26"      "#502A59"      "#235D55"      "#3D6E57"      "#8D2B8B" 
-#       06_CLP.1         07_GMP    08_GMP.Neut         09_pDC         10_cDC 
-#      "#DE6C3E"      "#F9B712"      "#D8CE42"      "#8E9ACD"      "#B774B1" 
-# 11_CD14.Mono.1 12_CD14.Mono.2   13_CD16.Mono         14_Unk       15_CLP.2 
-#      "#D69FC8"      "#C7C8DE"      "#8FD3D4"      "#89C86E"      "#CC9672" 
-#       16_Pre.B           17_B      18_Plasma       19_CD8.N      20_CD4.N1 
-#      "#CF7E96"      "#A27AA4"      "#CD4F32"      "#6B977E"      "#518AA3" 
-#      21_CD4.N2       22_CD4.M      23_CD8.EM      24_CD8.CM          25_NK 
-#      "#5A5297"      "#0F707D"      "#5E2E32"      "#A95A3C"      "#B28D5C" 
-#         26_Unk 
-#      "#3D3D3D"
-
p1 <- plotEmbedding(projHeme2, colorBy = "cellColData", name = "predictedGroup1", pal = pal)
-p1
-

-
p2 <- plotEmbedding(projHeme2, colorBy = "cellColData", name = "predictedGroup2", pal = pal)
-p2
-

-

To save a nice looking pdf we use plotPDF which removes white pages and tries to make the plots -nice looking.

-
plotPDF(p1,p2, name = "Plot-UMAP-RNA-Integration.pdf", ArchRProj = projHeme2, addDOC = FALSE, width = 5, height = 5)
-
-
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/labeling-scatac-clusters-with-scrna.html b/bookdown/_book/labeling-scatac-clusters-with-scrna.html deleted file mode 100644 index 295800e..0000000 --- a/bookdown/_book/labeling-scatac-clusters-with-scrna.html +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - 8.3 Labeling scATAC clusters with scRNA | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

8.3 Labeling scATAC clusters with scRNA

-

Now that we have pretty good scRNA and scATAC correspondence we can label our clusters with scRNA

-

To save a nice looking pdf we use plotPDF which removes white pages and tries to make the plots -nice looking.

-
plotPDF(p1, name = "Plot-UMAP-Remap-Clusters.pdf", ArchRProj = projHeme2, addDOC = FALSE, width = 5, height = 5)
-

- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/launching-the-archrbrowser.html b/bookdown/_book/launching-the-archrbrowser.html deleted file mode 100644 index 3f85a6f..0000000 --- a/bookdown/_book/launching-the-archrbrowser.html +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - - 7.5 Launching the ArchRBrowser | ArchR - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
- -
-
-

7.5 Launching the ArchRBrowser

-
ArchRBrowser(projHeme2)
-

- - - - -

-

We can now save our original projHeme1 using saveArchRProject from ArchR.

-
saveArchRProject(projHeme2)
- -
- -
- -
-
-
- - -
-
- - - - - - - - - - - - - - diff --git a/bookdown/_book/libs/gitbook-2.6.7/css/fontawesome/fontawesome-webfont.ttf b/bookdown/_book/libs/gitbook-2.6.7/css/fontawesome/fontawesome-webfont.ttf deleted file mode 100644 index 35acda2..0000000 Binary files a/bookdown/_book/libs/gitbook-2.6.7/css/fontawesome/fontawesome-webfont.ttf and /dev/null differ diff --git a/bookdown/_book/libs/gitbook-2.6.7/css/plugin-bookdown.css b/bookdown/_book/libs/gitbook-2.6.7/css/plugin-bookdown.css deleted file mode 100644 index 8e5bb8a..0000000 --- a/bookdown/_book/libs/gitbook-2.6.7/css/plugin-bookdown.css +++ /dev/null @@ -1,99 +0,0 @@ -.book .book-header h1 { - padding-left: 20px; - padding-right: 20px; -} -.book .book-header.fixed { - position: fixed; - right: 0; - top: 0; - left: 0; - border-bottom: 1px solid rgba(0,0,0,.07); -} -span.search-highlight { - background-color: #ffff88; -} -@media (min-width: 600px) { - .book.with-summary .book-header.fixed { - left: 300px; - } -} -@media (max-width: 1240px) { - .book .book-body.fixed { - top: 50px; - } - .book .book-body.fixed .body-inner { - top: auto; - } -} -@media (max-width: 600px) { - .book.with-summary .book-header.fixed { - left: calc(100% - 60px); - min-width: 300px; - } - .book.with-summary .book-body { - transform: none; - left: calc(100% - 60px); - min-width: 300px; - } - .book .book-body.fixed { - top: 0; - } -} - -.book .book-body.fixed .body-inner { - top: 50px; -} -.book .book-body .page-wrapper .page-inner section.normal sub, .book .book-body .page-wrapper .page-inner section.normal sup { - font-size: 85%; -} - -@media print { - .book .book-summary, .book .book-body .book-header, .fa { - display: none !important; - } - .book .book-body.fixed { - left: 0px; - } - .book .book-body,.book .book-body .body-inner, .book.with-summary { - overflow: visible !important; - } -} -.kable_wrapper { - border-spacing: 20px 0; - border-collapse: separate; - border: none; - margin: auto; -} -.kable_wrapper > tbody > tr > td { - vertical-align: top; -} -.book .book-body .page-wrapper .page-inner section.normal table tr.header { - border-top-width: 2px; -} -.book .book-body .page-wrapper .page-inner section.normal table tr:last-child td { - border-bottom-width: 2px; -} -.book .book-body .page-wrapper .page-inner section.normal table td, .book .book-body .page-wrapper .page-inner section.normal table th { - border-left: none; - border-right: none; -} -.book .book-body .page-wrapper .page-inner section.normal table.kable_wrapper > tbody > tr, .book .book-body .page-wrapper .page-inner section.normal table.kable_wrapper > tbody > tr > td { - border-top: none; -} -.book .book-body .page-wrapper .page-inner section.normal table.kable_wrapper > tbody > tr:last-child > td { - border-bottom: none; -} - -div.theorem, div.lemma, div.corollary, div.proposition, div.conjecture { - font-style: italic; -} -span.theorem, span.lemma, span.corollary, span.proposition, span.conjecture { - font-style: normal; -} -div.proof:after { - content: "\25a2"; - float: right; -} -.header-section-number { - padding-right: .5em; -} diff --git a/bookdown/_book/libs/gitbook-2.6.7/css/plugin-clipboard.css b/bookdown/_book/libs/gitbook-2.6.7/css/plugin-clipboard.css deleted file mode 100644 index 6844a70..0000000 --- a/bookdown/_book/libs/gitbook-2.6.7/css/plugin-clipboard.css +++ /dev/null @@ -1,18 +0,0 @@ -div.sourceCode { - position: relative; -} - -.copy-to-clipboard-button { - position: absolute; - right: 0; - top: 0; - visibility: hidden; -} - -.copy-to-clipboard-button:focus { - outline: 0; -} - -div.sourceCode:hover > .copy-to-clipboard-button { - visibility: visible; -} diff --git a/bookdown/_book/libs/gitbook-2.6.7/css/plugin-fontsettings.css b/bookdown/_book/libs/gitbook-2.6.7/css/plugin-fontsettings.css deleted file mode 100644 index 87236b4..0000000 --- a/bookdown/_book/libs/gitbook-2.6.7/css/plugin-fontsettings.css +++ /dev/null @@ -1,292 +0,0 @@ -/* - * Theme 1 - */ -.color-theme-1 .dropdown-menu { - background-color: #111111; - border-color: #7e888b; -} -.color-theme-1 .dropdown-menu .dropdown-caret .caret-inner { - border-bottom: 9px solid #111111; -} -.color-theme-1 .dropdown-menu .buttons { - border-color: #7e888b; -} -.color-theme-1 .dropdown-menu .button { - color: #afa790; -} -.color-theme-1 .dropdown-menu .button:hover { - color: #73553c; -} -/* - * Theme 2 - */ -.color-theme-2 .dropdown-menu { - background-color: #2d3143; - border-color: #272a3a; -} -.color-theme-2 .dropdown-menu .dropdown-caret .caret-inner { - border-bottom: 9px solid #2d3143; -} -.color-theme-2 .dropdown-menu .buttons { - border-color: #272a3a; -} -.color-theme-2 .dropdown-menu .button { - color: #62677f; -} -.color-theme-2 .dropdown-menu .button:hover { - color: #f4f4f5; -} -.book .book-header .font-settings .font-enlarge { - line-height: 30px; - font-size: 1.4em; -} -.book .book-header .font-settings .font-reduce { - line-height: 30px; - font-size: 1em; -} -.book.color-theme-1 .book-body { - color: #704214; - background: #f3eacb; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section { - background: #f3eacb; -} -.book.color-theme-2 .book-body { - color: #bdcadb; - background: #1c1f2b; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section { - background: #1c1f2b; -} -.book.font-size-0 .book-body .page-inner section { - font-size: 1.2rem; -} -.book.font-size-1 .book-body .page-inner section { - font-size: 1.4rem; -} -.book.font-size-2 .book-body .page-inner section { - font-size: 1.6rem; -} -.book.font-size-3 .book-body .page-inner section { - font-size: 2.2rem; -} -.book.font-size-4 .book-body .page-inner section { - font-size: 4rem; -} -.book.font-family-0 { - font-family: Georgia, serif; -} -.book.font-family-1 { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal { - color: #704214; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal a { - color: inherit; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h3, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h4, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h5, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 { - color: inherit; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2 { - border-color: inherit; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 { - color: inherit; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal hr { - background-color: inherit; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal blockquote { - border-color: #c4b29f; - opacity: 0.9; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code { - background: #fdf6e3; - color: #657b83; - border-color: #f8df9c; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal .highlight { - background-color: inherit; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table th, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table td { - border-color: #f5d06c; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr { - color: inherit; - background-color: #fdf6e3; - border-color: #444444; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) { - background-color: #fbeecb; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal { - color: #bdcadb; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal a { - color: #3eb1d0; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h3, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h4, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h5, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 { - color: #fffffa; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2 { - border-color: #373b4e; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 { - color: #373b4e; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal hr { - background-color: #373b4e; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal blockquote { - border-color: #373b4e; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code { - color: #9dbed8; - background: #2d3143; - border-color: #2d3143; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal .highlight { - background-color: #282a39; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table th, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table td { - border-color: #3b3f54; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr { - color: #b6c2d2; - background-color: #2d3143; - border-color: #3b3f54; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) { - background-color: #35394b; -} -.book.color-theme-1 .book-header { - color: #afa790; - background: transparent; -} -.book.color-theme-1 .book-header .btn { - color: #afa790; -} -.book.color-theme-1 .book-header .btn:hover { - color: #73553c; - background: none; -} -.book.color-theme-1 .book-header h1 { - color: #704214; -} -.book.color-theme-2 .book-header { - color: #7e888b; - background: transparent; -} -.book.color-theme-2 .book-header .btn { - color: #3b3f54; -} -.book.color-theme-2 .book-header .btn:hover { - color: #fffff5; - background: none; -} -.book.color-theme-2 .book-header h1 { - color: #bdcadb; -} -.book.color-theme-1 .book-body .navigation { - color: #afa790; -} -.book.color-theme-1 .book-body .navigation:hover { - color: #73553c; -} -.book.color-theme-2 .book-body .navigation { - color: #383f52; -} -.book.color-theme-2 .book-body .navigation:hover { - color: #fffff5; -} -/* - * Theme 1 - */ -.book.color-theme-1 .book-summary { - color: #afa790; - background: #111111; - border-right: 1px solid rgba(0, 0, 0, 0.07); -} -.book.color-theme-1 .book-summary .book-search { - background: transparent; -} -.book.color-theme-1 .book-summary .book-search input, -.book.color-theme-1 .book-summary .book-search input:focus { - border: 1px solid transparent; -} -.book.color-theme-1 .book-summary ul.summary li.divider { - background: #7e888b; - box-shadow: none; -} -.book.color-theme-1 .book-summary ul.summary li i.fa-check { - color: #33cc33; -} -.book.color-theme-1 .book-summary ul.summary li.done > a { - color: #877f6a; -} -.book.color-theme-1 .book-summary ul.summary li a, -.book.color-theme-1 .book-summary ul.summary li span { - color: #877f6a; - background: transparent; - font-weight: normal; -} -.book.color-theme-1 .book-summary ul.summary li.active > a, -.book.color-theme-1 .book-summary ul.summary li a:hover { - color: #704214; - background: transparent; - font-weight: normal; -} -/* - * Theme 2 - */ -.book.color-theme-2 .book-summary { - color: #bcc1d2; - background: #2d3143; - border-right: none; -} -.book.color-theme-2 .book-summary .book-search { - background: transparent; -} -.book.color-theme-2 .book-summary .book-search input, -.book.color-theme-2 .book-summary .book-search input:focus { - border: 1px solid transparent; -} -.book.color-theme-2 .book-summary ul.summary li.divider { - background: #272a3a; - box-shadow: none; -} -.book.color-theme-2 .book-summary ul.summary li i.fa-check { - color: #33cc33; -} -.book.color-theme-2 .book-summary ul.summary li.done > a { - color: #62687f; -} -.book.color-theme-2 .book-summary ul.summary li a, -.book.color-theme-2 .book-summary ul.summary li span { - color: #c1c6d7; - background: transparent; - font-weight: 600; -} -.book.color-theme-2 .book-summary ul.summary li.active > a, -.book.color-theme-2 .book-summary ul.summary li a:hover { - color: #f4f4f5; - background: #252737; - font-weight: 600; -} diff --git a/bookdown/_book/libs/gitbook-2.6.7/css/plugin-highlight.css b/bookdown/_book/libs/gitbook-2.6.7/css/plugin-highlight.css deleted file mode 100644 index 2aabd3d..0000000 --- a/bookdown/_book/libs/gitbook-2.6.7/css/plugin-highlight.css +++ /dev/null @@ -1,426 +0,0 @@ -.book .book-body .page-wrapper .page-inner section.normal pre, -.book .book-body .page-wrapper .page-inner section.normal code { - /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - /* Tomorrow Comment */ - /* Tomorrow Red */ - /* Tomorrow Orange */ - /* Tomorrow Yellow */ - /* Tomorrow Green */ - /* Tomorrow Aqua */ - /* Tomorrow Blue */ - /* Tomorrow Purple */ -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-comment, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-comment, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-title { - color: #8e908c; -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-variable, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-variable, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-attribute, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-tag, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-tag, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-regexp, -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-constant, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-constant, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-tag .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-tag .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-pi, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-pi, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-doctype, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-doctype, -.book .book-body .page-wrapper .page-inner section.normal pre .html .hljs-doctype, -.book .book-body .page-wrapper .page-inner section.normal code .html .hljs-doctype, -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-id, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-id, -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-class, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-class, -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo { - color: #c82829; -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-number, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-number, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-pragma, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-built_in, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-literal, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-literal, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-params, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-params, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-constant, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-constant { - color: #f5871f; -} -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-class .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-class .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-rules .hljs-attribute, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-rules .hljs-attribute { - color: #eab700; -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-string, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-string, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-value, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-value, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-inheritance, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-inheritance, -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-header, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-header, -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-symbol, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-symbol, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { - color: #718c00; -} -.book .book-body .page-wrapper .page-inner section.normal pre .css .hljs-hexcolor, -.book .book-body .page-wrapper .page-inner section.normal code .css .hljs-hexcolor { - color: #3e999f; -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-function, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-function, -.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-decorator, -.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-decorator, -.book .book-body .page-wrapper .page-inner section.normal pre .python .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .python .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-function .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-function .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-title .hljs-keyword, -.book .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-title .hljs-keyword, -.book .book-body .page-wrapper .page-inner section.normal pre .perl .hljs-sub, -.book .book-body .page-wrapper .page-inner section.normal code .perl .hljs-sub, -.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .hljs-title, -.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .hljs-title { - color: #4271ae; -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword, -.book .book-body .page-wrapper .page-inner section.normal code .hljs-keyword, -.book .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-function, -.book .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-function { - color: #8959a8; -} -.book .book-body .page-wrapper .page-inner section.normal pre .hljs, -.book .book-body .page-wrapper .page-inner section.normal code .hljs { - display: block; - background: white; - color: #4d4d4c; - padding: 0.5em; -} -.book .book-body .page-wrapper .page-inner section.normal pre .coffeescript .javascript, -.book .book-body .page-wrapper .page-inner section.normal code .coffeescript .javascript, -.book .book-body .page-wrapper .page-inner section.normal pre .javascript .xml, -.book .book-body .page-wrapper .page-inner section.normal code .javascript .xml, -.book .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, -.book .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .javascript, -.book .book-body .page-wrapper .page-inner section.normal code .xml .javascript, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .vbscript, -.book .book-body .page-wrapper .page-inner section.normal code .xml .vbscript, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .css, -.book .book-body .page-wrapper .page-inner section.normal code .xml .css, -.book .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, -.book .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { - opacity: 0.5; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code { - /* - -Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull - -*/ - /* Solarized Green */ - /* Solarized Cyan */ - /* Solarized Blue */ - /* Solarized Yellow */ - /* Solarized Orange */ - /* Solarized Red */ - /* Solarized Violet */ -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs { - display: block; - padding: 0.5em; - background: #fdf6e3; - color: #657b83; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-comment, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-comment, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-template_comment, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-template_comment, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .diff .hljs-header, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .diff .hljs-header, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-doctype, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-doctype, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-pi, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-pi, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .lisp .hljs-string, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .lisp .hljs-string, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-javadoc, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-javadoc { - color: #93a1a1; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-keyword, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-winutils, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-winutils, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .method, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .method, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-addition, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-addition, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-tag, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-tag, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-request, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-request, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-status, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-status, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .nginx .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .nginx .hljs-title { - color: #859900; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-number, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-number, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-command, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-command, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-string, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-string, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-tag .hljs-value, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-tag .hljs-value, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-rules .hljs-value, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-rules .hljs-value, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-phpdoc, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-phpdoc, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-regexp, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-hexcolor, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-hexcolor, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_url, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_url { - color: #2aa198; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-localvars, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-localvars, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-chunk, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-chunk, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-decorator, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-decorator, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-built_in, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-identifier, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-identifier, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .vhdl .hljs-literal, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .vhdl .hljs-literal, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-id, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-id, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-function, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-function { - color: #268bd2; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-attribute, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-variable, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-variable, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .lisp .hljs-body, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .lisp .hljs-body, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .smalltalk .hljs-number, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .smalltalk .hljs-number, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-constant, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-constant, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-class .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-class .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-parent, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-parent, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .haskell .hljs-type, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .haskell .hljs-type, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_reference, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_reference { - color: #b58900; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor .hljs-keyword, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor .hljs-keyword, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-pragma, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-shebang, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-shebang, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-symbol, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-symbol, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-symbol .hljs-string, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-symbol .hljs-string, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .diff .hljs-change, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .diff .hljs-change, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-special, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-special, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-attr_selector, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-attr_selector, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-subst, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-subst, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-cdata, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-cdata, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .clojure .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .clojure .hljs-title, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-header, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-header { - color: #cb4b16; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-deletion, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-deletion, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-important, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-important { - color: #dc322f; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .hljs-link_label, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .hljs-link_label { - color: #6c71c4; -} -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, -.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula { - background: #eee8d5; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code { - /* Tomorrow Night Bright Theme */ - /* Original theme - https://github.com/chriskempson/tomorrow-theme */ - /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - /* Tomorrow Comment */ - /* Tomorrow Red */ - /* Tomorrow Orange */ - /* Tomorrow Yellow */ - /* Tomorrow Green */ - /* Tomorrow Aqua */ - /* Tomorrow Blue */ - /* Tomorrow Purple */ -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-comment, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-comment, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-title { - color: #969896; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-variable, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-variable, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-attribute, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-attribute, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-tag, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-tag, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-regexp, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-regexp, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-constant, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-constant, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-tag .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-tag .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-pi, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-pi, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-doctype, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-doctype, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .html .hljs-doctype, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .html .hljs-doctype, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-id, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-id, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-class, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-class, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-pseudo, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-pseudo { - color: #d54e53; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-number, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-number, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-preprocessor, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-preprocessor, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-pragma, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-pragma, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-built_in, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-built_in, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-literal, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-literal, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-params, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-params, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-constant, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-constant { - color: #e78c45; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-class .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-class .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-rules .hljs-attribute, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-rules .hljs-attribute { - color: #e7c547; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-string, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-string, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-value, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-value, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-inheritance, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-inheritance, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-header, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-header, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-symbol, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-symbol, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { - color: #b9ca4a; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .css .hljs-hexcolor, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .css .hljs-hexcolor { - color: #70c0b1; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-function, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-function, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .python .hljs-decorator, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .python .hljs-decorator, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .python .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .python .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-function .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-function .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .ruby .hljs-title .hljs-keyword, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .ruby .hljs-title .hljs-keyword, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .perl .hljs-sub, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .perl .hljs-sub, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .coffeescript .hljs-title, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .coffeescript .hljs-title { - color: #7aa6da; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs-keyword, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs-keyword, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .hljs-function, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .hljs-function { - color: #c397d8; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .hljs, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .hljs { - display: block; - background: black; - color: #eaeaea; - padding: 0.5em; -} -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .coffeescript .javascript, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .coffeescript .javascript, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .javascript .xml, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .javascript .xml, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .tex .hljs-formula, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .tex .hljs-formula, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .javascript, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .javascript, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .vbscript, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .vbscript, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .css, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .css, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre .xml .hljs-cdata, -.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code .xml .hljs-cdata { - opacity: 0.5; -} diff --git a/bookdown/_book/libs/gitbook-2.6.7/css/plugin-search.css b/bookdown/_book/libs/gitbook-2.6.7/css/plugin-search.css deleted file mode 100644 index c85e557..0000000 --- a/bookdown/_book/libs/gitbook-2.6.7/css/plugin-search.css +++ /dev/null @@ -1,31 +0,0 @@ -.book .book-summary .book-search { - padding: 6px; - background: transparent; - position: absolute; - top: -50px; - left: 0px; - right: 0px; - transition: top 0.5s ease; -} -.book .book-summary .book-search input, -.book .book-summary .book-search input:focus, -.book .book-summary .book-search input:hover { - width: 100%; - background: transparent; - border: 1px solid #ccc; - box-shadow: none; - outline: none; - line-height: 22px; - padding: 7px 4px; - color: inherit; - box-sizing: border-box; -} -.book.with-search .book-summary .book-search { - top: 0px; -} -.book.with-search .book-summary ul.summary { - top: 50px; -} -.with-search .summary li[data-level] a[href*=".html#"] { - display: none; -} diff --git a/bookdown/_book/libs/gitbook-2.6.7/css/plugin-table.css b/bookdown/_book/libs/gitbook-2.6.7/css/plugin-table.css deleted file mode 100644 index 7fba1b9..0000000 --- a/bookdown/_book/libs/gitbook-2.6.7/css/plugin-table.css +++ /dev/null @@ -1 +0,0 @@ -.book .book-body .page-wrapper .page-inner section.normal table{display:table;width:100%;border-collapse:collapse;border-spacing:0;overflow:auto}.book .book-body .page-wrapper .page-inner section.normal table td,.book .book-body .page-wrapper .page-inner section.normal table th{padding:6px 13px;border:1px solid #ddd}.book .book-body .page-wrapper .page-inner section.normal table tr{background-color:#fff;border-top:1px solid #ccc}.book .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n){background-color:#f8f8f8}.book .book-body .page-wrapper .page-inner section.normal table th{font-weight:700} diff --git a/bookdown/_book/libs/gitbook-2.6.7/css/style.css b/bookdown/_book/libs/gitbook-2.6.7/css/style.css deleted file mode 100644 index b896892..0000000 --- a/bookdown/_book/libs/gitbook-2.6.7/css/style.css +++ /dev/null @@ -1,10 +0,0 @@ -/*! normalize.css v2.1.0 | MIT License | git.io/normalize */img,legend{border:0}*,.fa{-webkit-font-smoothing:antialiased}.fa-ul>li,sub,sup{position:relative}.book .book-body .page-wrapper .page-inner section.normal hr:after,.book-langs-index .inner .languages:after,.buttons:after,.dropdown-menu .buttons:after{clear:both}body,html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}.hidden,[hidden]{display:none}audio:not([controls]){display:none;height:0}html{font-family:sans-serif}body,figure{margin:0}a:focus{outline:dotted thin}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button{margin-right:10px;}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}/*! - * Preboot v2 - * - * Open sourced under MIT license by @mdo. - * Some variables and mixins from Bootstrap (Apache 2 license). - */.link-inherit,.link-inherit:focus,.link-inherit:hover{color:inherit}.fa,.fa-stack{display:inline-block}/*! - * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:FontAwesome;src:url(./fontawesome/fontawesome-webfont.ttf?v=4.1.0) format('truetype');font-weight:400;font-style:normal}.fa{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-moz-osx-font-smoothing:grayscale}.book .book-header,.book .book-summary{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:.08em solid #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0)}100%{-o-transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1,1);-moz-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1,-1);-moz-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.fa-stack{position:relative;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-repeat:before,.fa-rotate-right:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-image:before,.fa-photo:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-exclamation-triangle:before,.fa-warning:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-floppy-o:before,.fa-save:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-bars:before,.fa-navicon:before,.fa-reorder:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-bolt:before,.fa-flash:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-chain-broken:before,.fa-unlink:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-caret-square-o-down:before,.fa-toggle-down:before{content:"\f150"}.fa-caret-square-o-up:before,.fa-toggle-up:before{content:"\f151"}.fa-caret-square-o-right:before,.fa-toggle-right:before{content:"\f152"}.fa-eur:before,.fa-euro:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-inr:before,.fa-rupee:before{content:"\f156"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen:before{content:"\f157"}.fa-rouble:before,.fa-rub:before,.fa-ruble:before{content:"\f158"}.fa-krw:before,.fa-won:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-caret-square-o-left:before,.fa-toggle-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-try:before,.fa-turkish-lira:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-bank:before,.fa-institution:before,.fa-university:before{content:"\f19c"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-square:before,.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-image-o:before,.fa-file-photo-o:before,.fa-file-picture-o:before{content:"\f1c5"}.fa-file-archive-o:before,.fa-file-zip-o:before{content:"\f1c6"}.fa-file-audio-o:before,.fa-file-sound-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-ring:before,.fa-life-saver:before,.fa-support:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-empire:before,.fa-ge:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-paper-plane:before,.fa-send:before{content:"\f1d8"}.fa-paper-plane-o:before,.fa-send-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.book-langs-index{width:100%;height:100%;padding:40px 0;margin:0;overflow:auto}@media (max-width:600px){.book-langs-index{padding:0}}.book-langs-index .inner{max-width:600px;width:100%;margin:0 auto;padding:30px;background:#fff;border-radius:3px}.book-langs-index .inner h3{margin:0}.book-langs-index .inner .languages{list-style:none;padding:20px 30px;margin-top:20px;border-top:1px solid #eee}.book-langs-index .inner .languages:after,.book-langs-index .inner .languages:before{content:" ";display:table;line-height:0}.book-langs-index .inner .languages li{width:50%;float:left;padding:10px 5px;font-size:16px}@media (max-width:600px){.book-langs-index .inner .languages li{width:100%;max-width:100%}}.book .book-header{overflow:visible;height:50px;padding:0 8px;z-index:2;font-size:.85em;color:#7e888b;background:0 0}.book .book-header .btn{display:block;height:50px;padding:0 15px;border-bottom:none;color:#ccc;text-transform:uppercase;line-height:50px;-webkit-box-shadow:none!important;box-shadow:none!important;position:relative;font-size:14px}.book .book-header .btn:hover{position:relative;text-decoration:none;color:#444;background:0 0}.book .book-header h1{margin:0;font-size:20px;font-weight:200;text-align:center;line-height:50px;opacity:0;padding-left:200px;padding-right:200px;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-o-transition:opacity .2s ease;transition:opacity .2s ease;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book .book-header h1 a,.book .book-header h1 a:hover{color:inherit;text-decoration:none}@media (max-width:1000px){.book .book-header h1{display:none}}.book .book-header h1 i{display:none}.book .book-header:hover h1{opacity:1}.book.is-loading .book-header h1 i{display:inline-block}.book.is-loading .book-header h1 a{display:none}.dropdown{position:relative}.dropdown-menu{position:absolute;top:100%;left:0;z-index:100;display:none;float:left;min-width:160px;padding:0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fafafa;border:1px solid rgba(0,0,0,.07);border-radius:1px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.open{display:block}.dropdown-menu.dropdown-left{left:auto;right:4%}.dropdown-menu.dropdown-left .dropdown-caret{right:14px;left:auto}.dropdown-menu .dropdown-caret{position:absolute;top:-8px;left:14px;width:18px;height:10px;float:left;overflow:hidden}.dropdown-menu .dropdown-caret .caret-inner,.dropdown-menu .dropdown-caret .caret-outer{display:inline-block;top:0;border-left:9px solid transparent;border-right:9px solid transparent;position:absolute}.dropdown-menu .dropdown-caret .caret-outer{border-bottom:9px solid rgba(0,0,0,.1);height:auto;left:0;width:auto;margin-left:-1px}.dropdown-menu .dropdown-caret .caret-inner{margin-top:-1px;top:1px;border-bottom:9px solid #fafafa}.dropdown-menu .buttons{border-bottom:1px solid rgba(0,0,0,.07)}.dropdown-menu .buttons:after,.dropdown-menu .buttons:before{content:" ";display:table;line-height:0}.dropdown-menu .buttons:last-child{border-bottom:none}.dropdown-menu .buttons .button{border:0;background-color:transparent;color:#a6a6a6;width:100%;text-align:center;float:left;line-height:1.42857143;padding:8px 4px}.alert,.dropdown-menu .buttons .button:hover{color:#444}.dropdown-menu .buttons .button:focus,.dropdown-menu .buttons .button:hover{outline:0}.dropdown-menu .buttons .button.size-2{width:50%}.dropdown-menu .buttons .button.size-3{width:33%}.alert{padding:15px;margin-bottom:20px;background:#eee;border-bottom:5px solid #ddd}.alert-success{background:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-info{background:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-danger{background:#f2dede;border-color:#ebccd1;color:#a94442}.alert-warning{background:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.book .book-summary{position:absolute;top:0;left:-300px;bottom:0;z-index:1;width:300px;color:#364149;background:#fafafa;border-right:1px solid rgba(0,0,0,.07);-webkit-transition:left 250ms ease;-moz-transition:left 250ms ease;-o-transition:left 250ms ease;transition:left 250ms ease}.book .book-summary ul.summary{position:absolute;top:0;left:0;right:0;bottom:0;overflow-y:auto;list-style:none;margin:0;padding:0;-webkit-transition:top .5s ease;-moz-transition:top .5s ease;-o-transition:top .5s ease;transition:top .5s ease}.book .book-summary ul.summary li{list-style:none}.book .book-summary ul.summary li.divider{height:1px;margin:7px 0;overflow:hidden;background:rgba(0,0,0,.07)}.book .book-summary ul.summary li i.fa-check{display:none;position:absolute;right:9px;top:16px;font-size:9px;color:#3c3}.book .book-summary ul.summary li.done>a{color:#364149;font-weight:400}.book .book-summary ul.summary li.done>a i{display:inline}.book .book-summary ul.summary li a,.book .book-summary ul.summary li span{display:block;padding:10px 15px;border-bottom:none;color:#364149;background:0 0;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;position:relative}.book .book-summary ul.summary li span{cursor:not-allowed;opacity:.3;filter:alpha(opacity=30)}.book .book-summary ul.summary li a:hover,.book .book-summary ul.summary li.active>a{color:#008cff;background:0 0;text-decoration:none}.book .book-summary ul.summary li ul{padding-left:20px}@media (max-width:600px){.book .book-summary{width:calc(100% - 60px);bottom:0;left:-100%}}.book.with-summary .book-summary{left:0}.book.without-animation .book-summary{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;transition:none!important}.book{position:relative;width:100%;height:100%}.book .book-body,.book .book-body .body-inner{position:absolute;top:0;left:0;overflow-y:auto;bottom:0;right:0}.book .book-body{color:#000;background:#fff;-webkit-transition:left 250ms ease;-moz-transition:left 250ms ease;-o-transition:left 250ms ease;transition:left 250ms ease}.book .book-body .page-wrapper{position:relative;outline:0}.book .book-body .page-wrapper .page-inner{max-width:800px;margin:0 auto;padding:20px 0 40px}.book .book-body .page-wrapper .page-inner section{margin:0;padding:5px 15px;background:#fff;border-radius:2px;line-height:1.7;font-size:1.6rem}.book .book-body .page-wrapper .page-inner .btn-group .btn{border-radius:0;background:#eee;border:0}@media (max-width:1240px){.book .book-body{-webkit-transition:-webkit-transform 250ms ease;-moz-transition:-moz-transform 250ms ease;-o-transition:-o-transform 250ms ease;transition:transform 250ms ease;padding-bottom:20px}.book .book-body .body-inner{position:static;min-height:calc(100% - 50px)}}@media (min-width:600px){.book.with-summary .book-body{left:300px}}@media (max-width:600px){.book.with-summary{overflow:hidden}.book.with-summary .book-body{-webkit-transform:translate(calc(100% - 60px),0);-moz-transform:translate(calc(100% - 60px),0);-ms-transform:translate(calc(100% - 60px),0);-o-transform:translate(calc(100% - 60px),0);transform:translate(calc(100% - 60px),0)}}.book.without-animation .book-body{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;transition:none!important}.buttons:after,.buttons:before{content:" ";display:table;line-height:0}.button{border:0;background:#eee;color:#666;width:100%;text-align:center;float:left;line-height:1.42857143;padding:8px 4px}.button:hover{color:#444}.button:focus,.button:hover{outline:0}.button.size-2{width:50%}.button.size-3{width:33%}.book .book-body .page-wrapper .page-inner section{display:none}.book .book-body .page-wrapper .page-inner section.normal{display:block;word-wrap:break-word;overflow:hidden;color:#333;line-height:1.7;text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%}.book .book-body .page-wrapper .page-inner section.normal *{box-sizing:border-box;-webkit-box-sizing:border-box;}.book .book-body .page-wrapper .page-inner section.normal>:first-child{margin-top:0!important}.book .book-body .page-wrapper .page-inner section.normal>:last-child{margin-bottom:0!important}.book .book-body .page-wrapper .page-inner section.normal blockquote,.book .book-body .page-wrapper .page-inner section.normal code,.book .book-body .page-wrapper .page-inner section.normal figure,.book .book-body .page-wrapper .page-inner section.normal img,.book .book-body .page-wrapper .page-inner section.normal pre,.book .book-body .page-wrapper .page-inner section.normal table,.book .book-body .page-wrapper .page-inner section.normal tr{page-break-inside:avoid}.book .book-body .page-wrapper .page-inner section.normal h2,.book .book-body .page-wrapper .page-inner section.normal h3,.book .book-body .page-wrapper .page-inner section.normal h4,.book .book-body .page-wrapper .page-inner section.normal h5,.book .book-body .page-wrapper .page-inner section.normal p{orphans:3;widows:3}.book .book-body .page-wrapper .page-inner section.normal h1,.book .book-body .page-wrapper .page-inner section.normal h2,.book .book-body .page-wrapper .page-inner section.normal h3,.book .book-body .page-wrapper .page-inner section.normal h4,.book .book-body .page-wrapper .page-inner section.normal h5{page-break-after:avoid}.book .book-body .page-wrapper .page-inner section.normal b,.book .book-body .page-wrapper .page-inner section.normal strong{font-weight:700}.book .book-body .page-wrapper .page-inner section.normal em{font-style:italic}.book .book-body .page-wrapper .page-inner section.normal blockquote,.book .book-body .page-wrapper .page-inner section.normal dl,.book .book-body .page-wrapper .page-inner section.normal ol,.book .book-body .page-wrapper .page-inner section.normal p,.book .book-body .page-wrapper .page-inner section.normal table,.book .book-body .page-wrapper .page-inner section.normal ul{margin-top:0;margin-bottom:.85em}.book .book-body .page-wrapper .page-inner section.normal a{color:#4183c4;text-decoration:none;background:0 0}.book .book-body .page-wrapper .page-inner section.normal a:active,.book .book-body .page-wrapper .page-inner section.normal a:focus,.book .book-body .page-wrapper .page-inner section.normal a:hover{outline:0;text-decoration:underline}.book .book-body .page-wrapper .page-inner section.normal img{border:0;max-width:100%}.book .book-body .page-wrapper .page-inner section.normal hr{height:4px;padding:0;margin:1.7em 0;overflow:hidden;background-color:#e7e7e7;border:none}.book .book-body .page-wrapper .page-inner section.normal hr:after,.book .book-body .page-wrapper .page-inner section.normal hr:before{display:table;content:" "}.book .book-body .page-wrapper .page-inner section.normal h1,.book .book-body .page-wrapper .page-inner section.normal h2,.book .book-body .page-wrapper .page-inner section.normal h3,.book .book-body .page-wrapper .page-inner section.normal h4,.book .book-body .page-wrapper .page-inner section.normal h5,.book .book-body .page-wrapper .page-inner section.normal h6{margin-top:1.275em;margin-bottom:.85em;}.book .book-body .page-wrapper .page-inner section.normal h1{font-size:2em}.book .book-body .page-wrapper .page-inner section.normal h2{font-size:1.75em}.book .book-body .page-wrapper .page-inner section.normal h3{font-size:1.5em}.book .book-body .page-wrapper .page-inner section.normal h4{font-size:1.25em}.book .book-body .page-wrapper .page-inner section.normal h5{font-size:1em}.book .book-body .page-wrapper .page-inner section.normal h6{font-size:1em;color:#777}.book .book-body .page-wrapper .page-inner section.normal code,.book .book-body .page-wrapper .page-inner section.normal pre{font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace;direction:ltr;border:none;color:inherit}.book .book-body .page-wrapper .page-inner section.normal pre{overflow:auto;word-wrap:normal;margin:0 0 1.275em;padding:.85em 1em;background:#f7f7f7}.book .book-body .page-wrapper .page-inner section.normal pre>code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;font-size:.85em;white-space:pre;background:0 0}.book .book-body .page-wrapper .page-inner section.normal pre>code:after,.book .book-body .page-wrapper .page-inner section.normal pre>code:before{content:normal}.book .book-body .page-wrapper .page-inner section.normal code{padding:.2em;margin:0;font-size:.85em;background-color:#f7f7f7}.book .book-body .page-wrapper .page-inner section.normal code:after,.book .book-body .page-wrapper .page-inner section.normal code:before{letter-spacing:-.2em;content:"\00a0"}.book .book-body .page-wrapper .page-inner section.normal ol,.book .book-body .page-wrapper .page-inner section.normal ul{padding:0 0 0 2em;margin:0 0 .85em}.book .book-body .page-wrapper .page-inner section.normal ol ol,.book .book-body .page-wrapper .page-inner section.normal ol ul,.book .book-body .page-wrapper .page-inner section.normal ul ol,.book .book-body .page-wrapper .page-inner section.normal ul ul{margin-top:0;margin-bottom:0}.book .book-body .page-wrapper .page-inner section.normal ol ol{list-style-type:lower-roman}.book .book-body .page-wrapper .page-inner section.normal blockquote{margin:0 0 .85em;padding:0 15px;opacity:0.75;border-left:4px solid #dcdcdc}.book .book-body .page-wrapper .page-inner section.normal blockquote:first-child{margin-top:0}.book .book-body .page-wrapper .page-inner section.normal blockquote:last-child{margin-bottom:0}.book .book-body .page-wrapper .page-inner section.normal dl{padding:0}.book .book-body .page-wrapper .page-inner section.normal dl dt{padding:0;margin-top:.85em;font-style:italic;font-weight:700}.book .book-body .page-wrapper .page-inner section.normal dl dd{padding:0 .85em;margin-bottom:.85em}.book .book-body .page-wrapper .page-inner section.normal dd{margin-left:0}.book .book-body .page-wrapper .page-inner section.normal .glossary-term{cursor:help;text-decoration:underline}.book .book-body .navigation{position:absolute;top:50px;bottom:0;margin:0;max-width:150px;min-width:90px;display:flex;justify-content:center;align-content:center;flex-direction:column;font-size:40px;color:#ccc;text-align:center;-webkit-transition:all 350ms ease;-moz-transition:all 350ms ease;-o-transition:all 350ms ease;transition:all 350ms ease}.book .book-body .navigation:hover{text-decoration:none;color:#444}.book .book-body .navigation.navigation-next{right:0}.book .book-body .navigation.navigation-prev{left:0}@media (max-width:1240px){.book .book-body .navigation{position:static;top:auto;max-width:50%;width:50%;display:inline-block;float:left}.book .book-body .navigation.navigation-unique{max-width:100%;width:100%}}.book .book-body .page-wrapper .page-inner section.glossary{margin-bottom:40px}.book .book-body .page-wrapper .page-inner section.glossary h2 a,.book .book-body .page-wrapper .page-inner section.glossary h2 a:hover{color:inherit;text-decoration:none}.book .book-body .page-wrapper .page-inner section.glossary .glossary-index{list-style:none;margin:0;padding:0}.book .book-body .page-wrapper .page-inner section.glossary .glossary-index li{display:inline;margin:0 8px;white-space:nowrap}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:none;-webkit-touch-callout:none}a{text-decoration:none}body,html{height:100%}html{font-size:62.5%}body{text-rendering:optimizeLegibility;font-smoothing:antialiased;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;letter-spacing:.2px;text-size-adjust:100%} -.book .book-summary ul.summary li a span {display:inline;padding:initial;overflow:visible;cursor:auto;opacity:1;} diff --git a/bookdown/_book/libs/gitbook-2.6.7/js/app.min.js b/bookdown/_book/libs/gitbook-2.6.7/js/app.min.js deleted file mode 100644 index d302000..0000000 --- a/bookdown/_book/libs/gitbook-2.6.7/js/app.min.js +++ /dev/null @@ -1 +0,0 @@ -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o"'`]/g,reHasEscapedHtml=RegExp(reEscapedHtml.source),reHasUnescapedHtml=RegExp(reUnescapedHtml.source);var reEscape=/<%-([\s\S]+?)%>/g,reEvaluate=/<%([\s\S]+?)%>/g,reInterpolate=/<%=([\s\S]+?)%>/g;var reIsDeepProp=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,reIsPlainProp=/^\w*$/,rePropName=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g;var reRegExpChars=/^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g,reHasRegExpChars=RegExp(reRegExpChars.source);var reComboMark=/[\u0300-\u036f\ufe20-\ufe23]/g;var reEscapeChar=/\\(\\)?/g;var reEsTemplate=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g;var reFlags=/\w*$/;var reHasHexPrefix=/^0[xX]/;var reIsHostCtor=/^\[object .+?Constructor\]$/;var reIsUint=/^\d+$/;var reLatin1=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g;var reNoMatch=/($^)/;var reUnescapedString=/['\n\r\u2028\u2029\\]/g;var reWords=function(){var upper="[A-Z\\xc0-\\xd6\\xd8-\\xde]",lower="[a-z\\xdf-\\xf6\\xf8-\\xff]+";return RegExp(upper+"+(?="+upper+lower+")|"+upper+"?"+lower+"|"+upper+"+|[0-9]+","g")}();var contextProps=["Array","ArrayBuffer","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Math","Number","Object","RegExp","Set","String","_","clearTimeout","isFinite","parseFloat","parseInt","setTimeout","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap"];var templateCounter=-1;var typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=true;typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=false;var cloneableTags={};cloneableTags[argsTag]=cloneableTags[arrayTag]=cloneableTags[arrayBufferTag]=cloneableTags[boolTag]=cloneableTags[dateTag]=cloneableTags[float32Tag]=cloneableTags[float64Tag]=cloneableTags[int8Tag]=cloneableTags[int16Tag]=cloneableTags[int32Tag]=cloneableTags[numberTag]=cloneableTags[objectTag]=cloneableTags[regexpTag]=cloneableTags[stringTag]=cloneableTags[uint8Tag]=cloneableTags[uint8ClampedTag]=cloneableTags[uint16Tag]=cloneableTags[uint32Tag]=true;cloneableTags[errorTag]=cloneableTags[funcTag]=cloneableTags[mapTag]=cloneableTags[setTag]=cloneableTags[weakMapTag]=false;var deburredLetters={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss"};var htmlEscapes={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"};var htmlUnescapes={"&":"&","<":"<",">":">",""":'"',"'":"'","`":"`"};var objectTypes={function:true,object:true};var regexpEscapes={0:"x30",1:"x31",2:"x32",3:"x33",4:"x34",5:"x35",6:"x36",7:"x37",8:"x38",9:"x39",A:"x41",B:"x42",C:"x43",D:"x44",E:"x45",F:"x46",a:"x61",b:"x62",c:"x63",d:"x64",e:"x65",f:"x66",n:"x6e",r:"x72",t:"x74",u:"x75",v:"x76",x:"x78"};var stringEscapes={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"};var freeExports=objectTypes[typeof exports]&&exports&&!exports.nodeType&&exports;var freeModule=objectTypes[typeof module]&&module&&!module.nodeType&&module;var freeGlobal=freeExports&&freeModule&&typeof global=="object"&&global&&global.Object&&global;var freeSelf=objectTypes[typeof self]&&self&&self.Object&&self;var freeWindow=objectTypes[typeof window]&&window&&window.Object&&window;var moduleExports=freeModule&&freeModule.exports===freeExports&&freeExports;var root=freeGlobal||freeWindow!==(this&&this.window)&&freeWindow||freeSelf||this;function baseCompareAscending(value,other){if(value!==other){var valIsNull=value===null,valIsUndef=value===undefined,valIsReflexive=value===value;var othIsNull=other===null,othIsUndef=other===undefined,othIsReflexive=other===other;if(value>other&&!othIsNull||!valIsReflexive||valIsNull&&!othIsUndef&&othIsReflexive||valIsUndef&&othIsReflexive){return 1}if(value-1){}return index}function charsRightIndex(string,chars){var index=string.length;while(index--&&chars.indexOf(string.charAt(index))>-1){}return index}function compareAscending(object,other){return baseCompareAscending(object.criteria,other.criteria)||object.index-other.index}function compareMultiple(object,other,orders){var index=-1,objCriteria=object.criteria,othCriteria=other.criteria,length=objCriteria.length,ordersLength=orders.length;while(++index=ordersLength){return result}var order=orders[index];return result*(order==="asc"||order===true?1:-1)}}return object.index-other.index}function deburrLetter(letter){return deburredLetters[letter]}function escapeHtmlChar(chr){return htmlEscapes[chr]}function escapeRegExpChar(chr,leadingChar,whitespaceChar){if(leadingChar){chr=regexpEscapes[chr]}else if(whitespaceChar){chr=stringEscapes[chr]}return"\\"+chr}function escapeStringChar(chr){return"\\"+stringEscapes[chr]}function indexOfNaN(array,fromIndex,fromRight){var length=array.length,index=fromIndex+(fromRight?0:-1);while(fromRight?index--:++index=9&&charCode<=13)||charCode==32||charCode==160||charCode==5760||charCode==6158||charCode>=8192&&(charCode<=8202||charCode==8232||charCode==8233||charCode==8239||charCode==8287||charCode==12288||charCode==65279)}function replaceHolders(array,placeholder){var index=-1,length=array.length,resIndex=-1,result=[];while(++index>>1;var MAX_SAFE_INTEGER=9007199254740991;var metaMap=WeakMap&&new WeakMap;var realNames={};function lodash(value){if(isObjectLike(value)&&!isArray(value)&&!(value instanceof LazyWrapper)){if(value instanceof LodashWrapper){return value}if(hasOwnProperty.call(value,"__chain__")&&hasOwnProperty.call(value,"__wrapped__")){return wrapperClone(value)}}return new LodashWrapper(value)}function baseLodash(){}function LodashWrapper(value,chainAll,actions){this.__wrapped__=value;this.__actions__=actions||[];this.__chain__=!!chainAll}var support=lodash.support={};lodash.templateSettings={escape:reEscape,evaluate:reEvaluate,interpolate:reInterpolate,variable:"",imports:{_:lodash}};function LazyWrapper(value){this.__wrapped__=value;this.__actions__=[];this.__dir__=1;this.__filtered__=false;this.__iteratees__=[];this.__takeCount__=POSITIVE_INFINITY;this.__views__=[]}function lazyClone(){var result=new LazyWrapper(this.__wrapped__);result.__actions__=arrayCopy(this.__actions__);result.__dir__=this.__dir__;result.__filtered__=this.__filtered__;result.__iteratees__=arrayCopy(this.__iteratees__);result.__takeCount__=this.__takeCount__;result.__views__=arrayCopy(this.__views__);return result}function lazyReverse(){if(this.__filtered__){var result=new LazyWrapper(this);result.__dir__=-1;result.__filtered__=true}else{result=this.clone();result.__dir__*=-1}return result}function lazyValue(){var array=this.__wrapped__.value(),dir=this.__dir__,isArr=isArray(array),isRight=dir<0,arrLength=isArr?array.length:0,view=getView(0,arrLength,this.__views__),start=view.start,end=view.end,length=end-start,index=isRight?end:start-1,iteratees=this.__iteratees__,iterLength=iteratees.length,resIndex=0,takeCount=nativeMin(length,this.__takeCount__);if(!isArr||arrLength=LARGE_ARRAY_SIZE?createCache(values):null,valuesLength=values.length;if(cache){indexOf=cacheIndexOf;isCommon=false;values=cache}outer:while(++indexlength?0:length+start}end=end===undefined||end>length?length:+end||0;if(end<0){end+=length}length=start>end?0:end>>>0;start>>>=0;while(startlength?0:length+start}end=end===undefined||end>length?length:+end||0;if(end<0){end+=length}length=start>end?0:end-start>>>0;start>>>=0;var result=Array(length);while(++index=LARGE_ARRAY_SIZE,seen=isLarge?createCache():null,result=[];if(seen){indexOf=cacheIndexOf;isCommon=false}else{isLarge=false;seen=iteratee?[]:result}outer:while(++index>>1,computed=array[mid];if((retHighest?computed<=value:computed2?sources[length-2]:undefined,guard=length>2?sources[2]:undefined,thisArg=length>1?sources[length-1]:undefined;if(typeof customizer=="function"){customizer=bindCallback(customizer,thisArg,5);length-=2}else{customizer=typeof thisArg=="function"?thisArg:undefined;length-=customizer?1:0}if(guard&&isIterateeCall(sources[0],sources[1],guard)){customizer=length<3?undefined:customizer;length=1}while(++index-1?collection[index]:undefined}return baseFind(collection,predicate,eachFunc)}}function createFindIndex(fromRight){return function(array,predicate,thisArg){if(!(array&&array.length)){return-1}predicate=getCallback(predicate,thisArg,3);return baseFindIndex(array,predicate,fromRight)}}function createFindKey(objectFunc){return function(object,predicate,thisArg){predicate=getCallback(predicate,thisArg,3);return baseFind(object,predicate,objectFunc,true)}}function createFlow(fromRight){return function(){var wrapper,length=arguments.length,index=fromRight?length:-1,leftIndex=0,funcs=Array(length);while(fromRight?index--:++index=LARGE_ARRAY_SIZE){return wrapper.plant(value).value()}var index=0,result=length?funcs[index].apply(this,args):value;while(++index=length||!nativeIsFinite(length)){return""}var padLength=length-strLength;chars=chars==null?" ":chars+"";return repeat(chars,nativeCeil(padLength/chars.length)).slice(0,padLength)}function createPartialWrapper(func,bitmask,thisArg,partials){var isBind=bitmask&BIND_FLAG,Ctor=createCtorWrapper(func);function wrapper(){var argsIndex=-1,argsLength=arguments.length,leftIndex=-1,leftLength=partials.length,args=Array(leftLength+argsLength);while(++leftIndexarrLength)){return false}while(++index-1&&value%1==0&&value-1&&value%1==0&&value<=MAX_SAFE_INTEGER}function isStrictComparable(value){return value===value&&!isObject(value)}function mergeData(data,source){var bitmask=data[1],srcBitmask=source[1],newBitmask=bitmask|srcBitmask,isCommon=newBitmask0){if(++count>=HOT_COUNT){return key}}else{count=0}return baseSetData(key,value)}}();function shimKeys(object){var props=keysIn(object),propsLength=props.length,length=propsLength&&object.length;var allowIndexes=!!length&&isLength(length)&&(isArray(object)||isArguments(object));var index=-1,result=[];while(++index=120?createCache(othIndex&&value):null}var array=arrays[0],index=-1,length=array?array.length:0,seen=caches[0];outer:while(++index-1){splice.call(array,fromIndex,1)}}return array}var pullAt=restParam(function(array,indexes){indexes=baseFlatten(indexes);var result=baseAt(array,indexes);basePullAt(array,indexes.sort(baseCompareAscending));return result});function remove(array,predicate,thisArg){var result=[];if(!(array&&array.length)){return result}var index=-1,indexes=[],length=array.length;predicate=getCallback(predicate,thisArg,3);while(++index2?arrays[length-2]:undefined,thisArg=length>1?arrays[length-1]:undefined;if(length>2&&typeof iteratee=="function"){length-=2}else{iteratee=length>1&&typeof thisArg=="function"?(--length,thisArg):undefined;thisArg=undefined}arrays.length=length;return unzipWith(arrays,iteratee,thisArg)});function chain(value){var result=lodash(value);result.__chain__=true;return result}function tap(value,interceptor,thisArg){interceptor.call(thisArg,value);return value}function thru(value,interceptor,thisArg){return interceptor.call(thisArg,value)}function wrapperChain(){return chain(this)}function wrapperCommit(){return new LodashWrapper(this.value(),this.__chain__)}var wrapperConcat=restParam(function(values){values=baseFlatten(values);return this.thru(function(array){return arrayConcat(isArray(array)?array:[toObject(array)],values)})});function wrapperPlant(value){var result,parent=this;while(parent instanceof baseLodash){var clone=wrapperClone(parent);if(result){previous.__wrapped__=clone}else{result=clone}var previous=clone;parent=parent.__wrapped__}previous.__wrapped__=value;return result}function wrapperReverse(){var value=this.__wrapped__;var interceptor=function(value){return wrapped&&wrapped.__dir__<0?value:value.reverse()};if(value instanceof LazyWrapper){var wrapped=value;if(this.__actions__.length){wrapped=new LazyWrapper(this)}wrapped=wrapped.reverse();wrapped.__actions__.push({func:thru,args:[interceptor],thisArg:undefined});return new LodashWrapper(wrapped,this.__chain__)}return this.thru(interceptor)}function wrapperToString(){return this.value()+""}function wrapperValue(){return baseWrapperValue(this.__wrapped__,this.__actions__)}var at=restParam(function(collection,props){return baseAt(collection,baseFlatten(props))});var countBy=createAggregator(function(result,value,key){hasOwnProperty.call(result,key)?++result[key]:result[key]=1});function every(collection,predicate,thisArg){var func=isArray(collection)?arrayEvery:baseEvery;if(thisArg&&isIterateeCall(collection,predicate,thisArg)){predicate=undefined}if(typeof predicate!="function"||thisArg!==undefined){predicate=getCallback(predicate,thisArg,3)}return func(collection,predicate)}function filter(collection,predicate,thisArg){var func=isArray(collection)?arrayFilter:baseFilter;predicate=getCallback(predicate,thisArg,3);return func(collection,predicate)}var find=createFind(baseEach);var findLast=createFind(baseEachRight,true);function findWhere(collection,source){return find(collection,baseMatches(source))}var forEach=createForEach(arrayEach,baseEach);var forEachRight=createForEach(arrayEachRight,baseEachRight);var groupBy=createAggregator(function(result,value,key){if(hasOwnProperty.call(result,key)){result[key].push(value)}else{result[key]=[value]}});function includes(collection,target,fromIndex,guard){var length=collection?getLength(collection):0;if(!isLength(length)){collection=values(collection);length=collection.length}if(typeof fromIndex!="number"||guard&&isIterateeCall(target,fromIndex,guard)){fromIndex=0}else{fromIndex=fromIndex<0?nativeMax(length+fromIndex,0):fromIndex||0}return typeof collection=="string"||!isArray(collection)&&isString(collection)?fromIndex<=length&&collection.indexOf(target,fromIndex)>-1:!!length&&getIndexOf(collection,target,fromIndex)>-1}var indexBy=createAggregator(function(result,value,key){result[key]=value});var invoke=restParam(function(collection,path,args){var index=-1,isFunc=typeof path=="function",isProp=isKey(path),result=isArrayLike(collection)?Array(collection.length):[];baseEach(collection,function(value){var func=isFunc?path:isProp&&value!=null?value[path]:undefined;result[++index]=func?func.apply(value,args):invokePath(value,path,args)});return result});function map(collection,iteratee,thisArg){var func=isArray(collection)?arrayMap:baseMap;iteratee=getCallback(iteratee,thisArg,3);return func(collection,iteratee)}var partition=createAggregator(function(result,value,key){result[key?0:1].push(value)},function(){return[[],[]]});function pluck(collection,path){return map(collection,property(path))}var reduce=createReduce(arrayReduce,baseEach);var reduceRight=createReduce(arrayReduceRight,baseEachRight);function reject(collection,predicate,thisArg){var func=isArray(collection)?arrayFilter:baseFilter;predicate=getCallback(predicate,thisArg,3);return func(collection,function(value,index,collection){return!predicate(value,index,collection)})}function sample(collection,n,guard){if(guard?isIterateeCall(collection,n,guard):n==null){collection=toIterable(collection);var length=collection.length;return length>0?collection[baseRandom(0,length-1)]:undefined}var index=-1,result=toArray(collection),length=result.length,lastIndex=length-1;n=nativeMin(n<0?0:+n||0,length);while(++index0){result=func.apply(this,arguments)}if(n<=1){func=undefined}return result}}var bind=restParam(function(func,thisArg,partials){var bitmask=BIND_FLAG;if(partials.length){var holders=replaceHolders(partials,bind.placeholder);bitmask|=PARTIAL_FLAG}return createWrapper(func,bitmask,thisArg,partials,holders)});var bindAll=restParam(function(object,methodNames){methodNames=methodNames.length?baseFlatten(methodNames):functions(object);var index=-1,length=methodNames.length;while(++indexwait){complete(trailingCall,maxTimeoutId)}else{timeoutId=setTimeout(delayed,remaining)}}function maxDelayed(){complete(trailing,timeoutId)}function debounced(){args=arguments;stamp=now();thisArg=this;trailingCall=trailing&&(timeoutId||!leading);if(maxWait===false){var leadingCall=leading&&!timeoutId}else{if(!maxTimeoutId&&!leading){lastCalled=stamp}var remaining=maxWait-(stamp-lastCalled),isCalled=remaining<=0||remaining>maxWait;if(isCalled){if(maxTimeoutId){maxTimeoutId=clearTimeout(maxTimeoutId)}lastCalled=stamp;result=func.apply(thisArg,args)}else if(!maxTimeoutId){maxTimeoutId=setTimeout(maxDelayed,remaining)}}if(isCalled&&timeoutId){timeoutId=clearTimeout(timeoutId)}else if(!timeoutId&&wait!==maxWait){timeoutId=setTimeout(delayed,wait)}if(leadingCall){isCalled=true;result=func.apply(thisArg,args)}if(isCalled&&!timeoutId&&!maxTimeoutId){args=thisArg=undefined}return result}debounced.cancel=cancel;return debounced}var defer=restParam(function(func,args){return baseDelay(func,1,args)});var delay=restParam(function(func,wait,args){return baseDelay(func,wait,args)});var flow=createFlow();var flowRight=createFlow(true);function memoize(func,resolver){if(typeof func!="function"||resolver&&typeof resolver!="function"){throw new TypeError(FUNC_ERROR_TEXT)}var memoized=function(){var args=arguments,key=resolver?resolver.apply(this,args):args[0],cache=memoized.cache;if(cache.has(key)){return cache.get(key)}var result=func.apply(this,args);memoized.cache=cache.set(key,result);return result};memoized.cache=new memoize.Cache;return memoized}var modArgs=restParam(function(func,transforms){transforms=baseFlatten(transforms);if(typeof func!="function"||!arrayEvery(transforms,baseIsFunction)){throw new TypeError(FUNC_ERROR_TEXT)}var length=transforms.length;return restParam(function(args){var index=nativeMin(args.length,length);while(index--){args[index]=transforms[index](args[index])}return func.apply(this,args)})});function negate(predicate){if(typeof predicate!="function"){throw new TypeError(FUNC_ERROR_TEXT)}return function(){return!predicate.apply(this,arguments)}}function once(func){return before(2,func)}var partial=createPartial(PARTIAL_FLAG);var partialRight=createPartial(PARTIAL_RIGHT_FLAG);var rearg=restParam(function(func,indexes){return createWrapper(func,REARG_FLAG,undefined,undefined,undefined,baseFlatten(indexes))});function restParam(func,start){if(typeof func!="function"){throw new TypeError(FUNC_ERROR_TEXT)}start=nativeMax(start===undefined?func.length-1:+start||0,0);return function(){var args=arguments,index=-1,length=nativeMax(args.length-start,0),rest=Array(length);while(++indexother}function gte(value,other){return value>=other}function isArguments(value){return isObjectLike(value)&&isArrayLike(value)&&hasOwnProperty.call(value,"callee")&&!propertyIsEnumerable.call(value,"callee")}var isArray=nativeIsArray||function(value){return isObjectLike(value)&&isLength(value.length)&&objToString.call(value)==arrayTag};function isBoolean(value){return value===true||value===false||isObjectLike(value)&&objToString.call(value)==boolTag}function isDate(value){return isObjectLike(value)&&objToString.call(value)==dateTag}function isElement(value){return!!value&&value.nodeType===1&&isObjectLike(value)&&!isPlainObject(value)}function isEmpty(value){if(value==null){return true}if(isArrayLike(value)&&(isArray(value)||isString(value)||isArguments(value)||isObjectLike(value)&&isFunction(value.splice))){return!value.length}return!keys(value).length}function isEqual(value,other,customizer,thisArg){customizer=typeof customizer=="function"?bindCallback(customizer,thisArg,3):undefined;var result=customizer?customizer(value,other):undefined;return result===undefined?baseIsEqual(value,other,customizer):!!result}function isError(value){return isObjectLike(value)&&typeof value.message=="string"&&objToString.call(value)==errorTag}function isFinite(value){return typeof value=="number"&&nativeIsFinite(value)}function isFunction(value){return isObject(value)&&objToString.call(value)==funcTag}function isObject(value){var type=typeof value;return!!value&&(type=="object"||type=="function")}function isMatch(object,source,customizer,thisArg){customizer=typeof customizer=="function"?bindCallback(customizer,thisArg,3):undefined;return baseIsMatch(object,getMatchData(source),customizer)}function isNaN(value){return isNumber(value)&&value!=+value}function isNative(value){if(value==null){return false}if(isFunction(value)){return reIsNative.test(fnToString.call(value))}return isObjectLike(value)&&reIsHostCtor.test(value)}function isNull(value){return value===null}function isNumber(value){return typeof value=="number"||isObjectLike(value)&&objToString.call(value)==numberTag}function isPlainObject(value){var Ctor;if(!(isObjectLike(value)&&objToString.call(value)==objectTag&&!isArguments(value))||!hasOwnProperty.call(value,"constructor")&&(Ctor=value.constructor,typeof Ctor=="function"&&!(Ctor instanceof Ctor))){return false}var result;baseForIn(value,function(subValue,key){result=key});return result===undefined||hasOwnProperty.call(value,result)}function isRegExp(value){return isObject(value)&&objToString.call(value)==regexpTag}function isString(value){return typeof value=="string"||isObjectLike(value)&&objToString.call(value)==stringTag}function isTypedArray(value){return isObjectLike(value)&&isLength(value.length)&&!!typedArrayTags[objToString.call(value)]}function isUndefined(value){return value===undefined}function lt(value,other){return value0;while(++index=nativeMin(start,end)&&value=0&&string.indexOf(target,position)==position}function escape(string){string=baseToString(string);return string&&reHasUnescapedHtml.test(string)?string.replace(reUnescapedHtml,escapeHtmlChar):string}function escapeRegExp(string){string=baseToString(string);return string&&reHasRegExpChars.test(string)?string.replace(reRegExpChars,escapeRegExpChar):string||"(?:)"}var kebabCase=createCompounder(function(result,word,index){return result+(index?"-":"")+word.toLowerCase()});function pad(string,length,chars){string=baseToString(string);length=+length;var strLength=string.length;if(strLength>=length||!nativeIsFinite(length)){return string}var mid=(length-strLength)/2,leftLength=nativeFloor(mid),rightLength=nativeCeil(mid);chars=createPadding("",rightLength,chars);return chars.slice(0,leftLength)+string+chars}var padLeft=createPadDir();var padRight=createPadDir(true);function parseInt(string,radix,guard){if(guard?isIterateeCall(string,radix,guard):radix==null){radix=0}else if(radix){radix=+radix}string=trim(string);return nativeParseInt(string,radix||(reHasHexPrefix.test(string)?16:10))}function repeat(string,n){var result="";string=baseToString(string);n=+n;if(n<1||!string||!nativeIsFinite(n)){return result}do{if(n%2){result+=string}n=nativeFloor(n/2);string+=string}while(n);return result}var snakeCase=createCompounder(function(result,word,index){return result+(index?"_":"")+word.toLowerCase()});var startCase=createCompounder(function(result,word,index){return result+(index?" ":"")+(word.charAt(0).toUpperCase()+word.slice(1))});function startsWith(string,target,position){string=baseToString(string);position=position==null?0:nativeMin(position<0?0:+position||0,string.length);return string.lastIndexOf(target,position)==position}function template(string,options,otherOptions){var settings=lodash.templateSettings;if(otherOptions&&isIterateeCall(string,options,otherOptions)){options=otherOptions=undefined}string=baseToString(string);options=assignWith(baseAssign({},otherOptions||options),settings,assignOwnDefaults);var imports=assignWith(baseAssign({},options.imports),settings.imports,assignOwnDefaults),importsKeys=keys(imports),importsValues=baseValues(imports,importsKeys);var isEscaping,isEvaluating,index=0,interpolate=options.interpolate||reNoMatch,source="__p += '";var reDelimiters=RegExp((options.escape||reNoMatch).source+"|"+interpolate.source+"|"+(interpolate===reInterpolate?reEsTemplate:reNoMatch).source+"|"+(options.evaluate||reNoMatch).source+"|$","g");var sourceURL="//# sourceURL="+("sourceURL"in options?options.sourceURL:"lodash.templateSources["+ ++templateCounter+"]")+"\n";string.replace(reDelimiters,function(match,escapeValue,interpolateValue,esTemplateValue,evaluateValue,offset){interpolateValue||(interpolateValue=esTemplateValue);source+=string.slice(index,offset).replace(reUnescapedString,escapeStringChar);if(escapeValue){isEscaping=true;source+="' +\n__e("+escapeValue+") +\n'"}if(evaluateValue){isEvaluating=true;source+="';\n"+evaluateValue+";\n__p += '"}if(interpolateValue){source+="' +\n((__t = ("+interpolateValue+")) == null ? '' : __t) +\n'"}index=offset+match.length;return match});source+="';\n";var variable=options.variable;if(!variable){source="with (obj) {\n"+source+"\n}\n"}source=(isEvaluating?source.replace(reEmptyStringLeading,""):source).replace(reEmptyStringMiddle,"$1").replace(reEmptyStringTrailing,"$1;");source="function("+(variable||"obj")+") {\n"+(variable?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(isEscaping?", __e = _.escape":"")+(isEvaluating?", __j = Array.prototype.join;\n"+"function print() { __p += __j.call(arguments, '') }\n":";\n")+source+"return __p\n}";var result=attempt(function(){return Function(importsKeys,sourceURL+"return "+source).apply(undefined,importsValues)});result.source=source;if(isError(result)){throw result}return result}function trim(string,chars,guard){var value=string;string=baseToString(string);if(!string){return string}if(guard?isIterateeCall(value,chars,guard):chars==null){return string.slice(trimmedLeftIndex(string),trimmedRightIndex(string)+1)}chars=chars+"";return string.slice(charsLeftIndex(string,chars),charsRightIndex(string,chars)+1)}function trimLeft(string,chars,guard){var value=string;string=baseToString(string);if(!string){return string}if(guard?isIterateeCall(value,chars,guard):chars==null){return string.slice(trimmedLeftIndex(string))}return string.slice(charsLeftIndex(string,chars+""))}function trimRight(string,chars,guard){var value=string;string=baseToString(string);if(!string){return string}if(guard?isIterateeCall(value,chars,guard):chars==null){return string.slice(0,trimmedRightIndex(string)+1)}return string.slice(0,charsRightIndex(string,chars+"")+1)}function trunc(string,options,guard){if(guard&&isIterateeCall(string,options,guard)){options=undefined}var length=DEFAULT_TRUNC_LENGTH,omission=DEFAULT_TRUNC_OMISSION;if(options!=null){if(isObject(options)){var separator="separator"in options?options.separator:separator;length="length"in options?+options.length||0:length;omission="omission"in options?baseToString(options.omission):omission}else{length=+options||0}}string=baseToString(string);if(length>=string.length){return string}var end=length-omission.length;if(end<1){return omission}var result=string.slice(0,end);if(separator==null){return result+omission}if(isRegExp(separator)){if(string.slice(end).search(separator)){var match,newEnd,substring=string.slice(0,end);if(!separator.global){separator=RegExp(separator.source,(reFlags.exec(separator)||"")+"g")}separator.lastIndex=0;while(match=separator.exec(substring)){newEnd=match.index}result=result.slice(0,newEnd==null?end:newEnd)}}else if(string.indexOf(separator,end)!=end){var index=result.lastIndexOf(separator);if(index>-1){result=result.slice(0,index)}}return result+omission}function unescape(string){string=baseToString(string);return string&&reHasEscapedHtml.test(string)?string.replace(reEscapedHtml,unescapeHtmlChar):string}function words(string,pattern,guard){if(guard&&isIterateeCall(string,pattern,guard)){pattern=undefined}string=baseToString(string);return string.match(pattern||reWords)||[]}var attempt=restParam(function(func,args){try{return func.apply(undefined,args)}catch(e){return isError(e)?e:new Error(e)}});function callback(func,thisArg,guard){if(guard&&isIterateeCall(func,thisArg,guard)){thisArg=undefined}return isObjectLike(func)?matches(func):baseCallback(func,thisArg)}function constant(value){return function(){return value}}function identity(value){return value}function matches(source){return baseMatches(baseClone(source,true))}function matchesProperty(path,srcValue){return baseMatchesProperty(path,baseClone(srcValue,true))}var method=restParam(function(path,args){return function(object){return invokePath(object,path,args)}});var methodOf=restParam(function(object,args){return function(path){return invokePath(object,path,args)}});function mixin(object,source,options){if(options==null){var isObj=isObject(source),props=isObj?keys(source):undefined,methodNames=props&&props.length?baseFunctions(source,props):undefined;if(!(methodNames?methodNames.length:isObj)){methodNames=false;options=source;source=object;object=this}}if(!methodNames){methodNames=baseFunctions(source,keys(source))}var chain=true,index=-1,isFunc=isFunction(object),length=methodNames.length;if(options===false){chain=false}else if(isObject(options)&&"chain"in options){chain=options.chain}while(++index0||end<0)){return new LazyWrapper(result)}if(start<0){result=result.takeRight(-start)}else if(start){result=result.drop(start)}if(end!==undefined){end=+end||0;result=end<0?result.dropRight(-end):result.take(end-start)}return result};LazyWrapper.prototype.takeRightWhile=function(predicate,thisArg){return this.reverse().takeWhile(predicate,thisArg).reverse()};LazyWrapper.prototype.toArray=function(){return this.take(POSITIVE_INFINITY)};baseForOwn(LazyWrapper.prototype,function(func,methodName){var checkIteratee=/^(?:filter|map|reject)|While$/.test(methodName),retUnwrapped=/^(?:first|last)$/.test(methodName),lodashFunc=lodash[retUnwrapped?"take"+(methodName=="last"?"Right":""):methodName];if(!lodashFunc){return}lodash.prototype[methodName]=function(){var args=retUnwrapped?[1]:arguments,chainAll=this.__chain__,value=this.__wrapped__,isHybrid=!!this.__actions__.length,isLazy=value instanceof LazyWrapper,iteratee=args[0],useLazy=isLazy||isArray(value);if(useLazy&&checkIteratee&&typeof iteratee=="function"&&iteratee.length!=1){isLazy=useLazy=false}var interceptor=function(value){return retUnwrapped&&chainAll?lodashFunc(value,1)[0]:lodashFunc.apply(undefined,arrayPush([value],args))};var action={func:thru,args:[interceptor],thisArg:undefined},onlyLazy=isLazy&&!isHybrid;if(retUnwrapped&&!chainAll){if(onlyLazy){value=value.clone();value.__actions__.push(action);return func.call(value)}return lodashFunc.call(undefined,this.value())[0]}if(!retUnwrapped&&useLazy){value=onlyLazy?value:new LazyWrapper(this);var result=func.apply(value,args);result.__actions__.push(action);return new LodashWrapper(result,chainAll)}return this.thru(interceptor)}});arrayEach(["join","pop","push","replace","shift","sort","splice","split","unshift"],function(methodName){var func=(/^(?:replace|split)$/.test(methodName)?stringProto:arrayProto)[methodName],chainName=/^(?:push|sort|unshift)$/.test(methodName)?"tap":"thru",retUnwrapped=/^(?:join|pop|replace|shift)$/.test(methodName);lodash.prototype[methodName]=function(){var args=arguments;if(retUnwrapped&&!this.__chain__){return func.apply(this.value(),args)}return this[chainName](function(value){return func.apply(value,args)})}});baseForOwn(LazyWrapper.prototype,function(func,methodName){var lodashFunc=lodash[methodName];if(lodashFunc){var key=lodashFunc.name,names=realNames[key]||(realNames[key]=[]);names.push({name:methodName,func:lodashFunc})}});realNames[createHybridWrapper(undefined,BIND_KEY_FLAG).name]=[{name:"wrapper",func:undefined}];LazyWrapper.prototype.clone=lazyClone;LazyWrapper.prototype.reverse=lazyReverse;LazyWrapper.prototype.value=lazyValue;lodash.prototype.chain=wrapperChain;lodash.prototype.commit=wrapperCommit;lodash.prototype.concat=wrapperConcat;lodash.prototype.plant=wrapperPlant;lodash.prototype.reverse=wrapperReverse;lodash.prototype.toString=wrapperToString;lodash.prototype.run=lodash.prototype.toJSON=lodash.prototype.valueOf=lodash.prototype.value=wrapperValue;lodash.prototype.collect=lodash.prototype.map;lodash.prototype.head=lodash.prototype.first;lodash.prototype.select=lodash.prototype.filter;lodash.prototype.tail=lodash.prototype.rest;return lodash}var _=runInContext();if(typeof define=="function"&&typeof define.amd=="object"&&define.amd){root._=_;define(function(){return _})}else if(freeExports&&freeModule){if(moduleExports){(freeModule.exports=_)._=_}else{freeExports._=_}}else{root._=_}}).call(this)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],3:[function(require,module,exports){(function(window,document,undefined){var _MAP={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"};var _KEYCODE_MAP={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"};var _SHIFT_MAP={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"};var _SPECIAL_ALIASES={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"};var _REVERSE_MAP;for(var i=1;i<20;++i){_MAP[111+i]="f"+i}for(i=0;i<=9;++i){_MAP[i+96]=i}function _addEvent(object,type,callback){if(object.addEventListener){object.addEventListener(type,callback,false);return}object.attachEvent("on"+type,callback)}function _characterFromEvent(e){if(e.type=="keypress"){var character=String.fromCharCode(e.which);if(!e.shiftKey){character=character.toLowerCase()}return character}if(_MAP[e.which]){return _MAP[e.which]}if(_KEYCODE_MAP[e.which]){return _KEYCODE_MAP[e.which]}return String.fromCharCode(e.which).toLowerCase()}function _modifiersMatch(modifiers1,modifiers2){return modifiers1.sort().join(",")===modifiers2.sort().join(",")}function _eventModifiers(e){var modifiers=[];if(e.shiftKey){modifiers.push("shift")}if(e.altKey){modifiers.push("alt")}if(e.ctrlKey){modifiers.push("ctrl")}if(e.metaKey){modifiers.push("meta")}return modifiers}function _preventDefault(e){if(e.preventDefault){e.preventDefault();return}e.returnValue=false}function _stopPropagation(e){if(e.stopPropagation){e.stopPropagation();return}e.cancelBubble=true}function _isModifier(key){return key=="shift"||key=="ctrl"||key=="alt"||key=="meta"}function _getReverseMap(){if(!_REVERSE_MAP){_REVERSE_MAP={};for(var key in _MAP){if(key>95&&key<112){continue}if(_MAP.hasOwnProperty(key)){_REVERSE_MAP[_MAP[key]]=key}}}return _REVERSE_MAP}function _pickBestAction(key,modifiers,action){if(!action){action=_getReverseMap()[key]?"keydown":"keypress"}if(action=="keypress"&&modifiers.length){action="keydown"}return action}function _keysFromString(combination){if(combination==="+"){return["+"]}combination=combination.replace(/\+{2}/g,"+plus");return combination.split("+")}function _getKeyInfo(combination,action){var keys;var key;var i;var modifiers=[];keys=_keysFromString(combination);for(i=0;i1){_bindSequence(combination,sequence,callback,action);return}info=_getKeyInfo(combination,action);self._callbacks[info.key]=self._callbacks[info.key]||[];_getMatches(info.key,info.modifiers,{type:info.action},sequenceName,combination,level);self._callbacks[info.key][sequenceName?"unshift":"push"]({callback:callback,modifiers:info.modifiers,action:info.action,seq:sequenceName,level:level,combo:combination})}self._bindMultiple=function(combinations,callback,action){for(var i=0;i-1){return false}if(_belongsTo(element,self.target)){return false}return element.tagName=="INPUT"||element.tagName=="SELECT"||element.tagName=="TEXTAREA"||element.isContentEditable};Mousetrap.prototype.handleKey=function(){var self=this;return self._handleKey.apply(self,arguments)};Mousetrap.init=function(){var documentMousetrap=Mousetrap(document);for(var method in documentMousetrap){if(method.charAt(0)!=="_"){Mousetrap[method]=function(method){return function(){return documentMousetrap[method].apply(documentMousetrap,arguments)}}(method)}}};Mousetrap.init();window.Mousetrap=Mousetrap;if(typeof module!=="undefined"&&module.exports){module.exports=Mousetrap}if(typeof define==="function"&&define.amd){define(function(){return Mousetrap})}})(window,document)},{}],4:[function(require,module,exports){(function(process){function normalizeArray(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift("..")}}return parts}var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var splitPath=function(filename){return splitPathRe.exec(filename).slice(1)};exports.resolve=function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:process.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){continue}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=normalizeArray(filter(resolvedPath.split("/"),function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."};exports.normalize=function(path){var isAbsolute=exports.isAbsolute(path),trailingSlash=substr(path,-1)==="/";path=normalizeArray(filter(path.split("/"),function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path};exports.isAbsolute=function(path){return path.charAt(0)==="/"};exports.join=function(){var paths=Array.prototype.slice.call(arguments,0);return exports.normalize(filter(paths,function(p,index){if(typeof p!=="string"){throw new TypeError("Arguments to path.join must be strings")}return p}).join("/"))};exports.relative=function(from,to){from=exports.resolve(from).substr(1);to=exports.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i1){for(var i=1;i= 0x80 (not a basic code point)","invalid-input":"Invalid input"},baseMinusTMin=base-tMin,floor=Math.floor,stringFromCharCode=String.fromCharCode,key;function error(type){throw RangeError(errors[type])}function map(array,fn){var length=array.length;var result=[];while(length--){result[length]=fn(array[length])}return result}function mapDomain(string,fn){var parts=string.split("@");var result="";if(parts.length>1){result=parts[0]+"@";string=parts[1]}string=string.replace(regexSeparators,".");var labels=string.split(".");var encoded=map(labels,fn).join(".");return result+encoded}function ucs2decode(string){var output=[],counter=0,length=string.length,value,extra;while(counter=55296&&value<=56319&&counter65535){value-=65536;output+=stringFromCharCode(value>>>10&1023|55296);value=56320|value&1023}output+=stringFromCharCode(value);return output}).join("")}function basicToDigit(codePoint){if(codePoint-48<10){return codePoint-22}if(codePoint-65<26){return codePoint-65}if(codePoint-97<26){return codePoint-97}return base}function digitToBasic(digit,flag){return digit+22+75*(digit<26)-((flag!=0)<<5)}function adapt(delta,numPoints,firstTime){var k=0;delta=firstTime?floor(delta/damp):delta>>1;delta+=floor(delta/numPoints);for(;delta>baseMinusTMin*tMax>>1;k+=base){delta=floor(delta/baseMinusTMin)}return floor(k+(baseMinusTMin+1)*delta/(delta+skew))}function decode(input){var output=[],inputLength=input.length,out,i=0,n=initialN,bias=initialBias,basic,j,index,oldi,w,k,digit,t,baseMinusT;basic=input.lastIndexOf(delimiter);if(basic<0){basic=0}for(j=0;j=128){error("not-basic")}output.push(input.charCodeAt(j))}for(index=basic>0?basic+1:0;index=inputLength){error("invalid-input")}digit=basicToDigit(input.charCodeAt(index++));if(digit>=base||digit>floor((maxInt-i)/w)){error("overflow")}i+=digit*w;t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(digitfloor(maxInt/baseMinusT)){error("overflow")}w*=baseMinusT}out=output.length+1;bias=adapt(i-oldi,out,oldi==0);if(floor(i/out)>maxInt-n){error("overflow")}n+=floor(i/out);i%=out;output.splice(i++,0,n)}return ucs2encode(output)}function encode(input){var n,delta,handledCPCount,basicLength,bias,j,m,q,k,t,currentValue,output=[],inputLength,handledCPCountPlusOne,baseMinusT,qMinusT;input=ucs2decode(input);inputLength=input.length;n=initialN;delta=0;bias=initialBias;for(j=0;j=n&¤tValuefloor((maxInt-delta)/handledCPCountPlusOne)){error("overflow")}delta+=(m-n)*handledCPCountPlusOne;n=m;for(j=0;jmaxInt){error("overflow")}if(currentValue==n){for(q=delta,k=base;;k+=base){t=k<=bias?tMin:k>=bias+tMax?tMax:k-bias;if(q0&&len>maxKeys){len=maxKeys}for(var i=0;i=0){kstr=x.substr(0,idx);vstr=x.substr(idx+1)}else{kstr=x;vstr=""}k=decodeURIComponent(kstr);v=decodeURIComponent(vstr);if(!hasOwnProperty(obj,k)){obj[k]=v}else if(isArray(obj[k])){obj[k].push(v)}else{obj[k]=[obj[k],v]}}return obj};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==="[object Array]"}},{}],8:[function(require,module,exports){"use strict";var stringifyPrimitive=function(v){switch(typeof v){case"string":return v;case"boolean":return v?"true":"false";case"number":return isFinite(v)?v:"";default:return""}};module.exports=function(obj,sep,eq,name){sep=sep||"&";eq=eq||"=";if(obj===null){obj=undefined}if(typeof obj==="object"){return map(objectKeys(obj),function(k){var ks=encodeURIComponent(stringifyPrimitive(k))+eq;if(isArray(obj[k])){return map(obj[k],function(v){return ks+encodeURIComponent(stringifyPrimitive(v))}).join(sep)}else{return ks+encodeURIComponent(stringifyPrimitive(obj[k]))}}).join(sep)}if(!name)return"";return encodeURIComponent(stringifyPrimitive(name))+eq+encodeURIComponent(stringifyPrimitive(obj))};var isArray=Array.isArray||function(xs){return Object.prototype.toString.call(xs)==="[object Array]"};function map(xs,f){if(xs.map)return xs.map(f);var res=[];for(var i=0;i",'"',"`"," ","\r","\n","\t"],unwise=["{","}","|","\\","^","`"].concat(delims),autoEscape=["'"].concat(unwise),nonHostChars=["%","/","?",";","#"].concat(autoEscape),hostEndingChars=["/","?","#"],hostnameMaxLen=255,hostnamePartPattern=/^[a-z0-9A-Z_-]{0,63}$/,hostnamePartStart=/^([a-z0-9A-Z_-]{0,63})(.*)$/,unsafeProtocol={javascript:true,"javascript:":true},hostlessProtocol={javascript:true,"javascript:":true},slashedProtocol={http:true,https:true,ftp:true,gopher:true,file:true,"http:":true,"https:":true,"ftp:":true,"gopher:":true,"file:":true},querystring=require("querystring");function urlParse(url,parseQueryString,slashesDenoteHost){if(url&&isObject(url)&&url instanceof Url)return url;var u=new Url;u.parse(url,parseQueryString,slashesDenoteHost);return u}Url.prototype.parse=function(url,parseQueryString,slashesDenoteHost){if(!isString(url)){throw new TypeError("Parameter 'url' must be a string, not "+typeof url)}var rest=url;rest=rest.trim();var proto=protocolPattern.exec(rest);if(proto){proto=proto[0];var lowerProto=proto.toLowerCase();this.protocol=lowerProto;rest=rest.substr(proto.length)}if(slashesDenoteHost||proto||rest.match(/^\/\/[^@\/]+@[^@\/]+/)){var slashes=rest.substr(0,2)==="//";if(slashes&&!(proto&&hostlessProtocol[proto])){rest=rest.substr(2);this.slashes=true}}if(!hostlessProtocol[proto]&&(slashes||proto&&!slashedProtocol[proto])){var hostEnd=-1;for(var i=0;i127){newpart+="x"}else{newpart+=part[j]}}if(!newpart.match(hostnamePartPattern)){var validParts=hostparts.slice(0,i);var notHost=hostparts.slice(i+1);var bit=part.match(hostnamePartStart);if(bit){validParts.push(bit[1]);notHost.unshift(bit[2])}if(notHost.length){rest="/"+notHost.join(".")+rest}this.hostname=validParts.join(".");break}}}}if(this.hostname.length>hostnameMaxLen){this.hostname=""}else{this.hostname=this.hostname.toLowerCase()}if(!ipv6Hostname){var domainArray=this.hostname.split(".");var newOut=[];for(var i=0;i0?result.host.split("@"):false;if(authInHost){result.auth=authInHost.shift();result.host=result.hostname=authInHost.shift()}}result.search=relative.search;result.query=relative.query;if(!isNull(result.pathname)||!isNull(result.search)){result.path=(result.pathname?result.pathname:"")+(result.search?result.search:"")}result.href=result.format();return result}if(!srcPath.length){result.pathname=null;if(result.search){result.path="/"+result.search}else{result.path=null}result.href=result.format();return result}var last=srcPath.slice(-1)[0];var hasTrailingSlash=(result.host||relative.host)&&(last==="."||last==="..")||last==="";var up=0;for(var i=srcPath.length;i>=0;i--){last=srcPath[i];if(last=="."){srcPath.splice(i,1)}else if(last===".."){srcPath.splice(i,1);up++}else if(up){srcPath.splice(i,1);up--}}if(!mustEndAbs&&!removeAllDots){for(;up--;up){srcPath.unshift("..")}}if(mustEndAbs&&srcPath[0]!==""&&(!srcPath[0]||srcPath[0].charAt(0)!=="/")){srcPath.unshift("")}if(hasTrailingSlash&&srcPath.join("/").substr(-1)!=="/"){srcPath.push("")}var isAbsolute=srcPath[0]===""||srcPath[0]&&srcPath[0].charAt(0)==="/";if(psychotic){result.hostname=result.host=isAbsolute?"":srcPath.length?srcPath.shift():"";var authInHost=result.host&&result.host.indexOf("@")>0?result.host.split("@"):false;if(authInHost){result.auth=authInHost.shift();result.host=result.hostname=authInHost.shift()}}mustEndAbs=mustEndAbs||result.host&&srcPath.length;if(mustEndAbs&&!isAbsolute){srcPath.unshift("")}if(!srcPath.length){result.pathname=null;result.path=null}else{result.pathname=srcPath.join("/")}if(!isNull(result.pathname)||!isNull(result.search)){result.path=(result.pathname?result.pathname:"")+(result.search?result.search:"")}result.auth=relative.auth||result.auth;result.slashes=result.slashes||relative.slashes;result.href=result.format();return result};Url.prototype.parseHost=function(){var host=this.host;var port=portPattern.exec(host);if(port){port=port[0];if(port!==":"){this.port=port.substr(1)}host=host.substr(0,host.length-port.length)}if(host)this.hostname=host};function isString(arg){return typeof arg==="string"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isNull(arg){return arg===null}function isNullOrUndefined(arg){return arg==null}},{punycode:6,querystring:9}],11:[function(require,module,exports){var $=require("jquery");function toggleDropdown(e){var $dropdown=$(e.currentTarget).parent().find(".dropdown-menu");$dropdown.toggleClass("open");e.stopPropagation();e.preventDefault()}function closeDropdown(e){$(".dropdown-menu").removeClass("open")}function init(){$(document).on("click",".toggle-dropdown",toggleDropdown);$(document).on("click",".dropdown-menu",function(e){e.stopPropagation()});$(document).on("click",closeDropdown)}module.exports={init:init}},{jquery:1}],12:[function(require,module,exports){var $=require("jquery");module.exports=$({})},{jquery:1}],13:[function(require,module,exports){var $=require("jquery");var _=require("lodash");var storage=require("./storage");var dropdown=require("./dropdown");var events=require("./events");var state=require("./state");var keyboard=require("./keyboard");var navigation=require("./navigation");var sidebar=require("./sidebar");var toolbar=require("./toolbar");function start(config){sidebar.init();keyboard.init();dropdown.init();navigation.init();toolbar.createButton({index:0,icon:"fa fa-align-justify",label:"Toggle Sidebar",onClick:function(e){e.preventDefault();sidebar.toggle()}});events.trigger("start",config);navigation.notify()}var gitbook={start:start,events:events,state:state,toolbar:toolbar,sidebar:sidebar,storage:storage,keyboard:keyboard};var MODULES={gitbook:gitbook,jquery:$,lodash:_};window.gitbook=gitbook;window.$=$;window.jQuery=$;gitbook.require=function(mods,fn){mods=_.map(mods,function(mod){mod=mod.toLowerCase();if(!MODULES[mod]){throw new Error("GitBook module "+mod+" doesn't exist")}return MODULES[mod]});fn.apply(null,mods)};module.exports={}},{"./dropdown":11,"./events":12,"./keyboard":14,"./navigation":16,"./sidebar":18,"./state":19,"./storage":20,"./toolbar":21,jquery:1,lodash:2}],14:[function(require,module,exports){var Mousetrap=require("mousetrap");var navigation=require("./navigation");var sidebar=require("./sidebar");function bindShortcut(keys,fn){Mousetrap.bind(keys,function(e){fn();return false})}function init(){bindShortcut(["right"],function(e){navigation.goNext()});bindShortcut(["left"],function(e){navigation.goPrev()});bindShortcut(["s"],function(e){sidebar.toggle()})}module.exports={init:init,bind:bindShortcut}},{"./navigation":16,"./sidebar":18,mousetrap:3}],15:[function(require,module,exports){var state=require("./state");function showLoading(p){state.$book.addClass("is-loading");p.always(function(){state.$book.removeClass("is-loading")});return p}module.exports={show:showLoading}},{"./state":19}],16:[function(require,module,exports){var $=require("jquery");var url=require("url");var events=require("./events");var state=require("./state");var loading=require("./loading");var usePushState=typeof history.pushState!=="undefined";function handleNavigation(relativeUrl,push){var uri=url.resolve(window.location.pathname,relativeUrl);notifyPageChange();location.href=relativeUrl;return}function updateNavigationPosition(){var bodyInnerWidth,pageWrapperWidth;bodyInnerWidth=parseInt($(".body-inner").css("width"),10);pageWrapperWidth=parseInt($(".page-wrapper").css("width"),10);$(".navigation-next").css("margin-right",bodyInnerWidth-pageWrapperWidth+"px")}function notifyPageChange(){events.trigger("page.change")}function preparePage(notify){var $bookBody=$(".book-body");var $bookInner=$bookBody.find(".body-inner");var $pageWrapper=$bookInner.find(".page-wrapper");updateNavigationPosition();$bookInner.scrollTop(0);$bookBody.scrollTop(0);if(notify!==false)notifyPageChange()}function isLeftClickEvent(e){return e.button===0}function isModifiedEvent(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function handlePagination(e){if(isModifiedEvent(e)||!isLeftClickEvent(e)){return}e.stopPropagation();e.preventDefault();var url=$(this).attr("href");if(url)handleNavigation(url,true)}function goNext(){var url=$(".navigation-next").attr("href");if(url)handleNavigation(url,true)}function goPrev(){var url=$(".navigation-prev").attr("href");if(url)handleNavigation(url,true)}function init(){$.ajaxSetup({});if(location.protocol!=="file:"){history.replaceState({path:window.location.href},"")}window.onpopstate=function(event){if(event.state===null){return}return handleNavigation(event.state.path,false)};$(document).on("click",".navigation-prev",handlePagination);$(document).on("click",".navigation-next",handlePagination);$(document).on("click",".summary [data-path] a",handlePagination);$(window).resize(updateNavigationPosition);preparePage(false)}module.exports={init:init,goNext:goNext,goPrev:goPrev,notify:notifyPageChange}},{"./events":12,"./loading":15,"./state":19,jquery:1,url:10}],17:[function(require,module,exports){module.exports={isMobile:function(){return document.body.clientWidth<=600}}},{}],18:[function(require,module,exports){var $=require("jquery");var _=require("lodash");var storage=require("./storage");var platform=require("./platform");var state=require("./state");function toggleSidebar(_state,animation){if(state!=null&&isOpen()==_state)return;if(animation==null)animation=true;state.$book.toggleClass("without-animation",!animation);state.$book.toggleClass("with-summary",_state);storage.set("sidebar",isOpen())}function isOpen(){return state.$book.hasClass("with-summary")}function init(){if(platform.isMobile()){toggleSidebar(false,false)}else{toggleSidebar(storage.get("sidebar",true),false)}$(document).on("click",".book-summary li.chapter a",function(e){if(platform.isMobile())toggleSidebar(false,false)})}function filterSummary(paths){var $summary=$(".book-summary");$summary.find("li").each(function(){var path=$(this).data("path");var st=paths==null||_.contains(paths,path);$(this).toggle(st);if(st)$(this).parents("li").show()})}module.exports={init:init,isOpen:isOpen,toggle:toggleSidebar,filter:filterSummary}},{"./platform":17,"./state":19,"./storage":20,jquery:1,lodash:2}],19:[function(require,module,exports){var $=require("jquery");var url=require("url");var path=require("path");var state={};state.update=function(dom){var $book=$(dom.find(".book"));state.$book=$book;state.level=$book.data("level");state.basePath=$book.data("basepath");state.innerLanguage=$book.data("innerlanguage");state.revision=$book.data("revision");state.filepath=$book.data("filepath");state.chapterTitle=$book.data("chapter-title");state.root=url.resolve(location.protocol+"//"+location.host,path.dirname(path.resolve(location.pathname.replace(/\/$/,"/index.html"),state.basePath))).replace(/\/?$/,"/");state.bookRoot=state.innerLanguage?url.resolve(state.root,".."):state.root};state.update($);module.exports=state},{jquery:1,path:4,url:10}],20:[function(require,module,exports){var baseKey="";module.exports={setBaseKey:function(key){baseKey=key},set:function(key,value){key=baseKey+":"+key;try{sessionStorage[key]=JSON.stringify(value)}catch(e){}},get:function(key,def){key=baseKey+":"+key;if(sessionStorage[key]===undefined)return def;try{var v=JSON.parse(sessionStorage[key]);return v==null?def:v}catch(err){return sessionStorage[key]||def}},remove:function(key){key=baseKey+":"+key;sessionStorage.removeItem(key)}}},{}],21:[function(require,module,exports){var $=require("jquery");var _=require("lodash");var events=require("./events");var buttons=[];function insertAt(parent,selector,index,element){var lastIndex=parent.children(selector).size();if(index<0){index=Math.max(0,lastIndex+1+index)}parent.append(element);if(index",{class:"dropdown-menu",html:''});if(_.isString(dropdown)){$menu.append(dropdown)}else{var groups=_.map(dropdown,function(group){if(_.isArray(group))return group;else return[group]});_.each(groups,function(group){var $group=$("
",{class:"buttons"});var sizeClass="size-"+group.length;_.each(group,function(btn){btn=_.defaults(btn||{},{text:"",className:"",onClick:defaultOnClick});var $btn=$("'; - var clipboard; - - gitbook.events.bind("page.change", function() { - - if (!ClipboardJS.isSupported()) return; - - // the page.change event is thrown twice: before and after the page changes - if (clipboard) { - // clipboard is already defined - // we can deduct that we are before page changes - clipboard.destroy(); // destroy the previous events listeners - clipboard = undefined; // reset the clipboard object - return; - } - - $(copyButton).prependTo("div.sourceCode"); - - clipboard = new ClipboardJS(".copy-to-clipboard-button", { - text: function(trigger) { - return trigger.parentNode.textContent; - } - }); - - }); - -}); diff --git a/bookdown/_book/libs/gitbook-2.6.7/js/plugin-fontsettings.js b/bookdown/_book/libs/gitbook-2.6.7/js/plugin-fontsettings.js deleted file mode 100644 index a70f0fb..0000000 --- a/bookdown/_book/libs/gitbook-2.6.7/js/plugin-fontsettings.js +++ /dev/null @@ -1,152 +0,0 @@ -gitbook.require(["gitbook", "lodash", "jQuery"], function(gitbook, _, $) { - var fontState; - - var THEMES = { - "white": 0, - "sepia": 1, - "night": 2 - }; - - var FAMILY = { - "serif": 0, - "sans": 1 - }; - - // Save current font settings - function saveFontSettings() { - gitbook.storage.set("fontState", fontState); - update(); - } - - // Increase font size - function enlargeFontSize(e) { - e.preventDefault(); - if (fontState.size >= 4) return; - - fontState.size++; - saveFontSettings(); - }; - - // Decrease font size - function reduceFontSize(e) { - e.preventDefault(); - if (fontState.size <= 0) return; - - fontState.size--; - saveFontSettings(); - }; - - // Change font family - function changeFontFamily(index, e) { - e.preventDefault(); - - fontState.family = index; - saveFontSettings(); - }; - - // Change type of color - function changeColorTheme(index, e) { - e.preventDefault(); - - var $book = $(".book"); - - if (fontState.theme !== 0) - $book.removeClass("color-theme-"+fontState.theme); - - fontState.theme = index; - if (fontState.theme !== 0) - $book.addClass("color-theme-"+fontState.theme); - - saveFontSettings(); - }; - - function update() { - var $book = gitbook.state.$book; - - $(".font-settings .font-family-list li").removeClass("active"); - $(".font-settings .font-family-list li:nth-child("+(fontState.family+1)+")").addClass("active"); - - $book[0].className = $book[0].className.replace(/\bfont-\S+/g, ''); - $book.addClass("font-size-"+fontState.size); - $book.addClass("font-family-"+fontState.family); - - if(fontState.theme !== 0) { - $book[0].className = $book[0].className.replace(/\bcolor-theme-\S+/g, ''); - $book.addClass("color-theme-"+fontState.theme); - } - }; - - function init(config) { - var $bookBody, $book; - - //Find DOM elements. - $book = gitbook.state.$book; - $bookBody = $book.find(".book-body"); - - // Instantiate font state object - fontState = gitbook.storage.get("fontState", { - size: config.size || 2, - family: FAMILY[config.family || "sans"], - theme: THEMES[config.theme || "white"] - }); - - update(); - }; - - - gitbook.events.bind("start", function(e, config) { - var opts = config.fontsettings; - if (!opts) return; - - // Create buttons in toolbar - gitbook.toolbar.createButton({ - icon: 'fa fa-font', - label: 'Font Settings', - className: 'font-settings', - dropdown: [ - [ - { - text: 'A', - className: 'font-reduce', - onClick: reduceFontSize - }, - { - text: 'A', - className: 'font-enlarge', - onClick: enlargeFontSize - } - ], - [ - { - text: 'Serif', - onClick: _.partial(changeFontFamily, 0) - }, - { - text: 'Sans', - onClick: _.partial(changeFontFamily, 1) - } - ], - [ - { - text: 'White', - onClick: _.partial(changeColorTheme, 0) - }, - { - text: 'Sepia', - onClick: _.partial(changeColorTheme, 1) - }, - { - text: 'Night', - onClick: _.partial(changeColorTheme, 2) - } - ] - ] - }); - - - // Init current settings - init(opts); - }); -}); - - diff --git a/bookdown/_book/libs/gitbook-2.6.7/js/plugin-search.js b/bookdown/_book/libs/gitbook-2.6.7/js/plugin-search.js deleted file mode 100644 index 31b5786..0000000 --- a/bookdown/_book/libs/gitbook-2.6.7/js/plugin-search.js +++ /dev/null @@ -1,223 +0,0 @@ -gitbook.require(["gitbook", "lodash", "jQuery"], function(gitbook, _, $) { - var index = null; - var $searchInput, $searchLabel, $searchForm; - var $highlighted = [], hi, hiOpts = { className: 'search-highlight' }; - var collapse = false, toc_visible = []; - - // Use a specific index - function loadIndex(data) { - // [Yihui] In bookdown, I use a character matrix to store the chapter - // content, and the index is dynamically built on the client side. - // Gitbook prebuilds the index data instead: https://github.com/GitbookIO/plugin-search - // We can certainly do that via R packages V8 and jsonlite, but let's - // see how slow it really is before improving it. On the other hand, - // lunr cannot handle non-English text very well, e.g. the default - // tokenizer cannot deal with Chinese text, so we may want to replace - // lunr with a dumb simple text matching approach. - index = lunr(function () { - this.ref('url'); - this.field('title', { boost: 10 }); - this.field('body'); - }); - data.map(function(item) { - index.add({ - url: item[0], - title: item[1], - body: item[2] - }); - }); - } - - // Fetch the search index - function fetchIndex() { - return $.getJSON(gitbook.state.basePath+"/search_index.json") - .then(loadIndex); // [Yihui] we need to use this object later - } - - // Search for a term and return results - function search(q) { - if (!index) return; - - var results = _.chain(index.search(q)) - .map(function(result) { - var parts = result.ref.split("#"); - return { - path: parts[0], - hash: parts[1] - }; - }) - .value(); - - // [Yihui] Highlight the search keyword on current page - $highlighted = results.length === 0 ? [] : $('.page-inner') - .unhighlight(hiOpts).highlight(q, hiOpts).find('span.search-highlight'); - scrollToHighlighted(0); - - return results; - } - - // [Yihui] Scroll the chapter body to the i-th highlighted string - function scrollToHighlighted(d) { - var n = $highlighted.length; - hi = hi === undefined ? 0 : hi + d; - // navignate to the previous/next page in the search results if reached the top/bottom - var b = hi < 0; - if (d !== 0 && (b || hi >= n)) { - var path = currentPath(), n2 = toc_visible.length; - if (n2 === 0) return; - for (var i = b ? 0 : n2; (b && i < n2) || (!b && i >= 0); i += b ? 1 : -1) { - if (toc_visible.eq(i).data('path') === path) break; - } - i += b ? -1 : 1; - if (i < 0) i = n2 - 1; - if (i >= n2) i = 0; - var lnk = toc_visible.eq(i).find('a[href$=".html"]'); - if (lnk.length) lnk[0].click(); - return; - } - if (n === 0) return; - var $p = $highlighted.eq(hi); - $p[0].scrollIntoView(); - $highlighted.css('background-color', ''); - // an orange background color on the current item and removed later - $p.css('background-color', 'orange'); - setTimeout(function() { - $p.css('background-color', ''); - }, 2000); - } - - function currentPath() { - var href = window.location.pathname; - href = href.substr(href.lastIndexOf('/') + 1); - return href === '' ? 'index.html' : href; - } - - // Create search form - function createForm(value) { - if ($searchForm) $searchForm.remove(); - if ($searchLabel) $searchLabel.remove(); - if ($searchInput) $searchInput.remove(); - - $searchForm = $('
', { - 'class': 'book-search', - 'role': 'search' - }); - - $searchLabel = $('",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c; -}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length",""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,la=/\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("