Spaces:
Running
Running
File size: 1,852 Bytes
bfe13e2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | """Build a compact UI payload from the independently hashed full result snapshot."""
from __future__ import annotations
import datetime
import hashlib
import json
from pathlib import Path
ROOT = Path(__file__).resolve().parent
def build() -> None:
source = ROOT / 'data.json'
data = json.loads(source.read_text())
rows = data['dataset_results']
fields = {'datasets': 'dataset', 'scopes': 'scope', 'runtimes': 'runtime',
'families': 'family', 'configurations': 'algorithm_variant'}
tables = {key: sorted({r[field] for r in rows}) for key, field in fields.items()}
indices = {key: {v:i for i,v in enumerate(values)} for key,values in tables.items()}
compact = []
for r in rows:
compact.append([*(indices[key][r[field]] for key,field in fields.items()),
r['compression_rate'], r['compression_time_ns_per_point'],
r['decompression_time_ns_per_point'], r['original_size_bytes'],
r['compressed_size_bytes']])
payload = {key: data[key] for key in ('schema_version','benchmark','coverage','datasets','methods','scopes','source','paper_table3')}
payload['exported_at'] = datetime.datetime.now(datetime.timezone.utc).isoformat()
payload['source_data_sha256'] = hashlib.sha256(source.read_bytes()).hexdigest()
payload['record_tables'] = tables
payload['compact_records'] = compact
output = ROOT / 'ui-data.json'
output.write_text(json.dumps(payload, ensure_ascii=False, separators=(',', ':'), allow_nan=False)+'\n')
print(json.dumps({'file':output.name,'records':len(rows),'bytes':output.stat().st_size,
'source_data_sha256':payload['source_data_sha256'],
'ui_sha256':hashlib.sha256(output.read_bytes()).hexdigest()}))
if __name__ == '__main__':
build()
|