Uncalled4 是一个用于纳米孔信号对齐、分析和可视化的工具包。它执行准确的基序引导纳米孔信号对齐,类似于 nanopolish eventalign 或 tombo resquiggle,将纳米孔信号段映射到参考核苷酸上。它还支持将任何信号对齐转换为高效的 BAM 格式,允许进行交互式可视化、修改检测和其他信号分析。
安装
pip install uncalled4
或者
git clone https://github.com/skovaka/uncalled4.git
cd uncalled4
pip install .
需要 Python 版本 >= 3.8 和 GCC 版本 >= 4.9.2。Uncalled4 目前仅在 Linux 上进行了测试,主要是 Ubuntu 18.04 和 20.04。
概览
example/ 目录包含脚本,用于下载示例数据并测试每个命令:
cd uncalled4/example
./download.sh
./run.sh
scripts/bamprep.py 用于将标签复制到补充和次要对齐。
Uncalled4 主要将信号对齐存储在 BAM 对齐标签中,包括每个参考信号坐标和大多数信号分析所需的当前汇总统计数据。大多数可视化和分析命令需要一个排序和索引(通过 samtools index)的 Uncalled4 BAM 文件。Nanopolish、f5c 或 Tombo 对齐可以通过 convert 命令转换为 Uncalled4 格式。
信号对齐需要一个孔模型将 k-mer 映射到预期电流。Uncalled4 将尝试自动从输入数据中检测适当的孔模型,但可能需要您指定预设孔模型或自定义孔模型。这可以使用 --pore-model 标志或 --flowcell 和 --kit 标志来指定。uncalled4 train 训练新的孔模型,可以从初始化孔模型开始,也可以使用基序调用移动从头开始。
在 dev 分支上实现了对 RNA004 对齐的初步支持。信号对齐质量似乎比 RNA002 更好,但确切的实现可能在迁移到主分支之前会有所变化。
align
执行由基序调用对齐引导的 DTW 对齐
uncalled4 align [-h] [--ref REF | --self] [--reads READS [READS ...]] --bam-in [BAM_IN] [-p PROCESSES] [--flowcell FLOWCELL]
[--kit KIT] [--basecaller-profile BASECALLER_PROFILE] [--rna] [--ordered-out] [-f] [--kmer-shift KMER_SHIFT]
[--bam-chunksize BAM_CHUNKSIZE] [--out-name OUT_NAME] [-r] [-l READ_FILTER] [-x READ_INDEX] [-n MAX_READS]
[--count-events] [--del-max DEL_MAX] [--ins-max INS_MAX] [--unmask-splice] [--method METHOD]
[-c {abs_diff,z_score,norm_pdf}] [-b BAND_WIDTH] [-s BAND_SHIFT] [--mvcmp-mask MVCMP_MASK]
[--max-norm-dist MAX_NORM_DIST] [--max-sd MAX_SD] [--min-aln-length MIN_ALN_LENGTH] [-N {ref_mom,model_mom}]
[--zero-ts] [-C CONFIG] [-o [BAM_OUT] | --tsv-out [TSV_OUT] | --eventalign-out [EVENTALIGN_OUT]] [-m PORE_MODEL]
[--bam-f5c] [--tsv-cols TSV_COLS] [--tsv-na [TSV_NA]] [--tsv-noref] [--eventalign-flags EVENTALIGN_FLAGS]
[--norm-iterations NORM_ITERATIONS] [--mask-skips [MASK_SKIPS]] [--skip-cost SKIP_COST] [--stay-cost STAY_COST]
[--move-cost MOVE_COST]
–bam-in 必须是 Dorado 使用 --emit-moves --emit-sam 标志或 Guppy 使用 --moves_out 标志生成的 BAM 文件。
–self 选项是 --ref 的替代方案,执行信号到读取的对齐到基序调用读取,该读取必须在输入 BAM 文件的 SEQ 字段中定义。
convert
转换信号对齐文件格式
uncalled4 convert [-h] [--bam-in BAM_IN | --eventalign-in [EVENTALIGN_IN] | --tombo-in TOMBO_IN]
[--eventalign-out [EVENTALIGN_OUT] | --tsv-out [TSV_OUT] |
--m6anet-out [M6ANET_OUT]] [--tsv-cols TSV_COLS]
[--eventalign-flags EVENTALIGN_FLAGS]
[--mask-skips [MASK_SKIPS]] [--ref FASTA] [--reads READS [READS ...]]
[-l READ_FILTER] [-x READ_INDEX] [-r] [--rna] [-R REF_BOUNDS] [-f] [-a]
通常只应该指定一个 –-in 和一个 –-out 选项,–bam-out 例外,应该通过 --bam-in 指定一个模板 bam 文件。
nanopolish 或 f5c
–m6anet-out 高效实现 m6anet 数据准备,用于排序的 Uncalled4 BAM 文件。这应该与在 Uncalled4 对齐上训练的 m6Anet 模型一起使用。
train
迭代训练新的 k-mer 孔模型
接受与 uncalled4 align 大部分相同的参数,另外还有迭代次数。第一次迭代必须使用一些起始孔模型,而后续迭代使用上一次迭代的孔模型。