UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

37 lines 1.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Summarizer = void 0; exports.summarizedMeasurement2Csv = summarizedMeasurement2Csv; exports.summarizedMeasurement2CsvHeader = summarizedMeasurement2CsvHeader; exports.summarizeMeasurement = summarizeMeasurement; const arrays_1 = require("./collections/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