From 2e3807596963661ae3d8cac02c50d1613c062f79 Mon Sep 17 00:00:00 2001 From: Alexius Wadell Date: Sat, 23 Aug 2025 12:02:07 -0400 Subject: [PATCH 1/6] Add version to pyproject.toml --- pyproject.toml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 469fe95..660dacd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,7 @@ [project] name = "smirk" -requires-python = ">=3.7" +requires-python = ">=3.9" +version = "0.1.0" classifiers = [ "Programming Language :: Rust", "Programming Language :: Python :: Implementation :: CPython", @@ -11,6 +12,10 @@ dependencies = [ "tokenizers >=0.19, <0.20", ] +[project.urls] +github = "https://github.com/BattModels/smirk" +homepage = "https://eeg.engin.umich.edu/smirk" + [project.optional-dependencies] test = [ "pytest" ] From 60f12075519fa224e0c51331fbfa1040c43e5682 Mon Sep 17 00:00:00 2001 From: Alexius Wadell Date: Thu, 28 Aug 2025 22:48:38 -0400 Subject: [PATCH 2/6] Add build script --- .github/workflows/{CD.yaml => CD.yml} | 96 ++++++++++----------------- 1 file changed, 34 insertions(+), 62 deletions(-) rename .github/workflows/{CD.yaml => CD.yml} (61%) diff --git a/.github/workflows/CD.yaml b/.github/workflows/CD.yml similarity index 61% rename from .github/workflows/CD.yaml rename to .github/workflows/CD.yml index b6542d2..3d5c16f 100644 --- a/.github/workflows/CD.yaml +++ b/.github/workflows/CD.yml @@ -1,10 +1,9 @@ -# This file is autogenerated by maturin v1.7.1 +# This file is autogenerated by maturin v1.8.3 # To update, run # -# maturin generate-ci github --pytest +# maturin generate-ci github --platform manylinux windows macos --output .github/workflows/CI.yml # -name: Build and Test Artifacts - +name: CD on: push: branches: @@ -13,22 +12,26 @@ on: - '*' pull_request: workflow_dispatch: - permissions: contents: read - jobs: linux: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - - runner: ubuntu-latest + - runner: ubuntu-22.04 target: x86_64 - - runner: ubuntu-latest + - runner: ubuntu-22.04 target: x86 - - runner: ubuntu-latest + - runner: ubuntu-22.04 target: aarch64 + - runner: ubuntu-22.04 + target: armv7 + - runner: ubuntu-22.04 + target: s390x + - runner: ubuntu-22.04 + target: ppc64le steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 @@ -39,39 +42,13 @@ jobs: with: target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter - sccache: 'true' + sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} manylinux: auto - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-linux-${{ matrix.platform.target }} path: dist - - name: pytest - if: ${{ startsWith(matrix.platform.target, 'x86_64') }} - shell: bash - run: | - set -e - python3 -m venv .venv - source .venv/bin/activate - pip install smirk --find-links dist --force-reinstall - pip install pytest - pytest - - name: pytest - if: ${{ !startsWith(matrix.platform.target, 'x86') && matrix.platform.target != 'ppc64' }} - uses: uraimo/run-on-arch-action@v2 - with: - arch: ${{ matrix.platform.target }} - distro: ubuntu22.04 - githubToken: ${{ github.token }} - install: | - apt-get update - apt-get install -y --no-install-recommends python3 python3-pip - pip3 install -U pip pytest - run: | - set -e - pip3 install smirk --find-links dist --force-reinstall - pytest - windows: runs-on: ${{ matrix.platform.runner }} strategy: @@ -92,29 +69,18 @@ jobs: with: target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter - sccache: 'true' + sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-windows-${{ matrix.platform.target }} path: dist - - name: pytest - if: ${{ !startsWith(matrix.platform.target, 'aarch64') }} - shell: bash - run: | - set -e - python3 -m venv .venv - source .venv/Scripts/activate - pip install smirk --find-links dist --force-reinstall - pip install pytest - pytest - macos: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - - runner: macos-12 + - runner: macos-13 target: x86_64 - runner: macos-14 target: aarch64 @@ -128,21 +94,12 @@ jobs: with: target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter - sccache: 'true' + sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} - name: Upload wheels uses: actions/upload-artifact@v4 with: name: wheels-macos-${{ matrix.platform.target }} path: dist - - name: pytest - run: | - set -e - python3 -m venv .venv - source .venv/bin/activate - pip install smirk --find-links dist --force-reinstall - pip install pytest - pytest - sdist: runs-on: ubuntu-latest steps: @@ -157,15 +114,30 @@ jobs: with: name: wheels-sdist path: dist - release: name: Release runs-on: ubuntu-latest - if: "startsWith(github.ref, 'refs/tags/')" - needs: [linux, windows, macos, sdist] + if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} + needs: + - linux + - windows + - macos + - sdist + permissions: + # Use to sign the release artifacts + id-token: write + # Used to upload release artifacts + contents: write + # Used to generate artifact attestation + attestations: write steps: - uses: actions/download-artifact@v4 + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v2 + with: + subject-path: wheels-*/* - name: Publish to PyPI + if: ${{ startsWith(github.ref, 'refs/tags/') }} uses: PyO3/maturin-action@v1 env: MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} From 164e322a9cf8f5ce7d83af26be8361bba03a0339 Mon Sep 17 00:00:00 2001 From: Alexius Wadell Date: Wed, 21 Jan 2026 20:47:47 -0700 Subject: [PATCH 3/6] wip cd pipeline --- dependabot.yaml => .github/dependabot.yaml | 0 .github/workflows/CD.yml | 90 ++++++++++++++-------- Cargo.toml | 2 +- opt/test_cd_wheels.py | 82 ++++++++++++++++++++ pyproject.toml | 2 +- 5 files changed, 142 insertions(+), 34 deletions(-) rename dependabot.yaml => .github/dependabot.yaml (100%) create mode 100755 opt/test_cd_wheels.py diff --git a/dependabot.yaml b/.github/dependabot.yaml similarity index 100% rename from dependabot.yaml rename to .github/dependabot.yaml diff --git a/.github/workflows/CD.yml b/.github/workflows/CD.yml index 3d5c16f..4a5d695 100644 --- a/.github/workflows/CD.yml +++ b/.github/workflows/CD.yml @@ -1,19 +1,23 @@ -# This file is autogenerated by maturin v1.8.3 +# This file is autogenerated by maturin v1.11.5 # To update, run # -# maturin generate-ci github --platform manylinux windows macos --output .github/workflows/CI.yml +# maturin generate-ci github --pytest --platform manylinux windows macos --output .github/workflows/CD.yml # name: CD on: push: branches: - main + - master tags: - '*' pull_request: workflow_dispatch: permissions: contents: read +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: linux: runs-on: ${{ matrix.platform.runner }} @@ -28,27 +32,31 @@ jobs: target: aarch64 - runner: ubuntu-22.04 target: armv7 - - runner: ubuntu-22.04 - target: s390x - - runner: ubuntu-22.04 - target: ppc64le steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v6 + - uses: actions/setup-python@v6 with: - python-version: 3.x + python-version: 3.13 - name: Build wheels uses: PyO3/maturin-action@v1 with: target: ${{ matrix.platform.target }} - args: --release --out dist --find-interpreter + args: --release --out dist -i python3.10 -i python3.11 -i python3.12 -i python3.13 -i python3.14 sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} manylinux: auto - name: Upload wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: wheels-linux-${{ matrix.platform.target }} path: dist + - name: Install uv + uses: astral-sh/setup-uv@v5 + - name: pytest + shell: bash + run: | + python -m venv .venv + . .venv/bin/activate + python opt/test_cd_wheels.py windows: runs-on: ${{ matrix.platform.runner }} strategy: @@ -56,14 +64,16 @@ jobs: platform: - runner: windows-latest target: x64 + python_arch: x64 - runner: windows-latest target: x86 + python_arch: x86 steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v6 + - uses: actions/setup-python@v6 with: - python-version: 3.x - architecture: ${{ matrix.platform.target }} + python-version: 3.13 + architecture: ${{ matrix.platform.python_arch }} - name: Build wheels uses: PyO3/maturin-action@v1 with: @@ -71,24 +81,33 @@ jobs: args: --release --out dist --find-interpreter sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} - name: Upload wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: wheels-windows-${{ matrix.platform.target }} path: dist + - name: Install uv + uses: astral-sh/setup-uv@v5 + - name: pytest + shell: pwsh + run: | + $ErrorActionPreference = "Stop" + python -m venv .venv + .\.venv\Scripts\Activate.ps1 + python opt/test_cd_wheels.py macos: runs-on: ${{ matrix.platform.runner }} strategy: matrix: platform: - - runner: macos-13 + - runner: macos-15-intel target: x86_64 - - runner: macos-14 + - runner: macos-latest target: aarch64 steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v6 + - uses: actions/setup-python@v6 with: - python-version: 3.x + python-version: 3.13 - name: Build wheels uses: PyO3/maturin-action@v1 with: @@ -96,21 +115,30 @@ jobs: args: --release --out dist --find-interpreter sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} - name: Upload wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: wheels-macos-${{ matrix.platform.target }} path: dist + - name: Install uv + uses: astral-sh/setup-uv@v5 + - name: pytest + if: ${{ matrix.platform.runner != 'macos-15-intel' }} + shell: bash + run: | + python -m venv .venv + . .venv/bin/activate + python opt/test_cd_wheels.py sdist: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Build sdist uses: PyO3/maturin-action@v1 with: command: sdist args: --out dist - name: Upload sdist - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: wheels-sdist path: dist @@ -131,16 +159,14 @@ jobs: # Used to generate artifact attestation attestations: write steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v6 - name: Generate artifact attestation - uses: actions/attest-build-provenance@v2 + uses: actions/attest-build-provenance@v3 with: subject-path: wheels-*/* + - name: Install uv + if: ${{ startsWith(github.ref, 'refs/tags/') }} + uses: astral-sh/setup-uv@v7 - name: Publish to PyPI if: ${{ startsWith(github.ref, 'refs/tags/') }} - uses: PyO3/maturin-action@v1 - env: - MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} - with: - command: upload - args: --non-interactive --skip-existing wheels-*/* + run: uv publish --publish-url https://test.pypi.org/legacy/ 'wheels-*/*' diff --git a/Cargo.toml b/Cargo.toml index bcdbd57..7d75385 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ either = "1.13.0" macro_rules_attribute = "0.2.0" once_cell = "1.19.0" paste = "1.0.14" -pyo3 = { version = "^0.23", features = ["extension-module"] } +pyo3 = { version = "^0.27", features = ["extension-module"] } regex = "1.10.3" serde = "1.0.197" serde_json = "1.0.114" diff --git a/opt/test_cd_wheels.py b/opt/test_cd_wheels.py new file mode 100755 index 0000000..5ca12a9 --- /dev/null +++ b/opt/test_cd_wheels.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python3 +import os +import re +import subprocess +import sys +from pathlib import Path + + +WHEEL_PYTAG_RE = re.compile(r"(?:^|-)cp(?P\d)(?P\d{1,2})(?:-|\.whl$)") + + +def run(cmd: list[str], *, env: dict[str, str] | None = None) -> None: + print(f"+ {' '.join(cmd)}", flush=True) + subprocess.run(cmd, check=True, env=env) + + +def wheel_python_tag(wheel_name: str) -> tuple[int, int]: + m = WHEEL_PYTAG_RE.search(wheel_name) + if not m: + raise ValueError( + f"Could not infer Python tag from wheel filename: {wheel_name}\n" + "Expected wheel filename to contain e.g. '-cp310-' or '-cp311-'." + ) + major = int(m.group("major")) + minor = int(m.group("minor")) + return major, minor + + +def main() -> int: + repo_root = Path(__file__).resolve().parents[1] + dist_dir = repo_root / "dist" + if not dist_dir.is_dir(): + print(f"ERROR: dist/ not found at {dist_dir}", file=sys.stderr) + return 1 + + wheels = sorted(dist_dir.glob("*.whl")) + if not wheels: + print("ERROR: no wheels found in dist/", file=sys.stderr) + return 1 + + overall_ok = True + for wheel in wheels: + major, minor = wheel_python_tag(wheel.name) + pytag = f"cp{major}{minor}" + + print("\n" + "=" * 80) + print(f"Wheel: {wheel.name}") + print(f"Needs: {pytag}") + + # Activate the venv + venv_dir = repo_root / ".venv" # or better: per-wheel unique dir on Windows + run(["uv", "venv", "--python", f"{major}.{minor}", "--clear", str(venv_dir)]) + env = os.environ.copy() + env["VIRTUAL_ENV"] = str(venv_dir) + + # Install deps + run(["uv", "pip", "install", "--group", "dev"], env=env) + run( + [ + "uv", + "pip", + "install", + "--find-links", + str(dist_dir), + "--force-reinstall", + str(wheel), + ], + env=env, + ) + + run(["uv", "run", "--active", "--no-sync", "pytest", "-q"], env=env) + + print("\n" + "=" * 80) + if overall_ok: + print("All wheel tests passed.") + return 0 + print("Some wheels were skipped (missing interpreters) or failed.") + return 1 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/pyproject.toml b/pyproject.toml index 513bb52..d0a4725 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "smirk" requires-python = ">=3.9" -version = "0.1.0" +dynamic = ["version"] classifiers = [ "Programming Language :: Rust", "Programming Language :: Python :: Implementation :: CPython", From 1735b1808fada1c45db4ede4002db3ea8d487bca Mon Sep 17 00:00:00 2001 From: Alexius Wadell Date: Thu, 22 Jan 2026 01:15:26 -0700 Subject: [PATCH 4/6] feat: add binary cd pipeline --- .github/workflows/CD.yml | 32 +--------------- CHANGELOG.md | 1 + opt/test_cd_wheels.py | 82 ---------------------------------------- 3 files changed, 3 insertions(+), 112 deletions(-) delete mode 100755 opt/test_cd_wheels.py diff --git a/.github/workflows/CD.yml b/.github/workflows/CD.yml index 4a5d695..07bad33 100644 --- a/.github/workflows/CD.yml +++ b/.github/workflows/CD.yml @@ -1,17 +1,15 @@ # This file is autogenerated by maturin v1.11.5 # To update, run # -# maturin generate-ci github --pytest --platform manylinux windows macos --output .github/workflows/CD.yml +# maturin generate-ci github --platform manylinux windows macos --output .github/workflows/CD.yml # name: CD on: push: branches: - main - - master tags: - '*' - pull_request: workflow_dispatch: permissions: contents: read @@ -49,14 +47,6 @@ jobs: with: name: wheels-linux-${{ matrix.platform.target }} path: dist - - name: Install uv - uses: astral-sh/setup-uv@v5 - - name: pytest - shell: bash - run: | - python -m venv .venv - . .venv/bin/activate - python opt/test_cd_wheels.py windows: runs-on: ${{ matrix.platform.runner }} strategy: @@ -85,15 +75,6 @@ jobs: with: name: wheels-windows-${{ matrix.platform.target }} path: dist - - name: Install uv - uses: astral-sh/setup-uv@v5 - - name: pytest - shell: pwsh - run: | - $ErrorActionPreference = "Stop" - python -m venv .venv - .\.venv\Scripts\Activate.ps1 - python opt/test_cd_wheels.py macos: runs-on: ${{ matrix.platform.runner }} strategy: @@ -119,15 +100,6 @@ jobs: with: name: wheels-macos-${{ matrix.platform.target }} path: dist - - name: Install uv - uses: astral-sh/setup-uv@v5 - - name: pytest - if: ${{ matrix.platform.runner != 'macos-15-intel' }} - shell: bash - run: | - python -m venv .venv - . .venv/bin/activate - python opt/test_cd_wheels.py sdist: runs-on: ubuntu-latest steps: @@ -169,4 +141,4 @@ jobs: uses: astral-sh/setup-uv@v7 - name: Publish to PyPI if: ${{ startsWith(github.ref, 'refs/tags/') }} - run: uv publish --publish-url https://test.pypi.org/legacy/ 'wheels-*/*' + run: uv publish 'wheels-*/*' diff --git a/CHANGELOG.md b/CHANGELOG.md index c538a6d..1a47227 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Started a changelog ([#2](https://github.com/BattModels/smirk/pull/2)) +- Added a release pipeline ([#6](https://github.com/BattModels/smirk/pull/6)) ### Changed diff --git a/opt/test_cd_wheels.py b/opt/test_cd_wheels.py deleted file mode 100755 index 5ca12a9..0000000 --- a/opt/test_cd_wheels.py +++ /dev/null @@ -1,82 +0,0 @@ -#!/usr/bin/env python3 -import os -import re -import subprocess -import sys -from pathlib import Path - - -WHEEL_PYTAG_RE = re.compile(r"(?:^|-)cp(?P\d)(?P\d{1,2})(?:-|\.whl$)") - - -def run(cmd: list[str], *, env: dict[str, str] | None = None) -> None: - print(f"+ {' '.join(cmd)}", flush=True) - subprocess.run(cmd, check=True, env=env) - - -def wheel_python_tag(wheel_name: str) -> tuple[int, int]: - m = WHEEL_PYTAG_RE.search(wheel_name) - if not m: - raise ValueError( - f"Could not infer Python tag from wheel filename: {wheel_name}\n" - "Expected wheel filename to contain e.g. '-cp310-' or '-cp311-'." - ) - major = int(m.group("major")) - minor = int(m.group("minor")) - return major, minor - - -def main() -> int: - repo_root = Path(__file__).resolve().parents[1] - dist_dir = repo_root / "dist" - if not dist_dir.is_dir(): - print(f"ERROR: dist/ not found at {dist_dir}", file=sys.stderr) - return 1 - - wheels = sorted(dist_dir.glob("*.whl")) - if not wheels: - print("ERROR: no wheels found in dist/", file=sys.stderr) - return 1 - - overall_ok = True - for wheel in wheels: - major, minor = wheel_python_tag(wheel.name) - pytag = f"cp{major}{minor}" - - print("\n" + "=" * 80) - print(f"Wheel: {wheel.name}") - print(f"Needs: {pytag}") - - # Activate the venv - venv_dir = repo_root / ".venv" # or better: per-wheel unique dir on Windows - run(["uv", "venv", "--python", f"{major}.{minor}", "--clear", str(venv_dir)]) - env = os.environ.copy() - env["VIRTUAL_ENV"] = str(venv_dir) - - # Install deps - run(["uv", "pip", "install", "--group", "dev"], env=env) - run( - [ - "uv", - "pip", - "install", - "--find-links", - str(dist_dir), - "--force-reinstall", - str(wheel), - ], - env=env, - ) - - run(["uv", "run", "--active", "--no-sync", "pytest", "-q"], env=env) - - print("\n" + "=" * 80) - if overall_ok: - print("All wheel tests passed.") - return 0 - print("Some wheels were skipped (missing interpreters) or failed.") - return 1 - - -if __name__ == "__main__": - raise SystemExit(main()) From 7363bd100cebd99cc3ec729a6e9bef14886bc0c5 Mon Sep 17 00:00:00 2001 From: Alexius Wadell Date: Thu, 22 Jan 2026 01:41:54 -0700 Subject: [PATCH 5/6] bump version --- CHANGELOG.md | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a47227..24eac9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased](https://github.com/BattModels/smirk) +## [v0.2.0](https://github.com/BattModels/smirk) ### Added diff --git a/Cargo.toml b/Cargo.toml index 5f9bf5e..4f9e772 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "smirk" -version = "0.2.0-dev" +version = "0.2.0" edition = "2021" license = "Apache-2.0" description = "A chemically complete tokenizer for OpenSMILES" From f3781a0dae1c3bc21380cf0db55e0c6922d233e4 Mon Sep 17 00:00:00 2001 From: Alexius Wadell Date: Sat, 24 Jan 2026 08:03:50 -0700 Subject: [PATCH 6/6] jcim paper published --- CHANGELOG.md | 2 ++ README.md | 4 +++- docs/conf.py | 1 + docs/index.md | 4 +++- docs/smirk_demo.ipynb | 2 +- 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24eac9c..ddd3ee6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [v0.2.0](https://github.com/BattModels/smirk) +Paper published in ACS JCIM: [*Tokenization for Molecular Foundation Models*](https://doi.org/10.1021/acs.jcim.5c01856) + ### Added - Started a changelog ([#2](https://github.com/BattModels/smirk/pull/2)) diff --git a/README.md b/README.md index 722d135..904d627 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ @@ -11,7 +13,7 @@ Smirk is a chemistry-specific tokenizer that provides complete coverage of the [ specification, that is built using Rust 🦀 and [HuggingFace's tokenizers](https://huggingface.co/docs/tokenizers) 🤗. Installation is easy, and Smirk works out-of-the-box with the [HuggingFace](https://huggingface.co/docs) ecosystem. -Check our [documentation](https://eeg.engin.umich.edu/smirk) to see `smirk` in action, or [read the paper](https://arxiv.org/abs/2409.15370) to learn +Check our [documentation](https://eeg.engin.umich.edu/smirk) to see `smirk` in action, or [read the paper](https://doi.org/10.1021/acs.jcim.5c01856) to learn about tokenization for molecular foundation models. ## Installation diff --git a/docs/conf.py b/docs/conf.py index 049d8d6..1c74e31 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -43,6 +43,7 @@ # -- MyST-NB ----------------------------------------------------------------- nb_execution_in_temp = True nb_execution_mode = "cache" +nb_execution_timeout = 300 nb_render_markdown_format = "myst" myst_enable_extensions = [ "fieldlist", diff --git a/docs/index.md b/docs/index.md index 1e73849..8936c08 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,6 +3,8 @@ @@ -22,7 +24,7 @@ that fail to represent *all* of chemistry, inherently limiting their performance Enabling complete coverage of [OpenSMILES] with a vocabulary of 167 tokens. [OpenSMILES]: http://opensmiles.org/ -[paper]: https://arxiv.org/abs/2409.15370 +[paper]: https://doi.org/10.1021/acs.jcim.5c01856 [HuggingFace]: https://huggingface.co/docs [Tokenizers]: https://huggingface.co/docs/tokenizers diff --git a/docs/smirk_demo.ipynb b/docs/smirk_demo.ipynb index 30070fb..f83c0ae 100644 --- a/docs/smirk_demo.ipynb +++ b/docs/smirk_demo.ipynb @@ -29,7 +29,7 @@ "Check out the [paper] for all the details; otherwise, let's see it in action!\n", "\n", "[OpenSMILES]: http://opensmiles.org/\n", - "[paper]: https://doi.org/10.48550/arXiv.2409.15370\n", + "[paper]: https://doi.org/10.1021/acs.jcim.5c01856\n", "[Atom-wise]: https://doi.org/10.1039/C8SC02339E\n", "[bracketed atom]: https://en.wikipedia.org/wiki/Simplified_Molecular_Input_Line_Entry_System#Atoms\n", "\n",