/ concept-collection / ephys_compression_tests
Sign in
concept-collection / ephys_compression_tests
ephys_compression_tests / web-ui / src / hooks / useBenchmarkChartData.ts
45 lines · 1.5 KBCodeBlameHistory
552a4baadd web-uiJeremy Magland 1import { useMemo } from "react";
5be77d1dev lossyJeremy Magland 2import { Algorithm, BenchmarkResult } from "../types";
552a4baadd web-uiJeremy Magland 3
4export function useBenchmarkChartData(
5 results: BenchmarkResult[],
5be77d1dev lossyJeremy Magland 6 algorithms: Algorithm[],
552a4baadd web-uiJeremy Magland 7 selectedDataset?: string | null,
8 selectedAlgorithm?: string | null,
9) {
10 return useMemo(() => {
11 if (selectedDataset) {
12 return results
13 .filter((row) => row.dataset === selectedDataset)
5be77d1dev lossyJeremy Magland 14 .map((row) => {
15 const algorithm = algorithms.find((a) => a.name === row.algorithm);
16 return {
17 algorithmOrDataset: row.algorithm,
18 compression_ratio: row.compression_ratio,
19 reference_compression_ratio: null,
20 encode_speed: row.encode_mb_per_sec,
21 decode_speed: row.decode_mb_per_sec,
22 rmse: row.rmse,
23 tags: algorithm?.tags || [],
24 };
25 });
552a4baadd web-uiJeremy Magland 26 } else if (selectedAlgorithm) {
27 return results
28 .filter((row) => row.algorithm === selectedAlgorithm)
29 .map((row) => ({
30 algorithmOrDataset: row.dataset,
31 compression_ratio: row.compression_ratio,
32 reference_compression_ratio: Math.max(
33 ...results
34 .filter((r) => r.dataset === row.dataset)
35 .map((r) => r.compression_ratio),
36 ),
37 encode_speed: row.encode_mb_per_sec,
38 decode_speed: row.decode_mb_per_sec,
5be77d1dev lossyJeremy Magland 39 rmse: row.rmse,
40 tags: [],
552a4baadd web-uiJeremy Magland 41 }));
42 }
43 return [];
5be77d1dev lossyJeremy Magland 44 }, [results, algorithms, selectedDataset, selectedAlgorithm]);
552a4baadd web-uiJeremy Magland 45}
moveopenescclose