3 个不稳定版本

0.3.0 2022年12月8日
0.2.1 2022年11月24日
0.2.0 2022年9月29日

#1391 in 解析器实现


用于 alpine-core

MIT/Apache

79KB
2K SLoC

distmat

crates-io-v crates-io-l docs-rs

距离矩阵数据类型和文件格式

专门用于存储成对距离数据的矩阵类型,以及用于存储此类数据的常见文件格式的解析器。

use distmat::{DistMatrix, SquareMatrix};
use distmat::formats::{PhylipDialect, Separator, TabularShape};

fn main() {
    // A symmetric matrix stored as the lower triangle:
    //   _1__5__3
    // 1|
    // 5| 4
    // 3| 2  2
    let matrix1 = DistMatrix::from_pw_distances(&[1, 5, 3]);
    assert_eq!(matrix1.get_symmetric(1, 2), Some(2));

    // A square matrix stored in row major order:
    //   _1___5___3
    // 1| 0  -4  -2
    // 5| 4   0   2
    // 3| 2  -2   0
    let matrix2 = SquareMatrix::from_pw_distances_with(&[1, 5, 3], |x, y| x - y);
    let mut total = 0;
    for row in matrix2.iter_rows() {
        total += row.sum();
    }

    let _matrix =
        SquareMatrix::from_tabular_file("snp-dists.dat", Separator::Char('\t'), TabularShape::Wide).unwrap();
    let _matrix =
        SquareMatrix::from_phylip_file("phylip.dist", PhylipDialect::Strict).unwrap();
    let _matrix =
        DistMatrix::from_phylip_file("phylip_lt.dist", PhylipDialect::Relaxed).unwrap();
}

目的

目标

  • 从任何合理的格式读取和写入成对距离数据,尤其是生物信息学中使用的格式。
  • 提供一个方便的 API 来交互距离数据。

非目标

  • 线性代数。有许多带有矩阵数据结构的线性代数库可用。distmat 最多可以帮助您将这些库中的数据导出。
  • 算法。您可以为 distmat 提供一个闭包来构建距离矩阵,但任何专门的算法或距离度量最好在其他地方实现。

许可证

双许可协议下 MITApache 2.0

© 西部悉尼地方卫生区,新南威尔士州卫生局。

依赖项

~0.6–1.1MB
~24K SLoC