English · 한국어
Chemvas is an open-source desktop canvas for chemical structures and reaction schemes, with publication-ready export and scriptable document workflows.
Open the editable drawing · Get the SVG · Follow the walkthrough
Draw interactively. Automate safely. Export exactly.
- Draw interactively. Sketch structures, insert SMILES, label reaction arrows, and align molecules on a desktop canvas. Keep working in an editable drawing with autosave and crash recovery. SMILES insertion needs the optional RDKit backend.
- Automate safely. Compose, inspect, check layouts, and render documents from scripts. Graph edits check the source file's hash and validate the proposed changes before writing a new document.
- Export exactly. Save SVG, PDF, PNG, or TIFF with explicit physical-size presets, including 84 mm and 174 mm column widths. Keep the editable document alongside the exported figure.
Install and draw
Requires Python 3.12+. Install with SMILES support for the walkthrough:
pip install "chemvas[rdkit]"
chemvas
For drawing and figure export without RDKit, use pip install chemvas.
PyQt6 is included in either installation. Desktop installers are not available
yet; the supported distribution is the Python package.
For local Windows executable and installer builds, see the Windows preparation guide.
Your first reaction scheme
This edited walkthrough uses the real application. The drawing is a schematic illustration, not an experimental result.
- Choose the Ring tool, enter
OCc1ccccc1in the SMILES field of its options bar, click Insert, then click to place the structure. Hover over its oxygen, press Enter, and set the label toOH. - Insert
O=Cc1ccccc1to the right. Choose Arrow and drag between the two structures. Double-click the arrow to add its labels. - Select the scheme, then choose Edit ▸ Align ▸ Middle.
- Save the drawing as
.chemvas. Use File ▸ Export Figure… to export Plain SVG at Fit 2-column (174 mm).
The step-by-step guide includes the label text, downloadable files, and a command-line export example. The saved drawing opens and exports without RDKit.
Work with drawings from scripts
After downloading first-scheme.chemvas, try:
chemvas inspect-document first-scheme.chemvas
chemvas check-layout first-scheme.chemvas
chemvas render-document first-scheme.chemvas --output first-scheme-rendered.svg
chemvas render-document first-scheme.chemvas --output first-scheme.pdf --width-mm 174
Rendering exports one drawing to SVG, PNG, or a single-page vector PDF. It
creates a new file and leaves the source drawing untouched. This
command defaults to preset bond-length sizing; add --width-mm 174 to request
a column width, or --max-height-mm 120 to reject an overly tall figure without
shrinking it. Layout checks cover visible note and
atom-label text, shape borders, and arrow–structure crossings, not every possible
overlap in a chemical scheme.
See the document CLI guide for composition, Graph Patch, render guarantees, and limits. PNG/JPEG experimental panels can be embedded alongside structures using File ▸ Insert Image, clipboard paste, or the composition CLI. Use Edit ▸ Image Properties to set their size, aspect ratio and opacity; see image objects for the schema and limits.
For structure names and energies that stay aligned, use explicit scheme layout to arrange structure/caption blocks and keep them together as native groups.
That layout also accepts a max_row_width budget for long pathways. Use
render-document --min-font-pt 6 with SVG or PNG to reject glyphs smaller than your
chosen threshold, including subscripts; the value is not a journal preset.
In the desktop, group each structure with its notes and use Edit ▸ Arrange Scheme… to set rows, reading order, captions and optional wrapping as one undoable edit. File ▸ Export Figure… also accepts a custom width and optional height limit. Minimum-font checking is available for whole-canvas SVG and PNG.
For already-spaced drawings, layout-document with mode: "align-y" moves only
molecular Y positions, keeping captions and all X positions fixed. Agents can
also insert-template with native benzene/chair/regular-ring geometry and use
Graph Patch set_terminal_angle for a specified terminal bond angle. Layout
diagnostics now include nonincident atom-label–bond and attached-charge–bond ink.
The publication recipe shows common print scale,
real scripts, explicit independent parts and no duplicate figure heading.
More workflows and documentation
- Chemistry I/O: SMILES import, MOL interchange, molecule information, and 3D XYZ export. Some operations require RDKit; see the reference.
- Calculation handoff (RDKit): elementary steps and reviewed precomplexes, exported as one
machine.jsonper step. Details. - Documents: editable
.chemvasJSON files (version 7). Drawing tools and shortcuts · More examples · Current limits and roadmap.
Contribute
Try the example and share what got in your way. Small reproducible drawings, installation feedback, and documentation improvements are useful contributions. If Chemvas is useful to you, a star helps others find it.
For development, read
CONTRIBUTING.
make check runs lint, formatting, type checking, the file-isolated test suite,
and document-handoff conformance checks.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file chemvas-0.11.0.tar.gz.
File metadata
- Download URL: chemvas-0.11.0.tar.gz
- Upload date:
- Size: 654.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad1956c9261e3df375a4d27c8636ce9ed6c0c14e89dd6f2ae2a7de91f1fada0c
|
|
| MD5 |
afac688c5722f679ee5b07af5a51dfb5
|
|
| BLAKE2b-256 |
c17be8d603f5abbcc7146d5695cf86b85a1c2541bbe447878e55b313d89ca76b
|
Provenance
The following attestation bundles were made for chemvas-0.11.0.tar.gz:
Publisher:
release.yml on dhsohn/Chemvas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chemvas-0.11.0.tar.gz -
Subject digest:
ad1956c9261e3df375a4d27c8636ce9ed6c0c14e89dd6f2ae2a7de91f1fada0c - Sigstore transparency entry: 2776754003
- Sigstore integration time:
-
Permalink:
dhsohn/Chemvas@75deb2929d2496cc8e4d0f20cfbef7b6995aa1c4 -
Branch / Tag:
refs/tags/v0.11.0 - Owner: https://github.com/dhsohn
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@75deb2929d2496cc8e4d0f20cfbef7b6995aa1c4 -
Trigger Event:
push
-
Statement type:
File details
Details for the file chemvas-0.11.0-py3-none-any.whl.
File metadata
- Download URL: chemvas-0.11.0-py3-none-any.whl
- Upload date:
- Size: 818.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d4778c515c1637b48eadec7b49b249f5c9cf0a2a10701facf23d9be46ee0fd8
|
|
| MD5 |
23cf3995128bb806aaa242e3df6a010e
|
|
| BLAKE2b-256 |
97c37301f654563f9c6c37b7015d7a8965d23c26381bc047a4fd1be58c3c503b
|
Provenance
The following attestation bundles were made for chemvas-0.11.0-py3-none-any.whl:
Publisher:
release.yml on dhsohn/Chemvas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chemvas-0.11.0-py3-none-any.whl -
Subject digest:
5d4778c515c1637b48eadec7b49b249f5c9cf0a2a10701facf23d9be46ee0fd8 - Sigstore transparency entry: 2776754115
- Sigstore integration time:
-
Permalink:
dhsohn/Chemvas@75deb2929d2496cc8e4d0f20cfbef7b6995aa1c4 -
Branch / Tag:
refs/tags/v0.11.0 - Owner: https://github.com/dhsohn
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@75deb2929d2496cc8e4d0f20cfbef7b6995aa1c4 -
Trigger Event:
push
-
Statement type: