Skip to content

Commit

Permalink
v1.2.19
Browse files Browse the repository at this point in the history
  • Loading branch information
hartleys committed Feb 21, 2017
1 parent 83a9dac commit 6ab8ad7
Show file tree
Hide file tree
Showing 16 changed files with 85 additions and 39 deletions.
Binary file removed QoRTs-reference.pdf
Binary file not shown.
Binary file modified QoRTs-vignette.pdf
Binary file not shown.
Binary file modified QoRTs.jar
Binary file not shown.
Binary file removed QoRTs_1.2.11.tar.gz
Binary file not shown.
Binary file added QoRTs_1.2.19.tar.gz
Binary file not shown.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# QoRTs v1.2.11
(Compiled Tue Feb 14 17:15:28 EST 2017)
# QoRTs v1.2.19
(Compiled Fri Feb 17 13:51:51 EST 2017)

The [QoRTs software package](http://hartleys.github.io/QoRTs/) is a fast, efficient, and portable
multifunction toolkit designed to assist in
Expand Down
Binary file modified example-walkthrough.pdf
Binary file not shown.
Binary file added src/HartleyUtils/doc/lib/Thumbs.db
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,12 @@ class genSimplePlots extends CommandLineRunUtil {
argDesc = "The ID of the replicate. This will be only used for the plot labels.",
defaultValue = Some("Untitled")
) ::
new BinaryArgument[String]( name = "prefix",
arg = List("--prefix"),
valueName = "prefixString",
argDesc = "The prefix for output QC files",
defaultValue = Some("")
) ::
new FinalArgument[String](
name = "qcdataDir",
valueName = "qcDataDir",
Expand All @@ -64,6 +70,7 @@ class genSimplePlots extends CommandLineRunUtil {
if(out){
generateSimplePlots(
parser.get[String]("qcDir"),
parser.get[String]("prefix"),
parser.get[String]("uniqueID"),
! parser.get[Boolean]("noPng"),
parser.get[Boolean]("makePdf"),
Expand All @@ -73,7 +80,7 @@ class genSimplePlots extends CommandLineRunUtil {
}
}

def generateSimplePlots(qcdir : String, uniqueID : String, makePng : Boolean, makePdf : Boolean, makeSeparatePngs : Boolean) {
def generateSimplePlots(qcdir : String, qcprefix : String, uniqueID : String, makePng : Boolean, makePdf : Boolean, makeSeparatePngs : Boolean) {
//val qcdir = outfileprefix.substring(0,outfileprefix.length - 2)

if(makeSeparatePngs){
Expand All @@ -85,7 +92,7 @@ class genSimplePlots extends CommandLineRunUtil {
}
}

val rscriptString = makeRscriptString(qcdir, uniqueID, makePng,makePdf, makeSeparatePngs);
val rscriptString = makeRscriptString(qcdir, qcprefix, uniqueID, makePng,makePdf, makeSeparatePngs);
val writer = openWriter(qcdir + "/QC.makeMultiplot.R");
writer.write(rscriptString);
writer.close();
Expand Down Expand Up @@ -121,13 +128,14 @@ class genSimplePlots extends CommandLineRunUtil {
logwriter.close();
}

def makeRscriptString(qcdir : String, uniqueID : String, makePng : Boolean, makePdf : Boolean, makeSeparatePngs : Boolean) : String = {
def makeRscriptString(qcdir : String, qcprefix : String, uniqueID : String, makePng : Boolean, makePdf : Boolean, makeSeparatePngs : Boolean) : String = {
"# This is an automatically-generated R script designed to make a simple multiplot and/or pdf report for a sample.\n"+
"message(\"STARTING...\");\n"+
"library(QoRTs);\n"+
"unique.ID <- c(\"" + uniqueID + "\");\n"+
"qc.data.dir <- c(\"" + qcdir + "/\");\n"+
"decoder.raw <- data.frame(unique.ID = as.character(unique.ID), qc.data.dir = as.character(qc.data.dir));\n"+
"qc.data.prefix <- c(\""+ qcprefix + "\");\n"+
"decoder.raw <- data.frame(unique.ID = as.character(unique.ID), qc.data.dir = as.character(qc.data.dir), qc.data.prefix=as.character(qc.data.prefix),stringsAsFactors=FALSE);\n"+
"decoder <- completeAndCheckDecoder(decoder = decoder.raw)\n"+
"message(decoder);\n"+
"message(lapply(names(decoder), function(n){ class(decoder[[n]]) }));\n"+
Expand Down
24 changes: 14 additions & 10 deletions src/HartleyUtils/src/main/scala/qcUtils/runAllQC.scala
Original file line number Diff line number Diff line change
Expand Up @@ -490,12 +490,13 @@ object runAllQC {
defaultValue = Some(10000)
) ::

new BinaryOptionArgument[List[String]](
new BinaryArgument[String](
name = "outfilePrefix",
arg = List("--outfilePrefix"),
valueName = "sampID",
argDesc = "Prefix to be prepended to all output files. If this is set, all output files will use the format: \"outfiledir/prefix.QC.qcfilename.txt.gz\""+
""
argDesc = "Prefix to be prepended to all output files. If this is set, all output files will use the format: \"outfiledir/<prefix>QC.qcfilename.txt.gz\""+
"",
defaultValue = Some("")
) ::

//DEPRECIATED or BETA OPTIONS:
Expand Down Expand Up @@ -664,7 +665,7 @@ object runAllQC {
parser.get[Boolean]("keepOnTarget"),
parser.get[Option[Double]]("randomSubsample"),
parser.get[Option[Long]]("randomSeed"),
parser.get[Option[String]]("outfilePrefix"),
parser.get[String]("outfilePrefix"),
parser.get[Int]("genomeBufferSize")
);
}
Expand Down Expand Up @@ -714,7 +715,7 @@ object runAllQC {
keepOnTarget : Boolean,
randomSubsample : Option[Double],
randomSeed : Option[Long],
outfilePrefix : Option[String],
outfilePrefix : String,
genomeBufferSize : Int){

randomSeed match {
Expand All @@ -729,7 +730,7 @@ object runAllQC {
reportln("Creating Directory: "+ outdir,"note");
outDirFile.mkdir();
}
val outfile = outdir + "/" + (if(outfilePrefix.isEmpty){""} else {outfilePrefix.get + "."}) + "QC";
val outfile = outdir + "/" + outfilePrefix + "QC";

val logfile = outfile +"."+ internalUtils.stdUtils.getRandomString(12) + ".log";
internalUtils.Reporter.init_completeLogFile(logfile);
Expand Down Expand Up @@ -797,7 +798,7 @@ object runAllQC {
Set[String]("referenceMatch");
})

reportln("Default functions: " + wrapSimpleLineWithIndent_staggered(defaultFunctonList.toList.sorted.mkString(", "), 68, " ", ""),"debug");
//reportln("Default functions: " + wrapSimpleLineWithIndent_staggered(defaultFunctonList.toList.sorted.mkString(", "), 68, " ", ""),"debug");

val runFunc_initial = (if(runFunctions.isEmpty){
(defaultFunctonList ++ addFunctions.toSet) -- dropFunctions.toSet;
Expand Down Expand Up @@ -848,7 +849,7 @@ object runAllQC {
}

//wrapSimpleLineWithIndent_staggered(line : String, width : Int, indent : String, firstLineIndent : String)
reportln("Running functions: " + wrapSimpleLineWithIndent_staggered(runFunc.toList.sorted.mkString(", "), 68, " ", ""),"progress");
reportln("Running functions: " + wrapSimpleLineWithIndent_staggered(runFunc.toList.sorted(internalUtils.stdUtils.AlphabetOrdering).mkString(", "), 68, " ", ""),"progress");

//reportln("infile: " + infile , "note");
//reportln("outfile: " + outfile , "note");
Expand Down Expand Up @@ -952,7 +953,8 @@ object runAllQC {
targetRegionBed=targetRegionBed,
stopAfterNReads=stopAfterNReads,
genomeFA = genomeFA,dropOnTarget=dropOnTarget,keepOnTarget=keepOnTarget,randomSubsample=randomSubsample,
genomeBufferSize = genomeBufferSize)
genomeBufferSize = genomeBufferSize,
outfilePrefix = outfilePrefix)
}
}

Expand Down Expand Up @@ -995,7 +997,8 @@ object runAllQC {
dropOnTarget : Boolean,
keepOnTarget : Boolean,
randomSubsample : Option[Double],
genomeBufferSize : Int
genomeBufferSize : Int,
outfilePrefix : String
){


Expand Down Expand Up @@ -1479,6 +1482,7 @@ object runAllQC {
report("Generating plots...","progress")
fileConversionUtils.generatePlotsWithR.generateSimplePlots(
qcdir = outdir,
qcprefix = outfilePrefix,
uniqueID = trackTitlePrefix,
makePng = generateMultiPlot,
makePdf = generatePdfReport,
Expand Down
6 changes: 3 additions & 3 deletions src/HartleyUtils/src/main/scala/runner/runner.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import internalUtils.commandLineUI._;

object runner {

final val QORTS_VERSION = "1.2.11"; // REPLACE_THIS_QORTS_VERSION_VARIABLE_WITH_VERSION_NUMBER (note this exact text is used in a search-and-replace. Do not change it.)
final val QORTS_COMPILE_DATE = "Tue Feb 14 17:15:28 EST 2017"; // REPLACE_THIS_QORTS_DATE_VARIABLE_WITH_DATE (note this exact text is used in a search-and-replace. Do not change it.)
final val QORTS_COMPILE_TIME : Long = 1487110528; // REPLACE_THIS_QORTS_DATE_VARIABLE_WITH_TIME (note this exact text is used in a search-and-replace. Do not change it.)
final val QORTS_VERSION = "1.2.19"; // REPLACE_THIS_QORTS_VERSION_VARIABLE_WITH_VERSION_NUMBER (note this exact text is used in a search-and-replace. Do not change it.)
final val QORTS_COMPILE_DATE = "Fri Feb 17 13:51:51 EST 2017"; // REPLACE_THIS_QORTS_DATE_VARIABLE_WITH_DATE (note this exact text is used in a search-and-replace. Do not change it.)
final val QORTS_COMPILE_TIME : Long = 1487357511; // REPLACE_THIS_QORTS_DATE_VARIABLE_WITH_TIME (note this exact text is used in a search-and-replace. Do not change it.)

final val QORTS_MAJOR_VERSION = QORTS_VERSION.split("\\.")(0);
final val QORTS_MINOR_VERSION = QORTS_VERSION.split("\\.")(1);
Expand Down
4 changes: 2 additions & 2 deletions src/QoRTs/DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Package: QoRTs
Version: 1.2.11
Date: 2017-02-14
Version: 1.2.19
Date: 2017-02-17
Title: Quality of RNA-seq Tool
Authors@R: c(person("Stephen Hartley, PhD", "Developer", role = c("aut", "cre"),
email = "[email protected]"))
Expand Down
16 changes: 13 additions & 3 deletions src/QoRTs/NEWS
Original file line number Diff line number Diff line change
@@ -1,12 +1,22 @@
## v1.2.15:

* Added full support for custom output file prefixes (per request by c-guzman, see https://github.com/hartleys/QoRTs/issues/27).
Output file prefixes can now be set using the --outfilePrefix parameter in the QoRTs QC step, and can be loaded into the QoRTs R
companion package by including a column titled "qc.data.prefix" in the decoder.
* Migrated QoRTs build/testing pipeline to a different server.

## v1.2.0:
HUGE UPDATE:
HUGE update. Numerous new features have been added and are still undergoing beta testing. These new features may be subject to change in the next stable release.

Among the changes:

* Added support for whole-exome or whole-genome datasets in addition to RNA-Seq. (Maybe rename the tool?)
* Added numerous metrics which may be relevant to variant calling.
* Intermediate file documentation: The raw QC metric files produced by QoRTs are now better documented. You can cause QoRTs QC to generate a documentation file using the parameter "--addFunctions writeDocs"

Added an array of new metrics:
* "Overlap Mismatch": various metrics relating to the rate at which overlapped paired-end reads are mismatching. Also calculates mismatch rates at specific qual scores.
* "Reference Mismatch": various metrics relating to the rate at which reads have point-mismatches with the reference genome. Requires that a genome fasta file (via the --genomeFA parameter for the QoRTs QC step).
* "Overlap Mismatch": various metrics relating to the rate at which overlapped paired-end reads are found to mismatch one another. This can be used as a proxy for the sequencing error, since the two paired-end reads sequence the same physical cDNA fragment. Mismatch rates are calculated by base-swap type, by quality score, and by position in the reads.
* "Reference Mismatch": various metrics relating to the rate at which reads have point-mismatches with the reference genome. Requires that a genome fasta file (via the --genomeFA parameter for the QoRTs QC step). Mismatch rates are calculated by base-swap type, by quality score, and by position in the reads.
* "On-Target Rate": For Exome data only. Uses a target bed file to calculate rate of on-target reads. Can also be used to filter reads to only on-target reads. Requires a target BED file (set via the --targetRegionBed parameter)
* "Read Length Rates": Rates of observed read lengths. Useful if data is hard-trimmed prior to alignment.
* Performance Plot: Plot shows the runtime performance of the QoRTs QC run.
Expand Down
2 changes: 1 addition & 1 deletion src/QoRTs/R/internal.plotting.func.R
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ makePlot.outlierSlices <- function(

for(i in 1:length(has.sample.plot)){
curr.sample <- has.sample.plot[[i]];
cat(".");
message(".",appendLF=FALSE);
colorBy <- res@decoder$lane.ID;
names(colorBy) <- res@decoder$unique.ID;

Expand Down
2 changes: 1 addition & 1 deletion src/QoRTs/R/minor.utils.R
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,7 @@ reportTimeAndDiff <- function(ts = NULL, prefix = ""){
}

runTimedFunction <- function(expr, title= "",debugMode = TRUE){
if(debugMode) cat(paste0(title,"..."));
if(debugMode) message(paste0(title,"..."),appendLF=FALSE);
if(debugMode) ts <- timestamp();
expr;
if(debugMode) message(paste0("done. ",getTimeAndDiff(ts)))
Expand Down
Loading

0 comments on commit 6ab8ad7

Please sign in to comment.