Skip to content

Commit 40839b4

Browse files
authored
Merge pull request #14 from gaukhar-n/master
Add MTBench web page
2 parents 28b432d + 3391220 commit 40839b4

File tree

13 files changed

+3571
-303
lines changed

13 files changed

+3571
-303
lines changed
629 KB
Loading
183 KB
Loading
3.6 MB
Loading
850 KB
Loading
745 KB
Loading
Lines changed: 229 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,229 @@
1+
'use client'
2+
import data from "../data/data_leaderboard.json";
3+
import React from "react";
4+
import {
5+
Table,
6+
TableHeader,
7+
TableColumn,
8+
TableBody,
9+
TableRow,
10+
TableCell,
11+
getKeyValue,
12+
Spinner,
13+
} from "@heroui/react";
14+
import { useAsyncList } from "@react-stately/data";
15+
16+
// Define headers for each table
17+
const headers: { key: string; label: string }[] = [
18+
{ key: "model_name", label: "Model" },
19+
{ key: "stock_price_forecast_7_day_mae_ts", label: "Stock price prediction \n for 7 days under TS (MAE)" },
20+
{ key: "stock_price_forecast_7_day_mae_ts_w_text", label: "Stock price prediction for 7 days under TS+Text (MAE)" },
21+
{ key: "stock_price_forecast_7_day_mape_ts", label: "Stock price prediction for 7 days under TS (MAPE)" },
22+
{ key: "stock_price_forecast_7_day_mape_ts_w_text", label: "Stock price prediction for 7 days under TS+Text (MAPE)" },
23+
{ key: "stock_price_forecast_30_day_mae_ts", label: "Stock price prediction for 30 days under TS (MAE)" },
24+
{ key: "stock_price_forecast_30_day_mae_ts_w_text", label: "Stock price prediction for 30 days under TS+Text (MAE)" },
25+
{ key: "stock_price_forecast_30_day_mape_ts", label: "Stock price prediction for 30 days under TS (MAPE)" },
26+
{ key: "stock_price_forecast_30_day_mape_ts_w_text", label: "Stock price prediction for 30 days under TS+Text (MAPE)" },
27+
{ key: "temp_forecast_7_day_mse_ts", label: "Temp. prediction for 7 days under TS (MSE)" },
28+
{ key: "temp_forecast_7_day_mse_ts_w_text", label: "Temp. prediction for 7 days under TS+Text (MSE)" },
29+
{ key: "temp_forecast_7_day_mae_ts", label: "Temp. prediction for 7 days under TS (MAE)" },
30+
{ key: "temp_forecast_7_day_mae_ts_w_text", label: "Temp. prediction for 7 days under TS+Text (MAE)" },
31+
{ key: "temp_forecast_14_day_mse_ts", label: "Temp. prediction for 14 days under TS (MSE)" },
32+
{ key: "temp_forecast_14_day_mse_ts_w_text", label: "Temp. prediction for 14 days under TS+Text (MSE)" },
33+
{ key: "temp_forecast_14_day_mae_ts", label: "Temp. prediction for 14 days under TS (MAE)" },
34+
{ key: "temp_forecast_14_day_mae_ts_w_text", label: "Temp. prediction for 14 days under TS+Text (MAE)" },
35+
{ key: "stock_trend_predict_acc_7_day_3_way_ts", label: "Stock trend prediction for 7 days 3-way under TS (Acc)" },
36+
{ key: "stock_trend_predict_acc_7_day_3_way_ts_w_text", label: "Stock trend prediction for 7 days 3-way under TS+Text (Acc)" },
37+
{ key: "stock_trend_predict_acc_7_day_5_way_ts", label: "Stock trend prediction for 7 days 5-way under TS (Acc)" },
38+
{ key: "stock_trend_predict_acc_7_day_5_way_ts_w_text", label: "Stock trend prediction for 7 days 5-way under TS+Text (Acc)" },
39+
{ key: "stock_trend_predict_acc_30_day_3_way_ts", label: "Stock trend prediction for 30 days 3-way under TS (Acc)" },
40+
{ key: "stock_trend_predict_acc_30_day_3_way_ts_w_text", label: "Stock trend prediction for 30 days 3-way under TS+Text (Acc)" },
41+
{ key: "stock_trend_predict_acc_30_day_5_way_ts", label: "Stock trend prediction for 30 days 5-way under TS (Acc)" },
42+
{ key: "stock_trend_predict_acc_30_day_5_way_ts_w_text", label: "Stock trend prediction for 30 days 5-way under TS+Text (Acc)" },
43+
{ key: "temp_trend_predict_acc_past_ts", label: "Temp. trend prediction past under TS (Acc)" },
44+
{ key: "temp_trend_predict_acc_past_ts_w_text", label: "Temp. trend prediction past under TS+Text (Acc)" },
45+
{ key: "temp_trend_predict_acc_future_ts", label: "Temp. trend prediction future under TS (Acc)" },
46+
{ key: "temp_trend_predict_acc_future_ts_w_text", label: "Temp. trend prediction future under TS+Text (Acc)" },
47+
{ key: "stock_indicator_predict_mse_7_day_macd_ts", label: "MACD prediction for 7 days under TS (MSE)" },
48+
{ key: "stock_indicator_predict_mse_7_day_macd_ts_w_text", label: "MACD prediction for 7 days under TS+Text (MSE)" },
49+
{ key: "stock_indicator_predict_mse_7_day_bb_ts", label: "Bollinger Bands prediction for 7 days under TS (MSE)" },
50+
{ key: "stock_indicator_predict_mse_7_day_bb_ts_w_text", label: "Bollinger Bands prediction for 7 days under TS+Text (MSE)" },
51+
{ key: "stock_indicator_predict_mse_30_day_macd_ts", label: "MACD prediction for 30 days under TS (MSE)" },
52+
{ key: "stock_indicator_predict_mse_30_day_macd_ts_w_text", label: "MACD prediction for 30 days under TS+Text (MSE)" },
53+
{ key: "stock_indicator_predict_mse_30_day_bb_ts", label: "Bollinger Bands prediction for 30 days under TS (MSE)" },
54+
{ key: "stock_indicator_predict_mse_30_day_bb_ts_w_text", label: "Bollinger Bands prediction for 30 days under TS+Text (MSE)" },
55+
{ key: "temp_predict_max_mse_ts", label: "Temp. prediction max under TS (MSE)" },
56+
{ key: "temp_predict_max_mse_ts_w_text", label: "Temp. prediction max under TS+Text (MSE)" },
57+
{ key: "temp_predict_max_mae_ts", label: "Temp. prediction max under TS (MAE)" },
58+
{ key: "temp_predict_max_mae_ts_w_text", label: "Temp. prediction max under TS+Text (MAE)" },
59+
{ key: "temp_predict_min_mse_ts", label: "Temp. prediction min under TS (MSE)" },
60+
{ key: "temp_predict_min_mse_ts_w_text", label: "Temp. prediction min under TS+Text (MSE)" },
61+
{ key: "temp_predict_min_mae_ts", label: "Temp. prediction min under TS (MAE)" },
62+
{ key: "temp_predict_min_mae_ts_w_text", label: "Temp. prediction min under TS+Text (MAE)" },
63+
{ key: "temp_predict_diff_mse_ts", label: "Temp. prediction diff. under TS (MSE)" },
64+
{ key: "temp_predict_diff_mse_ts_w_text", label: "Temp. prediction diff. under TS+Text (MSE)" },
65+
{ key: "temp_predict_diff_mae_ts", label: "Temp. prediction diff. under TS (MAE)" },
66+
{ key: "temp_predict_diff_mae_ts_w_text", label: "Temp. prediction diff. under TS+Text (MAE)" },
67+
{ key: "news_stock_corr_acc_7_day_3_way", label: "News stock corr. for 7 days 3-way (Acc)" },
68+
{ key: "news_stock_corr_acc_7_day_5_way", label: "News stock corr. for 7 days 5-way (Acc)" },
69+
{ key: "news_stock_corr_acc_30_day_3_way", label: "News stock corr. for 30 days 3-way (Acc)" },
70+
{ key: "news_stock_corr_acc_30_day_5_way", label: "News stock corr. for 30 days 5-way (Acc)" },
71+
{ key: "news_driven_mcqa_acc_7_day_fin", label: "News driven MCQA for 7 days for Finance data (Acc)" },
72+
{ key: "news_driven_mcqa_acc_7_day_weather", label: "News driven MCQA for 7 days for Weather data (Acc)" },
73+
{ key: "news_driven_mcqa_acc_30_day_fin", label: "News driven MCQA for 30 days for Finance data (Acc)" },
74+
{ key: "news_driven_mcqa_acc_30_day_weather", label: "News driven MCQA for 30 days for Weather data (Acc)" }
75+
76+
];
77+
78+
const headers1: { key: string; label: string }[] = [
79+
{ key: "model_name", label: "Model" },
80+
{ key: "stock_price_forecast_7_day_mae_ts", label: "Stock price prediction \n for 7 days under TS (MAE)" },
81+
{ key: "stock_price_forecast_7_day_mae_ts_w_text", label: "Stock price prediction for 7 days under TS+Text (MAE)" },
82+
{ key: "stock_price_forecast_7_day_mape_ts", label: "Stock price prediction for 7 days under TS (MAPE)" },
83+
{ key: "stock_price_forecast_7_day_mape_ts_w_text", label: "Stock price prediction for 7 days under TS+Text (MAPE)" },
84+
{ key: "stock_price_forecast_30_day_mae_ts", label: "Stock price prediction for 30 days under TS (MAE)" },
85+
{ key: "stock_price_forecast_30_day_mae_ts_w_text", label: "Stock price prediction for 30 days under TS+Text (MAE)" },
86+
{ key: "stock_price_forecast_30_day_mape_ts", label: "Stock price prediction for 30 days under TS (MAPE)" },
87+
{ key: "stock_price_forecast_30_day_mape_ts_w_text", label: "Stock price prediction for 30 days under TS+Text (MAPE)" },
88+
{ key: "temp_forecast_7_day_mse_ts", label: "Temp. prediction for 7 days under TS (MSE)" },
89+
{ key: "temp_forecast_7_day_mse_ts_w_text", label: "Temp. prediction for 7 days under TS+Text (MSE)" },
90+
{ key: "temp_forecast_7_day_mae_ts", label: "Temp. prediction for 7 days under TS (MAE)" },
91+
{ key: "temp_forecast_7_day_mae_ts_w_text", label: "Temp. prediction for 7 days under TS+Text (MAE)" },
92+
{ key: "temp_forecast_14_day_mse_ts", label: "Temp. prediction for 14 days under TS (MSE)" },
93+
{ key: "temp_forecast_14_day_mse_ts_w_text", label: "Temp. prediction for 14 days under TS+Text (MSE)" },
94+
{ key: "temp_forecast_14_day_mae_ts", label: "Temp. prediction for 14 days under TS (MAE)" },
95+
{ key: "temp_forecast_14_day_mae_ts_w_text", label: "Temp. prediction for 14 days under TS+Text (MAE)" },
96+
];
97+
98+
const headers2: { key: string; label: string }[] = [
99+
{ key: "model_name", label: "Model" },
100+
{ key: "stock_trend_predict_acc_7_day_3_way_ts", label: "Stock trend prediction for 7 days 3-way under TS (Acc)" },
101+
{ key: "stock_trend_predict_acc_7_day_3_way_ts_w_text", label: "Stock trend prediction for 7 days 3-way under TS+Text (Acc)" },
102+
{ key: "stock_trend_predict_acc_7_day_5_way_ts", label: "Stock trend prediction for 7 days 5-way under TS (Acc)" },
103+
{ key: "stock_trend_predict_acc_7_day_5_way_ts_w_text", label: "Stock trend prediction for 7 days 5-way under TS+Text (Acc)" },
104+
{ key: "stock_trend_predict_acc_30_day_3_way_ts", label: "Stock trend prediction for 30 days 3-way under TS (Acc)" },
105+
{ key: "stock_trend_predict_acc_30_day_3_way_ts_w_text", label: "Stock trend prediction for 30 days 3-way under TS+Text (Acc)" },
106+
{ key: "stock_trend_predict_acc_30_day_5_way_ts", label: "Stock trend prediction for 30 days 5-way under TS (Acc)" },
107+
{ key: "stock_trend_predict_acc_30_day_5_way_ts_w_text", label: "Stock trend prediction for 30 days 5-way under TS+Text (Acc)" },
108+
{ key: "temp_trend_predict_acc_past_ts", label: "Temp. trend prediction past under TS (Acc)" },
109+
{ key: "temp_trend_predict_acc_past_ts_w_text", label: "Temp. trend prediction past under TS+Text (Acc)" },
110+
{ key: "temp_trend_predict_acc_future_ts", label: "Temp. trend prediction future under TS (Acc)" },
111+
{ key: "temp_trend_predict_acc_future_ts_w_text", label: "Temp. trend prediction future under TS+Text (Acc)" },
112+
];
113+
114+
const headers3: { key: string; label: string }[] = [
115+
{ key: "model_name", label: "Model" },
116+
{ key: "stock_indicator_predict_mse_7_day_macd_ts", label: "MACD prediction for 7 days under TS (MSE)" },
117+
{ key: "stock_indicator_predict_mse_7_day_macd_ts_w_text", label: "MACD prediction for 7 days under TS+Text (MSE)" },
118+
{ key: "stock_indicator_predict_mse_7_day_bb_ts", label: "Bollinger Bands prediction for 7 days under TS (MSE)" },
119+
{ key: "stock_indicator_predict_mse_7_day_bb_ts_w_text", label: "Bollinger Bands prediction for 7 days under TS+Text (MSE)" },
120+
{ key: "stock_indicator_predict_mse_30_day_macd_ts", label: "MACD prediction for 30 days under TS (MSE)" },
121+
{ key: "stock_indicator_predict_mse_30_day_macd_ts_w_text", label: "MACD prediction for 30 days under TS+Text (MSE)" },
122+
{ key: "stock_indicator_predict_mse_30_day_bb_ts", label: "Bollinger Bands prediction for 30 days under TS (MSE)" },
123+
{ key: "stock_indicator_predict_mse_30_day_bb_ts_w_text", label: "Bollinger Bands prediction for 30 days under TS+Text (MSE)" },
124+
{ key: "temp_predict_max_mse_ts", label: "Temp. prediction max under TS (MSE)" },
125+
{ key: "temp_predict_max_mse_ts_w_text", label: "Temp. prediction max under TS+Text (MSE)" },
126+
{ key: "temp_predict_max_mae_ts", label: "Temp. prediction max under TS (MAE)" },
127+
{ key: "temp_predict_max_mae_ts_w_text", label: "Temp. prediction max under TS+Text (MAE)" },
128+
{ key: "temp_predict_min_mse_ts", label: "Temp. prediction min under TS (MSE)" },
129+
{ key: "temp_predict_min_mse_ts_w_text", label: "Temp. prediction min under TS+Text (MSE)" },
130+
{ key: "temp_predict_min_mae_ts", label: "Temp. prediction min under TS (MAE)" },
131+
{ key: "temp_predict_min_mae_ts_w_text", label: "Temp. prediction min under TS+Text (MAE)" },
132+
{ key: "temp_predict_diff_mse_ts", label: "Temp. prediction diff. under TS (MSE)" },
133+
{ key: "temp_predict_diff_mse_ts_w_text", label: "Temp. prediction diff. under TS+Text (MSE)" },
134+
{ key: "temp_predict_diff_mae_ts", label: "Temp. prediction diff. under TS (MAE)" },
135+
{ key: "temp_predict_diff_mae_ts_w_text", label: "Temp. prediction diff. under TS+Text (MAE)" },
136+
];
137+
138+
const headers4: { key: string; label: string }[] = [
139+
{ key: "model_name", label: "Model" },
140+
{ key: "news_stock_corr_acc_7_day_3_way", label: "News stock corr. for 7 days 3-way (Acc)" },
141+
{ key: "news_stock_corr_acc_7_day_5_way", label: "News stock corr. for 7 days 5-way (Acc)" },
142+
{ key: "news_stock_corr_acc_30_day_3_way", label: "News stock corr. for 30 days 3-way (Acc)" },
143+
{ key: "news_stock_corr_acc_30_day_5_way", label: "News stock corr. for 30 days 5-way (Acc)" },
144+
{ key: "news_driven_mcqa_acc_7_day_fin", label: "News driven MCQA for 7 days for Finance data (Acc)" },
145+
{ key: "news_driven_mcqa_acc_7_day_weather", label: "News driven MCQA for 7 days for Weather data (Acc)" },
146+
{ key: "news_driven_mcqa_acc_30_day_fin", label: "News driven MCQA for 30 days for Finance data (Acc)" },
147+
{ key: "news_driven_mcqa_acc_30_day_weather", label: "News driven MCQA for 30 days for Weather data (Acc)" }
148+
];
149+
150+
function createSortableTable(headers: { key: string; label: string }[]) {
151+
return function SortableTableComponent() {
152+
const [isLoading, setIsLoading] = React.useState(true);
153+
type ModelItem = {
154+
model_name: string;
155+
[key: string]: any;
156+
}
157+
let list = useAsyncList<ModelItem>({
158+
async load({ }) {
159+
setIsLoading(false);
160+
return {
161+
items: data,
162+
};
163+
},
164+
165+
async sort({ items, sortDescriptor }) {
166+
return {
167+
items: items.sort((a, b) => {
168+
let first = a[sortDescriptor.column];
169+
let second = b[sortDescriptor.column];
170+
let cmp = (parseInt(first) || first) < (parseInt(second) || second) ? -1 : 1;
171+
172+
if (sortDescriptor.direction === "descending") {
173+
cmp *= -1;
174+
}
175+
176+
return cmp;
177+
}),
178+
};
179+
},
180+
});
181+
182+
return (
183+
<Table
184+
aria-label="Dynamic sortable table"
185+
classNames={{
186+
table: "min-h-[400px]",
187+
}}
188+
sortDescriptor={list.sortDescriptor}
189+
onSortChange={list.sort}>
190+
<TableHeader>
191+
{headers.map((h) => (
192+
<TableColumn key={h.key} allowsSorting className="whitespace-normal break-words text-sm max-w-[150px]">
193+
{h.label}
194+
</TableColumn>
195+
))}
196+
</TableHeader>
197+
<TableBody
198+
isLoading={isLoading}
199+
items={list.items}
200+
loadingContent={<Spinner label="Loading..." />}
201+
>
202+
{(item) => (
203+
204+
<TableRow key={item.model_name} className="hover:bg-white/10">
205+
{(columnKey) => (
206+
<TableCell className={
207+
columnKey === "model_name"
208+
? "sticky left-0 z-10 whitespace-nowrap overflow-hidden text-ellipsis max-w-[200px]"
209+
: ""}>
210+
{getKeyValue(item, columnKey)}
211+
</TableCell>
212+
)}
213+
</TableRow>
214+
)}
215+
</TableBody>
216+
</Table>
217+
);
218+
};
219+
}
220+
221+
// Create separate tables
222+
const SortableTable = createSortableTable(headers);
223+
const SortableTableTask1 = createSortableTable(headers1);
224+
const SortableTableTask2 = createSortableTable(headers2);
225+
const SortableTableTask3 = createSortableTable(headers3);
226+
const SortableTableTask4 = createSortableTable(headers4);
227+
228+
// Export all tables
229+
export { SortableTable, SortableTableTask1, SortableTableTask2, SortableTableTask3, SortableTableTask4 };
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { useState } from "react";
2+
import { SortableTable, SortableTableTask1, SortableTableTask2, SortableTableTask3, SortableTableTask4 } from "./sortable-tables";
3+
4+
function Table() {
5+
return (
6+
<div className="table-wrapper">
7+
<SortableTable />
8+
</div>
9+
);
10+
}
11+
12+
function Table1() {
13+
return (
14+
<div className="table-wrapper">
15+
<SortableTableTask1 />
16+
</div>
17+
);
18+
}
19+
20+
function Table2() {
21+
return (
22+
<div className="table-wrapper">
23+
<SortableTableTask2 />
24+
</div>
25+
);
26+
}
27+
28+
function Table3() {
29+
return (
30+
<div className="table-wrapper">
31+
<SortableTableTask3 />
32+
</div>
33+
);
34+
}
35+
36+
function Table4() {
37+
return (
38+
<div className="table-wrapper">
39+
<SortableTableTask4 />
40+
</div>
41+
);
42+
}
43+
44+
// Exporting all four tables
45+
export { Table, Table1, Table2, Table3, Table4 };

0 commit comments

Comments
 (0)