Skip to main content

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.

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 libesmc context stays loaded; single-query search() 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-special is 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)

Table of built distributions (wheels) for esmc-li 1.0.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files Full provenance

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