Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
1b37aeb
traj: keep rMD17 energies float64 and detect quantized energies
ComDec Sep 17, 2026
cccdbe3
traj: reproduce the published energy protocol from the CLI
ComDec Sep 17, 2026
46dc441
tests: trajectory window schemes, float64 energies, Tanimoto, metric …
ComDec Sep 17, 2026
9f7584f
docs: energy metric definitions for paper and v2
ComDec Sep 17, 2026
f88e337
chirality: --distance, --unsup-kmax, --metric-version, --n-jobs and i…
ComDec Sep 17, 2026
3559cfc
tests: chirality distance switch, unsup kmax, metric versions, valida…
ComDec Sep 17, 2026
db26e82
reproduce: energy Tables 3/6/7 runner, collector and paper values
ComDec Sep 17, 2026
3af40ab
chirality: run molecule batches with joblib/loky instead of a fork pool
ComDec Sep 17, 2026
7482a68
reproduce/table2_chirality: run.sh, models.csv, make_results.py
ComDec Sep 17, 2026
ad5eab9
rotation: shard-aware embedding slicing, versioned geometry metrics
ComDec Sep 17, 2026
0400a52
infra: rdkit dependency, optional scikit-learn-extra, CWD-based paths…
ComDec Sep 17, 2026
2f2a4d0
cli: download subcommand and rotation evaluate options
ComDec Sep 17, 2026
7fefcd5
reproduce: compare.py, Table 1 geometry scripts, rMD17 splits
ComDec Sep 17, 2026
b122c24
docs: quick start, reproducing the paper, metrics and embeddings
ComDec Sep 17, 2026
e8260f4
traj: task-agnostic --metric-version help, run.sh EXTRA_ARGS, quiet e…
ComDec Sep 17, 2026
05c74c1
chirality: expected values, metric documentation, v2 Hopkins populati…
ComDec Sep 17, 2026
9053551
reproduce: expected values for energy Tables 3/6/7 (paper and v2)
ComDec Sep 17, 2026
db66fbe
Merge branch 'fix/rotation-infra' into repro/v1
ComDec Sep 17, 2026
f6d91cf
Merge branch 'fix/chirality' into repro/v1
ComDec Sep 17, 2026
60238d6
Merge branch 'fix/energy' into repro/v1
ComDec Sep 17, 2026
6dc3fdf
integrate: resolve USAGE TODOs, declare joblib, make examples importa…
ComDec Sep 17, 2026
f6e1d72
integrate: make the dense Tanimoto test independent of the RDKit version
ComDec Sep 17, 2026
510fa53
integrate: ignore reproduce/*/out/ (default output dir of the energy …
ComDec Sep 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@ jobs:
with:
python-version: "3.11"
- run: pip install ruff
- run: ruff check src/ tests/
- run: ruff format --check src/ tests/
- run: ruff check src/ tests/ examples/ reproduce/
- run: ruff format --check src/ tests/ examples/ reproduce/

test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
steps:
Expand All @@ -30,15 +31,15 @@ jobs:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
pip install rdkit-pypi
- name: Run tests
run: pytest -m "not slow" --tb=short -q --cov=three_dbench --cov-report=xml
- name: Upload coverage
if: matrix.python-version == '3.11'
uses: codecov/codecov-action@v4
with:
files: coverage.xml
fail_ci_if_not_required: false
fail_ci_if_error: false
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,6 @@ examples/.demo_cache/

# Claude Code local settings
.claude/

# Reproduction script outputs
reproduce/*/out/
42 changes: 42 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
cff-version: 1.2.0
message: "If you use 3DCS, please cite the ICLR 2026 paper."
title: "3DCS: Datasets and Benchmark for Evaluating Conformational Sensitivity in Molecular Representations"
type: software
license: MIT
repository-code: "https://github.com/ComDec/3DCS"
url: "https://openreview.net/forum?id=JAb0y8lkqL"
authors:
- family-names: Wang
given-names: Xi
- family-names: Zhang
given-names: Yang
- family-names: Zhang
given-names: Yingjia
- family-names: Cai
given-names: Yejia
- family-names: Wang
given-names: Shengjie
keywords:
- molecular representation learning
- conformers
- chirality
- benchmark
preferred-citation:
type: conference-paper
title: "3DCS: Datasets and Benchmark for Evaluating Conformational Sensitivity in Molecular Representations"
authors:
- family-names: Wang
given-names: Xi
- family-names: Zhang
given-names: Yang
- family-names: Zhang
given-names: Yingjia
- family-names: Cai
given-names: Yejia
- family-names: Wang
given-names: Shengjie
collection-title: "The Fourteenth International Conference on Learning Representations (ICLR 2026)"
conference:
name: "International Conference on Learning Representations (ICLR)"
year: 2026
url: "https://openreview.net/forum?id=JAb0y8lkqL"
18 changes: 10 additions & 8 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,10 @@ cd 3DCS
python -m venv .venv
source .venv/bin/activate

# Install in editable mode with dev dependencies
# Install in editable mode with dev dependencies (RDKit comes from the `rdkit` package on PyPI;
# do not install `rdkit-pypi`)
pip install -e ".[dev]"

# Install RDKit (required for molecule parsing)
pip install rdkit-pypi

# Install pre-commit hooks
pre-commit install
```
Expand All @@ -37,19 +35,21 @@ pytest --cov=three_dbench
pytest -m "not slow"
```

CI runs `pytest -m "not slow"` on Python 3.9, 3.10, 3.11 and 3.12.

## Code Style

This project uses [ruff](https://docs.astral.sh/ruff/) for linting and formatting.

```bash
# Check for issues
ruff check src/ tests/
# Check for issues (the same paths as CI and `make lint`)
ruff check src/ tests/ examples/ reproduce/

# Auto-fix issues
ruff check --fix src/ tests/
ruff check --fix src/ tests/ examples/ reproduce/

# Format code
ruff format src/ tests/
ruff format src/ tests/ examples/ reproduce/
```

Key style rules:
Expand All @@ -65,6 +65,8 @@ Key style rules:
4. Add a benchmark entry point in `src/three_dbench/benchmarks/my_task.py`
5. Register the task in `src/three_dbench/__main__.py`
6. Add tests under `tests/`
7. Document the metric definitions under `docs/metrics/` and, if the task reproduces a paper table,
add `reproduce/<table>/` with `run.sh` and `expected.csv` (see `reproduce/README.md`)

## Submitting Changes

Expand Down
11 changes: 6 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,20 @@ install:

dev:
pip install -e ".[dev]"
pip install rdkit-pypi
pre-commit install

test:
pytest

LINT_PATHS = src/ tests/ examples/ reproduce/

lint:
ruff check src/ tests/
ruff format --check src/ tests/
ruff check $(LINT_PATHS)
ruff format --check $(LINT_PATHS)

format:
ruff check --fix src/ tests/
ruff format src/ tests/
ruff check --fix $(LINT_PATHS)
ruff format $(LINT_PATHS)

clean:
rm -rf build/ dist/ *.egg-info .pytest_cache .mypy_cache .ruff_cache htmlcov/
Expand Down
Loading
Loading