Mercurial > repos > iuc > raceid_diffgene
diff scripts/raceID_filter.R @ 0:ea8215239735 draft default tip
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/raceid commit 39918bfdb08f06862ca395ce58a6f5e4f6dd1a5e
author | iuc |
---|---|
date | Sat, 03 Mar 2018 17:33:56 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/raceID_filter.R Sat Mar 03 17:33:56 2018 -0500 @@ -0,0 +1,58 @@ +#!/usr/bin/env Rscript + +args = commandArgs(trailingOnly=T) + +script_dir = args[1] +config_file = args[2] + +# Load libs, common functions, source RaceID and Galaxy Params +source(paste(script_dir, "common.R", sep="/")) + +# Read input data +x <- read.csv(count_matrix, sep="\t", header=TRUE) +rownames(x) <- x[,1] + +message("Count matrix with %.0f cells and %.0f genes", dim(x)[1], dim(x)[2]) + +# Control gene filtering +# (if blank do nothing) +if (!( (!exists("control_genes_filter")) || control_genes_filter == "" || control_genes_filter == "None")){ + c_genes <- unlist(strsplit(control_genes_filter, "\\s*,\\s")) + for (cg in c_genes){ + x <- x[grep(cg, rownames(x), invert=T), -1] + message("Filtering against %s yielded %.0f cells and %.0f genes", cg, dim(x)[1], dim(x)[2]) + } +} else { + x <- x[grep("INVALID", rownames(x), invert=T), -1] +} + +if (!filtering){ + # No filtering, just return an SCseq object + sc <- SCseq(x) + saveRDS(sc, output_rdat) + quit(status=0) +} + + +sc <- SCseq(x) + +if (c_maxexpr == 0){ + c_maxexpr = Inf +} + +# Perform actual filtering beyond this point +message("Applying filtering parameters: mintotal = %.0f, minexpr = %.0f, minnumber= %.0f, maxexpr= %.0f, downsample= %.0f, dsn= %.0f, rseed=%.0f", c_mintotal, c_minexpr, c_minnumber, c_maxexpr, c_downsample, c_dsn, c_rseed) + +sc <- filterdata(sc, + mintotal=c_mintotal, + minexpr=c_minexpr, + minnumber=c_minnumber, + maxexpr=c_maxexpr, downsample = c_downsample, dsn=c_dsn, rseed=c_rseed) + +message("Output matrix yielded %.0f cells and %.0f genes", dim(sc@fdata)[1], dim(sc@fdata)[2]) + +# Output table +write.table(sc@fdata, output_table, row.names = T, col.names = T, sep="\t", quote=F) +# Output R object +saveRDS(sc, output_rdat) +