热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

全基因组数据CNV分析简介

欢迎关注”生信修炼手册”!除了利用aCGH和snp芯片来检测CNV之外,也可以通过NGS数据来分析CNV,比如全基因组和全外显子测序。针对全基因组CNV的检测

欢迎关注”生信修炼手册”!

除了利用aCGH和snp芯片来检测CNV之外,也可以通过NGS数据来分析CNV, 比如全基因组和全外显子测序。针对全基因组CNV的检测,还针对开发了一种称之为CNV_seq的测序策略,指的是低深度全基因组测序,只需要5X的测序深度,就可以有效的检测CNV。

本文根据一篇2015年的综述来简单介绍下全基因组CNV分析的策略,文章标题如下

Whole-genome CNV analysis: advances in computational approaches

链接如下

https://www.frontiersin.org/articles/10.3389/fgene.2015.00138/full

根据软件的基本原理,可以分为以下4大类别,图示如下

1. Read-Pair(RP)

RP是最早出现的算法,利用双端测序插入片段长度分布来检测CNV, 也称之为PEM,pair end mapping方法。双端测序插入片段长度分布如下图所示

当插入片段长度过长或者过短时,都代表着基因组发生了结构变异,如上图中的两个阈值,图示如下

以上两幅图来自文献Jan O. Korbel et al.Science 318, 420 (2007)

当计算出来的插入片段长度小于cutoff I时,说明相比reference, 实际检测样本中对应区域插入了部分碱基,相反地,如果计算出来的插入片段长度大于cutoff D时,说明相比reference, 实际检测样本对应区域插入了部分碱基。

受到测序读长的影响,该方法适用于检测中等长度的insertion和deletion, 对过小的插入不敏感,而且比较依赖比对的准确性,无法分析低复杂度的segmental duplication区域。

采用该策略的部分软件列表如下

  1. BreakDancer

  2. PEMer

  3. Ulysses

2. Split-read(SR)

SR方法利用一端能够比对,另外一端比对不上的reads来识别CNV。另外一端比对不上,可能是存在CNV, 通过将单独的reads进行拆分,使其能够正确比对到参考基因组上,拆分的点就是CNV的断裂点。

只利用了单端reasd, 读长进一步受到限制,所以该方法只适用于检测小规模的插入和缺失,采用该策略的部分软件列表如下

  1. Pindel

  2. PRISM

  3. SVseq2

  4. Gustaf

3. Read-Depth(RD)

RD方法利用拷贝数和对应区域测序深度的相关性来进行分析,基本模型是缺失区域的测序深度相对低,而插入区域的测序深度相对高。该算法采用滑动窗口的方式,统计每个窗口内的测序深度分布,然后根据不同窗口测序深度的分布来预测CNV区域,图示如下

上图来自文献Genome Res. 2011. 21: 974-984

类似芯片中的log ratio值,在RD方法中,会根据区域对应的测序深度来判断对应的CNV数目。在该类方法中,滑动窗口的大小对结果影响较大,当窗口很大时,一些长度很短的small  cnv信号就会被掩盖。

相比RP和SR两种方法,RD可以进行CNV分型,明确CNV的数目,RP和SR只能检测断点的位置, 而且RD可以检测大规模的CNV, 是目前较为主流的算法。采用该策略的部分软件列表如下

  1. CNVnator

  2. ERDS

  3. ReadDepth

  4. CNVrd2

4. Assembly(AS)

AS方法利用测序得到的短序列进行组装,将组装的contig与参考基因组进行比较,从而确定发生了结构变异的区域。组装的精确依赖测序读长和算法的准确度,而且组装对硬件资源的消耗特别大,并不是一个理想的CNV检测的算法,这里就不做过多的介绍了。

以上4种是最基本的算法理念,还有很多软件会综合其中的某几种算法来检测CNV, 比如speedseq中集成的lumpy软件,综合利用RP,SR, RD三种方式来检测CNV。

比对准确性是基于NGS的策略检测结果准确的前提,mapping的准确率和二代测序对基因组的覆盖度都会影响到CNV的检测结果,同时在计算测序深度时GC含量差异带来的PCR扩增偏移,也需要进行校正,通过设置对照样本,能够有效的减少系统误差的干扰,更好的进行CNV的检测。

综上所述,每种算法各有其优缺点,综合使用多种策略有助于提高检测结果的准确性和敏感性,同时设置对照样本,可以更加有效的分析拷贝数的变化。

·end·

—如果喜欢,快分享给你的朋友们吧—

扫描关注微信号,更多精彩内容等着你!


推荐阅读
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • 本文介绍如何使用 Python 将一个字符串按照指定的行和元素分隔符进行两次拆分,最终将字符串转换为矩阵形式。通过两种不同的方法实现这一功能:一种是使用循环与 split() 方法,另一种是利用列表推导式。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 堆是一种常见的数据结构,广泛应用于计算机科学领域。它通常表示为一棵完全二叉树,并可通过数组实现。堆的主要特性是每个节点的值与其父节点的值之间存在特定的关系,这使得堆在优先队列和排序算法中非常有用。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
author-avatar
真实的阿凯123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有