svtools具有不同的子命令以实现不同的功能,其中一个就是lmerge。根据其help信息(cluster and prune a BEDPE file by position based on allele frequency)可以看出,它是对BEDPE文件内的变异进行聚类和修剪的。

  zcat ${input_vcf_gz} | svtools afreq | svtools vcftobedpe | svtools bedpesort | svtools prune -s -d 100 -e 'AF' | svtools bedpetovcf

  这里是svt-pipeline所用的命令,一共分为afreq、vcftobedpe、bedpesort、prune、bedpetovcf几个步骤。这对这几个步骤分别进行解释。

  (1)    afreq

  这一步主要是对vcf文件添加一个等位频率的信息,即AF。我们这里所输入vcf文件是没有等位频率信息的,prune的修剪又是基于等位频率的,所以这里首先加上等位频率的信息。

图1.afreq执行之后的vcf INFO信息

  上图所示,是afreq执行之后的vcf文件INFO信息,其中标红的位置是新加信息。添加了AF、NSAMP和MSQ信息。它们的含义可以在vcf文件的header部分找到,它们所代表的含义为:

  AF, Description="Allele Frequency, for each ALT allele, in the same order as listed“

  NSAMP, Description="Number of samples with non-reference genotypes"

  MSQ, Description="Mean sample quality of positively genotyped samples"

  这就是afreq所要做的。

  (2)    vcftobedpe

  vcftobedpe即把vcf文件转换为bedpe文件,这两个文件在变异描述的格式上有所不同,而prune是针对bedpe文件进行变异聚类和修剪的,所以要把文件格式进行转换。

图2. 输入vcf文件

图3. 转换后的BEDPE文件

从图中可以看出,这里输入的vcf文件使用两行表示了同一个变异,使用1_1和1_2进行区分,但是在BEDPE文件中把这两行合并到了一行。

  (3)    bedpesort

  bedpesort是对bedpe文件的排序。下图是对bedpe文件进行排序的方法,可以看出是按前6列逐次进行的排序,即左侧染色体、左侧起始位置、左侧终止位置、右侧染色体、右侧起始位置、右侧终止位置。

图4. Bedpe排序方法

  (4)    prune

  接下来就是对已排序的bedpe文件进行聚类和修剪。在prune命令中会有三个常用的参数:-s,指定输入文件是经过排序的;-d指定一个碱基长度范围,用于后续聚类;-e指定一个指标,用于评估一个聚类内最优变异记录。

  在把vcf文件转换为bedpe文件后,每个变异记录会有左侧起始位置、左侧终止位置和右侧起始位置、右侧终止位置,所有就构成了两个区间。Prune命令会按照-d参数指定的长度对这两个区间左右进行扩展,然后把这两个区间同时有重叠的变异记录放在一起成为一个聚类。然后遍历每个聚类内的记录,选择AF最大的那个记录作为最优记录,然后把其他记录里的SNAME信息添加到最优记录里,再把其他记录删除掉,作为修剪。

  (5)    bedpetovcf

  最后就是把bedpe文件重新转换为vcf文件。

