ferritin_plms/esm3/tokenization/
ss8.rs1use crate::esm3::utils::constants::{SS8_UNK_TOKEN, SS8_VOCAB};
8
9pub fn tokenize_ss8(ss8: &str) -> Vec<u32> {
13 ss8.chars()
14 .map(|c| match SS8_VOCAB.find(c) {
15 Some(idx) => idx as u32 + 3,
16 None => SS8_UNK_TOKEN,
17 })
18 .collect()
19}
20
21#[cfg(test)]
22mod tests {
23 use super::*;
24
25 #[test]
26 fn test_tokenize_ss8_known() {
27 assert_eq!(tokenize_ss8("G"), vec![3]);
29 assert_eq!(tokenize_ss8("C"), vec![10]);
31 }
32
33 #[test]
34 fn test_tokenize_ss8_unknown() {
35 assert_eq!(tokenize_ss8("X"), vec![2]); }
37
38 #[test]
39 fn test_tokenize_ss8_full_vocab() {
40 let ids = tokenize_ss8(SS8_VOCAB);
41 assert_eq!(ids, vec![3, 4, 5, 6, 7, 8, 9, 10]);
42 }
43}