diff --git a/lib/src/main/java/edu/stanford/futuredata/macrobase/analysis/summary/aplinear/APLExplanation.java b/lib/src/main/java/edu/stanford/futuredata/macrobase/analysis/summary/aplinear/APLExplanation.java index b9c37e873..fa28b8398 100644 --- a/lib/src/main/java/edu/stanford/futuredata/macrobase/analysis/summary/aplinear/APLExplanation.java +++ b/lib/src/main/java/edu/stanford/futuredata/macrobase/analysis/summary/aplinear/APLExplanation.java @@ -113,13 +113,13 @@ public DataFrame toDataFrame(final List attrsToInclude) { } final Map metricValsInRow = result.getMetricsAsMap(); - for (String colName : doubleResultsByCol.keySet()) { + for (String colName : metricValsInRow.keySet()) { doubleResultsByCol.get(colName)[i] = metricValsInRow.get(colName); } final Map aggregateValsInRow = result .getAggregatesAsMap(aggregateNames); - for (String colName : doubleResultsByCol.keySet()) { + for (String colName : aggregateNames) { doubleResultsByCol.get(colName)[i] = aggregateValsInRow.get(colName); } ++i; @@ -127,11 +127,16 @@ public DataFrame toDataFrame(final List attrsToInclude) { // Generate DataFrame with results final DataFrame df = new DataFrame(); - for (String attr : stringResultsByCol.keySet()) { - df.addColumn(attr, stringResultsByCol.get(attr)); + for (String colName : stringResultsByCol.keySet()) { + df.addColumn(colName, stringResultsByCol.get(colName)); } - for (String attr : doubleResultsByCol.keySet()) { - df.addColumn(attr, doubleResultsByCol.get(attr)); + // Add metrics first, then aggregates (otherwise, we'll get arbitrary orderings) + for (QualityMetric metric : metrics) { + df.addColumn(metric.name(), doubleResultsByCol.get(metric.name())); + } + for (String colName : aggregateNames) { + // Aggregates are capitalized for some reason + df.addColumn(colName.toLowerCase(), doubleResultsByCol.get(colName)); } return df; }