Commit 08742a218a829a8ccbb8c9fd2f7b4b9ea6933c16

Authored by bhklein
1 parent 6ebad57b

Make displaying confidence intervals optional.

Showing 1 changed file with 14 additions and 5 deletions
openbr/core/plot.cpp
@@ -65,6 +65,8 @@ struct RPlot @@ -65,6 +65,8 @@ struct RPlot
65 QFile file; 65 QFile file;
66 QStringList pivotHeaders; 66 QStringList pivotHeaders;
67 QVector< QSet<QString> > pivotItems; 67 QVector< QSet<QString> > pivotItems;
  68 + float confidence;
  69 +
68 bool flip; 70 bool flip;
69 71
70 struct Pivot 72 struct Pivot
@@ -132,6 +134,12 @@ struct RPlot @@ -132,6 +134,12 @@ struct RPlot
132 } 134 }
133 } 135 }
134 const QString &smooth = destination.get<QString>("smooth", ""); 136 const QString &smooth = destination.get<QString>("smooth", "");
  137 + if (destination.contains(QString("confidence"))) {
  138 + const QString &CI = destination.get<QString>("confidence");
  139 + confidence = !CI.isEmpty() ? CI.toFloat()/100.0 : 0.95;
  140 + } else {
  141 + confidence = 0.95;
  142 + }
135 major.smooth = !smooth.isEmpty() && (major.header == smooth) && (major.size > 1); 143 major.smooth = !smooth.isEmpty() && (major.header == smooth) && (major.size > 1);
136 minor.smooth = !smooth.isEmpty() && (minor.header == smooth) && (minor.size > 1); 144 minor.smooth = !smooth.isEmpty() && (minor.header == smooth) && (minor.size > 1);
137 if (major.smooth) major.size = 1; 145 if (major.smooth) major.size = 1;
@@ -175,7 +183,7 @@ struct RPlot @@ -175,7 +183,7 @@ struct RPlot
175 "TS$Y <- as.character(TS$Y)\n" 183 "TS$Y <- as.character(TS$Y)\n"
176 "CMC$Y <- as.numeric(as.character(CMC$Y))\n" 184 "CMC$Y <- as.numeric(as.character(CMC$Y))\n"
177 "\n" 185 "\n"
178 - "if (%1) {\n\tsummarySE <- function(data=NULL, measurevar, groupvars=NULL, na.rm=FALSE, conf.interval=.95, .drop=TRUE) {\n\t\t" 186 + "if (%1) {\n\tsummarySE <- function(data=NULL, measurevar, groupvars=NULL, na.rm=FALSE, conf.interval=%5, .drop=TRUE) {\n\t\t"
179 "require(plyr)\n\n\t\tlength2 <- function (x, na.rm=FALSE) {\n\t\t\tif (na.rm) sum(!is.na(x))\n\t\t\telse length(x)" 187 "require(plyr)\n\n\t\tlength2 <- function (x, na.rm=FALSE) {\n\t\t\tif (na.rm) sum(!is.na(x))\n\t\t\telse length(x)"
180 "\n\t\t}\n\n\t\tdatac <- ddply(data, groupvars, .drop=.drop, .fun = function(xx, col) {\n\t\t\t" 188 "\n\t\t}\n\n\t\tdatac <- ddply(data, groupvars, .drop=.drop, .fun = function(xx, col) {\n\t\t\t"
181 "c(N=length2(xx[[col]], na.rm=na.rm), mean=mean(xx[[col]], na.rm=na.rm), sd=sd(xx[[col]], na.rm=na.rm))\n\t\t\t}," 189 "c(N=length2(xx[[col]], na.rm=na.rm), mean=mean(xx[[col]], na.rm=na.rm), sd=sd(xx[[col]], na.rm=na.rm))\n\t\t\t},"
@@ -209,8 +217,9 @@ struct RPlot @@ -209,8 +217,9 @@ struct RPlot
209 "colnames(mat) <- algs\n\t" 217 "colnames(mat) <- algs\n\t"
210 "rownames(mat) <- c(\"Template Size (bytes):\")\n\t" 218 "rownames(mat) <- c(\"Template Size (bytes):\")\n\t"
211 "TStable <- as.table(mat)\n}\n").arg(((major.smooth || minor.smooth) ? "TRUE" : "FALSE"), major.size > 1 ? major.header : (minor.header.isEmpty() ? major.header : minor.header), 219 "TStable <- as.table(mat)\n}\n").arg(((major.smooth || minor.smooth) ? "TRUE" : "FALSE"), major.size > 1 ? major.header : (minor.header.isEmpty() ? major.header : minor.header),
212 - (major.smooth || minor.smooth) ? "paste(as.character(round(FT$Y, 3)), round(FT$ci, 3), sep=\"\\u00b1\")" : "FT$Y",  
213 - (major.smooth || minor.smooth) ? "paste(as.character(round(CT$Y, 3)), round(CT$ci, 3), sep=\"\\u00b1\")" : "CT$Y"))); 220 + (major.smooth || minor.smooth) && confidence != 0 ? "paste(as.character(round(FT$Y, 3)), round(FT$ci, 3), sep=\"\\u00b1\")" : "FT$Y",
  221 + (major.smooth || minor.smooth) && confidence != 0 ? "paste(as.character(round(CT$Y, 3)), round(CT$ci, 3), sep=\"\\u00b1\")" : "CT$Y",
  222 + QString::number(confidence))));
