@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
37 lines • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Summarizer = void 0;
exports.summarizedMeasurement2Csv = summarizedMeasurement2Csv;
exports.summarizedMeasurement2CsvHeader = summarizedMeasurement2CsvHeader;
exports.summarizeMeasurement = summarizeMeasurement;
const arrays_1 = require("./arrays");
class Summarizer {
config;
log;
constructor(config) {
this.config = config;
this.log = this.config.logger;
}
}
exports.Summarizer = Summarizer;
function summarizedMeasurement2Csv(a) {
return `${a.min},${a.max},${a.median},${a.mean},${a.std},${a.total}`;
}
const summarizedKeys = ['min', 'max', 'median', 'mean', 'std', 'total'];
function summarizedMeasurement2CsvHeader(prefix) {
return summarizedKeys.map(k => prefix ? `${prefix}-${k}` : k).join(',');
}
function summarizeMeasurement(data, totalNumberOfDataPoints) {
// just to avoid in-place modification
const sorted = [...data].sort((a, b) => a - b);
const min = sorted[0];
const max = sorted[sorted.length - 1];
const median = sorted[Math.floor(sorted.length / 2)];
const total = (0, arrays_1.arraySum)(sorted);
const length = totalNumberOfDataPoints ?? sorted.length;
const mean = total / length;
// sqrt(sum(x-mean)^2 / n)
const std = Math.sqrt((0, arrays_1.arraySum)(sorted.map(x => (x - mean) ** 2)) / length);
return { min, max, median, mean, std, total };
}
//# sourceMappingURL=summarizer.js.map