Repository navigation
Add DCLV 3D descriptors - #373
Merged
scal444 merged 6 commits intoOct 23, 2026
Merged
Conversation
Port RDKit's DoubleCubicLatticeVolume (Double Cubic Lattice Method surface area and volume) as seven scalar properties in a new Dclv family, one per getter: DCLVSurfaceArea, DCLVPolarSurfaceArea, DCLVVolume, DCLVVDWVolume, DCLVPolarVolume, DCLVCompactness and DCLVPackingDensity. Any selection shares one kernel launch. One warp per conformer centers the coordinates on RDKit's centre of gravity in float64, then per atom gathers neighbors in shared memory (falling back to a full scan past 128) and tests RDKit's 320 dots. The probe-expanded dots serve every property but DCLVVDWVolume and the bare van der Waals dots serve DCLVVDWVolume and DCLVPackingDensity; each set is tested only when a requested property needs it. DclvOptions exposes probeRadius, includeSandP and includeHs. Custom radii, isProtein and includeLigand are not supported. Conformers with a dummy atom (radius 0), on which RDKit crashes, and rows with non-finite coordinates produce NaN. On 484 ChEMBL conformers FULL matches RDKit to 3e-15 relative and SINGLE to 1.2e-6 relative with no surface-dot flips, so the kernel computes in the requested precision apart from the existing float64 centering.
Contributor
[Medium impact] The reviewed changes appear safe to merge; no actionable issues remain.
|
evasnow1992
reviewed
Oct 22, 2026
| rows = [] | ||
| for mol in mols: | ||
| for conf in mol.GetConformers(): | ||
| dclv = rdMolDescriptors.DoubleCubicLatticeVolume(mol, probeRadius=options.probeRadius, confId=conf.GetId()) |
Collaborator
There was a problem hiding this comment.
The reference here uses the default-radii constructor, which RDKit 2025.09.1 doesn't have. Since 2025.09.1 is the documented minimum, may consider passing the radii explicitly. Same at descriptors3d_bench.py:146 and test_descriptors3d_dclv_bench.py
evasnow1992
approved these changes
Oct 22, 2026
evasnow1992
left a comment
Collaborator
There was a problem hiding this comment.
One rdkit version specific issue on the test and benchmark files. Other changes look good to me.
RDKit 2025.09.1's Python DoubleCubicLatticeVolume has no default-radii constructor. The Python test reference, descriptors3d_bench.py and its tests now pass per-atom van der Waals radii from the periodic table, which match the defaults of later RDKit releases exactly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.