ESMC-LI
Fast local protein retrieval using ESM-C residue embeddings and late
interaction (MaxSim). Exact search runs on numpy, with an optional fused Metal
backend; ESM-C inference runs through
esmc.cpp.
Model: AnanyaPathak/esmc-li-300m-homology-v1
Indexes: AnanyaPathak/esmc-li-indexes
The Hugging Face model/index repositories are now ESMC-LI; their file names
keep the historical esmc-300m-homology-maxsim-v1 prefix.
Paper: paper/main.md · API: docs/api.md
Code is MIT-licensed (LICENSE); the ESM-C weights and GGUF derivatives are
governed by the Cambrian Open License (NOTICE).
Install
Prebuilt macOS arm64 / Linux x86_64 wheels include libesmc; no compiler or
separate esmc.cpp install is needed.
pip install esmc-li
# optional, macOS: fused Metal search
pip install "esmc-li[metal]"
PyPI wheels support macOS arm64 and Linux x86_64 (glibc 2.35+), Python 3.10+. There is no Windows or Intel-macOS wheel in v1.
The fine-tuned GGUF is downloaded from Hugging Face on first use and cached
under ~/.cache/esmc-retrieval (the historical cache path is kept so
existing downloads still work). The packaged projection head ships in the wheel. No model paths are required.
For a source install, libesmc is not bundled; set ESMC_LIB or use the
legacy CLI fallback (ESMC_EMBED). Release wheels are the supported path.
Optional overrides:
export ESMC_LIB=/path/to/libesmc.dylib # source/dev only
export ESMC_RETRIEVAL_GGUF=/path/to/local.gguf
export ESMC_RETRIEVAL_CACHE=/custom/cache
Prebuilt indexes
esmc-li index list
esmc-li index pull scope-1k
esmc-li search scope-1k --sequence "MKT..." --top-k 10
Build an index
esmc-li build proteins.fasta --output proteins.esmci
The build writes proteins.esmci plus proteins.esmci.json and
proteins.esmci.head.npy. It embeds prefix-token rows (BOS/EOS kept),
projects them 960 -> 128, L2-normalizes, and stores f16 rows.
Search
esmc-li search proteins.esmci \
--sequence "MKTIIALSYIFCLVFADYKDDDDK" \
--top-k 10
Batch FASTA queries:
esmc-li search proteins.esmci \
--query queries.fasta \
--output results.tsv
from esmc_li import ProteinIndex
index = ProteinIndex.load("proteins.esmci")
hits = index.search("MKTIIALSYIFCLVFADYKDDDDK", k=10)
Notes
- The in-process
libesmccontext stays loaded; single-querysearch()does not reload the model. Source/legacy CLI fallback does. - Search is exact MaxSim over projected residue rows.
device="auto"uses fused Metal when PyObjC is available on macOS, otherwise numpy. - The index is not self-contained: keep the matching head and FT GGUF with it.
- The C API keeps BOS/EOS rows; no CLI
--keep-specialis needed on the runtime path. - v1 macOS runtime binaries are unsigned; the package prints a warning. Verify the release checksum or build esmc.cpp locally if that matters.
- ESM-C weights and derivatives are governed by the EvolutionaryScale Cambrian Open License Agreement.
Paper and reproducibility
The M9 paper is paper/main.md. All data tables and figures
are generated from a pinned results lock; no model or embedding cache is needed:
make tables # regenerate 15 tables, 3 figures, and paper/main.md
make audit # claims + citations + lock + tests + zero-diff
make audit currently reports 82/82 numeric claims mapped and 26/26 citations
verified. See paper/README.md and
docs/claims.md.
M8 checks
python scripts/m8_smoke.py # 1K SCOPe, 10 held-out queries -> 10/10
python scripts/m8_profile.py # encode/search split
Profile on M4 Max: 1K ~19 ms search/query; 100K ~1.3 s/query with Metal (numpy fallback is much slower).
Metadata
Release files for esmc-li 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| esmc_li-1.0.0-cp310-abi3-manylinux_2_34_x86_64.manylinux_2_35_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.35+ x86-64, Linux glibc 2.34+ x86-64 | Details for esmc_li-1.0.0-cp310-abi3-manylinux_2_34_x86_64.manylinux_2_35_x86_64.whl |
| esmc_li-1.0.0-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details for esmc_li-1.0.0-cp310-abi3-macosx_11_0_arm64.whl |
Total release size: 6.0 MB
Release files / esmc_li-1.0.0-cp310-abi3-manylinux_2_34_x86_64.manylinux_2_35_x86_64.whl
| Download URL | esmc_li-1.0.0-cp310-abi3-manylinux_2_34_x86_64.manylinux_2_35_x86_64.whl |
|---|---|
| Size | 3.0 MB |
| Tags | CPython 3.10 Linux glibc 2.34+ x86-64 Linux glibc 2.35+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
173d33a3abec335d9cce3a3efe98b816ec6085094a76b5743ef86f23e6952b01
|
|
BLAKE2b-256 checksum How to use checksums |
27b8448d2c9068837fd3c31db18ca7a17ced94c64a2b720f959c6b4628e8afce
|
| 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 Nov 8, 2026.
Transparency logRelease files / esmc_li-1.0.0-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | esmc_li-1.0.0-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.1 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e3e8a73de4279ef50140889b56d488cf62ee275ae731e3f30b63d54226a50c92
|
|
BLAKE2b-256 checksum How to use checksums |
27b7692d090d08cd29bc00488e26ce5be2cdf268d8b336869ecdd8a74b0c708e
|
| 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 Nov 8, 2026.
Transparency logSecurity for esmc-li 1.0.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
Both files in this release have been uploaded with provenance metadata.
Attestation for esmc_li-1.0.0-cp310-abi3-manylinux_2_34_x86_64.manylinux_2_35_x86_64.whl
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 Nov 8, 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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.