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.pyRDKitMolecule, 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_TRANSPARENTtrue 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.

Download files

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

Source Distribution

chem_highlighter-0.3.2.tar.gz (70.0 kB view details)

Uploaded Source

Built Distribution

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

chem_highlighter-0.3.2-py3-none-any.whl (42.8 kB view details)

Uploaded Python 3

File details

Details for the file chem_highlighter-0.3.2.tar.gz.

File metadata

  • Download URL: chem_highlighter-0.3.2.tar.gz
  • Upload date:
  • Size: 70.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for chem_highlighter-0.3.2.tar.gz
Algorithm Hash digest
SHA256 cd1f588030d573811ea82cbc307157122a43b2100ec375424e87ba5071bffbd8
MD5 53e9897a50e9acdd4878809cb54837b5
BLAKE2b-256 f4e72c714c5d3157c9b6d235e0163cb25f31be7249c4c25d20aae98912a319cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for chem_highlighter-0.3.2.tar.gz:

Publisher: release.yml on audivir/chem-highlighter

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

File details

Details for the file chem_highlighter-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for chem_highlighter-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 4dd6904f520a5dc9b0f82593e700f0962d0bab2a96a4920fa3b9e3244381d95d
MD5 05e5a82df7f0559179e0b33e780762a2
BLAKE2b-256 01221d6b8d3d66a8c165da095b1ecff4b6765bcbfcb7dfe7febe97602efcd4c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for chem_highlighter-0.3.2-py3-none-any.whl:

Publisher: release.yml on audivir/chem-highlighter

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

Release history Release notifications | RSS feed

This release

0.3.2 This release

2 files

0.3.1

2 files

0.2.7

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.7.post1

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5.post1

2 files

0.1.5

2 files

0.1.3

2 files

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