Skip to main content

查找并修复丢失的小外显子

项目描述

修复对齐项目

一种基于注释的方法,用于修复 Nanopore 长读取中的小外显子缺失对齐缺陷。

上面的示例图显示了中间未对齐的外显子是通过比较参考注释 BED 并重新对齐到正确位置来找到的。当我们使用 [minimap2](https://github.com/lh3/minimap2) 比对 ONT RNA-seq reads 时,很容易错过小尺寸的外显子,因为在这些中很难找到精确匹配的锚点地区。

安装

pip install fixalign

使用以下命令升级到更新版本: pip install fixalign --upgrade

该包是为python3编写的

输入

fixalign 需要四个基本参数。

  • BAM 文件
  • 基因组参考fasta(索引fai在同一目录中)
  • 成绩单注释 BED12
  • 输出外显子缺失区域信息的目标文件

输出

  • 缺少小外显子的区域
  • 重新对齐的 BAM 文件已修复

用法

fixalign [-h] [-s N] [-d float] [-f N] [--ignoreStrand] [--detail]
         [--floatFlankLen] [-o file | --onlyRegion]
         inBam genomeFasta annotBed outRegion

positional arguments:
  inBam                 Input original bam file.
  genomeFasta           Reference genome fasta file, with fai index under the same directory.
  annotBed              Annotated transcripts file in BED12 format.
  outRegion             Output Region file, regions contain missed small exons.

optional arguments:
  -h, --help            show this help message and exit.
  -s, --exonSizeThd N   The threshold of exons size, ignore transcript exons with size > exonSizeThd (default: 100).
                        We use exon size and delta ratio to judge whether the intron region of each read has missed small exons or not. 
                        For more explanation, please go to the NOTES.
  -d, --deltaRatioThd float
                        The threshold of absolute delta ratio, ignore abs(delta ratio) > deltaRatioThd (default: 0.5).
                        Delta ratio = modified margin length / exon size. For more explanation, please go to the NOTES.
  -f, --flankLen N      The extended length on the both sides of realign region (default: 20).
  --ignoreStrand        Consider both strands (default: False).
  --detail              Return all possible missed exons on different transcripts (default: False).
  --floatFlankLen       Flank length can be changed by adjacent indel (default: False).
  -o, --outBam file     Output realigned bam file (default: None).
  --onlyRegion          Only return the Region file without realign process (default: False).

笔记

fixalign 检查 reads 的内含子区域是否遗漏小外显子的基本思想是基于长度比较。
  • 边距长度如上图所示,边距长度定义为读取外显子与注释外显子相比的额外长度(例如,a、b 和 m1+m2 是对应于注释的两个转录本的边距长度)。如果内含子与注释的外显子重叠,我们找到读取内含子,然后检查边缘长度是否接近外显子长度。如果它们来自注释的外显子,很容易认为边缘长度应该接近外显子长度。但是当我们发现这些错误的对齐区域(realign region)通常包含许多indel(插入和删除)并且边距长度小于大多数情况下的外显子长度
  • flank length用于定义重新对齐区域的范围。我们设置区域开始 = 最小(注释剪接位点,读取剪接位点)-侧翼长度和区域结束 = 最大值(注释剪接位点,读取剪接位点)+侧翼长度
  • 修改边距长度我们计算重新对齐区域中的插入缺失数并定义修改边距长度修改边距长度=边距长度+插入-删除)而不是边距长度以与外显子长度进行比较。
  • delta ratio delta ratio = (修改后的边缘长度-外显子长度)/外显子长度。我们选择外显子长度<=exonSizeThd增量比率<=deltaRatioThd来过滤掉误报并将左侧区域记录为外显子缺失区域。区域信息在 中输出outRegion
  • --detail一个 Read 内含子可能与多个转录本上的外显子重叠。默认情况下,我们只返回带有最小delta raio的带注释的成绩单作为正确的参考。您可以设置--detail保留所有可能的成绩单参考。在realign过程中,我们只在不同的成绩单中保留一个realign结果,realign分数最高的将被保留。

我们使用parasail在重新对齐区域中读取序列和注释外显子序列之间进行全局成对对齐。如果重新对齐的分数 > 原始分数,我们只保留重新对齐的结果。注意:如果提供了原始分数,则不参考 BAM 中的 AS 字段。我们根据realign区域中的realignment和原始对齐计算realigned score和original score,分数等于匹配的碱基数-编辑距离。由于不同的对齐工具可能有不同的评分系统,如果提供,我们不会更改 BAM 中 NM 字段的 AS。

  • --onlyRegion虽然我们默认在 中返回重新对齐的结果-o, --outBam file,但是您可以设置--onlyRegion跳过重新对齐过程(尽管重新对齐过程目前不是瓶颈)。
  • --ignoreStrand如果原始读数不是链 RNA-seq,则使用此参数。我们将尝试两条链来找到重叠的外显子。

示例用法

git clone https://github.com/zhenLiuExplr/fixalign-project
cd examples
fixalign ex.bam ex.fa ex_annotation.bed ex_realign_region -f 20 --ignoreStrand -o realn.bam

注意 annotBed、genomeFasta 和 inBam 中的染色体应该具有相同的命名风格(全部采用 UCSC 风格,如“chr1”或 Ensembl 风格,如“1”)。命名风格不一致会导致判断失败。

致谢/贡献者

  • 刘震建筑维护
  • 吴伟和朱晨晨为您提供建议

贡献

欢迎所有建议、错误报告、功能请求和贡献。您可以留下问题或打开拉取请求。

引文

如果您使用此工具,请考虑引用我们的出版物

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

fixalign-0.2.10.tar.gz (21.1 kB 查看哈希)

已上传 source

内置分布

fixalign-0.2.10-py3-none-any.whl (26.5 kB 查看哈希

已上传 py3