Skip to main content

Crate ferritin_plms

Crate ferritin_plms 

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

ModelFamilyWeightsParityStatus
esm2-t6-8mEsm2facebook/esm2_t6_8M_UR50D (safetensors)verified (esm2_parity)supported
esm2-t12-35mEsm2facebook/esm2_t12_35M_UR50D (safetensors)not checkedsupported
esm2-t30-150mEsm2facebook/esm2_t30_150M_UR50D (safetensors)not checkedsupported
esm2-t33-650mEsm2facebook/esm2_t33_650M_UR50D (safetensors)not checkedsupported
esm2-t36-3bEsm2facebook/esm2_t36_3B_UR50D (safetensors)not checkedsupported
esm2-t48-15bEsm2facebook/esm2_t48_15B_UR50D (safetensors)not checkedsupported
esm1v-t33-650m-ur90s-1Esm2facebook/esm1v_t33_650M_UR90S_1 (pth)not checkedsupported
esm1v-t33-650m-ur90s-2Esm2facebook/esm1v_t33_650M_UR90S_2 (pth)not checkedsupported
esm1v-t33-650m-ur90s-3Esm2facebook/esm1v_t33_650M_UR90S_3 (pth)not checkedsupported
esm1v-t33-650m-ur90s-4Esm2facebook/esm1v_t33_650M_UR90S_4 (pth)not checkedsupported
esm1v-t33-650m-ur90s-5Esm2facebook/esm1v_t33_650M_UR90S_5 (pth)not checkedsupported
esm1b-t33-650m-ur50sEsm2facebook/esm1b_t33_650M_UR50S (pth)not checkedsupported
saprot-35m-af2Esm2westlake-repl/SaProt_35M_AF2 (pth)verified (saprot_parity)supported
saprot-650m-af2Esm2westlake-repl/SaProt_650M_AF2 (pth)not checkedsupported
fastesm2-650Esm2Synthyra/FastESM2_650 (safetensors)verified (fastesm2_parity)supported
pepmlm-650mEsm2ChatterjeeLab/PepMLM-650M (pth)verified (pepmlm_parity)supported
dplm-650mEsm2airkingbd/dplm_650m (pth)verified (dplm_parity)supported
amplify-120mAmplifychandar-lab/AMPLIFY_120M (safetensors)verified (amplify_parity)supported
amplify-350mAmplifychandar-lab/AMPLIFY_350M (safetensors)not checkedsupported
esmc-300mEsmcEvolutionaryScale/esmc-300m-2024-12 (pth)verified (esmc_parity)supported
esmc-600mEsmcEvolutionaryScale/esmc-600m-2024-12 (pth)not checkedsupported
esmc-6bEsmcEvolutionaryScale/esmc-6b-2024-12 (safetensors)not checkedsupported
esm3-sm-open-v1Esm3EvolutionaryScale/esm3-sm-open-v1 (pth)verified (esm3_parity)supported
esm3-structure-encoder-v0Esm3EvolutionaryScale/esm3-sm-open-v1 (pth)verified (esm3_structure_parity)supported
prott5-xl-half-uniref50-encT5Rostlab/prot_t5_xl_half_uniref50-enc (pth)verified (prott5_parity)supported
ankh-baseT5ElnaggarLab/ankh-base (pth)verified (ankh_parity)supported
ankh-largeT5ElnaggarLab/ankh-large (pth)not checkedsupported
prostt5-fp16T5Rostlab/ProstT5_fp16 (pth)verified (prostt5_parity)supported
proteinmpnn-v48-020Mpnnzcpbx/ligandmpnn-weights (pth)verified (proteinmpnn_parity)supported
ligandmpnn-v32-020-25Mpnnzcpbx/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.