CoolFace
Datasetpublic

LiteFold/PDB-CCD

PDB Chemical Component Dictionary PDB-CCD is the Chemical Component Dictionary used by the Protein Data Bank to describe residues, modified residues, ligands, solvents, and other chemical components in macromolecular structures. Splits The split is deterministic by component identifier: sha256(component_id) % 10. Bucket 0 is test; buckets 1 through 9 are train. Split Rows train 45,045 test 5,009 total 50,054 Dataset Statistics… See the full description on the dataset page: https://huggingface.co/datasets/LiteFold/PDB-CCD.

sourceHugging Faceotherupdated 4mo agoView on Hugging Face
0likes21downloads
Dataset Card

PDB Chemical Component Dictionary

PDB-CCD is the Chemical Component Dictionary used by the Protein Data Bank to describe residues, modified residues, ligands, solvents, and other chemical components in macromolecular structures.

Splits

The split is deterministic by component identifier: sha256(component_id) % 10. Bucket 0 is test; buckets 1 through 9 are train.

SplitRows
train45,045
test5,009
total50,054

Dataset Statistics

FieldValue
Components50,054
Released components49,292
Obsolete components762
Components with atoms49,947
Components with bonds49,921
Components with descriptors50,052
Components with identifiers37,058
Components with PCM annotations613
Latest modified date in source2026-04-24
Common component typeRows
NON-POLYMER26,117
non-polymer19,493
L-PEPTIDE LINKING923
L-peptide linking580
peptide-like556
D-saccharide405
DNA LINKING325
RNA LINKING223

Usage

Install the Hugging Face Datasets library:

bash
pip install datasets

Load all splits:

python
from datasets import load_dataset

ds = load_dataset("LiteFold/PDB-CCD")
print(ds)

row = ds["train"][0]
print(row["component_id"], row["name"], row["formula"])

Load one split:

python
from datasets import load_dataset

train = load_dataset("LiteFold/PDB-CCD", split="train")
test = load_dataset("LiteFold/PDB-CCD", split="test")

Stream rows without downloading the full table first:

python
from datasets import load_dataset

stream = load_dataset("LiteFold/PDB-CCD", split="train", streaming=True)
for row in stream.take(5):
    print(row["component_id"], row["canonical_smiles"], row["atom_count"])

Filter released non-polymer components with InChIKeys:

python
from datasets import load_dataset

ds = load_dataset("LiteFold/PDB-CCD", split="train")
released = ds.filter(
    lambda row: row["release_status"] == "REL"
    and row["component_type"] in {"NON-POLYMER", "non-polymer"}
    and row["inchikey"] is not None
)
print(released[0])

Find components modified after a date:

python
from datasets import load_dataset

ds = load_dataset("LiteFold/PDB-CCD", split="train")
recent = ds.filter(lambda row: row["modified_date"] is not None and row["modified_date"] >= "2026-01-01")
print(recent[0]["component_id"], recent[0]["modified_date"])

Columns

ColumnDescription
component_idChemical component identifier.
nameComponent name from _chem_comp.name.
component_typeRaw _chem_comp.type value.
pdbx_typeRaw _chem_comp.pdbx_type value.
formulaChemical formula.
formula_weightFormula weight as a float.
formal_chargeFormal charge as an integer.
mon_nstd_parent_comp_idParent component ID for non-standard monomers, when present.
one_letter_codeOne-letter code, when present.
three_letter_codeThree-letter code, when present.
pdbx_synonymsSynonym field from _chem_comp.
synonym_namesSynonyms from pdbx_chem_comp_synonyms.
initial_dateInitial component date.
modified_dateLast modified date.
release_statusRelease status, such as REL or OBS.
replaced_byReplacement component ID, when present.
replacesComponent ID replaced by this component, when present.
atom_idsAtom identifiers from chem_comp_atom.
atom_elementsElement symbols for atom_ids.
atom_chargesAtom charges.
atom_aromatic_flagsAtom aromatic flags.
atom_leaving_flagsAtom leaving-atom flags.
atom_stereo_configsAtom stereochemistry flags.
atom_countNumber of atoms.
heavy_atom_countNumber of non-hydrogen atoms.
hydrogen_atom_countNumber of hydrogen atoms.
bond_atom_id_1First atom ID for each bond.
bond_atom_id_2Second atom ID for each bond.
bond_ordersBond order values.
bond_aromatic_flagsBond aromatic flags.
bond_stereo_configsBond stereochemistry flags.
bond_countNumber of bonds.
descriptor_typesDescriptor types such as SMILES, SMILES_CANONICAL, InChI, and InChIKey.
descriptorsDescriptor values.
canonical_smilesFirst SMILES_CANONICAL descriptor.
smilesFirst SMILES descriptor.
inchiFirst InChI descriptor.
inchikeyFirst InChIKey descriptor.
identifier_typesIdentifier types from pdbx_chem_comp_identifier.
identifiersIdentifier values.
systematic_namesIdentifier values whose type is SYSTEMATIC NAME.
audit_actionsAudit action types.
audit_datesAudit dates.
related_component_idsRelated component IDs, when present.
pcm_idsProtein modification annotation IDs, when present.
pcm_modified_residue_idsModified residue IDs from PCM annotations.
feature_typesFeature types from pdbx_chem_comp_feature.
feature_valuesFeature values from pdbx_chem_comp_feature.
split_bucketDeterministic split bucket from sha256(component_id) % 10.

Citation

@article{westbrook2015pdbccd,
  title   = {The chemical component dictionary: complete descriptions of constituent molecules in experimentally determined 3D macromolecules in the Protein Data Bank},
  author  = {Westbrook, John D. and Shao, Chuming and Feng, Zukang and Zhuravleva, Maria and Velankar, Sameer and Young, Jasmine},
  journal = {Bioinformatics},
  volume  = {31},
  number  = {8},
  pages   = {1274--1278},
  year    = {2015},
  doi     = {10.1093/bioinformatics/btu789}
}