#tree #suffix #generalized #lib #algorithm #serialization #k-truncated

bin+lib kgst

包含使用 Ukkonen 算法实现的 K-Truncated Generalized Suffix Tree 的库

2 个版本

0.1.1 2023 年 9 月 27 日
0.1.0 2023 年 9 月 27 日

#201 in 生物学

MIT 许可证

31KB
620 代码行

KGST

Build Status LICENSE Crates Documentation

包含使用 Ukkonen 算法实现的 K-Truncated Generalized Suffix Tree 的库,以及一个 CLI 工具,用于快速构建和序列化 KGST。

用法

CLI 工具用于构建和序列化 K-Truncated Generalized Suffix trees

用法: gst [命令]

命令: build 从参考 fasta 文件构建后缀树索引 help 打印此消息或给定子命令的帮助信息

选项: -h, --help 打印帮助信息 -V, --version 打印版本信息


lib.rs:

K-Truncated Generalized Suffix Tree

实现线性时间构建的截断后缀树

示例

use generalized_suffix_tree::suffix_tree::KGST;

// Initalize empty tree
let mut tree: KGST<char, String> = KGST::new('$');

// insert item with corresponding item id
let item_string:Vec<char> = "MKAILVVLLYTFTTADADTLCIGYHANNSTDTVDTVLEKNVTVTHSVNLLENRHNGKLCKLRGVAPLHLGKCNIAGWILGNPECESLSTAGSWSYIVETSNPDNGTCYPGDFINYEELREQLSSVSSFEKFEIFPKTSSWPNHDTNRGVTAACPHDGAKSFYRNLLWLVKKEKENSYPMINKSYTNNKGKEVLVLWAIHHPATSADQQSLYQNANAYVFVGSSKYSKKFEPEIAARPKVRDQAGRMKYYWTLVEPGDKITFEATGNLVVPIYAFALKRNSGSGIIISDTSVHDCDTTCQTPNGAINTSLPFQNIHPVTIGECPKYVKSTKLRMATGLRNIPSIQSRGLFGAIAGFIEGGWTGMIDGWYGYHHQNEQGSGYAADLKSTQNAIDGITNKVNSVIEKMNTQFTAVGKEFNHLERRIENLNKKVDDGFLDIWTYNAELLVLLENERTLDYHDSNVKNLYEKVRSQLKNNAKEIGNGCFEFYHKCDDTCMESVKNGTYDYPKYSEEAKLNREEIDGVKLESTRIYQILAIYSTVASSLVLVVSLGAISFWMCSNGSLQCRICI".chars().collect();
let item_id:String = "World".to_string();
tree.insert(item_id.clone(), item_string.clone(),&0);


// Query if some string is a substring in the tree
let substring_match = tree.substring_match(&item_string[i..i+max_depth+1]);

// Query if some string is a suffix in the tree
let suffix_match = tree.suffix_match(&item_string[i..i+max_depth+1]);

// Clear tree
tree.clear();

依赖关系

~19–30MB
~451K SLoC