The Dataset Viewer has been disabled on this dataset.

3DCS baseline embeddings

This repository holds the embedding files of the baseline molecular representations evaluated in the ICLR 2026 paper 3DCS: Datasets and Benchmark for Evaluating Conformational Sensitivity in Molecular Representations. It also holds the metric outputs of the original evaluation runs and the rMD17 split files.

The files are the original bytes produced in the authors' 2025 runs. Only directory names were normalized. File names, array keys and contents are unchanged, and every file's sha256 is listed in manifest.csv.

Contents

139 data files (21.16 GB) plus README.md and manifest.csv.

Directory Contents Files Size Paper
chirality/<model>/ Embeddings of the 52,391 chirality conformers, 7 models 7 382 MB Table 2
chirality_legacy_15218/ Embeddings of an older 15,218-conformer chirality set (3,978 molecules), 5 models 6 205 MB Table 4
traj/<model>/ Embeddings of the rMD17 frames (10 molecules), 7 models 70 7.10 GB Tables 3, 6
rotation/gemnet/ GemNet embeddings of all 10,097,643 rotation conformers (16 shards) 16 5.17 GB Table 1
rotation/{fmg,mace}/ FMG and MACE embeddings of rotation shard 0 only 2 904 MB not used in the paper
results/chirality/ Per-molecule and summary outputs of the original chirality runs 7 6.8 MB Tables 2, 4
results/traj/ Per-window and summary outputs of the original energy runs 16 12.0 MB Tables 3, 6, 7
results/rotation/ Per-molecule and summary outputs of the original geometry runs 5 7.38 GB Table 1
splits/rmd17/ Official rMD17 train/test index files, splits 01–05 10 59 KB Tables 8, 9 (split 01)
README.md
manifest.csv
chirality/
  e3fp/sampled_chi.pkl
  gemnet/sampled_feature.npz
  molae/1.npz
  molspectra/sampled_mol_feature.npz
  unimol/1.npz
  fmg/chirality_bench_conformers_noised_only_aslist_embed.npz
  mace/chirality.npz
chirality_legacy_15218/
  molae/0.npz  unimol/0.npz  gemnet/chirality_gemnet128.npz  molspectra/mol_feature.npz
  e3fp/chi.pkl  chirality_embedding_dict.pkl
traj/{e3fp,gemnet,molae,molspectra,unimol,fmg,mace}/rmd17_<molecule>.{npz,pkl}
rotation/
  gemnet/rotation_conformers_{0..15}.npz
  fmg/rot_mol_list_0_embed.npz
  mace/rot0.npz
results/
  chirality/en_sep_results/{e3fp,gemnet,molae,molspectra,unimol}.json, summary.csv
  chirality/chirality_metrics_summary.csv
  traj/energy_metrics_out/{config.json, summary_overall.csv, details_long.csv, details_rmd17_<molecule>.csv}
  traj/energy_metrics_out_fix_ckf/{config.json, summary_overall.csv}
  traj/traj_e.csv
  rotation/{all_metric.csv, model_metric_summary.csv, summary.parquet, metrics_all_0.1_1.json.gz, metrics_sup_100.json.gz}
splits/rmd17/index_{train,test}_0{1..5}.csv

<molecule> is one of aspirin, azobenzene, benzene, ethanol, malonaldehyde, naphthalene, paracetamol, salicylic, toluene, uracil.

File formats

All .npz files hold float32 embedding matrices with one row per conformer. The array key differs between models, so pass it explicitly (for example --embedding-key in the toolkit CLI). E3FP fingerprints are pickled lists of RDKit ExplicitBitVect objects and need RDKit to load. No embedding array contains NaN or Inf values.

chirality/ (Table 2)

Model File Key Shape dtype
E3FP chirality/e3fp/sampled_chi.pkl dict key e3fp list of 52,391 ExplicitBitVect (1,024 bits) RDKit bit vector
GemNet chirality/gemnet/sampled_feature.npz gemnet (52391, 128) float32
MolAE chirality/molae/1.npz arr_0 (52391, 512) float32
MolSpectra chirality/molspectra/sampled_mol_feature.npz arr_0 (52391, 256) float32
UniMol chirality/unimol/1.npz arr_0 (52391, 512) float32
FMG chirality/fmg/chirality_bench_conformers_noised_only_aslist_embed.npz embeddings (52391, 128) float32
MACE chirality/mace/chirality.npz arr_0 (52391, 256) float32
  • sampled_chi.pkl also has a morgan key (52,391 Morgan ExplicitBitVect, 2,048 bits), which Table 2 does not use.
  • The FMG file also has a smiles key (one SMILES string per row).
  • In mace/chirality.npz, 17 rows have an L2 norm above 10 times the median row norm (median 1.03, maximum about 1.5e4). The file is published as it was used.

