/ concept-collection / ephys_compression_tests
Sign in
concept-collection / ephys_compression_tests
ephys_compression_tests / web-ui / src / hooks / useBenchmarkChartData.ts
37 lines · 1.2 KBBlameHistoryRaw
1import { useMemo } from "react";
2import { BenchmarkResult } from "../types";
4export function useBenchmarkChartData(
5 results: BenchmarkResult[],
6 selectedDataset?: string | null,
7 selectedAlgorithm?: string | null,
8) {
9 return useMemo(() => {
10 if (selectedDataset) {
11 return results
12 .filter((row) => row.dataset === selectedDataset)
13 .map((row) => ({
14 algorithmOrDataset: row.algorithm,
15 compression_ratio: row.compression_ratio,
16 reference_compression_ratio: null,
17 encode_speed: row.encode_mb_per_sec,
18 decode_speed: row.decode_mb_per_sec,
19 }));
20 } else if (selectedAlgorithm) {
21 return results
22 .filter((row) => row.algorithm === selectedAlgorithm)
23 .map((row) => ({
24 algorithmOrDataset: row.dataset,
25 compression_ratio: row.compression_ratio,
26 reference_compression_ratio: Math.max(
27 ...results
28 .filter((r) => r.dataset === row.dataset)
29 .map((r) => r.compression_ratio),
30 ),
31 encode_speed: row.encode_mb_per_sec,
32 decode_speed: row.decode_mb_per_sec,
33 }));
34 }
35 return [];
36 }, [results, selectedDataset, selectedAlgorithm]);
moveopenescclose