Repository navigation
Releases
TCOD / PCOD polyDB 20261020 (Inorg / Full, 3 databases in total)
PolyXRD external phase database (polyDB v1). This release publishes three TCOD and PCOD databases, mutually exclusive with the COD-series databases; install one or several as needed — after extraction you get a .polyDB directory of the same name; point the external database path in PolyXRD at it (local disk / external drive / NAS all work, opened read-only, no write-back).
| Database | Asset | Phase count | Peak count | Site count | Uncompressed | zip size |
|---|---|---|---|---|---|---|
| TCOD-Inorg | TCOD-Inorg-20261020.polyDB.zip |
46,541 | 3,767,731 | 754,606 | 55,138,528 B (52.6 MiB) | 31.5 MB |
| TCOD-Full | TCOD-Full-20261020.polyDB.zip |
359,307 | 35,039,291 | 22,178,424 | 714,704,055 B (681.6 MiB) | 466.6 MB |
| PCOD-Inorg | PCOD-Inorg-20261020.polyDB.zip |
1,061,817 | 106,160,732 | 32,522,180 | 1,481,618,146 B (1413.0 MiB) | 936.9 MB |
TCOD-Inorg= TCOD (theoretical calculated structures) entries judged inorganic;TCOD-Full= the full TCOD (the extra part is mainly C/H organic phases, about 320,000 phases each).PCOD-Inorg= the full PCOD. There is noPCOD-Full: the 1,061,962is_inorgentries for PCOD in the manifest are all 1 (the GRINSP prediction set itself contains no organic phases), so buildingpcod-fullwould be byte-for-byte identical topcod-inorg.- The
20261020in the name is the official database sync date (this build was on 2026-10-31); the source data manifest was built at2026-10-20 01:52:04(see each database'smeta.json.source.manifest_built_at). meta.variantistcod-inorg/tcod-full/pcod-inorgrespectively, which do not conflict with the COD series'cod-inorg/cod-fulland can be mounted simultaneously. PolyXRD v4.x built-in slots register only the two COD variants, so add these three databases by directory via "Custom mount" in the mount panel (kindis auto-detected aspolydb).- PCOD has only 19 elements (O 1,042,665 phases / Si 954,474 phases dominate overwhelmingly); this is the objective composition of the GRINSP prediction set (mainly silicates/phosphates), not missing data. TCOD has 91 elements.
Convention
Fully consistent with the COD-series databases, unchanged despite the different source: Cu Kα1 λ = 1.5406 Å, d ≥ 1.0 Å, 2θ 5.0–100.76°, equivalent reflections merged by 2θ, intensity normalized to 1000, no Debye-Waller, top 100 peaks per phase by intensity, bitmap indexes the strongest 40 per phase.
Therefore this database's intensities have systematic deviations from experimental PDF cards (high-angle lines too strong); this is a fixed convention, not a defect. Nor should they be cross-checked against xinDB intensities (xinDB includes DW, d lower bound 0.7703).
Usage
unzip TCOD-Inorg-20261020.polyDB.zip # → TCOD-Inorg-20261020.polyDB/ directory
python tools/verify_polydb.py TCOD-Inorg-20261020.polyDB # optional: 32-item self-checkMust be extracted before use; direct mmap inside the zip is not supported.
Validation
sha256sum -c SHA256SUMS.txt # checksums for the three zipsThe sha256 of the 8 segments inside each database has been written into its own meta.json.sections, and can be re-checked together with tools/verify_polydb.py.
Acceptance for this release
All three databases passed triple acceptance, with no FAIL and no WARN:
| Check | TCOD-Inorg | TCOD-Full | PCOD-Inorg |
|---|---|---|---|
Structure 32 items (verify_polydb.py) |
32/32 | 32/32 | 32/32 |
| 200-phase sampled recomputation max|Δd| | 7.9e-7 Å | 9.5e-7 Å | 9.1e-7 Å |
| 200-phase sampled recomputation max|ΔI| | 0.0076 | 0.0076 | 0.0076 |
| Skipped entries | 402 (0.86%) | 2,986 (0.83%) | 145 (0.014%) |
| PolyXRD reader mount + search | passed | passed | passed |
For detailed data, skip-reason classification and reproduction commands see polyDB TCOD/PCOD build report 2026-10-20 (Chinese) in the repository.
MP polyDB 20261031 (155,204 phases)
MP polyDB 20261031 (155,204 phases)
A polyDB v4 external phase database packaged from the Materials Project summary (2025-09-25) CIF library, for phase identification / matching / refinement with PolyXRD.
Contents
| Item | Value |
|---|---|
| Phase count | 155,204 (210,579 MP summary records deduplicated by reduced formula, keeping the lowest energy_above_hull configuration per group) |
| Peaks | 12,705,201 (K=100 per phase, by intensity descending), average 81.9 per phase |
| Atomic sites | 2,407,784 (sidecar 17 B/site, asymmetric unit, lazy-loaded) |
| Uncompressed size | 179 MB |
| Package | MP-20261031.polyDB.zip (106.5 MB) |
Peak convention (fully consistent with the polyDB v4 specification / COD databases)
Cu Kα1, λ=1.5406 Å; 2θ 5.00–100.76° (d ≥ 1.0 Å); equivalent reflections merged by 2θ; intensity normalized to the strongest peak = 1000; top K=100 by intensity; intensity u16 quantization.
Cell and sidecar
MP CIFs are P1 primitive cells exported by pymatgen. To guarantee "one physical line, one peak", each structure goes through primitive cell → conventional cell → asymmetric unit, entries.space_group records the real space group, and peaks are computed on the conventional cell; three-level fallback:
- L0 (conventional-cell asymmetric unit + real SG): 138,675 phases
- L1 (all conventional-cell atoms +
P 1): 16,526 phases - L2 (all primitive-cell atoms +
P 1): 3 phases
Validation
- Structure layer (
tools/verify_polydb.py): 32/32 PASS (all segments present, sha256, shapes,row_idxpermutation, FTS5, site offsets, peak order) - Accuracy layer (
tools/verify_mp_polydb.py, L3 100-phase sampled recomputation): max|Δd| = 8.1×10⁻⁷ Å, max|ΔI| = 0.015 (tolerance 2×10⁻⁴ Å / 0.05) - Search layer: in-library phase self-query top1 63/100, top5 80/100 (official COD-Inorg under the same convention: 52/100, 76/100), single search ≈0.77 s
Installation
- Download and extract
MP-20261031.polyDB.zip; - PolyXRD → menu "Database ▸ External Database Management…" → Add → select the extracted
MP-20261031.polyDBdirectory; - Select that database as the search data source.
Notes
entries.eid= MP number (e.g.mp-3207172→3207172); the 3mvc-*entries fall in the 900-million number range;tier = 2(DFT theoretical structures, not experimental PDF cards);entries.cif_relpoints to the source CIF file name, traceable entry by entry;- Build/validation code is in this repository's
tools/build_mp_polydb.py,tools/verify_mp_polydb.py(commit2acdf85).
Checksum
ccfccf535f1c5fcdbcd7c06d57c14b5aa02bc1fb09fb23478883177323a16c22 MP-20261031.polyDB.zip
COD polyDB 20261021 (Inorg / Full)
PolyXRD external phase database (polyDB v1). The two databases are mutually exclusive, install just one — after extraction you get a .polyDB directory of the same name; point the external database path in PolyXRD at it (local disk / external drive / NAS all work, opened read-only, no write-back).
| Database | Asset | Phase count | Peak count | Site count | Uncompressed | zip size |
|---|---|---|---|---|---|---|
| COD-Inorg | COD-Inorg-20261021.polyDB.zip |
77,500 | 5,962,013 | 1,005,846 | 89,926,214 B (85.8 MiB) | 48.1 MB |
| COD-Full | COD-Full-20261021.polyDB.zip |
521,361 | 50,328,800 | 36,315,927 | 1,107,655,264 B (1056.3 MiB) | 710.3 MB |
COD-Inorg= COD entries judged inorganic (no C, or containing C but no H);COD-Full= the full COD.- The
20261021in the name is the build date; the source data manifest was built at2026-10-20 01:52:04(see each database'smeta.json.source.manifest_built_at).
Usage
unzip COD-Inorg-20261021.polyDB.zip # → COD-Inorg-20261021.polyDB/ directory
python tools/verify_polydb.py COD-Inorg-20261021.polyDB # optional: 32-item self-checkMust be extracted before use; direct mmap inside the zip is not supported.
Validation
sha256sum -c SHA256SUMS.txt # checksums for the two zipsThe sha256 of each uncompressed data segment is recorded in each database's meta.json.sections, and tools/verify_polydb.py compares them segment by segment. Measured results for the two databases: 32/32 PASS, 0 WARN (all segments present / byte counts / sha256 / shapes of each segment self-consistent / sites_off monotonic with last value equal to sites.bin length / PRAGMA integrity_check / entries row count = N / row_idx is a complete unique permutation of 0..N-1 / sampled rows sorted by intensity descending with empty slots at the tail). Before distribution, a file-by-file CRC32 + byte-count comparison of zip ↔ source directory was also done; all matched.
Peak convention
λ = 1.5406 Å (Cu Kα1)|2θ 5–100.76° (equivalent to d ≥ 1.0 Å)|equivalent reflections merged by 2θ (including multiplicity)|intensity normalized to 1000|take the top K = 100 by intensity descending|no Debye-Waller temperature factor
Therefore peak positions/intensities are computed values and have systematic deviations from experimental cards (ICDD PDF) (high-angle lines too strong). Sufficient for phase identification; for quantitative analysis you must calibrate yourself.
Build information
| Database | Build date | Time | workers | Manifest rows | Ingested | skip |
|---|---|---|---|---|---|---|
| Inorg | 2026-10-21 | 531.7 s | 8 | 79,198 | 77,500 | 1,698 (2.14%) |
| Full | 2026-10-21 | 18,176 s ≈ 5.05 h | 8 | 535,166 | 521,361 | 13,805 (2.58%) |
All skips are classifiable: no_sites (no atomic sites), no_pattern (expansion/calculation error), volume_too_large (cell > 30,000 ų), no_volume (no cell volume); details in meta.build.skip_reasons.
Known gaps
entries.densityis 100% NULL in both databases: thebuild_dbs.formula_mass()called bybuild_polydb.pydoes not actually exist; the exception is swallowed bytry/exceptand writes None. It affects the density column in PolyXRD's candidate list, but does not affect peak positions, search, or refinement. Once the atomic-weight table is added, onlyindex.sqliteneeds rebuilding; no need to recompute peaks.entries.tier/dup_groupare all 0: no "experimentally measured / theoretically predicted" tiering, and no merging of duplicate phases, so multiple duplicates of the same phase appear together in search results.- Array-segment row numbers must come from
entries.row_idx, must not useeid-1(COD numbers start at 1,000,000; the two are unequal across the entire database).
The data source is Crystallography Open Database. CIF content copyright belongs to COD and the authors of the original literature; when using it please comply with COD's terms and cite COD and the corresponding literature. This repository distributes only derived indexes (peak positions/intensities/sites); it does not rewrite or replace the original CIFs. For the build code and field-level specification see the repository README and polyDB v1 format specification (Chinese).