spec: add extract utility functions for data analyzing results

This commit is contained in:
2024-07-26 07:52:53 +08:00
parent ae08b70b67
commit 58e0bf3e5b

View File

@@ -125,7 +125,25 @@ export interface SPECResultsTable {
description?: string, description?: string,
} }
export function parseSPECCSVResultsTable(data: string) { export const extract = (field: keyof SPECResultsTable) => (o: ParsedResult) => {
return Object.fromEntries(Object
.entries(o)
.filter(([_, b]) => b[field] !== '' && b[field] !== undefined && b.baseStatus === 'S')
.map(([a, b]) => [a, parseFloat(b[field]!)]));
};
export const extractBaseRatio = extract('baseRatio');
export const baseRatioFromPath = async (path: string) => {
const result = parseSPECCSVResultsTable((await fs.promises.readFile(path)).toString());
return extractBaseRatio(result);
};
export interface ParsedResult {
[key: string]: SPECResultsTable
}
export function parseSPECCSVResultsTable(data: string): ParsedResult {
const lines = data.split("\n"); const lines = data.split("\n");
let index = 0; let index = 0;
const eof = () => index >= lines.length; const eof = () => index >= lines.length;