#read #k-mer #genome #structural #unique #classify #variations

bin+lib klassify

根据独特的 kmer 内容对嵌合读数进行分类

5 个版本

新版本 0.1.4 2024 年 8 月 18 日
0.1.3 2024 年 8 月 13 日
0.1.2 2024 年 7 月 31 日
0.1.1 2024 年 7 月 31 日
0.1.0 2024 年 7 月 31 日

#95 in 生物学

Download history 298/week @ 2024-07-27 19/week @ 2024-08-03 122/week @ 2024-08-10

每月 439 次下载

自定义许可证

605KB
1.5K SLoC

Rust 1K SLoC // 0.0% comments Python 391 SLoC // 0.1% comments Jupyter Notebooks 239 SLoC // 0.0% comments

klassify

Crates.io Github Actions

klassify-logo

根据独特的 kmer 内容对嵌合读数进行分类,并识别断点位置。

断点可能由以下原因引起

  • 重组/交叉事件
  • 结构变异

虽然有许多工具可以识别结构变异,但本工具旨在比较后代(例如 F1)读数与亲本基因组。关键思想是对 trio binning 方法的一种扩展,其中我们使用亲本基因组中每个染色体/contig 的独特 kmer 来分类跨越两个不同染色体/contig 的读数。

以下是该工具识别的重组读数示例

recombinant-read

安装

cargo install klassify

使用方法

假设你有 3 个输入文件

  • parents.genome.fa:亲本基因组
  • f1_reads.fa:后代读数
  • parent_reads.fa:亲本读数
  1. 创建一个从亲本基因组中提取的独特 kmer 的数据库
mkdir ref
faSplit byname parents.genome.fa ref/
klassify build ref/*.fa -o kmers.bc

这会生成所有独特 kmer(存在于单个 contig/chromosome 中)的索引。

  1. 根据独特 kmer 对后代(例如 F1)读数进行分类
mkdir f1_reads f1_classify
faSplit about f1_reads.fa 2000000000 f1_reads/
klassify classify kmers.bc f1_reads/*.fa -o f1_classify
  1. 将“嵌合”后代读数映射到父母参考基因组
klassify extract f1_classify.filtered.tsv f1_reads/*.fa -o f1_classify.fa
minimap2 -t 80 -ax map-hifi --eqx --secondary=no parents.genome.fa f1_classify.fa \
    --split-prefix f1_classify | samtools sort -@ 8 -o f1_classify.bam
  1. 使用亲本读数重复这些步骤
mkdir parent_reads parent_classify
faSplit about parent_reads.fa 2000000000 parent_reads/
klassify classify kmers.bc parent_reads/*.fa -o parent_classify
klassify extract parent_classify.filtered.tsv parent_reads/*.fa -o parent_classify.fa
minimap2 -t 80 -ax map-hifi --eqx --secondary=no parents.genome.fa parent_classify.fa \
    --split-prefix parent_classify | samtools sort -@ 8 -o parent_classify.bam
  1. 使用亲本读数作为“对照”,识别在 F1 读数中出现但不在亲本读数中出现的“嵌合”区域(因此我们不会受到组装错误的影响)
klassify regions f1_classify.bam parent_classify.bam

这样就完成了!亲本基因组中的断点位置在 f1_classify.regions.tsv 文件中,其中第 2 列表示断点周围每个 10kb bin 的深度

SoChr01A:118800000-118810000    10
SoChr01B:43130000-43150000      8,12

依赖项

~18MB
~375K SLoC