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.
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.
Dataset Statistics
Usage
Install the Hugging Face Datasets library:
pip install datasetsLoad all splits:
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:
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:
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:
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:
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
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}
}