Skip to main content

Rust-first SMILES enumeration and next-token decoding with Python bindings.

Project description

grimace-py

grimace-py is a Rust-first RDKit add-on for exact rooted SMILES support enumeration, online next-token decoding, seeded sampling, and reusable prepared molecules. It provides:

  • exact support enumeration for Grimace's supported writer language
  • exact token inventories implied by that support
  • legal next-token choices from a current SMILES prefix
  • seeded legal samples with per-step token choices
  • prepared molecule bytes for reuse without RDKit at read time

GRIMACE stands for "graph representation integrating multiple alternate chemical equivalents", motivated by research on NMR spectroscopy with language transformers (link).

The public import name is grimace. Install the PyPI distribution named grimace-py:

python -m pip install grimace-py
import grimace

Plain pip install grimace installs an unrelated older package.

Repository: github.com/numpde/grimace-py.

grimace-py is distributed under PolyForm-Noncommercial-1.0.0. Commercial use is not permitted under the current license.

Quick example

This example uses the currently supported runtime mode. See Runtime for flags and roots, and Limitations for scope and known gaps.

from rdkit import Chem
import grimace

mol = Chem.MolFromSmiles("CC(=O)Oc1ccccc1C(=O)O")

all_smiles = tuple(
    grimace.MolToSmilesEnum(
        mol,
        rootedAtAtom=-1,
        isomericSmiles=False,
        canonical=False,
        doRandom=True,
    )
)

assert len(all_smiles) == 304

What to use

  • Enumerate every supported string with MolToSmilesEnum(...).
  • Step through legal next tokens with MolToSmilesDecoder(...) or MolToSmilesDeterminizedDecoder(...).
  • Draw one seeded legal string with per-step token choices using MolToSmilesSample(...).
  • Diagnose rejected candidates with MolToSmilesDeviation(...).
  • Build dataset token coverage with MolToSmilesTokenInventorySuperset(...).
  • Reuse prepared molecules with PrepareMol(...) and PreparedMol.

Documentation

Please find the main documentation at numpde.github.io/grimace-py.

Install

Package metadata declares Python >=3.11 and rdkit>=2026.3. See Runtime for the exercised wheel and source-distribution matrix.

For a host source build, you need Rust >=1.83 and maturin:

python -m venv .venv
. .venv/bin/activate
python -m pip install maturin
maturin develop --release

Development

Routine local checks are Docker-backed:

make checks
make ci
make test-package
make docs
make docs-serve

See containerized development for the lane contract.

License

grimace-py is source-available under PolyForm Noncommercial 1.0.0. Third-party components remain under their own licenses; see THIRD_PARTY_NOTICES.md. Commercial use requires a separate commercial license from the author.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

grimace_py-0.1.18.tar.gz (5.4 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

grimace_py-0.1.18-cp314-cp314-manylinux_2_28_x86_64.whl (776.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

grimace_py-0.1.18-cp313-cp313-manylinux_2_28_x86_64.whl (778.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

grimace_py-0.1.18-cp312-cp312-manylinux_2_28_x86_64.whl (778.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

grimace_py-0.1.18-cp311-cp311-manylinux_2_28_x86_64.whl (782.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

File details

Details for the file grimace_py-0.1.18.tar.gz.

File metadata

  • Download URL: grimace_py-0.1.18.tar.gz
  • Upload date:
  • Size: 5.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for grimace_py-0.1.18.tar.gz
Algorithm Hash digest
SHA256 c8bcf94fa8ac2b6033607d59366e7c09415f3d4cb55e1c8b9f42a673d7bd8026
MD5 b140176129995cda413d62acd26dfdee
BLAKE2b-256 da4d3b47853fa67adcbc071609b15cc43f88a7cb92ac8eeef7165ae860d74ab6

See more details on using hashes here.

Provenance

The following attestation bundles were made for grimace_py-0.1.18.tar.gz:

Publisher: release.yml on numpde/grimace-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file grimace_py-0.1.18-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for grimace_py-0.1.18-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 490a568d9065be54c14dc598ecdb21758f7378e0af2503600912a28bffbabee1
MD5 eadd3f17a3c6fbb0904923e6dc6ca935
BLAKE2b-256 6c5ce4783b3c153cf1165f64f64714771e2c431b2f838ba4ea5fdfc8915802b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for grimace_py-0.1.18-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: release.yml on numpde/grimace-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file grimace_py-0.1.18-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for grimace_py-0.1.18-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2ba0bbda805b1f56ecae3d7ac181d81491eee897078b6c3da0e0a3163f56bca6
MD5 5c33c3d675f912b1e35b5e3d633f652e
BLAKE2b-256 da43b7162a69a4f0bba58b8c44f797195426266bea62728c6913ffeaf4578ac4

See more details on using hashes here.

Provenance

The following attestation bundles were made for grimace_py-0.1.18-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: release.yml on numpde/grimace-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file grimace_py-0.1.18-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for grimace_py-0.1.18-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 14589d18295e418b5570566953250b5b039a4c20c79ef7815eb221e98ff239ee
MD5 83989b981879867df100e4649a8d16a9
BLAKE2b-256 289747ec9791136a323d518ec56ae04e5e1667fb795abca36f14a5b456630987

See more details on using hashes here.

Provenance

The following attestation bundles were made for grimace_py-0.1.18-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: release.yml on numpde/grimace-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file grimace_py-0.1.18-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for grimace_py-0.1.18-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 58d78d19d4c11f9a2131eeaaf61076b244481fffc22e838dce6d661015b6b8e0
MD5 73decac2613d13eda95199773d58fd79
BLAKE2b-256 a453042853791959e8a7532f948488ff6858a821af4ab73291bdca075bde2755

See more details on using hashes here.

Provenance

The following attestation bundles were made for grimace_py-0.1.18-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: release.yml on numpde/grimace-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page