From ada2f21976a618b8ab5def511f0d9c75acc09bcf Mon Sep 17 00:00:00 2001 From: Kiran V Garimella Date: Wed, 27 Jul 2011 12:27:17 -0400 Subject: [PATCH] Revert "Merge branch 'master' of ssh://copper.broadinstitute.org/humgen/gsa-scr1/gsa-engineering/git/unstable" This reverts commit 9c81ef835a3ac581d4eb9cf1243e30df20a46795, reversing changes made to f23d3ad5aec1c70cc1ecc48b295258aa70d30c7d. --- build.xml | 2 +- public/R/src/gsalib/DESCRIPTION | 10 -- public/R/src/gsalib/R/gsa.error.R | 12 -- public/R/src/gsalib/R/gsa.getargs.R | 116 ------------------ public/R/src/gsalib/R/gsa.message.R | 3 - public/R/src/gsalib/R/gsa.plot.venn.R | 50 -------- public/R/src/gsalib/R/gsa.read.eval.R | 83 ------------- public/R/src/gsalib/R/gsa.read.gatkreport.R | 64 ---------- public/R/src/gsalib/R/gsa.read.squidmetrics.R | 28 ----- public/R/src/gsalib/R/gsa.read.vcf.R | 23 ---- public/R/src/gsalib/R/gsa.warn.R | 3 - public/R/src/gsalib/Read-and-delete-me | 9 -- public/R/src/gsalib/data/tearsheetdrop.jpg | Bin 50343 -> 0 bytes public/R/src/gsalib/man/gsa.error.Rd | 49 -------- public/R/src/gsalib/man/gsa.getargs.Rd | 57 --------- public/R/src/gsalib/man/gsa.message.Rd | 44 ------- public/R/src/gsalib/man/gsa.plot.venn.Rd | 75 ----------- public/R/src/gsalib/man/gsa.read.eval.Rd | 111 ----------------- .../R/src/gsalib/man/gsa.read.gatkreport.Rd | 55 --------- .../R/src/gsalib/man/gsa.read.squidmetrics.Rd | 48 -------- public/R/src/gsalib/man/gsa.read.vcf.Rd | 53 -------- public/R/src/gsalib/man/gsa.warn.Rd | 46 ------- public/R/src/gsalib/man/gsalib-package.Rd | 68 ---------- 23 files changed, 1 insertion(+), 1008 deletions(-) delete mode 100644 public/R/src/gsalib/DESCRIPTION delete mode 100644 public/R/src/gsalib/R/gsa.error.R delete mode 100644 public/R/src/gsalib/R/gsa.getargs.R delete mode 100644 public/R/src/gsalib/R/gsa.message.R delete mode 100644 public/R/src/gsalib/R/gsa.plot.venn.R delete mode 100644 public/R/src/gsalib/R/gsa.read.eval.R delete mode 100644 public/R/src/gsalib/R/gsa.read.gatkreport.R delete mode 100644 public/R/src/gsalib/R/gsa.read.squidmetrics.R delete mode 100644 public/R/src/gsalib/R/gsa.read.vcf.R delete mode 100644 public/R/src/gsalib/R/gsa.warn.R delete mode 100644 public/R/src/gsalib/Read-and-delete-me delete mode 100755 public/R/src/gsalib/data/tearsheetdrop.jpg delete mode 100644 public/R/src/gsalib/man/gsa.error.Rd delete mode 100644 public/R/src/gsalib/man/gsa.getargs.Rd delete mode 100644 public/R/src/gsalib/man/gsa.message.Rd delete mode 100644 public/R/src/gsalib/man/gsa.plot.venn.Rd delete mode 100644 public/R/src/gsalib/man/gsa.read.eval.Rd delete mode 100644 public/R/src/gsalib/man/gsa.read.gatkreport.Rd delete mode 100644 public/R/src/gsalib/man/gsa.read.squidmetrics.Rd delete mode 100644 public/R/src/gsalib/man/gsa.read.vcf.Rd delete mode 100644 public/R/src/gsalib/man/gsa.warn.Rd delete mode 100644 public/R/src/gsalib/man/gsalib-package.Rd diff --git a/build.xml b/build.xml index 438e9c90c..60c678591 100644 --- a/build.xml +++ b/build.xml @@ -1089,7 +1089,7 @@ - + diff --git a/public/R/src/gsalib/DESCRIPTION b/public/R/src/gsalib/DESCRIPTION deleted file mode 100644 index 6116e8c66..000000000 --- a/public/R/src/gsalib/DESCRIPTION +++ /dev/null @@ -1,10 +0,0 @@ -Package: gsalib -Type: Package -Title: Utility functions -Version: 1.0 -Date: 2010-10-02 -Author: Kiran Garimella -Maintainer: Kiran Garimella -Description: Utility functions for GATK NGS analyses -License: BSD -LazyLoad: yes diff --git a/public/R/src/gsalib/R/gsa.error.R b/public/R/src/gsalib/R/gsa.error.R deleted file mode 100644 index 1c6a56046..000000000 --- a/public/R/src/gsalib/R/gsa.error.R +++ /dev/null @@ -1,12 +0,0 @@ -gsa.error <- function(message) { - message(""); - gsa.message("Error: **********"); - gsa.message(sprintf("Error: %s", message)); - gsa.message("Error: **********"); - message(""); - - traceback(); - - message(""); - stop(message, call. = FALSE); -} diff --git a/public/R/src/gsalib/R/gsa.getargs.R b/public/R/src/gsalib/R/gsa.getargs.R deleted file mode 100644 index 94613bf93..000000000 --- a/public/R/src/gsalib/R/gsa.getargs.R +++ /dev/null @@ -1,116 +0,0 @@ -.gsa.getargs.usage <- function(argspec, doc) { - cargs = commandArgs(); - - usage = "Usage:"; - - fileIndex = grep("--file=", cargs); - if (length(fileIndex) > 0) { - progname = gsub("--file=", "", cargs[fileIndex[1]]); - - usage = sprintf("Usage: Rscript %s [arguments]", progname); - - if (!is.na(doc)) { - message(sprintf("%s: %s\n", progname, doc)); - } - } - - message(usage); - - for (argname in names(argspec)) { - key = argname; - defaultValue = 0; - doc = ""; - - if (is.list(argspec[[argname]])) { - defaultValue = argspec[[argname]]$value; - doc = argspec[[argname]]$doc; - } - - message(sprintf(" -%-10s\t[default: %s]\t%s", key, defaultValue, doc)); - } - - message(""); - - stop(call. = FALSE); -} - -gsa.getargs <- function(argspec, doc = NA) { - argsenv = new.env(); - - for (argname in names(argspec)) { - value = 0; - if (is.list(argspec[[argname]])) { - value = argspec[[argname]]$value; - } else { - value = argspec[[argname]]; - } - - assign(argname, value, envir=argsenv); - } - - if (interactive()) { - for (argname in names(argspec)) { - value = get(argname, envir=argsenv); - - if (is.na(value) | is.null(value)) { - if (exists("cmdargs")) { - assign(argname, cmdargs[[argname]], envir=argsenv); - } else { - assign(argname, readline(sprintf("Please enter a value for '%s': ", argname)), envir=argsenv); - } - } else { - assign(argname, value, envir=argsenv); - } - } - } else { - cargs = commandArgs(TRUE); - - if (length(cargs) == 0) { - .gsa.getargs.usage(argspec, doc); - } - - for (i in 1:length(cargs)) { - if (length(grep("^-", cargs[i], ignore.case=TRUE)) > 0) { - key = gsub("-", "", cargs[i]); - value = cargs[i+1]; - - if (key == "h" | key == "help") { - .gsa.getargs.usage(argspec, doc); - } - - if (length(grep("^[\\d\\.e\\+\\-]+$", value, perl=TRUE, ignore.case=TRUE)) > 0) { - value = as.numeric(value); - } - - assign(key, value, envir=argsenv); - } - } - } - - args = as.list(argsenv); - - isMissingArgs = 0; - missingArgs = c(); - - for (arg in names(argspec)) { - if (is.na(args[[arg]]) | is.null(args[[arg]])) { - gsa.warn(sprintf("Value for required argument '-%s' was not specified", arg)); - - isMissingArgs = 1; - missingArgs = c(missingArgs, arg); - } - } - - if (isMissingArgs) { - gsa.error( - paste( - "Missing required arguments: -", - paste(missingArgs, collapse=" -"), - ". Specify -h or -help to this script for a list of available arguments.", - sep="" - ) - ); - } - - args; -} diff --git a/public/R/src/gsalib/R/gsa.message.R b/public/R/src/gsalib/R/gsa.message.R deleted file mode 100644 index a2b909d3d..000000000 --- a/public/R/src/gsalib/R/gsa.message.R +++ /dev/null @@ -1,3 +0,0 @@ -gsa.message <- function(message) { - message(sprintf("[gsalib] %s", message)); -} diff --git a/public/R/src/gsalib/R/gsa.plot.venn.R b/public/R/src/gsalib/R/gsa.plot.venn.R deleted file mode 100644 index b1353ccc1..000000000 --- a/public/R/src/gsalib/R/gsa.plot.venn.R +++ /dev/null @@ -1,50 +0,0 @@ -gsa.plot.venn <- -function(a, b, c=0, a_and_b, a_and_c=0, b_and_c=0, - col=c("#FF6342", "#63C6DE", "#ADDE63"), - pos=c(0.20, 0.20, 0.80, 0.82), - debug=0 - ) { - library(png); - library(graphics); - - # Set up properties - for (i in 1:length(col)) { - rgbcol = col2rgb(col[i]); - col[i] = sprintf("%02X%02X%02X", rgbcol[1], rgbcol[2], rgbcol[3]); - } - - chco = paste(col[1], col[2], col[3], sep=","); - chd = paste(a, b, c, a_and_b, a_and_c, b_and_c, sep=","); - - props = c( - 'cht=v', - 'chs=525x525', - 'chds=0,10000000000', - paste('chco=', chco, sep=""), - paste('chd=t:', chd, sep="") - ); - proplist = paste(props[1], props[2], props[3], props[4], props[5], sep='&'); - - # Get the venn diagram (as a temporary file) - filename = tempfile("venn"); - cmd = paste("wget -O ", filename, " 'http://chart.apis.google.com/chart?", proplist, "' > /dev/null 2>&1", sep=""); - - if (debug == 1) { - print(cmd); - } - system(cmd); - - # Render the temp png file into a plotting frame - a = readPNG(filename); - - plot(0, 0, type="n", xaxt="n", yaxt="n", bty="n", xlim=c(0, 1), ylim=c(0, 1), xlab="", ylab=""); - if (c == 0 || a >= b) { - rasterImage(a, pos[1], pos[2], pos[3], pos[4]); - } else { - rasterImage(a, 0.37+pos[1], 0.37+pos[2], 0.37+pos[3], 0.37+pos[4], angle=180); - } - - # Clean up! - unlink(filename); -} - diff --git a/public/R/src/gsalib/R/gsa.read.eval.R b/public/R/src/gsalib/R/gsa.read.eval.R deleted file mode 100644 index f1d49092b..000000000 --- a/public/R/src/gsalib/R/gsa.read.eval.R +++ /dev/null @@ -1,83 +0,0 @@ -.gsa.attemptToLoadFile <- function(filename) { - file = NA; - - if (file.exists(filename) & file.info(filename)$size > 500) { - file = read.csv(filename, header=TRUE, comment.char="#"); - } - - file; -} - -gsa.read.eval <- -function(evalRoot) { - fileAlleleCountStats = paste(evalRoot, ".AlleleCountStats.csv", sep=""); - fileCompOverlap = paste(evalRoot, ".Comp_Overlap.csv", sep=""); - fileCountVariants = paste(evalRoot, ".Count_Variants.csv", sep=""); - fileGenotypeConcordance = paste(evalRoot, ".Genotype_Concordance.csv", sep=""); - fileMetricsByAc = paste(evalRoot, ".MetricsByAc.csv", sep=""); - fileMetricsBySample = paste(evalRoot, ".MetricsBySample.csv", sep=""); - fileQuality_Metrics_by_allele_count = paste(evalRoot, ".Quality_Metrics_by_allele_count.csv", sep=""); - fileQualityScoreHistogram = paste(evalRoot, ".QualityScoreHistogram.csv", sep=""); - fileSampleStatistics = paste(evalRoot, ".Sample_Statistics.csv", sep=""); - fileSampleSummaryStatistics = paste(evalRoot, ".Sample_Summary_Statistics.csv", sep=""); - fileSimpleMetricsBySample = paste(evalRoot, ".SimpleMetricsBySample.csv", sep=""); - fileTi_slash_Tv_Variant_Evaluator = paste(evalRoot, ".Ti_slash_Tv_Variant_Evaluator.csv", sep=""); - fileTiTvStats = paste(evalRoot, ".TiTvStats.csv", sep=""); - fileVariant_Quality_Score = paste(evalRoot, ".Variant_Quality_Score.csv", sep=""); - - eval = list( - AlleleCountStats = NA, - CompOverlap = NA, - CountVariants = NA, - GenotypeConcordance = NA, - MetricsByAc = NA, - MetricsBySample = NA, - Quality_Metrics_by_allele_count = NA, - QualityScoreHistogram = NA, - SampleStatistics = NA, - SampleSummaryStatistics = NA, - SimpleMetricsBySample = NA, - TiTv = NA, - TiTvStats = NA, - Variant_Quality_Score = NA, - - CallsetNames = c(), - CallsetOnlyNames = c(), - CallsetFilteredNames = c() - ); - - eval$AlleleCountStats = .gsa.attemptToLoadFile(fileAlleleCountStats); - eval$CompOverlap = .gsa.attemptToLoadFile(fileCompOverlap); - eval$CountVariants = .gsa.attemptToLoadFile(fileCountVariants); - eval$GenotypeConcordance = .gsa.attemptToLoadFile(fileGenotypeConcordance); - eval$MetricsByAc = .gsa.attemptToLoadFile(fileMetricsByAc); - eval$MetricsBySample = .gsa.attemptToLoadFile(fileMetricsBySample); - eval$Quality_Metrics_by_allele_count = .gsa.attemptToLoadFile(fileQuality_Metrics_by_allele_count); - eval$QualityScoreHistogram = .gsa.attemptToLoadFile(fileQualityScoreHistogram); - eval$SampleStatistics = .gsa.attemptToLoadFile(fileSampleStatistics); - eval$SampleSummaryStatistics = .gsa.attemptToLoadFile(fileSampleSummaryStatistics); - eval$SimpleMetricsBySample = .gsa.attemptToLoadFile(fileSimpleMetricsBySample); - eval$TiTv = .gsa.attemptToLoadFile(fileTi_slash_Tv_Variant_Evaluator); - eval$TiTvStats = .gsa.attemptToLoadFile(fileTiTvStats); - eval$Variant_Quality_Score = .gsa.attemptToLoadFile(fileVariant_Quality_Score); - - uniqueJexlExpressions = unique(eval$TiTv$jexl_expression); - eval$CallsetOnlyNames = as.vector(uniqueJexlExpressions[grep("FilteredIn|Intersection|none", uniqueJexlExpressions, invert=TRUE, ignore.case=TRUE)]); - eval$CallsetNames = as.vector(gsub("-only", "", eval$CallsetOnlyNames)); - eval$CallsetFilteredNames = as.vector(c( - paste(gsub("^(\\w)", "In\\U\\1", eval$CallsetNames[1], perl=TRUE), "-Filtered", gsub("^(\\w)", "In\\U\\1", eval$CallsetNames[2], perl=TRUE), sep=""), - paste(gsub("^(\\w)", "In\\U\\1", eval$CallsetNames[2], perl=TRUE), "-Filtered", gsub("^(\\w)", "In\\U\\1", eval$CallsetNames[1], perl=TRUE), sep="")) - ); - - if (!(eval$CallsetFilteredNames[1] %in% unique(eval$TiTv$jexl_expression))) { - eval$CallsetFilteredNames[1] = paste("In", eval$CallsetNames[1], "-FilteredIn", eval$CallsetNames[2], sep=""); - } - - if (!(eval$CallsetFilteredNames[2] %in% unique(eval$TiTv$jexl_expression))) { - eval$CallsetFilteredNames[2] = paste("In", eval$CallsetNames[2], "-FilteredIn", eval$CallsetNames[1], sep=""); - #eval$CallsetFilteredNames[2] = paste(gsub("^(\\w)", "In", eval$CallsetNames[2], perl=TRUE), "-Filtered", gsub("^(\\w)", "In", eval$CallsetNames[1], perl=TRUE), sep=""); - } - - eval; -} - diff --git a/public/R/src/gsalib/R/gsa.read.gatkreport.R b/public/R/src/gsalib/R/gsa.read.gatkreport.R deleted file mode 100644 index 9b3ef1ad1..000000000 --- a/public/R/src/gsalib/R/gsa.read.gatkreport.R +++ /dev/null @@ -1,64 +0,0 @@ -# Load a table into the specified environment. Make sure that each new table gets a unique name (this allows one to cat a bunch of tables with the same name together and load them into R without each table overwriting the last. -.gsa.assignGATKTableToEnvironment <- function(tableName, tableHeader, tableRows, tableEnv) { - d = data.frame(tableRows, row.names=NULL, stringsAsFactors=FALSE); - colnames(d) = tableHeader; - - for (i in 1:ncol(d)) { - v = suppressWarnings(as.numeric(d[,i])); - - if (length(na.omit(as.numeric(v))) == length(d[,i])) { - d[,i] = v; - } - } - - usedNames = ls(envir=tableEnv, pattern=tableName); - - if (length(usedNames) > 0) { - tableName = paste(tableName, ".", length(usedNames), sep=""); - } - - assign(tableName, d, envir=tableEnv); -} - -# Load all GATKReport tables from a file -gsa.read.gatkreport <- function(filename) { - con = file(filename, "r", blocking = TRUE); - lines = readLines(con); - close(con); - - tableEnv = new.env(); - - tableName = NA; - tableHeader = c(); - tableRows = c(); - - for (line in lines) { - if (length(grep("^##:GATKReport.v0.1[[:space:]]+", line, ignore.case=TRUE)) > 0) { - headerFields = unlist(strsplit(line, "[[:space:]]+")); - - if (!is.na(tableName)) { - .gsa.assignGATKTableToEnvironment(tableName, tableHeader, tableRows, tableEnv); - } - - tableName = headerFields[2]; - tableHeader = c(); - tableRows = c(); - } else if (length(grep("^[[:space:]]*$", line)) > 0 | length(grep("^[[:space:]]*#", line)) > 0) { - # do nothing - } else if (!is.na(tableName)) { - row = unlist(strsplit(line, "[[:space:]]+")); - - if (length(tableHeader) == 0) { - tableHeader = row; - } else { - tableRows = rbind(tableRows, row); - } - } - } - - if (!is.na(tableName)) { - .gsa.assignGATKTableToEnvironment(tableName, tableHeader, tableRows, tableEnv); - } - - gatkreport = as.list(tableEnv); -} diff --git a/public/R/src/gsalib/R/gsa.read.squidmetrics.R b/public/R/src/gsalib/R/gsa.read.squidmetrics.R deleted file mode 100644 index 39fa1ad32..000000000 --- a/public/R/src/gsalib/R/gsa.read.squidmetrics.R +++ /dev/null @@ -1,28 +0,0 @@ -gsa.read.squidmetrics = function(project, bylane = FALSE) { - suppressMessages(library(ROracle)); - - drv = dbDriver("Oracle"); - con = dbConnect(drv, "REPORTING/REPORTING@ora01:1521/SEQPROD"); - - if (bylane) { - statement = paste("SELECT * FROM ILLUMINA_PICARD_METRICS WHERE \"Project\" = '", project, "'", sep=""); - print(statement); - - rs = dbSendQuery(con, statement = statement); - d = fetch(rs, n=-1); - dbHasCompleted(rs); - dbClearResult(rs); - } else { - statement = paste("SELECT * FROM ILLUMINA_SAMPLE_STATUS_AGG WHERE \"Project\" = '", project, "'", sep=""); - print(statement); - - rs = dbSendQuery(con, statement = statement); - d = fetch(rs, n=-1); - dbHasCompleted(rs); - dbClearResult(rs); - } - - oraCloseDriver(drv); - - subset(d, Project == project); -} diff --git a/public/R/src/gsalib/R/gsa.read.vcf.R b/public/R/src/gsalib/R/gsa.read.vcf.R deleted file mode 100644 index 5beb6455d..000000000 --- a/public/R/src/gsalib/R/gsa.read.vcf.R +++ /dev/null @@ -1,23 +0,0 @@ -gsa.read.vcf <- function(vcffile, skip=0, nrows=-1, expandGenotypeFields = FALSE) { - headers = readLines(vcffile, n=100); - headerline = headers[grep("#CHROM", headers)]; - header = unlist(strsplit(gsub("#", "", headerline), "\t")) - - d = read.table(vcffile, header=FALSE, skip=skip, nrows=nrows, stringsAsFactors=FALSE); - colnames(d) = header; - - if (expandGenotypeFields) { - columns = ncol(d); - - offset = columns + 1; - for (sampleIndex in 10:columns) { - gt = unlist(lapply(strsplit(d[,sampleIndex], ":"), function(x) x[1])); - d[,offset] = gt; - colnames(d)[offset] = sprintf("%s.GT", colnames(d)[sampleIndex]); - - offset = offset + 1; - } - } - - return(d); -} diff --git a/public/R/src/gsalib/R/gsa.warn.R b/public/R/src/gsalib/R/gsa.warn.R deleted file mode 100644 index 7ee08ce65..000000000 --- a/public/R/src/gsalib/R/gsa.warn.R +++ /dev/null @@ -1,3 +0,0 @@ -gsa.warn <- function(message) { - gsa.message(sprintf("Warning: %s", message)); -} diff --git a/public/R/src/gsalib/Read-and-delete-me b/public/R/src/gsalib/Read-and-delete-me deleted file mode 100644 index d04323a6e..000000000 --- a/public/R/src/gsalib/Read-and-delete-me +++ /dev/null @@ -1,9 +0,0 @@ -* Edit the help file skeletons in 'man', possibly combining help files - for multiple functions. -* Put any C/C++/Fortran code in 'src'. -* If you have compiled code, add a .First.lib() function in 'R' to load - the shared library. -* Run R CMD build to build the package tarball. -* Run R CMD check to check the package tarball. - -Read "Writing R Extensions" for more information. diff --git a/public/R/src/gsalib/data/tearsheetdrop.jpg b/public/R/src/gsalib/data/tearsheetdrop.jpg deleted file mode 100755 index c9d480fa05f4acf066e3bf1cf469db47b8a1afc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50343 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 z 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

Wi2kB9vvK-Kn(WvvTD}Y_TktzT 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 Define data, use random, -##-- or do help(data=index) for the standard data sets. - -## The function is currently defined as -function(evalRoot) { - fileAlleleCountStats = paste(evalRoot, ".AlleleCountStats.csv", sep=""); - fileCompOverlap = paste(evalRoot, ".Comp_Overlap.csv", sep=""); - fileCountVariants = paste(evalRoot, ".Count_Variants.csv", sep=""); - fileGenotypeConcordance = paste(evalRoot, ".Genotype_Concordance.csv", sep=""); - fileMetricsByAc = paste(evalRoot, ".MetricsByAc.csv", sep=""); - fileMetricsBySample = paste(evalRoot, ".MetricsBySample.csv", sep=""); - fileQuality_Metrics_by_allele_count = paste(evalRoot, ".Quality_Metrics_by_allele_count.csv", sep=""); - fileQualityScoreHistogram = paste(evalRoot, ".QualityScoreHistogram.csv", sep=""); - fileSampleStatistics = paste(evalRoot, ".Sample_Statistics.csv", sep=""); - fileSampleSummaryStatistics = paste(evalRoot, ".Sample_Summary_Statistics.csv", sep=""); - fileSimpleMetricsBySample = paste(evalRoot, ".SimpleMetricsBySample.csv", sep=""); - fileTi_slash_Tv_Variant_Evaluator = paste(evalRoot, ".Ti_slash_Tv_Variant_Evaluator.csv", sep=""); - fileTiTvStats = paste(evalRoot, ".TiTvStats.csv", sep=""); - fileVariant_Quality_Score = paste(evalRoot, ".Variant_Quality_Score.csv", sep=""); - - eval = list( - AlleleCountStats = NA, - CompOverlap = NA, - CountVariants = NA, - GenotypeConcordance = NA, - MetricsByAc = NA, - MetricsBySample = NA, - Quality_Metrics_by_allele_count = NA, - QualityScoreHistogram = NA, - SampleStatistics = NA, - SampleSummaryStatistics = NA, - SimpleMetricsBySample = NA, - TiTv = NA, - TiTvStats = NA, - Variant_Quality_Score = NA, - - CallsetNames = c(), - CallsetOnlyNames = c(), - CallsetFilteredNames = c() - ); - - eval$AlleleCountStats = .attemptToLoadFile(fileAlleleCountStats); - eval$CompOverlap = .attemptToLoadFile(fileCompOverlap); - eval$CountVariants = .attemptToLoadFile(fileCountVariants); - eval$GenotypeConcordance = .attemptToLoadFile(fileGenotypeConcordance); - eval$MetricsByAc = .attemptToLoadFile(fileMetricsByAc); - eval$MetricsBySample = .attemptToLoadFile(fileMetricsBySample); - eval$Quality_Metrics_by_allele_count = .attemptToLoadFile(fileQuality_Metrics_by_allele_count); - eval$QualityScoreHistogram = .attemptToLoadFile(fileQualityScoreHistogram); - eval$SampleStatistics = .attemptToLoadFile(fileSampleStatistics); - eval$SampleSummaryStatistics = .attemptToLoadFile(fileSampleSummaryStatistics); - eval$SimpleMetricsBySample = .attemptToLoadFile(fileSimpleMetricsBySample); - eval$TiTv = .attemptToLoadFile(fileTi_slash_Tv_Variant_Evaluator); - eval$TiTvStats = .attemptToLoadFile(fileTiTvStats); - eval$Variant_Quality_Score = .attemptToLoadFile(fileVariant_Quality_Score); - - uniqueJexlExpressions = unique(eval$TiTv$jexl_expression); - eval$CallsetOnlyNames = as.vector(uniqueJexlExpressions[grep("FilteredIn|Intersection|none", uniqueJexlExpressions, invert=TRUE, ignore.case=TRUE)]); - eval$CallsetNames = as.vector(gsub("-only", "", eval$CallsetOnlyNames)); - eval$CallsetFilteredNames = as.vector(c()); - eval; - } -} -% Add one or more standard keywords, see file 'KEYWORDS' in the -% R documentation directory. -\keyword{ ~kwd1 } -\keyword{ ~kwd2 }% __ONLY ONE__ keyword per line diff --git a/public/R/src/gsalib/man/gsa.read.gatkreport.Rd b/public/R/src/gsalib/man/gsa.read.gatkreport.Rd deleted file mode 100644 index 67c2c7b28..000000000 --- a/public/R/src/gsalib/man/gsa.read.gatkreport.Rd +++ /dev/null @@ -1,55 +0,0 @@ -\name{gsa.read.gatkreport} -\alias{gsa.read.gatkreport} -\title{ -gsa.read.gatkreport -} -\description{ -Reads a GATKReport file - a multi-table document - and loads each table as a separate data.frame object in a list. -} -\usage{ -gsa.read.gatkreport(filename) -} -\arguments{ - \item{filename}{ -The path to the GATKReport file. -} -} -\details{ -The GATKReport format replaces the multi-file output format used by many GATK tools and provides a single, consolidated file format. This format accomodates multiple tables and is still R-loadable - through this function. - -The file format looks like this: -\preformatted{##:GATKReport.v0.1 TableName : The description of the table -col1 col2 col3 -0 0.007451835696110506 25.474613284804366 -1 0.002362777171937477 29.844949954504095 -2 9.087604507451836E-4 32.87590975254731 -3 5.452562704471102E-4 34.498999090081895 -4 9.087604507451836E-4 35.14831665150137 -} - -} -\value{ -Returns a list object, where each key is the TableName and the value is the data.frame object with the contents of the table. If multiple tables with the same name exist, each one after the first will be given names of "TableName.v1", "TableName.v2", ..., "TableName.vN". -%% ~Describe the value returned -%% If it is a LIST, use -%% \item{comp1 }{Description of 'comp1'} -%% \item{comp2 }{Description of 'comp2'} -%% ... -} -\references{ -%% ~put references to the literature/web site here ~ -} -\author{ -Kiran Garimella -} -\note{ -%% ~~further notes~~ -} - -\seealso{ -%% ~~objects to See Also as \code{\link{help}}, ~~~ -} -\examples{ -report = gsa.read.gatkreport("/path/to/my/output.gatkreport"); -} -\keyword{ ~kwd1 } diff --git a/public/R/src/gsalib/man/gsa.read.squidmetrics.Rd b/public/R/src/gsalib/man/gsa.read.squidmetrics.Rd deleted file mode 100644 index 0a8b37843..000000000 --- a/public/R/src/gsalib/man/gsa.read.squidmetrics.Rd +++ /dev/null @@ -1,48 +0,0 @@ -\name{gsa.read.squidmetrics} -\alias{gsa.read.squidmetrics} -\title{ -gsa.read.squidmetrics -} -\description{ -Reads metrics for a specified SQUID project into a dataframe. -} -\usage{ -gsa.read.squidmetrics("C315") -} -\arguments{ - \item{project}{ -The project for which metrics should be obtained. -} - \item{bylane}{ -If TRUE, obtains per-lane metrics rather than the default per-sample metrics. -} -} -\details{ -%% ~~ If necessary, more details than the description above ~~ -} -\value{ -%% ~Describe the value returned -%% If it is a LIST, use -%% \item{comp1 }{Description of 'comp1'} -%% \item{comp2 }{Description of 'comp2'} -%% ... -Returns a data frame with samples (or lanes) as the row and the metric as the column. -} -\references{ -%% ~put references to the literature/web site here ~ -} -\author{ -Kiran Garimella -} -\note{ -This method will only work within the Broad Institute internal network. -} - -\seealso{ -%% ~~objects to See Also as \code{\link{help}}, ~~~ -} -\examples{ -## Obtain metrics for project C315. -d = gsa.read.squidmetrics("C315"); -} -\keyword{ ~kwd1 } diff --git a/public/R/src/gsalib/man/gsa.read.vcf.Rd b/public/R/src/gsalib/man/gsa.read.vcf.Rd deleted file mode 100644 index cffd35e8f..000000000 --- a/public/R/src/gsalib/man/gsa.read.vcf.Rd +++ /dev/null @@ -1,53 +0,0 @@ -\name{gsa.read.vcf} -\alias{gsa.read.vcf} -\title{ -gsa.read.vcf -} -\description{ -Reads a VCF file into a table. Optionally expands genotype columns into separate columns containing the genotype, separate from the other fields specified in the FORMAT field. -} -\usage{ -gsa.read.vcf(vcffile, skip=0, nrows=-1, expandGenotypeFields = FALSE) -} -\arguments{ - \item{vcffile}{ -The path to the vcf file. -} - \item{skip}{ -The number of lines of the data file to skip before beginning to read data. -} - \item{nrows}{ -The maximum number of rows to read in. Negative and other invalid values are ignored. -} - \item{expandGenotypeFields}{ -If TRUE, adds an additional column per sample containing just the genotype. -} -} -\details{ -The VCF format is the standard variant call file format used in the GATK. This function reads that data in as a table for easy analysis. -} -\value{ -Returns a data.frame object, where each column corresponds to the columns in the VCF file. -%% ~Describe the value returned -%% If it is a LIST, use -%% \item{comp1 }{Description of 'comp1'} -%% \item{comp2 }{Description of 'comp2'} -%% ... -} -\references{ -%% ~put references to the literature/web site here ~ -} -\author{ -Kiran Garimella -} -\note{ -%% ~~further notes~~ -} - -\seealso{ -%% ~~objects to See Also as \code{\link{help}}, ~~~ -} -\examples{ -vcf = gsa.read.vcf("/path/to/my/output.vcf"); -} -\keyword{ ~kwd1 } diff --git a/public/R/src/gsalib/man/gsa.warn.Rd b/public/R/src/gsalib/man/gsa.warn.Rd deleted file mode 100644 index 0b9770b5c..000000000 --- a/public/R/src/gsalib/man/gsa.warn.Rd +++ /dev/null @@ -1,46 +0,0 @@ -\name{gsa.warn} -\alias{gsa.warn} -\title{ -GSA warn -} -\description{ -Write a warning message to standard out with the prefix '[gsalib] Warning:'. -} -\usage{ -gsa.warn(message) -} -%- maybe also 'usage' for other objects documented here. -\arguments{ - \item{message}{ -The warning message to write. -} -} -\details{ -%% ~~ If necessary, more details than the description above ~~ -} -\value{ -%% ~Describe the value returned -%% If it is a LIST, use -%% \item{comp1 }{Description of 'comp1'} -%% \item{comp2 }{Description of 'comp2'} -%% ... -} -\references{ -%% ~put references to the literature/web site here ~ -} -\author{ -Kiran Garimella -} -\note{ -%% ~~further notes~~ -} - -\seealso{ -%% ~~objects to See Also as \code{\link{help}}, ~~~ -} -\examples{ -## Write message to stdout -gsa.warn("This is a warning message"); -} -\keyword{ ~kwd1 } -\keyword{ ~kwd2 }% __ONLY ONE__ keyword per line diff --git a/public/R/src/gsalib/man/gsalib-package.Rd b/public/R/src/gsalib/man/gsalib-package.Rd deleted file mode 100644 index 2b8d6db9f..000000000 --- a/public/R/src/gsalib/man/gsalib-package.Rd +++ /dev/null @@ -1,68 +0,0 @@ -\name{gsalib-package} -\alias{gsalib-package} -\alias{gsalib} -\docType{package} -\title{ -GATK utility analysis functions -} -\description{ -Utility functions for analyzing GATK-processed NGS data -} -\details{ -This package contains functions for working with GATK-processed NGS data. These functions include a command-line parser that also allows a script to be used in interactive mode (good for developing scripts that will eventually be automated), a proportional Venn diagram generator, convenience methods for parsing VariantEval output, and more. -} -\author{ -Genome Sequencing and Analysis Group - -Medical and Population Genetics Program - -Maintainer: Kiran Garimella -} -\references{ -GSA wiki page: http://www.broadinstitute.org/gsa/wiki - -GATK help forum: http://www.getsatisfaction.com/gsa -} -\examples{ -## get script arguments in interactive and non-interactive mode -cmdargs = gsa.getargs( list( - requiredArg1 = list( - value = NA, - doc = "Documentation for requiredArg1" - ), - - optionalArg1 = list( - value = 3e9, - doc = "Documentation for optionalArg1" - ) -) ); - -## plot a proportional Venn diagram -gsa.plot.venn(500, 250, 0, 100); - -## read a GATKReport file -report = gsa.gatk.report("/path/to/my/output.gatkreport"); - -## emit a message -gsa.message("This is a message"); - -## emit a warning message -gsa.message("This is a warning message"); - -## emit an error message -gsa.message("This is an error message"); - -## read the SQUID metrics for a given sequencing project (internal to the Broad only) -s = gsa.read.squidmetrics("C427"); - -## read command-line arguments -cmdargs = gsa.getargs( - list( - file = list(value="/my/test.vcf", doc="VCF file"), - verbose = list(value=0, doc="If 1, set verbose mode"), - test2 = list(value=2.3e9, doc="Another argument that does stuff") - ), - doc="My test program" -); -} -\keyword{ package }