1 个不稳定版本
0.1.4 | 2024 年 1 月 15 日 |
---|
#1022 在 数据结构
690KB
908 行
gfa-reader - 读取 GFA 文件
能够处理版本 1.0、1.1、1.2 和 2.0 的单一结构。
GFA 格式规范
安装
gfa-readder = { git = "https://github.com/MoinSebi/gfa-reader", branch = "main" }
或者
gfa-reader = "0.1.4"
一般信息
gfa-reader 有两个主要的结构:Gfa 用于版本 1.0、1.1、1.2 和 2.0,NCGfa 用于版本 1.2 或更低。
Gfa 代表所有版本和节点 ID 的基本实现。根据规范,节点 ID 可以是数字或字母数字的,因此在我们的实现中代表为 String。这可能会导致内存增加。
NCGfa (NumericCompact) 是带有数字和压缩(从 1 开始)节点 ID 的图的紧凑表示。可用于来自 pggb 或 minigraph-cactus 的变体/基因组图。
可选字段
几个 GFA 条目都有可选字段。大多数情况下,这些字段对于基本图结构不是必需的。因此,如果需要,可以手动读取或省略。此选项将一次为所有条目设置,这些条目将解析或不解析可选信息。
重叠
对于重叠也是如此,它们在许多 GFA 条目中是可选的,可以解析或不解析。大多数情况下,它们对于基本图结构不是必需的,可以像上面一样省略。
边
在几个特定情况下,由于图结构可以通过路径信息显示,因此不需要边。边结构始终存在,但根据解析设置,将永远不会填充。
LEER
PanSN
Pan-SN 规范是用于在 GFA 格式中存储变异图的规范。gfa-reader 强烈支持该规范,具有 pansn 结构。它允许您根据用例利用基因组、单倍型或路径级别的集合。
/// use gfa_reader::{Gfa, Pansn, Path};
///
/// let mut graph: Gfa<()> = Gfa::new();
/// graph.parse_gfa_file("data/size5.gfa", false);
/// let pansn: Pansn<Path> = Pansn::from_graph(&graph.paths, " ");
其他信息
我们建议在每种情况下都使用 NCGfa,因为它有两个主要优势
- 您可以将 Gfa 转换为 NCGfa 并获得一个反映 new_id (usize) -> old_id (string) 的 Vector 数据
- 对于节点查找,您不需要额外的 HashMap 或遍历整个向量,只需将节点 ID 减 1 并直接在向量中查找即可。
技巧
- 对于基于图特征的任何相关输出,不要忘记重新转换节点 ID 以使其适合输入图结构。
- 在解析之前将图转换为数字和紧凑的节点ID。这可以节省解析时间并加快计算速度。
依赖项
~2MB
~35K SLoC