# HG changeset patch # User iuc # Date 1688694182 0 # Node ID fab6ff46e019fc7fbb66eb8fb6f8437b5a9ab36d # Parent c0fd285eb5533f0e62c97d19ae980acf5fdac6ef planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/seurat commit b437a46efb50e543b6d7c9988f954efe2caa9046 diff -r c0fd285eb553 -r fab6ff46e019 Seurat.R --- a/Seurat.R Mon Nov 21 14:35:28 2022 +0000 +++ b/Seurat.R Fri Jul 07 01:43:02 2023 +0000 @@ -8,19 +8,24 @@ #' low_thresholds: "" #' high_thresholds: "" #' numPCs: "" -#' cells_use: "" #' resolution: "" #' perplexity: "" #' min_pct: "" #' logfc_threshold: "" +#' end_step: "" #' showcode: "" #' warn: "" #' varstate: "" #' vlnfeat: "" #' featplot: "" #' PCplots: "" -#' tsne: "" +#' nmds: "" #' heatmaps: "" +#' norm_out: "" +#' variable_out: "" +#' pca_out : "" +#' clusters_out: "" +#' markers_out: "" #' --- # nolint start @@ -34,87 +39,148 @@ vlnfeat <- as.logical(params$vlnfeat) featplot <- as.logical(params$featplot) pc_plots <- as.logical(params$PCplots) -tsne <- as.logical(params$tsne) +nmds <- as.logical(params$nmds) heatmaps <- as.logical(params$heatmaps) - +end_step <- as.integer(params$end_step) +norm_out <- as.logical(params$norm_out) # we need that to not crash Galaxy with an UTF-8 error on German LC settings. loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8") #+ echo = F, warning = `warn`, include =`varstate` min_cells <- as.integer(params$min_cells) min_genes <- as.integer(params$min_genes) -low_thresholds <- as.integer(params$low_thresholds) -high_thresholds <- as.integer(params$high_thresholds) -num_pcs <- as.integer(params$numPCs) -cells_use <- as.integer(params$cells_use) -resolution <- as.double(params$resolution) -perplexity <- as.integer(params$perplexity) -min_pct <- as.double(params$min_pct) -logfc_threshold <- as.double(params$logfc_thresh) print(paste0("Minimum cells: ", min_cells)) print(paste0("Minimum features: ", min_genes)) +low_thresholds <- as.integer(params$low_thresholds) +high_thresholds <- as.integer(params$high_thresholds) print(paste0("Umi low threshold: ", low_thresholds)) print(paste0("Umi high threshold: ", high_thresholds)) -print(paste0("Number of principal components: ", num_pcs)) -print(paste0("Resolution: ", resolution)) -print(paste0("Perplexity: ", perplexity)) -print(paste0("Minimum percent of cells", min_pct)) -print(paste0("Logfold change threshold", logfc_threshold)) + +if (end_step >= 2) { + variable_out <- as.logical(params$variable_out) +} + -#+ echo = FALSE +if (end_step >= 3) { + num_pcs <- as.integer(params$numPCs) + print(paste0("Number of principal components: ", num_pcs)) + pca_out <- as.logical(params$pca_out) +} +if (end_step >= 4) { + if (params$perplexity == "") { + perplexity <- -1 + print(paste0("Perplexity: ", perplexity)) + } else { + perplexity <- as.integer(params$perplexity) + print(paste0("Perplexity: ", perplexity)) + } + resolution <- as.double(params$resolution) + print(paste0("Resolution: ", resolution)) + clusters_out <- as.logical(params$clusters_out) +} +if (end_step >= 5) { + min_pct <- as.double(params$min_pct) + logfc_threshold <- as.double(params$logfc_thresh) + print(paste0("Minimum percent of cells", min_pct)) + print(paste0("Logfold change threshold", logfc_threshold)) + markers_out <- as.logical(params$markers_out) +} + + if (showcode == TRUE) print("Read in data, generate inital Seurat object") #+ echo = `showcode`, warning = `warn`, message = F counts <- read.delim(params$counts, row.names = 1) seuset <- Seurat::CreateSeuratObject(counts = counts, min.cells = min_cells, min.features = min_genes) -#+ echo = FALSE if (showcode == TRUE && vlnfeat == TRUE) print("Raw data vizualization") #+ echo = `showcode`, warning = `warn`, include=`vlnfeat` -Seurat::VlnPlot(object = seuset, features = c("nFeature_RNA", "nCount_RNA")) -Seurat::FeatureScatter(object = seuset, feature1 = "nCount_RNA", feature2 = "nFeature_RNA") +if (vlnfeat == TRUE){ + print(Seurat::VlnPlot(object = seuset, features = c("nFeature_RNA", "nCount_RNA"))) + print(Seurat::FeatureScatter(object = seuset, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")) +} -#+ echo = FALSE if (showcode == TRUE) print("Filter and normalize for UMI counts") #+ echo = `showcode`, warning = `warn` seuset <- subset(seuset, subset = `nCount_RNA` > low_thresholds & `nCount_RNA` < high_thresholds) seuset <- Seurat::NormalizeData(seuset, normalization.method = "LogNormalize", scale.factor = 10000) +if (norm_out == TRUE) { + saveRDS(seuset, "norm_out.rds") +} -#+ echo = FALSE -if (showcode == TRUE && featplot == TRUE) print("Variable Genes") -#+ echo = `showcode`, warning = `warn`, include = `featplot` -seuset <- Seurat::FindVariableFeatures(object = seuset, selection.method = "mvp") -Seurat::VariableFeaturePlot(seuset, cols = c("black", "red"), selection.method = "disp") -seuset <- Seurat::ScaleData(object = seuset, vars.to.regress = "nCount_RNA") +if (end_step >= 2) { + #+ echo = FALSE + if (showcode == TRUE && featplot == TRUE) print("Variable Genes") + #+ echo = `showcode`, warning = `warn`, include = `featplot` + seuset <- Seurat::FindVariableFeatures(object = seuset, selection.method = "mvp") + if (featplot == TRUE) { + print(Seurat::VariableFeaturePlot(seuset, cols = c("black", "red"), selection.method = "disp")) + } + seuset <- Seurat::ScaleData(object = seuset, vars.to.regress = "nCount_RNA") + if (variable_out == TRUE) { + saveRDS(seuset, "var_out.rds") + } +} -#+ echo = FALSE -if (showcode == TRUE && pc_plots == TRUE) print("PCA Visualization") -#+ echo = `showcode`, warning = `warn`, include = `pc_plots` -seuset <- Seurat::RunPCA(seuset, npcs = num_pcs) -Seurat::VizDimLoadings(seuset, dims = 1:2) -Seurat::DimPlot(seuset, dims = c(1, 2), reduction = "pca") -Seurat::DimHeatmap(seuset, dims = 1:num_pcs, nfeatures = 30, reduction = "pca") -seuset <- Seurat::JackStraw(seuset, dims = num_pcs, reduction = "pca", num.replicate = 100) -seuset <- Seurat::ScoreJackStraw(seuset, dims = 1:num_pcs) -Seurat::JackStrawPlot(seuset, dims = 1:num_pcs) -Seurat::ElbowPlot(seuset, ndims = num_pcs, reduction = "pca") +if (end_step >= 3) { + #+ echo = FALSE + if (showcode == TRUE && pc_plots == TRUE) print("PCA Visualization") + #+ echo = `showcode`, warning = `warn`, include = `pc_plots` + seuset <- Seurat::RunPCA(seuset, npcs = num_pcs) + seuset <- Seurat::JackStraw(seuset, dims = num_pcs, reduction = "pca", num.replicate = 100) + seuset <- Seurat::ScoreJackStraw(seuset, dims = 1:num_pcs) + if (pc_plots == TRUE) { + print(Seurat::VizDimLoadings(seuset, dims = 1:2)) + print(Seurat::DimPlot(seuset, dims = c(1, 2), reduction = "pca")) + print(Seurat::DimHeatmap(seuset, dims = 1:num_pcs, nfeatures = 30, reduction = "pca")) + print(Seurat::JackStrawPlot(seuset, dims = 1:num_pcs)) + print(Seurat::ElbowPlot(seuset, ndims = num_pcs, reduction = "pca")) + } + if (pca_out == TRUE) { + saveRDS(seuset, "pca_out.rds") + } +} -#+ echo = FALSE -if (showcode == TRUE && tsne == TRUE) print("tSNE") -#+ echo = `showcode`, warning = `warn`, include = `tsne` -seuset <- Seurat::FindNeighbors(object = seuset) -seuset <- Seurat::FindClusters(object = seuset) -if (perplexity == -1) { - seuset <- Seurat::RunTSNE(seuset, dims = 1:num_pcs, resolution = resolution); -} else { - seuset <- Seurat::RunTSNE(seuset, dims = 1:num_pcs, resolution = resolution, perplexity = perplexity); +if (end_step >= 4) { + #+ echo = FALSE + if (showcode == TRUE && nmds == TRUE) print("tSNE and UMAP") + #+ echo = `showcode`, warning = `warn`, include = `nmds` + seuset <- Seurat::FindNeighbors(object = seuset) + seuset <- Seurat::FindClusters(object = seuset) + if (perplexity == -1) { + seuset <- Seurat::RunTSNE(seuset, dims = 1:num_pcs, resolution = resolution); + } else { + seuset <- Seurat::RunTSNE(seuset, dims = 1:num_pcs, resolution = resolution, perplexity = perplexity); + } + if (nmds == TRUE) { + print(Seurat::DimPlot(seuset, reduction = "tsne")) + } + seuset <- Seurat::RunUMAP(seuset, dims = 1:num_pcs) + if (nmds == TRUE) { + print(Seurat::DimPlot(seuset, reduction = "umap")) + } + if (clusters_out == TRUE) { + tsnedata <- Seurat::Embeddings(seuset, reduction="tsne") + saveRDS(seuset, "tsne_out.rds") + umapdata <- Seurat::Embeddings(seuset, reduction="umap") + saveRDS(seuset, "umap_out.rds") + } } -Seurat::DimPlot(seuset, reduction = "tsne") + -#+ echo = FALSE -if (showcode == TRUE && heatmaps == TRUE) print("Marker Genes") -#+ echo = `showcode`, warning = `warn`, include = `heatmaps` -markers <- Seurat::FindAllMarkers(seuset, only.pos = TRUE, min.pct = min_pct, logfc.threshold = logfc_threshold) -top10 <- dplyr::group_by(markers, cluster) -top10 <- dplyr::top_n(top10, 10, avg_log2FC) -Seurat::DoHeatmap(seuset, features = top10$gene) +if (end_step == 5) { + #+ echo = FALSE + if (showcode == TRUE && heatmaps == TRUE) print("Marker Genes") + #+ echo = `showcode`, warning = `warn`, include = `heatmaps` + markers <- Seurat::FindAllMarkers(seuset, only.pos = TRUE, min.pct = min_pct, logfc.threshold = logfc_threshold) + top10 <- dplyr::group_by(markers, cluster) + top10 <- dplyr::top_n(top10, n = 10, wt = avg_log2FC) + print(top10) + if (heatmaps == TRUE) { + print(Seurat::DoHeatmap(seuset, features = top10$gene)) + } + if (markers_out == TRUE) { + saveRDS(seuset, "markers_out.rds") + data.table::fwrite(x = markers, row.names=TRUE, sep="\t", file = "markers_out.tsv") + } +} # nolint end diff -r c0fd285eb553 -r fab6ff46e019 citeseq_Seurat.R --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/citeseq_Seurat.R Fri Jul 07 01:43:02 2023 +0000 @@ -0,0 +1,260 @@ +#' --- +#' title: "Seurat Cite-seq Analysis" +#' author: "Performed using Galaxy" +#' params: +#' rna: "" +#' prot: "" +#' min_cells: "" +#' min_genes: "" +#' low_thresholds: "" +#' high_thresholds: "" +#' numPCs: "" +#' resolution: "" +#' perplexity: "" +#' min_pct: "" +#' logfc_threshold: "" +#' showcode: "" +#' warn: "" +#' varstate: "" +#' vlnfeat: "" +#' featplot: "" +#' PCplots: "" +#' nmds: "" +#' heatmaps: "" +#' norm_out: "" +#' variable_out: "" +#' pca_out : "" +#' clusters_out: "" +#' markers_out: "" +#' cite_markers: "" +#' comparison: "" +#' feat_comp: "" +#' marker_compare: "" +#' top_x: "" +#' --- + +# nolint start +#+ echo=F, warning = F, message=F +options(show.error.messages = F, error = function() { + cat(geterrmessage(), file = stderr()); q("no", 1, F) +}) + +# we need that to not crash Galaxy with an UTF-8 error on German LC settings. +loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8") + +showcode <- as.logical(params$showcode) +warn <- as.logical(params$warn) +varstate <- as.logical(params$varstate) +vlnfeat <- as.logical(params$vlnfeat) +featplot <- as.logical(params$featplot) +pc_plots <- as.logical(params$PCplots) +nmds <- as.logical(params$nmds) +heatmaps <- as.logical(params$heatmaps) +end_step <- as.integer(params$end_step) +norm_out <- as.logical(params$norm_out) +comparison <- as.logical(params$comparison) +feature <- trimws(unlist(strsplit(as.character(params$feat_comp), ","))) +marker_compare <- as.logical(params$marker_compare) +top_x <- as.integer(params$top_x) +min_cells <- as.integer(params$min_cells) +min_genes <- as.integer(params$min_genes) +low_thresholds <- as.integer(params$low_thresholds) +high_thresholds <- as.integer(params$high_thresholds) +num_pcs <- as.integer(params$numPCs) +cells_use <- as.integer(params$cells_use) +resolution <- as.double(params$resolution) +min_pct <- as.double(params$min_pct) +logfc_threshold <- as.double(params$logfc_thresh) +variable_out <- as.logical(params$variable_out) +pca_out <- as.logical(params$pca_out) +clusters_out <- as.logical(params$clusters_out) +markers_out <- as.logical(params$markers_out) + +print(paste0("Minimum cells: ", min_cells)) +print(paste0("Minimum features: ", min_genes)) +print(paste0("Umi low threshold: ", low_thresholds)) +print(paste0("Umi high threshold: ", high_thresholds)) +print(paste0("Number of principal components: ", num_pcs)) +print(paste0("Resolution: ", resolution)) +print(paste0("Minimum percent of cells", min_pct)) +print(paste0("Logfold change threshold", logfc_threshold)) +if (params$perplexity == "") { + perplexity <- -1 + print(paste0("Perplexity: ", perplexity)) +} else { + perplexity <- as.integer(params$perplexity) + print(paste0("Perplexity: ", perplexity)) +} + +#+ echo = FALSE +if (showcode == TRUE) print("Read in data, generate inital Seurat object") +#+ echo = `showcode`, warning = `warn`, message = F +rna <- read.delim(params$rna, row.names = 1) +rna <- Seurat::CollapseSpeciesExpressionMatrix(rna) +protein <- read.delim(params$prot, row.names = 1) +tryCatch(all.equal(colnames(rna), colnames(protein)), error = "Columns do not match in input files") +seuset <- Seurat::CreateSeuratObject(counts = rna, min.cells = min_cells, min.features = min_genes) + +if (showcode == TRUE) print("asdf") +#+ echo = `showcode`, warning = `warn`, message = F +prot_obj <- Seurat::CreateAssayObject(counts = protein) + +if (showcode == TRUE) print("qwer") +#+ echo = `showcode`, warning = `warn`, message = F +seuset[["ADT"]] <- prot_obj + +if (showcode == TRUE) print("zxcv") +#+ echo = `showcode`, warning = `warn`, message = F +Seurat::DefaultAssay(seuset) <- "RNA" + +if (showcode == TRUE && vlnfeat == TRUE) print("Raw data vizualization") +#+ echo = `showcode`, warning = `warn`, include=`vlnfeat` +if (vlnfeat == TRUE){ + print(Seurat::VlnPlot(object = seuset, features = c("nFeature_RNA", "nCount_RNA"))) + print(Seurat::FeatureScatter(object = seuset, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")) +} + +if (showcode == TRUE) print("Filter and normalize for UMI counts") +#+ echo = `showcode`, warning = `warn` +seuset <- subset(seuset, subset = `nCount_RNA` > low_thresholds & `nCount_RNA` < high_thresholds) +seuset <- Seurat::NormalizeData(seuset, normalization.method = "LogNormalize", scale.factor = 10000) +if (norm_out == TRUE) { + saveRDS(seuset, "norm_out.rds") +} + + +if (showcode == TRUE && featplot == TRUE) print("Variable Genes") +#+ echo = `showcode`, warning = `warn`, include = `featplot` +seuset <- Seurat::FindVariableFeatures(object = seuset, selection.method = "mvp") +if (featplot == TRUE) { + print(Seurat::VariableFeaturePlot(seuset, cols = c("black", "red"), selection.method = "disp")) +} +seuset <- Seurat::ScaleData(object = seuset, vars.to.regress = "nCount_RNA") +if (variable_out == TRUE) { + saveRDS(seuset, "var_out.rds") +} + + + +if (showcode == TRUE && pc_plots == TRUE) print("PCA Visualization") +#+ echo = `showcode`, warning = `warn`, include = `pc_plots` +seuset <- Seurat::RunPCA(seuset, npcs = num_pcs) +seuset <- Seurat::JackStraw(seuset, dims = num_pcs, reduction = "pca", num.replicate = 100) +seuset <- Seurat::ScoreJackStraw(seuset, dims = 1:num_pcs) +if (pc_plots == TRUE) { + print(Seurat::VizDimLoadings(seuset, dims = 1:2)) + print(Seurat::DimPlot(seuset, dims = c(1, 2), reduction = "pca")) + print(Seurat::DimHeatmap(seuset, dims = 1:num_pcs, nfeatures = 10, reduction = "pca")) + print(Seurat::JackStrawPlot(seuset, dims = 1:num_pcs)) + print(Seurat::ElbowPlot(seuset, ndims = num_pcs, reduction = "pca")) +} +if (pca_out == TRUE) { + saveRDS(seuset, "pca_out.rds") +} + + + +if (showcode == TRUE && nmds == TRUE) print("tSNE and UMAP") +#+ echo = `showcode`, warning = `warn`, include = `nmds` +seuset <- Seurat::FindNeighbors(object = seuset) +seuset <- Seurat::FindClusters(object = seuset) +if (perplexity == -1) { + seuset <- Seurat::RunTSNE(seuset, dims = 1:num_pcs, resolution = resolution, check_duplicates = FALSE) +} else { + seuset <- Seurat::RunTSNE(seuset, dims = 1:num_pcs, resolution = resolution, perplexity = perplexity, check_duplicates = FALSE) +} +if (nmds == TRUE) { + print(Seurat::DimPlot(seuset, reduction = "tsne")) +} +seuset <- Seurat::RunUMAP(seuset, dims = 1:num_pcs) +if (nmds == TRUE) { + print(Seurat::DimPlot(seuset, reduction = "umap")) +} +if (clusters_out == TRUE) { + tsnedata <- Seurat::Embeddings(seuset, reduction="tsne") + saveRDS(seuset, "tsne_out.rds") + umapdata <- Seurat::Embeddings(seuset, reduction="umap") + saveRDS(seuset, "umap_out.rds") +} + +if (showcode == TRUE && heatmaps == TRUE) print("Marker Genes") +#+ echo = `showcode`, warning = `warn`, include = `heatmaps` +markers <- Seurat::FindAllMarkers(seuset, only.pos = TRUE, min.pct = min_pct, logfc.threshold = logfc_threshold) +top10 <- dplyr::group_by(markers, cluster) +top10 <- dplyr::top_n(top10, n = 10, wt = avg_log2FC) +print(top10) +if (heatmaps == TRUE) { + print(Seurat::DoHeatmap(seuset, features = top10$gene)) +} +if (markers_out == TRUE) { + saveRDS(seuset, "markers_out.rds") + data.table::fwrite(x = markers, row.names=TRUE, sep="\t", file = "markers_out.tsv") +} + +#+ echo = FALSE +if (showcode == TRUE && comparison == TRUE) print("Compare") +#+ echo = `showcode`, warning = `warn`, include = `comparison` + Seurat::DefaultAssay(seuset) <- "ADT" + seuset <- Seurat::NormalizeData(seuset, normalization.method = "CLR", margin = 2) + Seurat::DefaultAssay(seuset) <- "RNA" + seuset <- Seurat::NormalizeData(seuset, normalization.method = "CLR", margin = 2, assay = "ADT") +if (comparison == TRUE) { + for(x in feature) { + Seurat::DefaultAssay(seuset) <- "ADT" + p1 <- Seurat::FeaturePlot(seuset, x, cols = c("lightgrey", "red")) + ggplot2::ggtitle(paste0("Protein:", " ", x)) + Seurat::DefaultAssay(seuset) <- "RNA" + p2 <- Seurat::FeaturePlot(seuset, x) + ggplot2::ggtitle(paste0("RNA:", " ", x)) + print(p1 | p2) + label <- as.character(paste0(Seurat::Key(seuset[["ADT"]]), x)) + print(Seurat::VlnPlot(seuset, paste0("rna_", x))) + print(Seurat::VlnPlot(seuset, paste0("adt_", x))) + } +} + +#+ echo = FALSE +if (showcode == TRUE) print("Cite-seq") +#+ echo = `showcode`, warning = `warn`, include = `marker_compare` +rna_markers <- Seurat::FindAllMarkers(seuset, only.pos = TRUE, min.pct = min_pct, logfc.threshold = logfc_threshold, assay="RNA") +protein_markers <- Seurat::FindAllMarkers(seuset, only.pos = TRUE, min.pct = min_pct, logfc.threshold = logfc_threshold, assay="ADT") +if (marker_compare == TRUE) { + data.table::fwrite(x = rna_markers, sep="\t", file = "rna_out.tsv") + data.table::fwrite(x = protein_markers, sep="\t", file = "protein_out.tsv") +} +toprna <- dplyr::top_n(dplyr::group_by(rna_markers, cluster), n=5, avg_log2FC) +toprna <- head(as.list(unique(as.data.frame(toprna)$gene)), top_x) +topprot <- dplyr::top_n(dplyr::group_by(protein_markers, cluster), n=5, avg_log2FC) +topprot <- head(as.list(unique(as.data.frame(topprot)$gene)), top_x) +if(marker_compare == TRUE) { + pdf(file="citeseq_out.pdf") + rna_labels <- as.vector(toprna) + rna_labels <- rna_labels[!duplicated(rna_labels)] + prot_labels <- as.vector(topprot) + prot_labels <- prot_labels[!duplicated(prot_labels)] + for(rnamarker in rna_labels) { + rnamarker <- paste("rna_", rnamarker, sep = "") + for(protmarker in prot_labels) { + protmarker <- paste("adt_", protmarker, sep="") + plot <- Seurat::FeatureScatter(seuset, feature1 = rnamarker, feature2 = protmarker) + ggplot2::ggtitle(paste0(rnamarker, " vs ", protmarker)) + print(plot) + } + } + for(rnamarker in rna_labels) { + rnamarker <- paste("rna_", rnamarker, sep = "") + for(rnamarker2 in rna_labels) { + rnamarker2 <- paste("rna_", rnamarker2, sep="") + plot <- Seurat::FeatureScatter(seuset, feature1 = rnamarker, feature2 = rnamarker2) + ggplot2::ggtitle(paste0(rnamarker, " vs ", rnamarker2)) + print(plot) + } + } + for(protmarker in prot_labels) { + protmarker <- paste("adt_", protmarker, sep = "") + for(protmarker2 in prot_labels) { + protmarker2 <- paste("adt_", protmarker2, sep="") + plot <- Seurat::FeatureScatter(seuset, feature1 = protmarker, feature2 = protmarker2) + ggplot2::ggtitle(paste0(protmarker, " vs ", protmarker2)) + print(plot) + } + } + dev.off() +} + +# nolint end diff -r c0fd285eb553 -r fab6ff46e019 macros.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/macros.xml Fri Jul 07 01:43:02 2023 +0000 @@ -0,0 +1,67 @@ + + 4.3.0.1 + function['function_select'] == "base" + function['function_select'] == "cite" + function['variable_continue']['variable_continue'] == "yes" + function['variable_continue']['pca_continue']['pca_continue'] == "yes" + function['variable_continue']['pca_continue']['clusters_continue']['clusters_continue'] == "yes" + function['variable_continue']['pca_continue']['clusters_continue']['markers_continue']['markers_continue'] == "yes" + + + r-seurat + r-rmarkdown + r-data.table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r c0fd285eb553 -r fab6ff46e019 seurat.xml --- a/seurat.xml Mon Nov 21 14:35:28 2022 +0000 +++ b/seurat.xml Fri Jul 07 01:43:02 2023 +0000 @@ -1,119 +1,322 @@ - + - toolkit for exploration of single-cell RNA-seq data - 4.3.0 + macros.xml - - r-seurat - r-rmarkdown - + - -
- - - - - - - - - - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- - - - - - -
+ + @FUNCTION_BASE@ + function['norm_file'] + + + @FUNCTION_BASE@ + @VARIABLE_CONTINUE@ + function['variable_continue']['var_file'] + + + @FUNCTION_BASE@ + @VARIABLE_CONTINUE@ + @PCA_CONTINUE@ + function['variable_continue']['pca_continue']['pca_file'] + + + @FUNCTION_BASE@ + @VARIABLE_CONTINUE@ + @PCA_CONTINUE@ + @CLUSTERS_CONTINUE@ + function['variable_continue']['pca_continue']['clusters_continue']['clusters_file'] + + + @FUNCTION_BASE@ + @VARIABLE_CONTINUE@ + @PCA_CONTINUE@ + @CLUSTERS_CONTINUE@ + function['variable_continue']['pca_continue']['clusters_continue']['clusters_file'] + + + @FUNCTION_BASE@ + @VARIABLE_CONTINUE@ + @PCA_CONTINUE@ + @CLUSTERS_CONTINUE@ + @MARKERS_CONTINUE@ + function['variable_continue']['pca_continue']['clusters_continue']['markers_continue']['markers_file'] + + + @FUNCTION_BASE@ + @VARIABLE_CONTINUE@ + @PCA_CONTINUE@ + @CLUSTERS_CONTINUE@ + @MARKERS_CONTINUE@ + function['variable_continue']['pca_continue']['clusters_continue']['markers_continue']['markers_file'] + + + + + + + + @FUNCTION_CITE@ + function['cite_markers'] + + + + + + + @FUNCTION_CITE@ + function['cite_markers'] + + + + + + + @FUNCTION_CITE@ + function['marker_compare']['marker_compare'] == "yes" + + + @FUNCTION_CITE@ + function['norm_file'] + + + @FUNCTION_CITE@ + function['var_file'] + + + @FUNCTION_CITE@ + function['pca_file'] + + + @FUNCTION_CITE@ + function['clusters_file'] + + + @FUNCTION_CITE@ + + function['clusters_file'] + + + @FUNCTION_CITE@ + function['markers_file'] + + + @FUNCTION_CITE@ + function['markers_file'] + + + + + - - - -
- + + + + - - - - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
-
@@ -122,26 +325,49 @@ +
- - -
- + + + + + - - - - - -
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
-
@@ -150,6 +376,86 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +