Skip to content

Releases

TCOD / PCOD polyDB 20261020 (Inorg / Full, 3 databases in total)

Choose a tag to compare

@PolyXRD PolyXRD released this 01 Nov 01:26

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 no PCOD-Full: the 1,061,962 is_inorg entries for PCOD in the manifest are all 1 (the GRINSP prediction set itself contains no organic phases), so building pcod-full would be byte-for-byte identical to pcod-inorg.
  • The 20261020 in the name is the official database sync date (this build was on 2026-10-31); the source data manifest was built at 2026-10-20 01:52:04 (see each database's meta.json.source.manifest_built_at).
  • meta.variant is tcod-inorg / tcod-full / pcod-inorg respectively, which do not conflict with the COD series' cod-inorg / cod-full and 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 (kind is auto-detected as polydb).
  • 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-check

Must be extracted before use; direct mmap inside the zip is not supported.

Validation

sha256sum -c SHA256SUMS.txt    # checksums for the three zips

The 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)

Choose a tag to compare

@PolyXRD PolyXRD released this 31 Oct 14:50

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_idx permutation, 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

  1. Download and extract MP-20261031.polyDB.zip;
  2. PolyXRD → menu "Database ▸ External Database Management…" → Add → select the extracted MP-20261031.polyDB directory;
  3. Select that database as the search data source.

Notes

  • entries.eid = MP number (e.g. mp-3207172 → 3207172); the 3 mvc-* entries fall in the 900-million number range;
  • tier = 2 (DFT theoretical structures, not experimental PDF cards);
  • entries.cif_rel points 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 (commit 2acdf85).

Checksum

ccfccf535f1c5fcdbcd7c06d57c14b5aa02bc1fb09fb23478883177323a16c22  MP-20261031.polyDB.zip

COD polyDB 20261021 (Inorg / Full)

Choose a tag to compare

@PolyXRD PolyXRD released this 23 Oct 08:22

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 20261021 in the name is the build date; the source data manifest was built at 2026-10-20 01:52:04 (see each database's meta.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-check

Must be extracted before use; direct mmap inside the zip is not supported.

Validation

sha256sum -c SHA256SUMS.txt    # checksums for the two zips

The 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.density is 100% NULL in both databases: the build_dbs.formula_mass() called by build_polydb.py does not actually exist; the exception is swallowed by try/except and 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, only index.sqlite needs rebuilding; no need to recompute peaks.
  • entries.tier / dup_group are 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 use eid-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).