214 223
215 // Open output device 224 // Open output device
216 file.write(qPrintable(QString("\n" 225 file.write(qPrintable(QString("\n"
@@ -297,7 +306,7 @@ bool Plot(const QStringList &amp;files, const File &amp;destination, bool show) @@ -297,7 +306,7 @@ bool Plot(const QStringList &amp;files, const File &amp;destination, bool show)
297 (p.major.size > 1 ? QString(", colour=factor(%1)").arg(p.major.header) : QString()) + 306 (p.major.size > 1 ? QString(", colour=factor(%1)").arg(p.major.header) : QString()) +
298 (p.minor.size > 1 ? QString(", linetype=factor(%1)").arg(p.minor.header) : QString()) + 307 (p.minor.size > 1 ? QString(", linetype=factor(%1)").arg(p.minor.header) : QString()) +
299 QString(", xlab=\"False Accept Rate\", ylab=\"True Accept Rate\") + theme_minimal()") + 308 QString(", xlab=\"False Accept Rate\", ylab=\"True Accept Rate\") + theme_minimal()") +
300 - ((p.major.smooth || p.minor.smooth) ? " + geom_errorbar(data=DET[seq(1, NROW(DET), by = 29),], aes(x=X, ymin=(1-Y)-ci, ymax=(1-Y)+ci), width=0.1, alpha=I(1/2))" : QString()) + 309 + ((p.major.smooth || p.minor.smooth) && p.confidence != 0 ? " + geom_errorbar(data=DET[seq(1, NROW(DET), by = 29),], aes(x=X, ymin=(1-Y)-ci, ymax=(1-Y)+ci), width=0.1, alpha=I(1/2))" : QString()) +
301 (p.major.size > 1 ? getScale("colour", p.major.header, p.major.size) : QString()) + 310 (p.major.size > 1 ? getScale("colour", p.major.header, p.major.size) : QString()) +
302 (p.minor.size > 1 ? QString(" + scale_linetype_discrete(\"%1\")").arg(p.minor.header) : QString()) + 311 (p.minor.size > 1 ? QString(" + scale_linetype_discrete(\"%1\")").arg(p.minor.header) : QString()) +
303 QString(" + scale_x_log10(labels=trans_format(\"log10\", math_format()))") + 312 QString(" + scale_x_log10(labels=trans_format(\"log10\", math_format()))") +
@@ -310,7 +319,7 @@ bool Plot(const QStringList &amp;files, const File &amp;destination, bool show) @@ -310,7 +319,7 @@ bool Plot(const QStringList &amp;files, const File &amp;destination, bool show)
310 (p.major.size > 1 ? QString(", colour=factor(%1)").arg(p.major.header) : QString()) + 319 (p.major.size > 1 ? QString(", colour=factor(%1)").arg(p.major.header) : QString()) +
311 (p.minor.size > 1 ? QString(", linetype=factor(%1)").arg(p.minor.header) : QString()) + 320 (p.minor.size > 1 ? QString(", linetype=factor(%1)").arg(p.minor.header) : QString()) +
312 QString(", xlab=\"False Accept Rate\", ylab=\"False Reject Rate\") + geom_abline(alpha=0.5, colour=\"grey\", linetype=\"dashed\") + theme_minimal()") + 321 QString(", xlab=\"False Accept Rate\", ylab=\"False Reject Rate\") + geom_abline(alpha=0.5, colour=\"grey\", linetype=\"dashed\") + theme_minimal()") +
313 - ((p.major.smooth || p.minor.smooth) ? " + geom_errorbar(data=DET[seq(1, NROW(DET), by = 29),], aes(x=X, ymin=Y-ci, ymax=Y+ci), width=0.1, alpha=I(1/2))" : QString()) + 322 + ((p.major.smooth || p.minor.smooth) && p.confidence != 0 ? " + geom_errorbar(data=DET[seq(1, NROW(DET), by = 29),], aes(x=X, ymin=Y-ci, ymax=Y+ci), width=0.1, alpha=I(1/2))" : QString()) +
314 (p.major.size > 1 ? getScale("colour", p.major.header, p.major.size) : QString()) + 323 (p.major.size > 1 ? getScale("colour", p.major.header, p.major.size) : QString()) +
315 (p.minor.size > 1 ? QString(" + scale_linetype_discrete(\"%1\")").arg(p.minor.header) : QString()) + 324 (p.minor.size > 1 ? QString(" + scale_linetype_discrete(\"%1\")").arg(p.minor.header) : QString()) +
316 QString(" + theme(legend.position=%1)").arg(rocOpts.contains("legendPosition") ? "c"+QtUtils::toString(rocOpts.get<QPointF>("legendPosition")) : "'bottom'") + 325 QString(" + theme(legend.position=%1)").arg(rocOpts.contains("legendPosition") ? "c"+QtUtils::toString(rocOpts.get<QPointF>("legendPosition")) : "'bottom'") +