#sketch #vector #nucleotide #average #identity #approximation #genomics

bin+lib hyper-gen

HyperGen 是一个高性能的 Rust 库,可以将基因组文件草图化为超向量,并实现快速的平均核苷酸身份 (ANI) 近似

1 个不稳定版本

0.2.2 2024 年 7 月 28 日

#76生物学

Download history 132/week @ 2024-07-28 1/week @ 2024-08-04

每月 133 次下载

MIT/ApacheGPL-2.0 许可协议

115KB
2.5K SLoC

Rust 2K SLoC // 0.1% comments CUDA 250 SLoC // 0.1% comments

License bsd-3-clause

HyperGen:使用超维度向量进行紧凑高效的基因组草图绘制

HyperGen 是一个用于绘制基因组文件并实现快速平均核苷酸身份 (ANI) 近似的 Rust 库。 HyperGen 利用以下两种先进算法:1. FracMinHash 和 2. 超维度计算 (HDC) 以及随机索引,如下图所示

HyperGen 首先使用 FracMinHash 采样 kmer 集合。然后使用 HDC 编码将 kmer 哈希值编码为超维度向量 (HV),以获得更好的 ANI 估计质量、草图大小和计算速度之间的权衡。由 HyperGen 生成的草图大小比 MashDashing 2 小 1.8 到 2.7 倍。在 HyperGen 中,可以使用高度向量化的向量乘法实现 ANI 估计。在大型数据集上,HyperGen 的数据库搜索速度比 Dashing 2 快 4.3 倍。

快速入门

安装

基本安装

HyperGen 需要 Rust 语言和 Cargo。我们建议使用以下命令安装 HyperGen

git clone https://github.com/wh-xu/Hyper-Gen.git
cd Hyper-Gen

# Without GPU acceleration for sketching
cargo install --path .

安装带 GPU 支持的版本

HyperGen 支持GPU加速。使用GPU模式将需要安装NVIDIA GPU驱动程序。使用 nvidia-sminvcc -V 检查是否已安装驱动程序。然后运行以下命令以安装带GPU支持的版本

# With GPU acceleration for sketching
cargo install --features cuda-sketch --path .

目前仅支持Nvidia GPU。我们在具有CUDA版本 RTX4090 的桌面和具有CUDA版本 RTX4060 的笔记本电脑上测试了兼容性。

用法

当前版本支持以下功能

1. 对 .fa/.fna/.fasta 文件的基因组草图绘制

Example:
hyper-gen sketch -p ./data -o ./fna.sketch

Positional arguments:
-p, --path <PATH>               Input folder path to sketch
-o, --out <OUT>                 Output path 
-t, --thread <THREAD>           Threads used for computation [default: 16]
-C, --canonical <CANONICAL>     If use canonical kmer [default: true]
-k, --ksize <KSIZE>             k-mer size for sketching [default: 21]
-s, --scaled <SCALED>           Scaled factor for FracMinHash [default: 1500]
-d, --hv_d <HD_D>               Dimension for hypervector [default: 4096]
-D, --device <DEVICE>           Device to run [default: cpu] [possible values: cpu, gpu]
Example:
hyper-gen dist -r fna1.sketch -q fna2.sketch -o output.ani

Positional arguments:
-r, --path_r <PATH_R>           Path to ref sketch file
-q, --path_q <PATH_Q>           Path to query sketch file
-o, --out <OUT>                 Output path 
-t, --thread <THREAD>           Threads used for computation [default: 16]
-a, --ani_th <ANI_TH>           ANI threshold [default: 85.0]

3. 在 GPU 上更快地绘制草图

HyperGen 支持将 kmer 哈希和采样步骤卸载到 GPU,以加快草图绘制过程。使用以下命令在 GPU 设备上运行

hyper-gen sketch -D gpu -p ./data -o ./fna.sketch

MashHyperGen 之间的区别

  • (a) Mash 使用 MinHash 采样 kmer 哈希集,并将离散的哈希值存储为基因组草图。
  • (b) HyperGen 使用 FracMinHash 对 kmer 哈希集进行采样,并将离散的哈希值编码为连续的 sketch 超向量

出版物

  1. 魏宏旭,许伯凯,尼米亚·莫什里,余世盟,塔亚娜·罗辛。"HyperGen: 使用超维度向量进行紧凑和高效的基因组草图绘制。" 生物信息学,2024。

联系方式

如需更多信息,请发布问题或发送电子邮件至 [email protected]

依赖项

~9-24MB
~391K SLoC