Skip to main content

chem-highlighter

Highlighting API for chemical molecules. Given a molecule and a set of atoms/bonds/rings to color, produces highlighted SVG/PNG/console output, or plain format conversion (SDF, Mol, RXN, CDX, CDXML, SMILES, InChI, InChIKey, SVG, EPS, PNG). Backend-agnostic: RDKitMolecule (built in, uses RDKit for everything) implements the HighlightBackendMolecule ABC; other backends can implement the same ABC against a different underlying engine, so code written against HighlightBackendMolecule is not tied to RDKit specifically.

Document (also in chem_highlighter/hml.py) wraps a list of molecule-backend instances parsed from a single input, for formats that can legitimately hold more than one structure: SDF (every record, not just the first), RXN (reactants/agents/products), CDXML (any number of fragments), and dot-separated SMILES. HighlightBackendMolecule.from_bytes keeps its existing single-molecule restrictions unchanged (e.g. still rejects multi-fragment CDXML); Document is the opt-in multi-molecule path built on top of it.

Prerequisites

Python >= 3.10, < 3.15. RDKit, matplotlib, numpy, polars, scipy, msgspec are pulled in as dependencies.

Installation

pip install chem-highlighter

For a local development install:

pip install -e .
# or: uv sync

Usage

import msgspec
from chem_highlighter import RDKitMolecule, HML

doc = RDKitMolecule.from_string("c1ccccc1O", "SMILES")
doc.cleanup()

hml = HML(highlighted_atoms={6: 0}, palette=["#ff0000"])
doc.highlight_from_json(msgspec.json.encode(hml).decode())

svg = doc.to_svg()
png = doc.to_png()

HighlightBackendMolecule (chem_highlighter/hml.py) is the actual interface: construction (from_bytes/from_string/from_mol/from_molblock), export (export/export_string/ to_molblock/to_svg/to_png/to_console), and editing (cleanup, kekulize, align_to_reference, hide_hydrogens, highlight_from_json) — each editing method is one-shot per document (calling it twice, or in the wrong order relative to another, raises ValueError); see the class docstrings for the exact rules.

Modules

  • hml — the HighlightBackendMolecule ABC, the multi-molecule Document class, and HML/HMol highlight-payload types.
  • backend/rdkit.py — RDKitMolecule, the RDKit-backed implementation.
  • align — align one molecule to another via bond flips + rotation (used by align_to_reference).
  • decomposer — R-group decomposition, core/residue splitting, and plotting decomposed sets.
  • diff — highlight the difference between two SMILES strings.
  • modify — rotate/mirror/flip-bond primitives on RDKit molecules.
  • state — save and restore RDKit atom state (used internally by modify/align).
  • table — render a Polars DataFrame as an AG Grid HTML table.
  • utils — shared helpers: conformer comparison, high-precision V3000 export, PNG render options, color/console formatting.

Environment variables

PNG rendering (RDKitMolecule.export/to_png, utils.get_png_render_options) reads:

  • CHEM_HIGHLIGHTER_PNG_WIDTH, CHEM_HIGHLIGHTER_PNG_HEIGHT — bounding box in pixels; the molecule is scaled to fit and centered. If only one is set, the other mirrors it. Unset: keeps the default RDKit canvas sizing (unbounded).
  • CHEM_HIGHLIGHTER_PNG_TRANSPARENT — true for a transparent background instead of white.

Named to match the PNG env vars of other backend implementations, so a caller using more than one backend configures PNG output once.

Testing

pytest
mypy .
ruff check .

Coverage is configured for 100% (the [tool.coverage.report] section of pyproject.toml, fail_under = 100). vulture is configured to flag dead code ([tool.vulture]).

Some tests (the image/PNG-size tests in tests/test_rdkit.py, the shared assertions in tests/backend_test.py) rely on native RDKit rendering; no native/OS-specific setup needed beyond the pip install above.

License

MIT, see LICENSE.

Metadata

Release files for chem-highlighter 0.3.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for chem-highlighter 0.3.3
File Size Uploaded Provenance
chem_highlighter-0.3.3.tar.gz 70.7 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for chem-highlighter 0.3.3
File Interpreter ABI Platform
chem_highlighter-0.3.3-py3-none-any.whl Python 3 none any Details

Total release size: 113.8 kB

Release files / chem_highlighter-0.3.3.tar.gz

Download URL chem_highlighter-0.3.3.tar.gz
Size 70.7 kB
Tags Source
SHA-256 checksum
How to use checksums
7637c1abf7dcd361e6a382f08cc565784219525fb8c913cefabdae0a943945d1
BLAKE2b-256 checksum
How to use checksums
cb460df575168d8e4df094e850bdcc871cccae9455f22f522cdcd2a5f1e79454
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Release files / chem_highlighter-0.3.3-py3-none-any.whl

Download URL chem_highlighter-0.3.3-py3-none-any.whl
Size 43.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b3af75cec81766a46ec1c293d63f54f9821e6be7e2d5b0984f7292be608dc169
BLAKE2b-256 checksum
How to use checksums
20e9b607e942b85697c4f0b7c40e83a7b63a90769df616fe497b42d8a3aa825a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

Security for chem-highlighter 0.3.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for chem_highlighter-0.3.3.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page