XinMatch 参考物相库(.xinDB v3 格式)的构建代码、格式规范与发布产物。
本仓库只放代码与文档;数据库本体以 Releases 里的压缩包分发 (单库 68 MB / 87 MB / 1.3 GB,不入 git 历史)。数据源为 Crystallography Open Database (COD) 及其预测/理论子库 PCOD / TCOD,本仓库不做结构精修、不改写原始 CIF,只做反射计算与索引打包。
姊妹仓库 PolyXRD-DataBase 发布的是同源数据的 polyDB 格式(PolyXRD 用)。两种格式口径不同,不可互换(见 §2)。
| 项 | 约定 |
|---|---|
| 数据库在哪里构建 | 本仓库 XinMatch-DataBase(不再散落在其它 checkout)。 |
| 构建所需 CIF 在哪里 | 上级目录的 sync-COD:D:\Project\XRD\sync-COD(可用 XRD_DATA_ROOT 覆盖)。本仓库不携带原始 CIF。 |
| 产物默认位置 | <本仓库>/data/<Kind>-<YYYYMMDD>.xinDB;--out 最高优先,XINMATCH_XINDB_DIR 仅显式覆盖。 |
| 支持范围 | 6 个库:COD / PCOD / TCOD × Inorg(无机子集)/ Full(全库)。 |
| 完整操作手册 | docs/构建与验收手册.md(构建矩阵、验收命令、发布检查清单、故障排查)。 |
一条链:sync-COD(CIF)→ ①scan_inorg(仅 Inorg 需要)→ ②build(本仓库 data/)→ ③validate → ④accept/专项复核。
本仓库现在支持 6 个库(
COD/PCOD/TCOD × Inorg/Full)。20261020这次 Release 实际发布的是 三个 Inorg 库(下表的 COD/PCOD/TCOD-Inorg);三个*-Full库已可用同一套命令构建 (见 §3.3 与构建手册),但体量与耗时是小时级,尚未纳入本次 Release。
| 库 | entry_id 段 | 相数 | 反射数 | 块数 | 元素 | 解压后 | zip |
|---|---|---|---|---|---|---|---|
| COD-Inorg | 96-100-* |
78,036 | 9,394,774 | 20 | 96 种 | 118,710,272 B(113.2 MiB) | 87.2 MiB(91,484,834 B) |
| PCOD-Inorg | 96-210-* |
1,061,953 | 159,274,265 | 260 | 19 种 | 1,776,353,280 B(1694.1 MiB) | 1.35 GiB(1,447,251,707 B) |
| TCOD-Inorg | 96-110-* |
46,846 | 5,874,790 | 12 | 91 种 | 71,352,320 B(68.0 MiB) | 54.1 MiB(56,694,762 B) |
| 合计 | — | 1,186,835 | 174,543,829 | 292 | — | 1.83 GiB | ≈1.52 GiB |
- 三个库互不包含,按需装(XinMatch 支持多库挂载)。COD 实验库是日常交互检索的主力; PCOD(GRINSP 预测)与 TCOD(理论)用于"实验库查不到时兜底"。
- 命名里的
20261020是源数据快照日(meta.data_date),不是构建日; 构建时刻见meta.build_time(COD 2026-10-21 17:25、TCOD 2026-10-22 23:29、PCOD 2026-10-22 23:46)。 - 分发版全部
journal_mode=DELETE,无-wal/-shm侧车,可直接放只读介质 (NAS 只读共享、光盘镜像)而不必担心"读也要写权限"。 - 校验值见 Release 附带的
SHA256SUMS.txt。
unzip COD-Inorg-20261020.xinDB.zip # 得到 COD-Inorg-20261020.xinDB
python -m tools.validate_xindb COD-Inorg-20261020.xinDB # 可选:自检 25 项本机已把三个库放在仓库的
data/下(data/COD-Inorg-20261020.xinDB等,不入 git), XinMatch 的库注册表~/.xinmatch/libraries.json已指向该目录。
⚠️ 文件名必须是<library_kind>-<data_date>.xinDB,否则validate_xindb的M3.identity会判 FAIL(它拿文件名和meta对账)。改名后重新建库即可,不必修 meta。
2026-10 修复了两类「假峰相」:2θ=180° 边界(d=λ/2)反射被浮点舍入放进峰表 + LP 发散导致整谱塌缩;
gemmi 读不到晶胞时用默认占位晶胞算出 d=1.0 假峰。用修复后的引擎重建三个 Inorg 库,
源快照仍为 20261020(meta.data_date 不变)。重建前的旧库曾放在 data/_prev/ 做逐条目对比,
验收完成后已于 2026-11-04 删除(对比结果保留在验收报告中):
| 库 | 相数 | 反射数 | 体积(字节) | SHA-256(前 16) | 验收 |
|---|---|---|---|---|---|
| COD-Inorg(重建) | 78,035 | 9,395,681 | 118,640,640(113.1 MiB) | 7C08B34DCACA9BAC… |
validate 0F/1W(30 项);accept 0F/1W;7 条坏相修复、1 条无晶胞相剔除 |
| TCOD-Inorg(重建) | 46,846 | 5,874,790 | 71,352,320(68.0 MiB) | 8F2A25D583B577A7… |
validate 0F/1W(29 项);accept 0F/1W;与旧库逐条目 (d,i) 完全相同 |
| PCOD-Inorg(重建) | 1,061,953 | 159,275,318 | 1,777,357,376(1694.1 MiB) | ABB7EC8C1E68CD6F… |
validate 0F/1W(29 项);accept 0F/1W;7 条坏相修复;17/1,061,953 条载荷变化 |
| TCOD-Full(新库) | 361,701 | 53,099,238 | 623,173,632(594.3 MiB) | 36838FBE1F18EDBF… |
validate 0F/2W(29 项);accept 0F/1W;与 TCOD-Inorg 公共相 46,846/46,846 逐字节相同;自重召回 10/10 |
| COD-Full(新库) | 532,038 | 77,458,154 | 922,120,192(879.4 MiB) | E217F28FA03755A1… |
validate 0F/2W(30 项);accept 0F/2W(20 项);与 COD-Inorg 公共相 78,035/78,035 逐字节相同;自重召回 10/10 |
| MP(外部库) | 155,201 | 20,900,193 | 251,633,664(240.0 MiB) | 26D7A9BED83A57C0… |
validate 0F/1W(29 项);accept 0F/1W(19 项);id 集合与归档 155,201 个 mp-id 完全相等;自重召回 Top-1/Top-5 20/20 |
PCOD-Full 不构建:PCOD 归档 1,061,962 条 CIF 全部为无机(manifest
is_inorg=1100%), 与PCOD-Inorg实质等价(原始归档仅差 2 个未入库 CIF),按决定跳过。
-
MP 外部库:
data/MP-20261031.xinDB(Materials Project,155,201 相,id 为原生mp-<n>,tier=2计算结构);XinMatch 通过「添加外部库」挂载。构建/验收见docs/MP-库构建与验收.md, 发布版20261031-mp(zip +SHA256SUMS.txt)。 -
验收细节、坏相逐条清单与前后对比见
docs/ACCEPTANCE-20261101-rebuild.md。 -
Release 已发布:
20261020-rebuild(2026-11-04)含 5 个库的 zip +SHA256SUMS.txt;发布说明docs/release-notes-20261104.md。打包命令:python -m tools.package_release --out _release\<date>(手册 §5)。 -
重建前的
data/_prev/旧库(COD 113 MB + TCOD 68 MB + PCOD 1.7 GB)已于 2026-11-04 删除;旧20261020Release(含三个含坏相的 Inorg zip)也已删除,仅保留本重建版 Release。
单文件 SQLite,把"预筛矩阵"和"全反射表"分开存,反射数据只存一份:
COD-Inorg-20261020.xinDB
├── meta 自描述 key/value(峰口径、建库参数、追溯)
├── entries 每相一行(化学式/空间群/晶胞/密度/元素 + CSR 偏移)
├── peak_chunks 列式反射块(每 4096 相一块)
└── element_inv 元素倒排(element → 0 起相序号,uint32 数组)
| 段 | 形状 | 类型 | 用途 |
|---|---|---|---|
top_d/top_i |
n × 32 |
<f4 |
预筛:与测量峰窗口做 NumPy 交叠,只剪枝不排序 |
all_d/all_i |
Σpeak_n(CSR) |
<f4 |
打分:候选相的全部反射 |
element_inv.eids |
变长 | <u4 |
升序去重、0 起相序号 |
寻址铁律:entries.rowid 显式从 0 写入 = 0 起相序号;element_inv.eids 与
peak_chunks 块号都基于它,不能用 entry_id 反推。
完整字段级规范见 docs/xinDB格式规范-v3.md。
CuKa1-1.5406-d0.7703-30.0-merge-mult-DW-norm1000
λ=1.5406 Å(Cu Kα1)|d 0.7703–30.0 Å|等价反射按 2θ 合并(含多重性)|
含 Debye-Waller(B = 8π²U_iso,逐位点)|强度归一 1000|每相最多 150 条反射|预筛宽 32
| xinDB(本仓库) | polyDB(PolyXRD-DataBase) | |
|---|---|---|
| 容器 | 单文件 SQLite | 目录(8 个段文件 + mmap) |
| d 范围 | 0.7703–30 Å | 1.0–26 Å(2θ 5–100.76°) |
| 温度因子 | 有(Debye-Waller) | 无 |
| 每相峰数 | 150 | 100(按强度取前 K) |
| 定位 | 检索 + 精修一体化 | GUI 交互检索 |
同一份 CIF 在两个库里算出的绝对强度体系不同。混用会得到系统性偏差, 不要拿 xinDB 的强度去校验 polyDB,反之亦然。
上面那条口径描述的是由 CIF 算峰的库(COD / PCOD / TCOD / MP),它们的
meta.peak_origin 缺省为 computed。ICDD PDF-2 这类实测卡片库不是算出来的,
落库时刻意不套这条口径:
| meta | 计算库 | 实测库(PDF-2) |
|---|---|---|
peak_origin |
computed(缺省) |
observed |
peak_convention |
CuKa1-1.5406-…-norm1000 |
observed-ICDD-PDF2-2004-norm1000 |
| 强度尺度 | norm-1000 | 同样是 norm-1000(否则两类库的打分权重不可比) |
| NULL 晶胞 / 峰数 >150 | 构建缺陷 | 数据事实 |
读取侧不需要第二个 reader:reader_v3 只认 schema_version == 3。建库工具
tools/build_pdf2_xindb.py,ICDD 商品数据不进本仓库、不进 Release,
详见 docs/PDF2-库构建与验收.md。
| 依赖 | 要求 | 说明 |
|---|---|---|
| Python | 3.10+ | 实测 3.10.11 |
| numpy | 必需 | 反射计算与列式打包 |
| gemmi | 必需 | CIF 解析(peak_compute 硬依赖) |
| 磁盘 | ≈ 2× 库体积 | PCOD 库 1.7 GB,构建峰值约 4 GB |
| 内存 | 8 GB 级 | 分块写入,不吃满反射表 |
pip install numpy gemmi代码不下载数据。链路是:原始归档 → 无机子集 → .xinDB。
源数据不在本仓库,2026-10-23 起统一放在 D:/Project/XRD/sync-COD(与
PolyXRD-DataBase 共用,
数据侧工具与布局说明见 PolyXRD/sync-COD):
D:/Project/XRD/sync-COD/ ← 数据根,可用环境变量 XRD_DATA_ROOT 覆盖
├── COD/ 535,166 个 CIF # 全库原始归档(层级 3)
├── PCOD/ 1,061,964 个 CIF # GRINSP 预测(层级 2)
├── TCOD/ 362,294 个 CIF # 理论(层级 3,8 位 id)
├── inorg_cif/COD|PCOD|TCOD/ # ← 第 ① 步产物:判为无机的 CIF 副本(79,198 / 1,061,962 / 46,943)
└── inorg_manifest.sqlite # ← 第 ① 步产物:每文件一行清单(1,959,421 行,id_clash=0)
第 ① 步(无机判定 = "不含 C,或含 C 但不含 H" + 复制 + 清单):
python tools/scan_inorg.py --workers 6 # 缺省就地读写上面的数据根
XRD_DATA_ROOT=/other/root python tools/scan_inorg.py --workers 6 # 换盘时覆盖- 判据、id 偏移(PCOD +2e7 / TCOD +1e8)与本仓库已发布的三库逐条一致(脚本原样沿用)。
- 已发布库用的
inorg_cif/现状就在D:\Project\XRD\sync-COD\inorg_cif\(1,188,103 个 CIF, 与 polyDB 共用)。本仓库不带这批数据,也不必带 —— 只读引用即可。 - 建库时
--cif-root缺省指向xinmatch/core/db/cif_scan.py的DEFAULT_INORG_*_ROOT, 后者由XRD_DATA_ROOT推导(缺省即D:\Project\XRD\sync-COD\inorg_cif\*)。 换机器用环境变量或--cif-root指过去,不必改代码。
python -m tools.build_cod_xindb 是唯一构建入口:--source {COD,PCOD,TCOD} × --set {inorg,full},
CIF 根 / library_kind / id 偏移自动推导;tools/build_cod_inorg_xindb.py 是它的薄兼容包装。
# 三个无机库(交互检索默认库,体积小、构建快)
python -m tools.build_cod_xindb --source COD --set inorg --data-date 20261020 --workers 14 -v
python -m tools.build_cod_xindb --source PCOD --set inorg --data-date 20261020 --workers 14 -v
python -m tools.build_cod_xindb --source TCOD --set inorg --data-date 20261020 --workers 14 -v
# 三个全库(exhaustive reference;耗时小时级,见手册 §3.6)
python -m tools.build_cod_xindb --source COD --set full --data-date 20261020 --workers 14 -v
python -m tools.build_cod_xindb --source PCOD --set full --data-date 20261020 --workers 14 -v
python -m tools.build_cod_xindb --source TCOD --set full --data-date 20261020 --workers 14 -v- 输出默认
<repo>/data/<kind>-<data_date>.xinDB;--out指定任意路径,XINMATCH_XINDB_DIR仅显式覆盖。 --limit N先试产(永远先跑切片并 validate 全绿再跑全量);--resume断点续跑(== 一次跑完,已验证);--start从指定号段起;--workers与输出无关(1 vs 2 逐字节一致,有回归)。--workers用 14(本机 8C/16T 真实全库实测最优):TCOD 46,846 相 15.2 min(旧实现 14 workers 为 16.9 min); COD 用 8 workers 跑 61.6 min,反而略慢于历史 14 workers 的 58 min —— 500 相切片基准会低估多 worker 的收益, 不要据此把 workers 降到 8。- 构建热路径用
build_pipeline.compute_phase(),每个 CIF 只解析一次(旧实现 3 次解析 + 2 次结构构建); 结构因子分块按原子数自适应(256–8192 行),两项优化输出逐位不变,整库吞吐约 +10–15%(详见手册 §3.7)。 - 源码默认
max_peaks=150、dmin=0.7703(= λ/2),要改峰口径请同时改peak_compute.PEAK_CONVENTION,否则meta与实际不符、校验器会拦。 --kind full|inorg仅为 COD 的向后兼容别名(与--set同给会报错)。
| 库 | 相数 | 反射数 | 平均峰/相 | 文件 | 构建耗时(14 workers 基准) |
|---|---|---|---|---|---|
| COD-Inorg | 78,035 | 9,395,681 | 120.4(min 2 / max 150) | 113.1 MiB | 61.6 min(--workers 8;14 workers 应更快) |
| PCOD-Inorg | 1,061,953 | 159,275,318 | 150.0(min 20 / max 150) | 1694.1 MiB | 13.3 h(旧实现 12.7 h;期间有外部任务抢占) |
| TCOD-Inorg | 46,846 | 5,874,790 | 125.4(min 3 / max 150) | 68.0 MiB | 15.2 min(旧实现 16.9 min) |
| TCOD-Full | 361,701 | 53,099,238 | 146.8(min 3 / max 150) | 594.3 MiB | 12.1 h(499.3 相/分钟,14 workers) |
| COD-Full | 532,038 | 77,458,154 | 145.6(min 1 / max 150) | 879.4 MiB | 36.4 h(243.7 相/分钟,14 workers) |
| MP(外部库) | 155,201 | 20,900,193 | 134.7(min 8 / max 150) | 240.0 MiB | 9.0 min(17,318 相/分钟,14 workers) |
旧实现单进程约 1,590 相/分钟(COD 切片);2026-10 的单次解析 + 自适应分块优化后整库吞吐约 +10–15%, 详见
docs/构建与验收手册.md§3.7。
python -m tools.validate_xindb data/COD-Inorg-20261020.xinDB --json tmp/validate.json
python -m tools.validate_xindb data/PCOD-Inorg-20261020.xinDB --json tmp/validate-pcod.json
python -m tools.validate_xindb data/COD-Inorg-20261020.xinDB --all-chunks # 发布前全块解码只读、只用公开 schema,判据组:S 表/索引齐全,M meta 完整且与文件名一致,
C 块记账(Σpeak_n = Σn_peaks = entry_count、块数 = ceil(N/4096)、peak_off 连续),
E 晶胞物理量 / 元素非空 / n_peaks ≤ 150 / E5 单峰坏相(180° 边界、占位晶胞) / E6 空相,
P 抽样或全块解码 + norm-1000 + 零填充 + top⊆all,X 元素倒排值域/升序/自洽。
发布前另跑 tools/accept_xindb.py(6 库通用的来源/载荷/坏相验收)与两份专项复核:
python -m tools.accept_xindb data/COD-Inorg-20261020.xinDB \
--manifest D:/Project/XRD/sync-COD/inorg_manifest.sqlite --json tmp/accept.json
python -m tools._compare_xindb_peaks.py <旧库> <新库> # 只改元数据没动物理
python -m tools._verify_resume_equivalence # --resume 等价于一次跑完✅ 2026-11-01/02 已用修复后的引擎重建三个 Inorg 库: COD 8 条坏相全部清除(7 恢复真峰、1 条无晶胞相剔除,相数 78,036→78,035,9,395,681 反射); PCOD 7 条坏相全部清除(159,275,318 反射,仅 17/1,061,953 条载荷变化); TCOD 无坏相且峰载荷逐字节不变。三库
validate_xindb --all-chunks与accept_xindb均 0 FAIL。 TCOD-Full 与 COD-Full 均已建成并验收:TCOD-Full 361,701 相 / 53,099,238 反射; COD-Full 532,038 相 / 77,458,154 反射(36.4 h);两者与对应 Inorg 库的公共相逐字节相同。 更早的20261020Release(COD 8 / PCOD 7 条坏相)已于 2026-11-04 删除,仅保留重建版20261020-rebuild。 若手头仍有旧的 Inorg zip,请勿使用,改用重建版。 详见docs/ACCEPTANCE-20261101-rebuild.md。
.
├── _atomic_scattering_params.json Cromer-Mann 系数(fastxrd 按 tools/../ 找它)
├── data/ **本地产物目录**(不入仓):重建后 5 库(3 Inorg + 2 Full)+ 构建日志
├── pytest.ini tests/ 工具链回归测试(合成 CIF/归档,不依赖 1.8 GiB 真实库)
├── tmp/ 本地试产/bench/验收 JSON(不入仓,.gitignore)
├── xinmatch/ **构库子集**(完整程序见 PolyXRD/XinMatch)
│ ├── __init__.py 空壳,避免把 scipy/GUI 拖进构建链路
│ └── core/db/
│ ├── cif_meta.py CIF 元数据提取(化学式/空间群/晶胞/密度/元素)
│ ├── cif_scan.py CIF 归档扫描 + 六库源注册表(SOURCE/SUBSET/id 偏移)
│ ├── peak_compute.py 反射计算 + 峰口径常量(含 Debye-Waller / 边界与占位胞修复)
│ ├── build_pipeline.py 构建热路径:compute_phase() 单次解析(meta+峰表)
│ ├── schema_v3.py v3 DDL / 必需表 / 必需 meta 键
│ ├── writer_v3.py 分块列式写入器 + element_inv 重建
│ └── data/atomic_scattering_params.json Cromer-Mann 系数(99 元素)
├── tools/ 四步链路,索引见 tools/README.md
│ ├── scan_inorg.py ① 无机分类 + 副本 + 清单(XRD_DATA_ROOT 决定根目录)
│ ├── cif_common.py ① 的判据实现(parse_elements / is_inorganic / formula_mass)
│ ├── fastcif.py fastxrd.py ① 依赖的 CIF 解析 / 反射计算
│ ├── build_cod_xindb.py ② **唯一构建入口**:--source × --set(6 库)+ resume
│ ├── build_cod_inorg_xindb.py ② 薄兼容包装(默认 inorg)
│ ├── _bench_build.py ② 构建吞吐基准(旧两步 vs 单次解析、workers/chunksize)
│ ├── validate_xindb.py ③ 只读结构验收器(S/M/C/E/P/X,含 E5/E6)
│ ├── accept_xindb.py ④ 6 库通用验收(id 号段/来源/元素/载荷/坏相)
│ ├── _compare_xindb_peaks.py ④ 峰载荷逐块比对(证明只改元数据没动物理)
│ └── _verify_resume_equivalence.py ④ 证明 --resume 等价于一次跑完
└── docs/
├── 构建与验收手册.md **构建/验收/发布检查清单(权威入口)**
└── xinDB格式规范-v3.md 字段级规范(容器/寻址/各段/meta/校验)
xinmatch/ 是裁剪子集:只保留构库用到的模块,__init__.py 换成空壳
(完整版会 import scipy 等,构库不需要)。其余检索/精修/GUI 模块见完整版仓库。
不入仓(.gitignore):data/ *.xinDB *.db *.sqlite tmp/ _release/ __pycache__/。
本机 data/ 当前放着重建后的 5 个库(COD-Inorg 113.1 MB / TCOD-Inorg 68.0 MB / PCOD-Inorg 1694.1 MB /
TCOD-Full 594.3 MB / COD-Full 879.4 MB)与 data/_build-*.log;data/_prev/ 旧库已于 2026-11-04 删除。
| 项 | 现状 | 影响 |
|---|---|---|
| 重建前旧库的坏相 | 旧 20261020 Release:COD 8 条、PCOD 7 条、TCOD 0 条 |
用旧峰引擎构建;2026-11-01/02 重建后三个 Inorg 库均已 0 条。旧 Release 及其 Inorg zip 已于 2026-11-04 删除,仅保留重建版 |
| 半塌缩边界相(WARN) | COD 2,251 / PCOD 5,598(重建后)/ TCOD 1,670 条:最强线落在 d≈λ/2(2θ→180°),其余峰存在(强度和 ≥5/1000) | 真实反射 + LP 在 180° 发散导致的峰口径边缘现象,不是假峰,重建也不会消除;根治需改峰口径(DEFAULT_DMIN 抬到 0.78–0.79 Å 或剔除 2θ>179°,属 v4 决策)。当前仅 WARN,不阻塞发布 |
| 退化晶胞 | 重建后 COD 库已无(96-210-4629 源 CIF 无晶胞 → 建库时剔除) |
— |
| 无空间群 | COD 库 126 条(重建前 127,96-210-4629 已剔除;E3 仅提示) |
不影响峰位;按空间群过滤时这类相会被排除 |
| 全库发布 | TCOD-Full 与 COD-Full 均已建成并验收(TCOD 361,701 相 / 53,099,238 反射 / 594.3 MiB;COD 532,038 相 / 77,458,154 反射 / 879.4 MiB;均 validate/accept 0 FAIL,与对应 Inorg 公共相逐字节相同);PCOD-Full 与 PCOD-Inorg 等价(PCOD 全无机),不构建 |
建好后 XinMatch 会通过内置 xindb_tcod_full / xindb_cod_full 行自动发现;TCOD-Full 48,732 相、COD-Full 81,284 相的元素超出 63 位 elem_mask(element_inv 仍完整) |
| 全库发布 | 构建已支持 6 库(--source × --set);20261020 release 只发布了 Inorg 三库 |
有机/全库检索需先构建 *-Full 库(耗时小时级,见构建手册 §3.6) |
| PCOD 元素面窄 | 只有 19 种元素(O/Si/P/Al/V/S/B/F…) | GRINSP 预测集的客观构成,不是建库丢数据 |
top_i 为 float32 |
强度用 <f4 而非量化整数 |
体积换精度;norm-1000 下有效位足够 |
- 代码:沿 XinMatch 的双许可(学术非商业 / 商业另议),见
LICENSE、LICENSE-CN。 - 数据:CIF 内容版权归 COD 及各原始文献作者。使用本仓库产物请遵守 COD 的使用条款 并引用 COD 与相应原始文献; PCOD(GRINSP 预测)、TCOD(理论)条目另有其原始出处。本仓库只分发派生索引 (反射位置/强度/元数据),不改写也不替代原始 CIF。
- 强度为计算值,含 Debye-Waller 但无仪器/样品展宽,与实验卡片(ICDD PDF)仍有偏差; 用于物相识别足够,用于定量须自行标定。
| 日期 | 事件 |
|---|---|
| 2026-10-21 / 22 | COD-Inorg、TCOD-Inorg、PCOD-Inorg 三库建成(xinDB v3) |
| 2026-10-23 | 本仓库建立并发布 20261020 release(代码 + 三个 zip);COD 库 journal_mode 由 WAL 归一为 DELETE,integrity_check 复核通过 |
| 2026-10-23 | 三个库从 PolyXRD-DataBase/xindb/ 迁到本仓库 data/;补入无机分类(①)与两份专项复核(④)工具,链路自足 |
| 2026-10-23 | 源数据迁出 → D:/Project/XRD/sync-COD(两库共用),XRD_DATA_ROOT 缺省改为该路径;build_dbs.py 剥成纯函数模块 cif_common.py(旧 3COD sqlite 打包器删除) |
| 2026-10-23 | 数据侧工具独立成公开仓库 PolyXRD/sync-COD(数据仍不入库) |
| 2026-10-24 | 构库/验收工具重建:统一六库构建入口(--source × --set,含 PCOD/TCOD Full);新增 build_pipeline.compute_phase() 单次解析;新增 accept_xindb.py 通用验收与 E5/E6 坏相检查;建立 tests/ 回归(合成 CIF,不依赖真实库);新增 docs/构建与验收手册.md 并记录「库在本仓库构建、CIF 源在 sync-COD」约定 |
| 2026-11-01 | 用修复后的峰引擎重建三个 Inorg 库(源快照仍 20261020):COD 78,036→78,035 相 / 9,395,681 反射(8 条坏相清除);TCOD 46,846 相、峰载荷与旧库逐字节相同;PCOD 1,061,953 相 / 159,275,318 反射(7 条坏相清除);三库均 validate/accept 0 FAIL。见 docs/ACCEPTANCE-20261101-rebuild.md |
| 2026-11-02 | 开始构建 TCOD-Full(362,294 源 CIF)与 COD-Full(535,166 源 CIF);PCOD-Full 因 PCOD 全为无机、与 PCOD-Inorg 等价而跳过 |
| 2026-11-02 | TCOD-Full 建成并验收:361,701 相 / 53,099,238 反射 / 623,173,632 B / 12.1 h;validate 0F/2W、accept 0F/1W;与 TCOD-Inorg 公共相 46,846/46,846 逐字节相同;自重召回 10/10。COD-Full 构建中 |
| 2026-11-04 | COD-Full 建成并验收:532,038 相 / 77,458,154 反射 / 922,120,192 B / 36.4 h;validate 0F/2W、accept 0F/2W(bad_phase_ids=0);与 COD-Inorg 公共相 78,035/78,035 逐字节相同;自重召回 10/10。5 库(3 Inorg + 2 Full)全部完成,PCOD-Full 等价跳过 |
| 2026-11-04 | MP-20261031 外部库建成并验收(Materials Project,155,204 CIF):155,201 相 / 20,900,193 反射 / 251,633,664 B / 9.0 min;mp-<n> id,validate 0F/1W、accept 0F/1W(id 集合与归档完全一致);自重召回 20/20。见 docs/MP-库构建与验收.md |