Expand description
ferritin-plms
cargo run --example amplify
cargo run --example amplify --features metal§Model support matrix
Generated from registry::REGISTRY; regenerate with
cargo test -p ferritin-plms --lib print_support_matrix -- --ignored --nocapture.
test_lib_rs_support_matrix_is_current fails if this copy drifts.
The column to read first is Parity. “It compiles” and even “it loads” are not what you need before trusting a number — you need to know whether anyone has compared this port’s output against the reference implementation.
Read not checked as “this output could be anything”. It is not a milder form of verified. ProteinMPNN sat in that column through every release up to v0.3.3 while agreeing with the reference on 2 of 93 positions — worse than the ~4 you would expect from chance over a 21-token vocabulary. Its output was not approximately right, it was unrelated to what the model computes, and nothing in this table said so (ferritin-100.33).
Weigh an unchecked row by how much it really shares with a verified one. A row whose family has no verified member anywhere is an entire architecture nobody has ever compared — the position ProteinMPNN was in. Every family in this table now has at least one verified member.
But a shared Family tag is a claim about the backbone, not about the
whole path, so four Esm2 rows are verified in their own right rather than
by inheritance (ferritin-100.34). saprot-35m-af2 runs the same
EsmForMaskedLM backbone as esm2-t6-8m yet reads two characters per
residue over a 446-token (amino acid, 3Di) vocabulary from a bare
vocab.txt — a different tokenizer path, and one that yields a perfectly
well-formed tensor when read wrongly. pepmlm-650m, dplm-650m and
fastesm2-650 share the stock alphabet but are all pushed through
ESM2Config::t33_650m(), which assumes each is plain ESM-2 650M with
different weights — a real assumption, given dplm-650m is a diffusion
model and fastesm2-650 declares model_type: fast_esm. All four agree
with the reference; the point is that they now do so demonstrably.
The rows still unchecked are the ones genuinely shaped “same path,
different weights” — the esm2-t* ladder, the five esm1v members,
esm1b, saprot-650m-af2, amplify-350m, ankh-large, esmc-600m and
esmc-6b — where inherited trust is reasonable.
| Model | Family | Weights | Parity | Status |
|---|---|---|---|---|
esm2-t6-8m | Esm2 | facebook/esm2_t6_8M_UR50D (safetensors) | verified (esm2_parity) | supported |
esm2-t12-35m | Esm2 | facebook/esm2_t12_35M_UR50D (safetensors) | not checked | supported |
esm2-t30-150m | Esm2 | facebook/esm2_t30_150M_UR50D (safetensors) | not checked | supported |
esm2-t33-650m | Esm2 | facebook/esm2_t33_650M_UR50D (safetensors) | not checked | supported |
esm2-t36-3b | Esm2 | facebook/esm2_t36_3B_UR50D (safetensors) | not checked | supported |
esm2-t48-15b | Esm2 | facebook/esm2_t48_15B_UR50D (safetensors) | not checked | supported |
esm1v-t33-650m-ur90s-1 | Esm2 | facebook/esm1v_t33_650M_UR90S_1 (pth) | not checked | supported |
esm1v-t33-650m-ur90s-2 | Esm2 | facebook/esm1v_t33_650M_UR90S_2 (pth) | not checked | supported |
esm1v-t33-650m-ur90s-3 | Esm2 | facebook/esm1v_t33_650M_UR90S_3 (pth) | not checked | supported |
esm1v-t33-650m-ur90s-4 | Esm2 | facebook/esm1v_t33_650M_UR90S_4 (pth) | not checked | supported |
esm1v-t33-650m-ur90s-5 | Esm2 | facebook/esm1v_t33_650M_UR90S_5 (pth) | not checked | supported |
esm1b-t33-650m-ur50s | Esm2 | facebook/esm1b_t33_650M_UR50S (pth) | not checked | supported |
saprot-35m-af2 | Esm2 | westlake-repl/SaProt_35M_AF2 (pth) | verified (saprot_parity) | supported |
saprot-650m-af2 | Esm2 | westlake-repl/SaProt_650M_AF2 (pth) | not checked | supported |
fastesm2-650 | Esm2 | Synthyra/FastESM2_650 (safetensors) | verified (fastesm2_parity) | supported |
pepmlm-650m | Esm2 | ChatterjeeLab/PepMLM-650M (pth) | verified (pepmlm_parity) | supported |
dplm-650m | Esm2 | airkingbd/dplm_650m (pth) | verified (dplm_parity) | supported |
amplify-120m | Amplify | chandar-lab/AMPLIFY_120M (safetensors) | verified (amplify_parity) | supported |
amplify-350m | Amplify | chandar-lab/AMPLIFY_350M (safetensors) | not checked | supported |
esmc-300m | Esmc | EvolutionaryScale/esmc-300m-2024-12 (pth) | verified (esmc_parity) | supported |
esmc-600m | Esmc | EvolutionaryScale/esmc-600m-2024-12 (pth) | not checked | supported |
esmc-6b | Esmc | EvolutionaryScale/esmc-6b-2024-12 (safetensors) | not checked | supported |
esm3-sm-open-v1 | Esm3 | EvolutionaryScale/esm3-sm-open-v1 (pth) | verified (esm3_parity) | supported |
esm3-structure-encoder-v0 | Esm3 | EvolutionaryScale/esm3-sm-open-v1 (pth) | verified (esm3_structure_parity) | supported |
prott5-xl-half-uniref50-enc | T5 | Rostlab/prot_t5_xl_half_uniref50-enc (pth) | verified (prott5_parity) | supported |
ankh-base | T5 | ElnaggarLab/ankh-base (pth) | verified (ankh_parity) | supported |
ankh-large | T5 | ElnaggarLab/ankh-large (pth) | not checked | supported |
prostt5-fp16 | T5 | Rostlab/ProstT5_fp16 (pth) | verified (prostt5_parity) | supported |
proteinmpnn-v48-020 | Mpnn | zcpbx/ligandmpnn-weights (pth) | verified (proteinmpnn_parity) | supported |
ligandmpnn-v32-020-25 | Mpnn | zcpbx/ligandmpnn-weights (pth) | verified (ligandmpnn_parity) | supported |
Re-exports§
pub use amplify::amplify::AMPLIFY;pub use amplify::amplify::AmplifyOutput;pub use amplify::amplify_runner::AmplifyModels;pub use amplify::amplify_runner::AmplifyRunner;pub use amplify::config::AMPLIFYConfig;pub use esm2::esm2::ESM2;pub use esm2::esm2::ESM2Config;pub use esm2::esm2_runner::ESM2Models;pub use esm2::esm2_runner::ESM2Runner;pub use esm3::models::esm3::ESM3Config;pub use esm3::pretrained::ESM3Models;pub use esm3::pretrained::ESM3Runner;pub use esmc::models::esmc::ESMC;pub use esmc::models::esmc::ESMCConfig;pub use esmc::models::esmc::ESMCOutput;pub use esmc::models::esmc::LogitsConfig;pub use esmc::models::esmc::LogitsOutput;pub use esmc::pretrained::ESMCModels;pub use esmc::pretrained::ESMCRunner;pub use featurize::StructureFeatures;pub use ligandmpnn::configs::ProteinMPNNConfig;pub use ligandmpnn::model::ProteinMPNN;pub use ligandmpnn::pmpnn_runner::ProteinMPNNModels;pub use ligandmpnn::pmpnn_runner::ProteinMPNNRunner;pub use t5::runner::T5Models;pub use t5::runner::T5Runner;pub use t5::translator::ProstT5Models;pub use t5::translator::ProstT5Translator;pub use plm_runner::ModelMetadata;pub use plm_runner::PlmRunner;pub use plm_runner::SpecialTokenLayout;pub use registry::Family;pub use registry::ModelCard;pub use registry::ParityStatus;pub use registry::REGISTRY;pub use registry::TokenizerSpec;pub use registry::VocabAlphabet;
Modules§
- amplify
- AMPLIFY
- esm2
- ESM-2 protein language model from Facebook/Meta Research.
- esm3
- ESM-3 multimodal protein language model from EvolutionaryScale.
- esmc
- ESM-C / ESM-3 model family from EvolutionaryScale.
- featurize
- Protein Featurizer for ProteinMPNN/LignadMPNN
- ligandmpnn
- ferritin-ligandmpnn
- loader
- One place to describe where a model’s weights live and how to load them.
- plm_
runner - Unified trait for protein language model runners.
- registry
- One table describing every supported model.
- t5
- The T5 family: ProtT5, Ankh and ProstT5 (ferritin-goh.5, ferritin-goh.6).
- types
- Types for Standardizing Outputs for Viz
- utils
Functions§
- device
- Returns the best available device for computation.