chemsift (cloud CLI)
The chemsift CLI lets scientists submit and manage jobs on AWS.
Install from PyPI:
pip install chemsift
Commands
chemsift login: Authenticate and store credentialschemsift register <input-dir>: Upload aregistry_input/and start a registration jobchemsift map <register-job-id>: Run the mapped pipeline against a completed register jobchemsift query <register-job-id> --molecules <csv> --yaml <yml>: Submit a query jobchemsift supervised <register-job-id> --yaml <yml> [--state <csv>]: Submit one round of active-learning screeningchemsift supervised --pool <pool-id> --yaml <yml> [--state <csv>]: The same, against a shared demo pool instead of your own registrationchemsift env list/chemsift env use <dev|prod>: Show or switch the active environmentchemsift status <job-id>: Check status of a jobchemsift download <job-id> <output-dir>: Download results of a completed jobchemsift list: List all job IDs for the current user
Supervised workflow
# Round 0 — no state file yet
chemsift supervised <register-job-id> --yaml supervised.yml
# Wait for completion, download state CSV, fill 'label' column (0=inactive, 1=active)
chemsift status <job-id>
chemsift download <job-id> .
# Subsequent rounds — pass labelled state CSV
chemsift supervised <register-job-id> --yaml supervised.yml --state state.csv
Screening a shared pool
A pool is a library registered once that every authenticated user of a stack can
screen, so a new account does not have to register anything before it can run a
round. Pass --pool instead of a register job id — everything else is identical:
chemsift supervised --pool ecbd-luciferase-v1 --yaml supervised.yml
The pool is read-only and lives in its own bucket; everything a round writes still
goes to your own prefix. --pool-bucket overrides the bucket, which defaults to
the active environment's.
Two things the pool form does for you. It names the pool's library in the uploaded config when your config did not, so a campaign records what it screened (CS-08). And on a resumed round it refuses a state CSV that was started against a different library, rather than silently scoring one library's molecules with another's ordering.
A pool publishes one pinned library with nothing to score it against, so pools are
screenable with supervised but are not valid targets for query.
Development
This project uses Poetry for dependency management and packaging.
Setup
cd cli
poetry install
poetry run chemsift --help
Releasing a new version to PyPI
Publishing is fully automated — CI builds and uploads the package to PyPI when a cli-v* tag is pushed. The tag version must match pyproject.toml exactly or CI will fail the verification step.
Step 1 — bump the version in pyproject.toml:
cd cli
poetry version patch # or: minor, major, or an explicit version e.g. 1.2.0
Step 2 — commit and merge to main:
git add cli/pyproject.toml
git commit -m "chore: bump chemsift CLI to $(cd cli && poetry version -s)"
# open a PR, get it merged into main
Step 3 — tag the merge commit and push the tag:
git checkout main
git pull
git tag cli-v$(cd cli && poetry version -s) # e.g. cli-v1.2.0
git push --tags
Pushing the tag triggers the publish-cli.yml workflow, which:
- Verifies the tag matches the version in
pyproject.toml - Builds the sdist and wheel
- Publishes to PyPI via OIDC Trusted Publishing (no API token needed)
Metadata
Release files for chemsift 1.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| chemsift-1.3.0.tar.gz | 24.3 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| chemsift-1.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 57.7 kB
Release files / chemsift-1.3.0.tar.gz
| Download URL | chemsift-1.3.0.tar.gz |
|---|---|
| Size | 24.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
32ceb23e4e084cd8910da4c8c8a3d492213a7db0b80e55f8f6f62645a65d62c1
|
|
BLAKE2b-256 checksum How to use checksums |
abb8674498b13f103387a66355d06b1254f8b493eeee1bbd94f7fcef3f3d8a68
|
| 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 21, 2026.
Transparency logRelease files / chemsift-1.3.0-py3-none-any.whl
| Download URL | chemsift-1.3.0-py3-none-any.whl |
|---|---|
| Size | 33.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d92480fbee44f6ea37803e7d9e532b17dc282fdae7a96e50ae0b1e37537a8a5c
|
|
BLAKE2b-256 checksum How to use checksums |
f6fac89222830e4e5e9dbc103b901457abd0dcdcbd0c2056bb7eaae3f478f13e
|
| 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 21, 2026.
Transparency logSecurity for chemsift 1.3.0
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.
Attestation for chemsift-1.3.0.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 21, 2026.
Transparency logA 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.