使用LUMPY检测结构变异

简介: LUMPY是一款基于概率框架检测结构变异(structure variants)的软件, 它根据read-pair, split-read, read-depth和其他先验知识寻找基因组上可能的结构变异。

LUMPY是一款基于概率框架检测结构变异(structure variants)的软件, 它根据read-pair, split-read, read-depth和其他先验知识寻找基因组上可能的结构变异。

软件在编译的时候会先安装HTSLIB,根据Makefile, 需要预先安装好curl和zlib. 此外还推荐安装Python的Pysam和Numpy,Samtools(0.1.18+),SAMBLASTER(0.1.19+), sambamba。安装完成之后可以用测试数据进行测试, 数据下载地址为http://layerlab.org/lumpy/data.tar.gz, 要存放在/lumpy-sv/data

lumpy基于paired-end reads比对后得到的三类信息推断SV,局部异常的测序深度,不一致(discordant)的联配和断裂的联配(split-read alignment)。局部异常的测序深度比较容易理解,平均30X测序的地方,如果深度大于100X,意味着存在着拷贝数变异,如果深度程度非常低,可能意味着这里存在 大片段缺失。不一致的联配和断裂的联配能够提供的信息更多,如果基因组一个区域齐刷刷的截断(如下图),就意味着这个区域可能存在插入/缺失。当然也有其他可能,当两个read在不同链或者不同染色体时,可能是易位或倒置。

img_33c2dd603235cf965dc44d9f060957ff.jpe
read截断

因此,运行lumpy需要预先整理出不一致的短读以及断裂的联配, 如下是lumpy提供的数据预处理方式

# Align the data
bwa mem -R "@RG\tID:id\tSM:sample\tLB:lib" human_g1k_v37.fasta sample.1.fq sample.2.fq \
    | samblaster --excludeDups --addMateTags --maxSplitCount 2 --minNonOverlap 20 \
    | samtools view -S -b - \
    > sample.bam

# Extract the discordant paired-end alignments.
samtools view -b -F 1294 sample.bam > sample.discordants.unsorted.bam

# Extract the split-read alignments
samtools view -h sample.bam \
    | scripts/extractSplitReads_BwaMem -i stdin \
    | samtools view -Sb - \
    > sample.splitters.unsorted.bam

# Sort both alignments
samtools sort sample.discordants.unsorted.bam sample.discordants
samtools sort sample.splitters.unsorted.bam sample.splitters

让人感兴趣的是-F 1294用来提取不一致的联配,用samtools flags 1294可以发现1294表示"PROPER_PAIR,UNMAP,MUNMAP,SECONDARY,DUP",带上-F意味着以上这些标记在我们筛选的联配记录中都不会出现,也就意味着筛选的记录要符合下面要求

  • 不能是PROPER_PAIR: 就是比对工具认为都正确比对到基因组上,在同一条染色体,在同一条链的情况,常见的就是83,147和99,163
  • 不能是UNMAP和MUNMAP,也就是配对的短读至少有一个能够比对到参考基因组上
  • 也不能是SECONDARY, 也就是他必须是主要联配
  • 光学重复,DUP, 就更加不能要了

于是,经过上一步,那就得到了包含所有数据的sample.bam,不一致的联配sample.discordants.bam 和断裂联配sample.splitters.bam, 使用作者封装好的调用函数进行结构变异检测。

lumpyexpress \
    -B sample.bam \
    -S sample.splitters.bam \
    -D sample.discordants.bam \
    -o sample.vcf

在得到的结构变异基础上,作者推荐是用SVTyper进行基因型确定。

提高准确度的方法:根据先验剔除已知低复杂区域和高覆盖的区域,见参考资料的lumpy-sv教程。

参考资料

目录
相关文章
|
机器学习/深度学习 人工智能 数据库
【表面缺陷检测】表面缺陷检测数据集汇总
本文收集整理了16个表面缺陷检测相关的数据集,并对每个数据集的特点进行了简单的介绍。
【表面缺陷检测】表面缺陷检测数据集汇总
|
3月前
|
机器学习/深度学习 数据采集 算法
时间序列结构变化分析:Python实现时间序列变化点检测
在时间序列分析和预测中,准确检测结构变化至关重要。新出现的分布模式往往会导致历史数据失去代表性,进而影响基于这些数据训练的模型的有效性。
233 1
|
13天前
|
机器学习/深度学习 运维 监控
基于特征子空间的高维异常检测:一种高效且可解释的方法
本文探讨了一种替代传统单一检测器的方法,通过构建多个专注于特征子集(子空间)的检测器系统,来提高异常检测的准确性和效率。文章详细介绍了子空间方法在处理高维数据时的优势,包括缓解维度灾难、提高异常检测的可解释性和计算效率。同时,文中还讨论了子空间的选择策略,如基于领域知识、相关性、随机选择等,并介绍了PyOD工具包中实现子空间异常检测的具体方法。通过这些技术,异常检测系统能够更有效地识别数据中的异常记录,尤其是在特征数量众多的情况下。
39 9
基于特征子空间的高维异常检测:一种高效且可解释的方法
|
7月前
|
机器学习/深度学习 文字识别 算法
[Halcon&图像] 缺陷检测的一些思路、常规检测算法
[Halcon&图像] 缺陷检测的一些思路、常规检测算法
2166 1
|
5月前
|
传感器 数据采集 算法
LabVIEW材料样本结构缺陷检测
LabVIEW材料样本结构缺陷检测
24 0
|
7月前
|
机器学习/深度学习 运维 算法
【视频】检测异常值的4种方法和R语言时间序列分解异常检测
【视频】检测异常值的4种方法和R语言时间序列分解异常检测
|
编解码 算法 数据可视化
【多重信号分类】超分辨率测向方法——依赖于将观测空间分解为噪声子空间和源/信号子空间的方法具有高分辨率(HR)并产生准确的估计(Matlab代码实现)
【多重信号分类】超分辨率测向方法——依赖于将观测空间分解为噪声子空间和源/信号子空间的方法具有高分辨率(HR)并产生准确的估计(Matlab代码实现)
113 0
|
算法 Go
差异分析|DESeq2完成配对样本的差异分析
差异分析|DESeq2完成配对样本的差异分析
427 0
差异分析|DESeq2完成配对样本的差异分析
|
JSON 算法 数据格式
优化cv2.findContours()函数提取的目标边界点,使语义分割进行远监督辅助标注
可以看到cv2.findContours()函数可以将目标的所有边界点都进行导出来,但是他的点存在一个问题,太过密集,如果我们想将语义分割的结果重新导出成labelme格式的json文件进行修正时,这就会存在点太密集没有办法进行修改,这里展示一个示例:没有对导出的结果进行修正,在labelme中的效果图。
235 0
|
机器学习/深度学习 算法 数据挖掘
Sentieon | 应用教程: 使用DNAscope对HiFi长读长数据进行胚系变异检测分析
Sentieon | 应用教程: 使用DNAscope对HiFi长读长数据进行胚系变异检测分析
116 0