traj/ (Tables 3 and 6)

Each model directory has one file per rMD17 molecule. Each file has 100,000 rows, except rmd17_azobenzene, which has 99,988.

Model Directory Key Dim dtype
E3FP traj/e3fp/rmd17_<molecule>.pkl pickled list 1,024 bits RDKit ExplicitBitVect
GemNet traj/gemnet/rmd17_<molecule>.npz gemnet 128 float32
MolAE traj/molae/rmd17_<molecule>.npz arr_0 512 float32
MolSpectra traj/molspectra/rmd17_<molecule>.npz arr_0 256 float32
UniMol traj/unimol/rmd17_<molecule>.npz arr_0 512 float32
FMG traj/fmg/rmd17_<molecule>.npz embeddings (also smiles) 128 float32
MACE traj/mace/rmd17_<molecule>.npz arr_0 256 float32

rotation/ (Table 1)

Model Files Key Rows Dim dtype
GemNet rotation/gemnet/rotation_conformers_{0..15}.npz (file index = shard) gemnet 627,436–633,781 per shard; 10,097,643 in total 128 float32
FMG rotation/fmg/rot_mol_list_0_embed.npz (shard 0 only) embeddings (also smiles) 630,021 128 float32
MACE rotation/mace/rot0.npz (shard 0 only) arr_0 630,021 256 float32

This repository holds rotation embeddings for GemNet (all 16 shards) and for FMG and MACE (shard 0). The per-molecule metrics of all five Table 1 models are in results/rotation/.

chirality_legacy_15218/ (Table 4)

This is an older version of the chirality set, with 15,218 conformers of 3,978 molecules and heavy atoms only. It is not part of EscheWang/3dcs.

File Content
chirality_embedding_dict.pkl dict {mol_id: {"mol": [RDKit Mol], "e3fp", "morgan", "gemnet", "molae", "molspectra", "unimol", "opd"}}, 3,978 molecules
molae/0.npz, unimol/0.npz key arr_0, (15218, 512) float32
gemnet/chirality_gemnet128.npz key gemnet, (15218, 128) float32
molspectra/mol_feature.npz key mol_feature, (15218, 256) float32
e3fp/chi.pkl dict {"base": {mol_id: [Mol]}, "e3fp": {"fps": {mol_id: [ExplicitBitVect(1024)]}}, "morgan": {"fps": {...}}}

Alignment with the conformer datasets

Chirality

Rows follow the conformer order of EscheWang/3dcs config chirality: dataset rows in file order, then mol_blocks in list order. Row r of the dataset owns embedding rows offset : offset + n_conformers.

import numpy as np
from datasets import load_dataset
from huggingface_hub import hf_hub_download

chir = load_dataset("EscheWang/3dcs", name="chirality", split="train")
path = hf_hub_download("EscheWang/3dcs-embeddings", "chirality/unimol/1.npz", repo_type="dataset")
X = np.load(path)["arr_0"]                      # (52391, 512)

row = chir[0]
Z = X[row["offset"] : row["offset"] + row["n_conformers"]]   # one row per MolBlock in row["mol_blocks"]

The per-molecule JSON files in results/chirality/en_sep_results/ list the 3,903 molecules in the same order as the mol_id values of the chirality config.

Trajectories (rMD17)

Row i of traj/<model>/rmd17_<molecule>.* is the frame with frame_idx == i for mol_type == "rmd17_<molecule>" in config traj_frames, and energy i in config traj_energies. rMD17 frames are not stored in molecular-dynamics time order, so consecutive rows are not consecutive MD steps.

Rotation

The GemNet embeddings are stored per shard, and the offset column of config rotation counts within a shard:

  • rotation/gemnet/rotation_conformers_<s>.npz holds the conformers of all dataset rows with shard == s.
  • A row with shard == s owns rows offset : offset + n_conformers of that file.
  • The rows of the rotation config are grouped by shard in the order 0, 1, 10, 11, …, 15, 2, …, 9, and offset restarts at 0 for each shard. Do not use offset as an index into one concatenated array.
import numpy as np
from datasets import load_dataset
from huggingface_hub import hf_hub_download

rot = load_dataset("EscheWang/3dcs", name="rotation", split="train").select_columns(
    ["key", "shard", "offset", "n_conformers", "torsion_deg"])

_cache = {}
def gemnet_rows(row):
    s = row["shard"]
    if s not in _cache:
        f = hf_hub_download("EscheWang/3dcs-embeddings", f"rotation/gemnet/rotation_conformers_{s}.npz",
                            repo_type="dataset")
        _cache[s] = np.load(f)["gemnet"]
    return _cache[s][row["offset"] : row["offset"] + row["n_conformers"]]   # aligned with row["torsion_deg"]