svtools prune具体算法的更多相关文章

  1. 关联规则算法Apriori的学习与实现

    转自关联规则算法Apriori的学习与实现 首先我们来看,什么是规则?规则形如"如果-那么-(If-Then-)",前者为条件,后者为结果.关联规则挖掘用于寻找给定数据集中项之间的 ...

  2. Frequent Pattern 挖掘之一(Aprior算法)(转)

    数据挖掘中有一个很重要的应用,就是Frequent Pattern挖掘,翻译成中文就是频繁模式挖掘.这篇博客就想谈谈频繁模式挖掘相关的一些算法. 定义 何谓频繁模式挖掘呢?所谓频繁模式指的是在样本数据 ...

  3. 【机器学习实战 第九章】树回归 CART算法的原理与实现 - python3

    本文来自<机器学习实战>(Peter Harrington)第九章"树回归"部分,代码使用python3.5,并在jupyter notebook环境中测试通过,推荐c ...

  4. Mahout推荐算法之SlopOne

    Mahout推荐算法之SlopOne 一.       算法原理 有别于基于用户的协同过滤和基于item的协同过滤,SlopeOne采用简单的线性模型估计用户对item的评分.如下图,估计UserB对 ...

  5. Aprior算法

    在关联规则挖掘领域最经典的算法法是Apriori,其致命的缺点是需要多次扫描事务数据库.于是人们提出了各种裁剪(prune)数据集的方法以减少I/O开支,韩嘉炜老师的FP-Tree算法就是其中非常高效 ...

  6. 关联分析Apriori算法和FP-growth算法初探

    1. 关联分析是什么? Apriori和FP-growth算法是一种关联算法,属于无监督算法的一种,它们可以自动从数据中挖掘出潜在的关联关系.例如经典的啤酒与尿布的故事.下面我们用一个例子来切入本文对 ...

  7. python数据分析算法(决策树2)CART算法

    CART(Classification And Regression Tree),分类回归树,,决策树可以分为ID3算法,C4.5算法,和CART算法.ID3算法,C4.5算法可以生成二叉树或者多叉树 ...

  8. 03机器学习实战之决策树CART算法

    CART生成 CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支.这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有 ...

  9. 机器学习(Machine Learning)算法总结-决策树

    一.机器学习基本概念总结 分类(classification):目标标记为类别型的数据(离散型数据)回归(regression):目标标记为连续型数据 有监督学习(supervised learnin ...

  10. 机器学习算法 --- Pruning (decision trees) & Random Forest Algorithm

    一.Table for Content 在之前的文章中我们介绍了Decision Trees Agorithms,然而这个学习算法有一个很大的弊端,就是很容易出现Overfitting,为了解决此问题 ...

随机推荐

  1. NDT算法详解与C++实现

    点云匹配在感知环节是一个很重要的信息获取手段,而其中的算法也有几个比较经典了,例如ICP(Iterative Closest Point,迭代最近点)算法,而本文决定记录学习的是NDT算法,也就是No ...

  2. 人口分析实战(利用jupyter)

    目录 1.项目需求 2.开始操作 2.1导入我们所需要的包 2.2导入数据.查看原始数据 2.3对数据进行清洗 2.4对数据进行处理 1.项目需求 需求: 导入文件,查看原始数据 将人口数据和各州简称 ...

  3. OAS常见错误

    body { font-family: Arial, sans-serif; line-height: 1.6; margin: 20px } h1, h2 { color: rgba(51, 51, ...

  4. 最逼真的AI换脸软件,Pluse下载介绍(可直播)

    Pluse是基于人工智能的实时AI换脸工具,可以在无需任何前期数据训练的情况下,通过一张照片快速替换视频中的人脸,它支持高分辨率细节重建.色彩矫正,并能实时替换多目标人脸,非常适合娱乐社交.影视制作和 ...

  5. Nuxt.js 应用中的 listen 事件钩子详解

    title: Nuxt.js 应用中的 listen 事件钩子详解 date: 2024/11/9 updated: 2024/11/9 author: cmdragon excerpt: 它为开发者 ...

  6. 一文带你搞懂GaussDB数据库性能调优

    本文分享自华为云社区<[GaussTech技术专栏]GaussDB性能调优>,作者:GaussDB 数据库. 数据库性能调优是一项复杂且系统性的工作,需要综合考虑多方面的因素.因此,调优人 ...

  7. 107. 二叉树的层序遍历 II Golang实现

    题目描述: 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 . (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 输入:root = [3,9,20,null,null,1 ...

  8. 项目监控之sentry

    github: https://github.com/getsentry/sentry 1.什么是sentry? 当我们完成一个业务系统的上线时,总是要观察线上的运行情况,对于每一个项目,我们都没办法 ...

  9. 销讯通CRM系统如何管理医药代表的销售过程

    医药行业的销售代表与其他行业的销售代表在专业知识要求.客户群体.销售流程.以及行业特性等方面都存在明显的区别,他们必须具备更高的专业素养和综合能力. CRM(客户关系管理系统)在医药行业中对于管理医药 ...

  10. JAVA8的computeIfAbsent使用方法

    基础说明 computeIfAbsent 是 Java 8 引入的 Map 接口中的一个默认方法.它允许你以原子操作的方式在给定键不存在时计算其值,并将其添加到映射中.如果该键已经存在,则返回已存在的 ...