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, 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
  • prepared molecule bytes for reuse outside RDKit

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 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(...).
  • 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 matrix

Package metadata declares Python >=3.11 and rdkit>=2026.3.

The currently exercised release matrix publishes Linux x86_64 wheels for CPython 3.12 and 3.13, plus a source distribution. Other Python versions and non-Linux platforms are expected source-build paths today.

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 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.12.tar.gz (4.8 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.12-cp313-cp313-manylinux_2_28_x86_64.whl (743.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

grimace_py-0.1.12-cp312-cp312-manylinux_2_28_x86_64.whl (743.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

File details

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

File metadata

  • Download URL: grimace_py-0.1.12.tar.gz
  • Upload date:
  • Size: 4.8 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.12.tar.gz
Algorithm Hash digest
SHA256 234c08ec0e16695bfb5a3acbaa979b757a7e20808f863f41b47e8fccb3179394
MD5 e9302635e32f1151ef72b39352b5f03a
BLAKE2b-256 1bd7f12eace0500aa4d7c0a76206b180cf6763b73cf3ee76be3dcfac761123a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for grimace_py-0.1.12.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.12-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for grimace_py-0.1.12-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 258a5b8cecc4e3a58f311f2ce545f552b23d6201c49f3f92a2a6fb199b6a080e
MD5 a5fddbe4ab3cda5e0a92acac116a8fc0
BLAKE2b-256 9aec53234b5adfec541515b26838222461d4a168ffdf485f808dc8501d9dcf26

See more details on using hashes here.

Provenance

The following attestation bundles were made for grimace_py-0.1.12-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.12-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for grimace_py-0.1.12-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1d63fe0ca4340ddb58c14745f304e36e8aadbffd5cf0862a255b13d8bc5be1e5
MD5 6a592854febcfc22515002891582ce32
BLAKE2b-256 1fb66c53e6442644edd96e4e3b70d19dbc8c155dce4b7a5d183f7a9d79dfd2ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for grimace_py-0.1.12-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.

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