Chemical Components · LiteFold
PDB-CCD
A Parquet dataset of the Protein Data Bank Chemical Component Dictionary for structural machine learning.
What PDB-CCD is
PDB-CCD is a tabular dataset containing the Chemical Component Dictionary used by the Protein Data Bank (PDB). It documents the monomers, residues, modified amino acids, ligands, and solvent molecules found within experimentally resolved macromolecular structures. Packaged by LiteFold into Apache Parquet format, it provides structured access to chemical definitions that are typically distributed across complex macromolecular Crystallographic Information File (mmCIF) dictionaries.
Structural biologists and computational chemists rely on consistent chemical references to interpret small molecules, cofactors, and unnatural residues bound to proteins and nucleic acids. The dataset organises 50,054 components into standardised records with explicit chemical graphs, identifiers, and stereochemical details, facilitating large-scale data loading for structural machine learning pipelines.
How it was made
The dataset extracts chemical definitions from the PDB Chemical Component Dictionary and structures them into tabular rows. Each record captures molecular formula properties, formal charges, synonyms, systematic nomenclature, and linear representations such as SMILES, InChI, and InChIKey. Topological structures are encoded via parallel arrays detailing atom identifiers, element symbols, formal charges, aromatic flags, leaving atom flags, stereochemical configurations, and bond connectivity with bond orders.
Data splits are assigned deterministically using the SHA-256 hash of each component identifier modulo 10. Components assigned to bucket zero form the test set of 5,009 rows, while components in buckets one to nine form the training set of 45,045 rows. Protein modification annotations and related parent component references are retained to trace non-standard monomers.
Key facts
- Total components
- 50,054
- Released components
- 49,292
- Obsolete components
- 762
- Training rows
- 45,045
- Test rows
- 5,009
- Data format
- Parquet
- Modality
- Tabular, text
- Latest source modification
- 2026-04-24
What you can use it for
- Structural machine learning
- Train and evaluate deep learning models on small molecules and macromolecular building blocks using the predefined deterministic train and test splits.
- Ligand property and identifier retrieval
- Look up canonical SMILES, InChIKeys, chemical formulas, and formula weights for cofactors, metabolites, and ligands observed in the PDB.
- Molecular graph construction
- Reconstruct complete 2D molecular graphs from atom element arrays, bond connectivity lists, bond orders, and stereochemical annotations.
- Residue and post-translational modification analysis
- Identify modified residues and map them to their parent amino acids using non-standard monomer parent IDs and protein modification annotations.
Explore the data
The schema, real rows, full-text search and a SQL filter — read in your browser, nothing downloaded.
Explore
Read the real rows without downloading anything
Reading rows…
LiveRead from LiteFold/PDB-CCD at the moment you asked. Nothing is cached or stored — every row above came from that request.
How the columns are distributed
Over 45,045 rows of default/train
ambiguous_flag
string_label- N97%
- Y0%
2.4% empty
atom_alt_ids
list- min
- 0
- median
- 44
- mean
- 47.72
- max
- 440
atom_aromatic_flags
list- min
- 0
- median
- 44
- mean
- 47.72
- max
- 440
atom_charges
list- min
- 0
- median
- 44
- mean
- 47.72
- max
- 440
atom_count
int- min
- 0
- median
- 44
- mean
- 47.72
- max
- 440
atom_elements
list- min
- 0
- median
- 44
- mean
- 47.72
- max
- 440
atom_ids
list- min
- 0
- median
- 44
- mean
- 47.72
- max
- 440
atom_leaving_flags
list- min
- 0
- median
- 44
- mean
- 47.72
- max
- 440
atom_stereo_configs
list- min
- 0
- median
- 44
- mean
- 47.72
- max
- 440
audit_actions
list- min
- 0
- median
- 2
- mean
- 2.63
- max
- 13
audit_dates
list- min
- 0
- median
- 2
- mean
- 2.63
- max
- 13
audit_processing_sites
list- min
- 0
- median
- 2
- mean
- 2.62
- max
- 13
bond_aromatic_flags
list- min
- 0
- median
- 46
- mean
- 49.65
- max
- 446
bond_atom_id_1
list- min
- 0
- median
- 46
- mean
- 49.65
- max
- 446
bond_atom_id_2
list- min
- 0
- median
- 46
- mean
- 49.65
- max
- 446
bond_count
int- min
- 0
- median
- 46
- mean
- 49.65
- max
- 446
bond_orders
list- min
- 0
- median
- 46
- mean
- 49.65
- max
- 446
bond_stereo_configs
list- min
- 0
- median
- 46
- mean
- 49.65
- max
- 446
canonical_smiles
string_text- min
- 1
- median
- 48
- mean
- 53.48
- max
- 907
0.00% empty
component_id
string_text- min
- 1
- median
- 3
- mean
- 3.23
- max
- 5
component_type
string_label- NON-POLYMER52%
- non-polymer39%
- L-PEPTIDE LINKING2%
descriptor_program_versions
list- min
- 0
- median
- 7
- mean
- 6.68
- max
- 11
descriptor_programs
list- min
- 0
- median
- 7
- mean
- 6.68
- max
- 11
descriptor_types
list- min
- 0
- median
- 7
- mean
- 6.68
- max
- 11
descriptors
list- min
- 0
- median
- 7
- mean
- 6.68
- max
- 11
feature_types
list- min
- 0
- median
- 0
- mean
- 0.07
- max
- 4
feature_values
list- min
- 0
- median
- 0
- mean
- 0.07
- max
- 4
formal_charge
int- min
- -11
- median
- 0
- mean
- 0.03
- max
- 13
formula
string_text- min
- 1
- median
- 13
- mean
- 13.64
- max
- 26
0.00% empty
formula_weight
float- min
- 1.01
- median
- 358.29
- mean
- 380.82
- max
- 12,016
0.01% empty
heavy_atom_count
int- min
- 0
- median
- 25
- mean
- 26.10
- max
- 240
hydrogen_atom_count
int- min
- 0
- median
- 19
- mean
- 21.62
- max
- 240
ideal_coordinates_missing_flag
string_label- N99%
- Y1%
0.01% empty
identifier_program_versions
list- min
- 0
- median
- 2
- mean
- 1.42
- max
- 6
identifier_programs
list- min
- 0
- median
- 2
- mean
- 1.42
- max
- 6
identifier_types
list- min
- 0
- median
- 2
- mean
- 1.42
- max
- 6
identifiers
list- min
- 0
- median
- 2
- mean
- 1.42
- max
- 6
inchi
string_text- min
- 10
- median
- 138
- mean
- 146.04
- max
- 1,215
0.02% empty
inchikey
string_text- min
- 25
- median
- 27
- mean
- 26.99
- max
- 27
0.02% empty
initial_date
datetimemodel_coordinates_db_code
string_text- min
- 4
- median
- 4
- mean
- 4.00
- max
- 19
4.2% empty
model_coordinates_missing_flag
string_label- N96%
- Y4%
modified_date
datetimemon_nstd_parent_comp_id
string_label- LYS0%
- CYS0%
- ALA0%
95.4% empty
name
string_text- min
- 3
- median
- 75
- mean
- 83.16
- max
- 873
one_letter_code
string_label- C0%
- A0%
- G0%
96.6% empty
pcm_categories
list- min
- 0
- median
- 0
- mean
- 0.03
- max
- 42
pcm_ids
list- min
- 0
- median
- 0
- mean
- 0.03
- max
- 42
pcm_modified_residue_ids
list- min
- 0
- median
- 0
- mean
- 0.03
- max
- 42
pcm_positions
list- min
- 0
- median
- 0
- mean
- 0.03
- max
- 42
pcm_types
list- min
- 0
- median
- 0
- mean
- 0.03
- max
- 42
pdbx_synonyms
string_text- min
- 2
- median
- 35
- mean
- 61.94
- max
- 625
82.8% empty
pdbx_type
string_label- HETAIN91%
- ATOMP4%
- ATOMS2%
0.51% empty
processing_site
string_label- RCSB60%
- EBI15%
- PDBE12%
0.01% empty
related_component_ids
list- min
- 0
- median
- 0
- mean
- 0
- max
- 0
related_relationship_types
list- min
- 0
- median
- 0
- mean
- 0
- max
- 0
release_status
string_label- REL98%
- OBS2%
replaced_by
string_label- 6MA0%
- BAP0%
- NVA0%
99.3% empty
replaces
string_label- FS30%
- ITS0%
- 980%
99.4% empty
smiles
string_text- min
- 1
- median
- 44
- mean
- 47.68
- max
- 896
0.00% empty
split_bucket
int- min
- 1
- median
- 5
- mean
- 4.99
- max
- 9
synonym_names
list- min
- 0
- median
- 0
- mean
- 0.09
- max
- 10
synonym_provenances
list- min
- 0
- median
- 0
- mean
- 0.07
- max
- 10
synonym_types
list- min
- 0
- median
- 0
- mean
- 3.1e-4
- max
- 2
systematic_names
list- min
- 0
- median
- 2
- mean
- 1.40
- max
- 3
three_letter_code
string_text- min
- 1
- median
- 3
- mean
- 3.23
- max
- 5
0.42% empty
Strengths and limits
Good at
- Provides tabular Parquet packaging optimised for fast querying, filtering, and streaming without parsing raw mmCIF files.
- Contains detailed graph representations including atom-level charges, aromaticity, stereochemistry, and explicit bond connectivity.
- Includes a deterministic hash-based data split to standardise training and evaluation benchmarks.
- Covers a diverse array of chemical species including non-polymers, peptides, saccharides, and nucleic acid linkers.
Watch out for
- Includes 762 obsolete chemical components that require filtering for active structural analyses.
- Protein modification annotations are available for only 613 components across the dictionary.
Questions
Can I look inside PDB-CCD without downloading it?
Yes. This page reads its schema, real rows and per-column statistics in the browser, with full-text search and a SQL filter. Nothing is downloaded to your machine.
What licence is PDB-CCD under?
Its authors declare other. Read the terms on the original page before reusing the data.
What classes of chemical entities are present in PDB-CCD?
The dataset covers non-polymer ligands, L-peptide linking residues, peptide-like molecules, D-saccharides, DNA linking monomers, RNA linking monomers, and solvent components.
How are the training and test splits constructed?
The partition is calculated deterministically as sha256(component_id) % 10. Components in bucket 0 are assigned to the test set, while components in buckets 1 through 9 form the training set.
How can obsolete components be filtered out?
Rows can be filtered by checking the release_status field, where valid active components are marked with REL and superseded entries are marked with OBS.
What linear chemical descriptors are included?
The dataset provides standard SMILES, canonical SMILES, InChI, and InChIKey descriptors, alongside systematic names and synonyms.
How to cite it
Westbrook, John D. and Shao, Chuming and Feng, Zukang and Zhuravleva, Maria and Velankar, Sameer and Young, Jasmine (2015). The chemical component dictionary: complete descriptions of constituent molecules in experimentally determined 3D macromolecules in the Protein Data Bank. Bioinformatics, 31(8), 1274–1278. doi:10.1093/bioinformatics/btu789
Written from PDB-CCD's own dataset card. Statements citing a figure that does not appear there are removed before publication. Licence and running details come from our registry.