How this rule was checked:

  • Row counts. In each shard, the number of rows in rotation_conformers_<s>.npz equals the sum of n_conformers over the dataset rows with shard == s. The per-shard totals (627,436 to 633,781) are all different, so a file cannot be matched to the wrong shard without a count mismatch.
  • Source order. The source files of the 16 shards (rot_conf_deg_<s>.lmdb, not included here) list the same molecules as the rotation config, in the same order, with the same n_conformers and torsion_deg.
  • Molecule boundaries in the embeddings. Conformers of one molecule are close in GemNet space, so a new molecule shows up as a jump between consecutive rows. In each of the 16 files, 91–92% of the molecule boundaries given by offset coincide with a jump larger than the 99th percentile of within-molecule steps. With offset shifted by 7 rows in either direction, about 15% coincide.
  • Stored pair distances. The per-molecule metric files in results/rotation/ store GemNet distances between conformer pairs. In metrics_all_0.1_1.json.gz, all stored distances of 145,293 of the 146,389 molecules are reproduced (relative difference ≤ 1e-5) from the rows selected by this rule.

The GitHub toolkit reads these files with evaluate rotation --layout by-shard, which applies exactly this rule.

Older chirality set

Rows of the four 15,218-row .npz files follow the key order of chirality_embedding_dict.pkl, with each molecule's conformers in list order. Flattening the dictionary in that order reproduces the four files exactly.

Download

Download only what you need with huggingface_hub:

from huggingface_hub import snapshot_download

# Table 2 embeddings of all 7 models (382 MB)
snapshot_download("EscheWang/3dcs-embeddings", repo_type="dataset", local_dir="3dcs-embeddings",
                  allow_patterns=["manifest.csv", "chirality/*"])

# One model on the rMD17 trajectories
snapshot_download("EscheWang/3dcs-embeddings", repo_type="dataset", local_dir="3dcs-embeddings",
                  allow_patterns=["traj/gemnet/*"])

# One rotation shard
snapshot_download("EscheWang/3dcs-embeddings", repo_type="dataset", local_dir="3dcs-embeddings",
                  allow_patterns=["rotation/gemnet/rotation_conformers_0.npz"])

The same with the command line:

hf download EscheWang/3dcs-embeddings --repo-type dataset --include "chirality/*" --local-dir 3dcs-embeddings

The GitHub toolkit provides a download helper for these files, for example python -m three_dbench download embeddings --task chirality (see the toolkit README for the version that includes it).

Check downloads against the sha256 column of manifest.csv.

Evaluate

Save the conformer dataset in the format the CLI reads, then pass an embedding file and its key:

from datasets import load_dataset
load_dataset("EscheWang/3dcs", name="chirality", split="train").save_to_disk("data/hf/chirality")
python -m three_dbench evaluate chirality \
  --dataset-dir data/hf/chirality \
  --embeddings 3dcs-embeddings/chirality/unimol/1.npz \
  --embedding-key arr_0 \
  --model-name unimol \
  --output-dir results/chirality_unimol

Use --embedding-key gemnet for GemNet and --embedding-key embeddings for FMG. See the GitHub repository for the trajectory and rotation evaluators, E3FP inputs, and the expected values for each table.

manifest.csv

One row per data file (README.md and manifest.csv are not listed). Columns:

Column Meaning
path Path in this repository
task chirality, chirality_legacy_15218, traj or rotation
model Model name, or the models covered by a results file
size_bytes, sha256 Size and SHA-256 of the file
format npz, pickle, csv, json, json.gz or parquet
keys, shape, dtype Array keys with their shapes and dtypes (;-separated, in the same order). For pickles, CSV and JSON, a short description of the structure
source_nyubox_path Where the file came from in the authors' internal archive, as a label; the internal path itself is not published. The column name is kept so existing scripts keep working
source_mtime Modification time of the source file (UTC)
paper_tables Paper tables that the file relates to
extraction_status The extraction script for this file, where one exists, and how closely a rerun of it agrees with this file. "Full-precision conformers" means the authors' source RDKit molecules; starting from the four-decimal MolBlocks published in EscheWang/3dcs the agreement is looser, as baselines/README.md describes
notes Additional information

