Skip to main content

ferritin_plms/esm3/utils/
constants.rs

1//! ESM3 token constants.
2//!
3//! All values are taken directly from `esm/utils/constants/esm3.py`.
4
5// Re-export the shared sequence vocabulary from esmc (identical alphabet).
6pub use crate::esmc::utils::constants::esm3::SEQUENCE_VOCAB;
7
8// ── Sequence track ────────────────────────────────────────────────────────────
9pub const SEQUENCE_BOS_TOKEN: u32 = 0;
10pub const SEQUENCE_PAD_TOKEN: u32 = 1;
11pub const SEQUENCE_EOS_TOKEN: u32 = 2;
12pub const SEQUENCE_CHAINBREAK_TOKEN: u32 = 31;
13pub const SEQUENCE_MASK_TOKEN: u32 = 32;
14
15// ── Structure track (VQ-VAE) ──────────────────────────────────────────────────
16pub const VQVAE_CODEBOOK_SIZE: u32 = 4096;
17pub const STRUCTURE_MASK_TOKEN: u32 = VQVAE_CODEBOOK_SIZE; // 4096
18pub const STRUCTURE_EOS_TOKEN: u32 = VQVAE_CODEBOOK_SIZE + 1; // 4097
19pub const STRUCTURE_BOS_TOKEN: u32 = VQVAE_CODEBOOK_SIZE + 2; // 4098
20pub const STRUCTURE_PAD_TOKEN: u32 = VQVAE_CODEBOOK_SIZE + 3; // 4099
21pub const STRUCTURE_CHAINBREAK_TOKEN: u32 = VQVAE_CODEBOOK_SIZE + 4; // 4100
22pub const STRUCTURE_UNDEFINED_TOKEN: u32 = 955;
23
24// ── SS8 secondary-structure track ────────────────────────────────────────────
25// Vocab: PAD=0, MASK=1, UNK=2, then "GHITEBSC" at 3..10  (total 11)
26pub const SS8_PAD_TOKEN: u32 = 0;
27pub const SS8_MASK_TOKEN: u32 = 1;
28pub const SS8_UNK_TOKEN: u32 = 2;
29pub const SS8_VOCAB: &str = "GHITEBSC";
30
31// ── SASA track ────────────────────────────────────────────────────────────────
32// 15 boundaries → 16 bins; PAD=0, MASK=1, UNK=2, bins at 3..18  (total 19)
33pub const SASA_PAD_TOKEN: u32 = 0;
34pub const SASA_MASK_TOKEN: u32 = 1;
35pub const SASA_UNK_TOKEN: u32 = 2;
36pub const SASA_DISCRETIZATION_BOUNDARIES: &[f32] = &[
37    0.8, 4.0, 9.6, 16.4, 24.5, 32.9, 42.0, 51.5, 61.2, 70.9, 81.6, 93.3, 107.2, 125.4, 151.4,
38];
39
40// ── Function / annotation tracks ─────────────────────────────────────────────
41pub const INTERPRO_PAD_TOKEN: u32 = 0;
42pub const RESIDUE_PAD_TOKEN: u32 = 0;