import type { EvaluationResultsDocumentWide, EvaluationRun } from "@/types" const EvaluationMetrics = { CER_MEAN: 'cer_mean', CER_MEDIAN: 'cer_median', WER: 'wer', PAGES_PER_MINUTE: 'pages_per_minute', CER_STANDARD_DEVIATION: 'cer_standard_deviation', WALL_TIME: 'wall_time', CPU_TIME: 'cpu_time' } function getDefaultMaxValueOfMetric(metric: string): number { if (metric === EvaluationMetrics.CER_MEAN) return 2 if (metric === EvaluationMetrics.CER_MEDIAN) return 2 if (metric === EvaluationMetrics.CER_STANDARD_DEVIATION) return 2 if (metric === EvaluationMetrics.WER) return 1 if (metric === EvaluationMetrics.WALL_TIME) return 100 if (metric === EvaluationMetrics.PAGES_PER_MINUTE) return 100 if (metric === EvaluationMetrics.CPU_TIME) return 100 else return 1 } function getMaxValueByMetric(metric: keyof EvaluationResultsDocumentWide, runs: EvaluationRun[] = []): number { const values = runs.map((run) => { const value = run.evaluation_results.document_wide[metric] return Array.isArray(value) ? Math.max(...value) : value ?? 0 }) ?? [] return Math.max(...values) } function isHigherPositive(metric: keyof EvaluationResultsDocumentWide): boolean { if (metric === EvaluationMetrics.CER_MEAN) return false if (metric === EvaluationMetrics.CER_MEDIAN) return false if (metric === EvaluationMetrics.CER_STANDARD_DEVIATION) return false if (metric === EvaluationMetrics.WER) return false if (metric === EvaluationMetrics.WALL_TIME) return false if (metric === EvaluationMetrics.PAGES_PER_MINUTE) return true if (metric === EvaluationMetrics.CPU_TIME) return false return false } export { EvaluationMetrics, getMaxValueByMetric, getDefaultMaxValueOfMetric, isHigherPositive }