Supported Source Datasets¶
ChemReporter currently supports the following source datasets:
OMOL25 – Molecular systems, including bond-breaking, computed with hybrid DFT.
OC20 – Periodic surface systems for adsorption and catalysis studies.
OMAT24 – Periodic bulk inorganic materials.
OMC25 – Periodic organic molecular crystals, relaxed with dispersion-corrected DFT.
ODAC – Periodic MOF systems for direct air capture (DAC) applications.
Each dataset is handled by its own reader implementation, and these
implementations are not interchangeable: they differ in how properties like
subset are populated, which fields are read as-is from the source, and
which are computed by ChemReporter. Read
Crucial Implementation Details to
understand these differences before processing and querying datasets.
Computational Setup Details¶
The table below compares the computational details used across the supported source datasets. Column headers link to the primary reference paper for each dataset.
Setting |
|||||
|---|---|---|---|---|---|
DFT Code |
ORCA 6.0.0 |
VASP |
VASP |
VASP |
Not reported |
System Type |
Molecular (non-periodic) |
Periodic (surfaces) |
Periodic (bulk materials) |
Periodic (molecular crystals) |
Periodic MOFs (DAC) |
Basis Representation |
Gaussian |
Plane waves |
Plane waves |
Plane waves |
Not reported |
Basis Set |
def2-TZVPD |
— |
— |
— |
— |
Pseudopotentials / ECPs |
def2 ECPs (elements 1–83 supported) |
PAW |
PAW |
PAW |
Not reported |
Plane-Wave Cutoff |
— |
350 eV |
520 eV (assuming MP default) |
520 eV |
Not reported |
Exchange–Correlation |
ωB97M-V |
RPBE (GGA) |
PBE (GGA) |
PBE (GGA) |
PBE (GGA) |
Dispersion Treatment (Correction) |
VV10 nonlocal correlation |
D3 |
Hubbard +U |
Grimme D3 |
D3 (PBE-D3) |
Spin Treatment |
UKS ; RKS also evaluated on subset |
Spin-polarized when required |
Spin-polarized |
As set by relaxation workflow |
Spin-polarized, initial magnetic moment +1 for all atoms |
Integral / Acceleration |
RI-J, COSX |
— |
— |
— |
Not reported |
Grid / k-Points |
DEFGRID3 (590 XC / 302 COSX angular points) |
Monkhorst–Pack mesh |
MP default k-point density |
Via atomate2 |
Not reported |
Convergence Settings |
Tight SCF; |
Force < 0.03 eV/Å or ≤200 ionic steps |
Force < 0.03 eV/Å or ≤200 ionic steps |
Max per-atom residual force < 0.001 eV/Å or ≤1,500 ionic steps; total energy tolerance 0.001 meV |
Not reported |
Crucial Implementation Details¶
Each source dataset is read by a dedicated implementation, selected via the
database_format field of the process config
(see Configuration). This maps to the following
formats and readers:
|
Dataset |
File format |
Reader |
|---|---|---|---|
|
OMOL25 |
|
FairChem |
|
OMAT24 |
|
FairChem |
|
OC20 |
|
FairChem |
|
ODAC23 |
|
FairChem |
|
OMC25 |
|
FairChem |
|
OC20 (extxyz) |
|
|
|
generic extxyz |
|
|
Common Behavior Across Datasets¶
Beyond the per-dataset differences covered below, a few behaviors are shared by every implementation:
database_nameaffects more than display. It is lowercased and_is replaced by-, and it becomes part of everyentry_key. For OC20 and OMAT24 it also carries the subset (see below), so a bareoc20oromat24raisesSourceDatabaseReaderUsageError.DFT metadata (
basis_set,functional,correction_term) is not read from the data itself; it comes verbatim from thesource_database_metadatafield of yourprocessconfig (see Configuration) and is applied to every entry processed from that source database. It is optional, so leaving it out silently yields empty metadata columns.Charge and spin are either read from the source or enforced. OMOL25 and generic
xyzstore these values explicitly and they are read verbatim. All other datasets (OC20, OMAT24, OMC25, ODAC23) enforcenet_charge = 0(neutral) andspin_multiplicity = 1(closed-shell) where applicable.subsetdrives graph-feature skipping. Thesubsets_skip_listlist, set undergraph_based_processingin yourprocessconfig, is matched againstsubsetto decide which entries skip graph-feature computation — so it has no effect for formats that never populatesubset.Remote sources (
s3://, …) are supported out of the box: files are downloaded into a temporary directory shard by shard and deleted again once each shard has been processed. See Custom I/O Plugins if you need to customize this behavior.
Dataset-Specific Details¶
OMOL25 (aselmdb_omol)¶
Subsets come from the data.
subsetis read directly fromatoms.info["data_id"], so splits such asspice,biomolecules, andelytesappear automatically — no naming convention is required on your side.net_charge(fromcharge),spin_multiplicity(fromspin),num_atoms, andcompositionare all read straight from the source — this is the only dataset where all four fields are authoritative rather than inferred.Reactivity metadata is parsed from free text. For the
rgd,reactivity,ani1,trans1x, andmetal_complexessubsets, the free-textsourcefield (and, for metal complexes,reference_source) is parsed intoreaction_id,reaction_pathway_id,reaction_step_idx,is_reactant, andis_product. These columns stay null for every other subset. Unrecognizedsourcestrings yield nulls rather than raising, so partially-null reactivity columns are expected, not a bug.The
metal_complexessubset renames itself toreactivity_metal_complexes,ground_state_metal_complexes, orfailed_metal_complexes— filter on those names rather than onmetal_complexesitself.The generic
reactivitysubset also renames its ownsubset, based on the first path segment of the free-textsourcefield — known values includeani1xbb,pmechdb, andrmechdb— so filter on the resulting name rather than onreactivityitself.The HDF5 export automatically includes
subset,charge,spin_multiplicity,num_atoms,mulliken_charges, andlowdin_charges.
OC20 (aselmdb_oc, xyz_oc)¶
The subset isn’t in the data — it’s in the name.
subsetis derived as the last token ofdatabase_nameafter splitting on non-alphanumeric characters, so you must setdatabase_nameto something likeoc20-s2eforoc20-is2re. Only the last token is kept, sooc20-s2ef-allyields subsetall.Needs supplementary files alongside the shards, for both
aselmdb_ocandxyz_oc: a singleoc20_data_mapping.pklin the same directory, plus a per-shard auxiliary file (<shard>.txtor<shard>.txt.xz) providingsid,frame_number, andref_energy. Asidmissing from the pickle raises an error, as does a shard missing from the mapping.Charge and spin are enforced.
net_chargeis fixed at0(periodic slab supercells are neutral by construction), andspin_multiplicityis fixed at1(closed-shell).OC20 gets extra analysis This includes
catalyst_adsorbate_smiles(OpenBabel is ran on the adsorbate alone), Note that adsorbate net charges are constrained within the range of -3 to +3, with the implementation prioritising neutral states whenever viable.catalyst_num_adsorbate_atoms,catalyst_num_bulk_atoms,catalyst_substrate_height(measured along the true surface normal, not the z-axis),catalyst_xyz_adsorbate_is_valid(whether the adsorbate sits above the slab and within its in-plane footprint, vdW-padded and minimum-image aware), andis_molecular_structure_valid(adsorbate plus nearby surface atoms). It also addscatalyst_bulk_id,catalyst_adsorbate_id,catalyst_bulk_symbols,catalyst_adsorbate_symbols,catalyst_miller_index,catalyst_reference_energy,catalyst_relaxation_frame_idx, and the decoded labelscatalyst_class(intermetallics / metalloids / non-metals / halides) andcatalyst_anomaly(no_anomaly / adsorbate_dissociation / adsorbate_desorption / surface_reconstruction / uninteracting_hydrogen).All
catalyst_*columns exist only for OC20 — they are null for every other dataset.The HDF5 export automatically includes
num_atoms.
OMAT24 (aselmdb_omat)¶
The subset comes from the name, not the data.
task_typeis initially mapped tosubset, but this is then overwritten with everything after the first delimiter ofdatabase_name, joined back together with-(soomat24-rattled-1000becomesrattled-1000). Process one subset directory at a time and name it accordingly — a bareomat24raises an error.compositionis taken fromcomposition_reduced, so — unlike every other dataset, where it reflects the full cell content — it is the reduced chemical formula.num_atomsis recomputed.net_chargeis enforced at0(bulk cells are neutral by construction).spin_multiplicityis not set for OMAT24.The HDF5 export automatically includes
subset, andstress.
OMC25 (aselmdb_omc)¶
No subset at all. Nothing is mapped or derived, so
subsetalways stays null — usedatabase_nameinstead to distinguish between OMC25 runs.Everything else is derived from geometry:
composition(full formula) andnum_atoms.net_chargeis enforced at0andspin_multiplicityat1(closed-shell)For OMC25, set
source_database_metadatain yourprocessconfig tobasis_set: PAW-PW,functional: PBE, andcorrection_term: D3(see the Computational Setup Details table above).The HDF5 export automatically includes
stress(as a 3x3 matrix).
ODAC23 (aselmdb_odac)¶
No subset
num_atomsandcompositionare computed.net_chargeis enforced at0andspin_multiplicityat1(closed-shell).No extra analysis columns and no extra HDF5 fields are automatically exported.
Generic extxyz (xyz)¶
This is the escape hatch for your own data:
subsetis read fromconfig_type,net_chargefromtotal_charge,spin_multiplicityfromspin, andnum_atomsfromnum_atoms.energyandforcesare rehydrated into aSinglePointCalculatorwhen present ininfo/arrays.Nothing else is derived, so including those four keys in your extxyz headers is the cheapest way to get a fully populated Query Database.
The HDF5 export automatically includes
subset,charge,spin_multiplicity, andnum_atoms.
What to check before querying¶
Is
subsetpopulated for your dataset? For OMC25 and ODAC23 it isn’t — filter ondatabase_name/split_nameinstead.For OC20 and OMAT24, did you encode the subset in
database_name?Are
net_charge/spin_multiplicityauthoritative or enforced for the dataset you’re mixing in? OMOL25 and genericxyzread them from the source (ground truth). OC20, OMC25, and ODAC23 enforce0/1for all entries. OMAT24 enforcesnet_charge = 0but leavesspin_multiplicitynull. Mixing datasets means mixing ground truth with enforced constants.Dataset-specific columns (
reaction_*,catalyst_*,stress,mulliken_charges,lowdin_charges) are null outside their source dataset — filtering on them silently drops every other dataset.