Team Ai
Datasetpublic

ZZoutian/figure2data-database-v2

figure2data databasev2 — 40K v6 合成科研图表数据集(最终交付版) 生成日期:2026-09-17 生成器:generator 1.6.0 / dataset_generation_revision v6(含两次 hotfix) 规模:40,000 样本(10 图族 / 33 亚型;area、matrix 冻结不生成,set_relation 已删除) 目录结构 databasev2/ ├── figure2data.sqlite3 # 主数据库(2.0 GB:40,000 samples / 280,000 documents) ├── schema/ # sqlite schema ├── shards/ # 数据资产(shard = (样本序号-1)//1000) │ └── shard_000 .. shard_039/ │ ├── images/ # PNG… See the full description on the dataset page: https://huggingface.co/datasets/ZZoutian/figure2data-database-v2.

sourceHugging Faceupdated 24d agoView on Hugging Face
0likes6.3kdownloads
test_duplicate_gate.py63 linesDownload Raw Back to tests
1"""§52.8 Duplicate Test — 注入相同 image → exact duplicate gate 捕获。"""2 3from __future__ import annotations4 5import json6 7from databasev1.build import cmd_generate, cmd_plan, load_config8from databasev1.storage import paths as P9from databasev1.storage.staging import read_completed10from databasev1.validation.duplicate_gate import check11 12 13def _seed_staging(tmp_staging, n=6):14    cfg = dict(load_config())15    cfg["target_n"] = 4016    cmd_plan(cfg)17    stats = cmd_generate(cfg, shard_ids=[0], limit=n, workers=2)18    assert stats["generated"] == n19    return cfg20 21 22def test_no_duplicates_in_fresh_run(tmp_staging):23    _seed_staging(tmp_staging, 6)24    report = check([0])25    assert report["errors"] == []26    assert report["duplicate_sample_ids"] == {}27    assert report["duplicate_image_sha256"] == {}28    assert report["n_records"] == 629 30 31def test_injected_duplicate_image_is_caught(tmp_staging):32    _seed_staging(tmp_staging, 6)33    recs = read_completed(0)34    # 注入:把 recs[1] 的 image 复制为 recs[3] 的 image(相同 SHA 记录)35    img1 = P.image_path(0, recs[1]["sample_id"])36    img3 = P.image_path(0, recs[3]["sample_id"])37    img3.write_bytes(img1.read_bytes())38    # 同步 completed 记录的 sha39    lines = []40    for line in P.shard_completed_path(0).read_text().splitlines():41        rec = json.loads(line)42        if rec["sample_id"] == recs[3]["sample_id"]:43            rec["image_sha256"] = recs[1]["image_sha256"]44        lines.append(json.dumps(rec, ensure_ascii=False, sort_keys=True))45    P.shard_completed_path(0).write_text("\n".join(lines) + "\n")46 47    report = check([0])48    assert report["duplicate_image_sha256"], "duplicate image SHA must be detected"49    assert recs[1]["image_sha256"] in report["duplicate_image_sha256"]50    assert report["errors"], "gate must flag duplicates as errors"51 52 53def test_injected_duplicate_sample_id_is_caught(tmp_staging):54    _seed_staging(tmp_staging, 5)55    recs = read_completed(0)56    # 注入一条重复 sample_id 记录57    with open(P.shard_completed_path(0), "a", encoding="utf-8") as f:58        dup = dict(recs[0])59        f.write(json.dumps(dup, ensure_ascii=False, sort_keys=True) + "\n")60    report = check([0])61    assert report["duplicate_sample_ids"], "duplicate sample_id must be detected"62    assert recs[0]["sample_id"] in report["duplicate_sample_ids"]63 
ZZoutian/figure2data-database-v2 · Team Ai