ShEPhERD-score v1.3.2
What's Changed
- Add Jax-based MoleculePairBatch to speed up timings of larger datasets by @kentoabeywardane in #21
This PR introduces the class MoleculePairBatch which operates on a list of MoleculePair objects for accelerated alignment and scoring with Jax. It also includes refactoring of the container module while maintaining backwards compatibility. Finally, it has extensive improvements to the documentation.
Container
- This module was refactored into
_coreand_batchmodules where the previous classes/functions incontainerwere moved to_core. MoleculePairBatchis introduced to accelerate cpu-based alignment with Jax for a list ofMoleculePairobjects.- supports alignment for Vol, Vol+ESP, Surf, Surf+ESP, Pharm where the largest throughput gains are for Vol, Vol+ESP, and Pharm.
- Bucketing to reduce the number of padding and floating point operations is included.
- Multi-cpu processing is supported via
multiprocessing(MacOS only) andshard_map(requires Python>3.11 and Jax>0.9.0).
torch.compileimplementations were tested forMoleculePairBatch, but were not found to improve speed so were omitted from this PR.
Scoring
- Pharmacophore extended point scoring is now supported by an analytical implementation for PyTorch.
Documentation
- Added a theory page for representations, scoring functions, and analytical gradients.
- Benchmarking results for throughput of molecular alignments with
MoleculePairandMoleculePairBatchat a variety of different settings.
Full Changelog: v1.3.1...v1.3.2