Provenance and status

  • Origin. The embeddings were computed by the authors in 2025: in September for E3FP, GemNet, MolAE, MolSpectra and UniMol, and on 18 November for FMG and MACE. All files except results/traj/traj_e.csv were copied from the authors' backup without modification, and their SHA-1 and size were checked against the backup copy. results/traj/traj_e.csv comes from the authors' paper directory.

  • E3FP fingerprints. They are produced with e3fp 1.2.7 and the parameters below. Recomputing 3,000 random chirality conformers from the source RDKit molecules gives bit-identical fingerprints; starting from the MolBlocks in EscheWang/3dcs, about 5% of conformers get different bits.

    from e3fp.pipeline import fprints_from_mol   # e3fp 1.2.7
    
    fp = fprints_from_mol(mol, fprint_params=dict(bits=1024, level=5, radius_multiplier=1.5, stereo=True,
                          include_disconnected=True, rdkit_invariants=True, first=1, counts=False))[0].to_rdkit()
    
  • Other models. For each file, the array key, shape and dtype are listed above and in manifest.csv; every file holds one row per conformer in the order described under Alignment.

  • Extraction scripts. The GitHub repository carries one extraction script per baseline model under baselines/, each with a pinned environment, the upstream commit it drives and the SHA-256 of the weight file it loads; the extraction_status column of manifest.csv records, per file, what that script reproduces.

  • Reference values. reproduce/ in the GitHub repository recomputes the chirality and energy tables from these embeddings and compares a run against the reference values of that release.

  • Results files.

    • results/chirality/en_sep_results/ holds the per-molecule outputs behind Table 2 for E3FP, GemNet, MolAE, MolSpectra and UniMol. They were computed with Euclidean distance between embeddings. FMG and MACE were not part of that run.
    • results/chirality/chirality_metrics_summary.csv holds the summary for the older 15,218-conformer set. Its __cosine columns correspond to the Spearman, Kendall and CKA rows of Table 4.
    • results/traj/traj_e.csv is the table from which Tables 6 and 7 were taken. It comes from the authors' paper directory, not from the backup. Its non-EJS columns equal energy_metrics_out/summary_overall.csv, and its EJS columns were recomputed with a multi-λ robust variant.
    • results/traj/energy_metrics_out_fix_ckf/ is an earlier run with the same configuration.
    • results/rotation/metrics_all_0.1_1.json.gz holds per-molecule metrics from a run on a 10% sample of molecules. It is the source of the Spearman, Kendall, CKA, isoR² and Torsion-SP cells of Table 1.
    • results/rotation/metrics_sup_100.json.gz holds per-molecule LIE@k and AS from a run over 1,464,493 molecules. It is the source of the LIE@k and AS cells of Table 1.
    • all_metric.csv, model_metric_summary.csv (a byte-identical copy) and summary.parquet are model-level summaries of the 10% sample run.
  • Splits. splits/rmd17/ holds the official rMD17 split index files, unchanged. The RMD17 fine-tuning inputs in the authors' backup correspond to split 01.

  • Not included. Rotation embeddings for E3FP, UniMol, MolAE and MolSpectra, and fine-tuned model checkpoints.

License

The contents of this repository are released under CC BY-SA 4.0.

The embeddings are outputs of third-party models, and this repository does not restate the licenses of those models or their weights. If you use the embeddings, please cite the original model papers as well as 3DCS:

  • E3FP: Axen et al., A simple representation of three-dimensional molecular structure, J. Med. Chem. 60(17), 2017.
  • GemNet: Gasteiger, Becker and Günnemann, GemNet: Universal directional graph neural networks for molecules (arXiv:2106.08903).
  • MolAE: Yang et al., Mol-AE: Auto-encoder based molecular representation learning with 3D cloze test objective (bioRxiv 2024).
  • MolSpectra: Wang et al., MolSpectra: Pre-training 3D molecular representation with multi-modal energy spectra (arXiv:2502.16284).
  • UniMol: Zhou et al., Uni-Mol: A universal 3D molecular representation learning framework (ICLR 2023).
  • MACE: Batatia et al., MACE: Higher order equivariant message passing neural networks for fast and accurate force fields (arXiv:2206.07697).
  • FMG: Dumitrescu et al., E(3)-equivariant models cannot learn chirality: Field-based molecular generation (ICLR 2025).

The conformers come from ChEMBL (CC BY-SA 3.0), rMD17 (CC0) and the authors' rotation library (see EscheWang/3dcs). The rMD17 split files are part of rMD17 (Christensen and von Lilienfeld, 2020).

Citation

@inproceedings{wang2026threedcs,
  title     = {3{DCS}: Datasets and Benchmark for Evaluating Conformational Sensitivity in Molecular Representations},
  author    = {Wang, Xi and Zhang, Yang and Zhang, Yingjia and Cai, Yejia and Wang, Shengjie},
  booktitle = {The Fourteenth International Conference on Learning Representations (ICLR)},
  year      = {2026},
  url       = {https://openreview.net/forum?id=JAb0y8lkqL}
}
Downloads last month
88

Papers for EscheWang/3dcs-embeddings