Scripts that turn PubChemQC B3LYP/6-31G* records (Nakata and colleagues, CC BY 4.0, from MolSSI's public
mirror on Hugging Face, molssiai-hub/pubchemqc-b3lyp) into CAS(8e,8o) FCIDUMP files with PySCF, for the
BECOME energy catalog at https://become.belovedecosystem.com/energy/.
scripts/pcq_prep.pystreams one source file of a subset, keeps neutral singlets with at mostmaxorborbitals (basis-function count minus heavy-atom count), applies the optional selection settings below, drops CIDs in an optional skip list, and withshards=autosizes the shard count to the candidate count so dense files finish inside the per-job time budget.scripts/pcq_prep_group.pyandscripts/pcq_pool.pyare the pooled mode: many source files are scanned in grouped prep jobs, their candidates are pooled (repeated CIDs dropped) and re-sharded.scripts/pcq_convert.pyrebuilds RHF in 6-31G*, checks it against PubChemQC, and writes the FCIDUMP.scripts/fcidump_check.pyindependently checks each FCIDUMP.scripts/pcq_run.pyruns a batch in parallel and writescatalog.jsonl.scripts/pcq_merge.pymerges theout/directories of several shards into one tree (first shard wins on a duplicate CID; duplicates are listed inmerge_duplicates.jsonl).scripts/pcq_finalize.pyre-checks every file and writes the build library:library/catalog.jsonland, for each molecule,library/published/<CID>/withFCIDUMP_pcq<CID>_cas8e8o.gz(plus a full-space file for molecules with at most 60 orbitals),pcq<CID>.xyz,entry.json,SHA256SUMSfor the uncompressed text andSHA256SUMS-gzfor the.gzarchives.scripts/pcq_package.pypackages one or more build libraries into the deposited layout: the active-space files uncompressed asbecome-fcidump-pcq/fcidump/pcq<CID>_6-31g_cas8e8o.fcidump, the geometries asbecome-fcidump-pcq/xyz/pcq<CID>.xyz, the indexcatalog_index.csv(one row per entry),SHA256SUMS.txtand, with--tar, a reproduciblebecome-fcidump-pcq.tar.gz.
The Build PubChemQC FCIDUMPs workflow runs prep and build across many GitHub runners at once, then a
finalize job merges every shard and uploads the build library as the library artifact. The deposited catalog is
made from the four sources' libraries with
python scripts/pcq_package.py <out> <chon300nosalt library> <chnopsfcl300nosalt library> \
<chnopsfclnakmgca500 library> <b3lyp_pm6 library> --tar [--entry-numbers <CSV of cid,i>]
Column i of catalog_index.csv is the catalog entry number; without --entry-numbers the entries are numbered
in packaging order.
The published catalog (125,999 molecules) comes from four PubChemQC sources. Each was built with the workflow
inputs below; inputs not listed keep their defaults (limit=0, pool=0, minorb=0, no_multifrag=0, empty
exclude_z, allow_z and skip). shards, per_shard, the pooled shard count and budget_min only spread the
work over runners and do not change which molecules are selected.
| Source | subset |
file_from-file_to |
maxorb |
Other selection inputs |
|---|---|---|---|---|
b3lyp_pm6_chon300nosalt |
chon300nosalt |
0-86 | 150 | none |
b3lyp_pm6_chnopsfcl300nosalt |
chnopsfcl300nosalt |
0-148 | 150 | skip=data/skip_chnopsfcl300nosalt.txt.gz |
b3lyp_pm6_chnopsfclnakmgca500 |
chnopsfclnakmgca500 |
0-346 | 150 | pooled (pool=8), exclude_z=11,12,19,20 (Na, Mg, K, Ca), no_multifrag=1, skip=data/skip_chnopsfclnakmgca500.txt.gz |
b3lyp_pm6, source file 1 (CIDs 253,697-507,790) |
b3lyp_pm6 |
1-1 | 200 | minorb=150, allow_z=1,5,6,7,8,9,14,15,16,17,35, no_multifrag=1, skip=data/skip_b3lyp_pm6.txt.gz, pooled (pool=16) |
Each skip list holds the CIDs that earlier builds had already processed, so a molecule is built once.
pcq_convert.py then applies the same gates to every source (neutral closed-shell singlet, elements H, B, C, N, O,
F, Si, P, S, Cl, Br, no formal charges, PubChem identity kept after PM6, single fragment, B3LYP energy reproduced,
stable RHF).
The functional is named explicitly (b3lypg), degenerate orbitals are fixed by a fixed generic operator, a phase
rule is applied to every orbital, gzip is written with mtime 0, every file is re-read and its integrals checked (no
correlated energy is computed or stored), and molecules too small for an 8e8o active space are rejected. Repeat runs
agree within about 1e-9 in every integral but are not byte-identical, so compare files by tolerance, not by hash.
The code in this repository is licensed under the Apache License 2.0 (see LICENSE). Copyright 2026 Beloved
Ecosystem, Inc. The PubChemQC input data are not part of this repository; they are licensed separately under CC BY 4.0 by
their authors.