`
bluky999
  • 浏览: 720369 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

计算两组或者N组特征数据的overlap以及覆盖度

阅读更多

这是生物信息学中诸多基本问题之一!

 

1 问题描述

 

(1 有一个序列,称为目标序列( 类似一个很长的字符串,比如200M长),我们不关心它的字符集(指组成序列的所有字符的集合),只关心它的长度,以及下文提到的特征数据。

(2 特征数据:指序列上描述某种业务相关特征的一组区间。比如一个很小的例子,序列长为1000,有一组特征数据可能如下:[50,130],[200,300],[550,899]  ;其中每一个区间[start,end]表示序列上一个从start到end的片段。

(3 特征数据的特点: 一般情况下,要求特征数据的N个之间相互没有交叉或者重叠(self-overlap,inter-self);一组特征数据一般覆盖整个序列的一部分,而不是全部。

(4 两组特征数据:指有两组 (2 中所描述的特征数据, 它们之间没有任何直接的关系

(5 多组特征数据:类似于(4 。

(6 覆盖度:一组特征数据的覆盖度是指:该组特征数据的所有区间对整个序列的覆盖程度,即区间的总长占序列总长的百分比;

(7 overlap :指两组或多组特征数据,同时覆盖到的序列长度!

 

2 求解目标

 

(1 求一组特征数据的覆盖度:其实这个小学生都会, ,只是需要累加一下所有区间的长度而已;

(2 求两组特征数据的overlap : 这个目标有两个子目标,一是要精确求出两组特征数据的overlap的大小,也就是这两组特征数据同时覆盖到的序列的长度,二是要精确给出overlap到底是哪些部分,即同时被两组特征数据覆盖到的序列上的片段(给出它们的起始和终止坐标,相当于得到第三组特征数据);

(3 目标(2 的推广,要求多组特征数据的overlap !!!

 

3 算法概述

 

(1 最小学生,也是最奢侈的算法就是:两重或者多重循环,逐对地去做区间比较,然后统计给出结果。这种方式首先浪费内存,从而空间效率低下;时间:O(n1 x n2 x n3 x ......) ; 但是,它有一个优点,那就是可以用来验证精确性;

 

(2 对于两组的特征数据,可以采用同时遍历两个数组的方式:先对两个组数据排序,然后设两个索引i,j,分别比较d[i] d[j]区间的起始,这种算法的时间:O(n1+n2) ,缺点是对于多组特征数据,处理起来很复杂,几乎不可实施;

 

(3 把两组数据标记起始和终止后,合并,排序;然后用一个缓冲的数组或者hash,在扫描排序后的数据时,逐个检查标志位,起始则放入hash,终止则以此和hash中的起始坐标相比,根据需求记录overlap信息。

 

(4 其他,比如内存映射法等。。。

 

 

4 附言:

 

这是我在工作中遇到的一个问题,曾经像网友悬赏求助,但并没有非常理想的结果。上述算法3是做组装的同事最常用的,因为他们经常要面对一个序列的多组特征数据,而且那些数据一般都是全覆盖目标序列。

 

之所以提出这个问题,是因为我们的目标序列一般都很长,不是100,1000,一般在1M以上;如果处理得是人类的基因组数据,那么这个目标序列一般是人的染色体,长度从250M到50M不等。 如果处理的是全基因组序列,那么一般为500M到3G甚至5G !!!

 

所以,关键的问题是:

(1 算法要节省使用内存;

(2 算法要省时;没人愿意为了得到一个overlap而等一整天;

(3 算法封装要灵活,可以处理两组特征数据,也可以处理多组;

(4 算法要绝对精确,且附有准确性检验程序;

(5 如果您打算包装成一个优秀的程序,那么要规范,从测试数据到测试报告,从功能测试到性能测试。。。不管是文档还是用户指南。。。

 

如果您可以把此问题进一步抽象到更高层次,欢迎与我交流:nodexy AT gmai . com

 

实现方式:

(1 标准C

(2 主流脚本语言:SHELL相关,awk...;perl ;python;ruby ...;

(3 函数式语言:仍选

(4 Java

(5 其他

 

 

欢迎有兴趣者一同交流!!!

分享到:
评论

相关推荐

    用于图像处理的特征点数据集

    数据集的结构通常包含原始图像、特征点的坐标、对应的描述符以及可能的 ground truth 信息。在"bark"、"bikes"和"boat"等类别中,每个类别可能包含了多种环境、角度和光照条件下的图像,以增加数据的多样性并提高...

    Overlap_matlab_

    MATLAB是一种强大的编程环境,尤其适用于数值计算和数据可视化,它提供了丰富的图像处理工具箱,使得这类任务变得简单易行。 首先,我们来看"Overlap.m"这个MATLAB脚本文件,它很可能是实现图像重叠功能的核心代码...

    高通量测序数据的组装及后续生物信息学分析

    - **基因组覆盖率**:表示通过测序获得的序列占整个基因组的比例。通常情况下,由于基因组中的复杂结构(如高GC含量、重复序列),测序结果难以覆盖所有区域,未覆盖的区域称为Gap。 #### 文库构建及测序 - **小...

    overlap-segmentation.zip

    通过阅读和理解这些代码,我们可以学习到如何运用特定的数据结构和算法来处理上述问题,例如使用图割(Graph Cut)或变分方法来优化分割结果,或者应用聚类算法来区分粘连的目标。 此外,作者提供的结果图直观展示...

    Python库 | overlap-0.1.0-cp37-cp37m-macosx_10_9_x86_64.whl

    例如,可能有用于分割数据序列、计算重叠区域、以及合并重叠结果的方法。此外,如果这个库涉及到信号处理,那么可能还包含了傅立叶变换相关的功能。 在实际应用中,overlap库可能被用于音频分析、图像处理、时间...

    前端开源库-file-overlap

    在前端开发中,数据处理和文件操作是必不可少的一部分。开源库`file-overlap`就是针对这类需求而设计的,主要用于检测和分析两个文件路径之间的重叠部分。这个库对于那些需要处理大量文件路径,比如在文件系统交互、...

    libgdx UI编辑器 overlap2d

    7. **导出与集成**:Overlap2D可以导出JSON格式的数据,这些数据可以直接被Libgdx项目读取,无需手动转换或解析。 在使用Overlap2D时,开发者首先需要安装并运行overlap2D-0.1.3.jar文件,这是一个Java应用程序。...

    计算两个矩形之间的IOU面积和重叠率

    在实际应用中,IOU不仅用于评估检测算法的性能,如在PASCAL VOC或COCO等数据集上的评价,还广泛应用于NMS(非极大值抑制)过程中,以去除重复的检测框,提高检测的准确性。 总结来说,理解和计算IOU是深入学习和...

    Overlap2d教程(一)

    在本教程中,我们将探索如何使用Overlap2D编辑器与libGDX库来创建和管理游戏用户界面(UI),特别是关注按钮(Button)的编辑和交互。Overlap2D是一款强大的2D游戏UI编辑器,而libGDX是Java的游戏开发框架,两者结合...

    计算机软件-商业源码-串口通讯类,支持异常处理,Overlap.zip

    在IT行业中,串口通信是一种常见且重要的通信方式,尤其在嵌入式系统、工业控制以及设备间的短距离数据交换中。"计算机软件-商业源码-串口通讯类,支持异常处理,Overlap.zip" 提供的是一份专门用于串行通信的软件...

    fine.zip_FFT计算序列_hilbert变换_overlap-save

    "fine.zip"压缩包中的内容似乎详细介绍了如何运用重叠保存(Overlap-Save)方法来计算序列的希尔伯特变换,并利用FFT提升效率。以下是对这些概念的详细解释: 1. 傅里叶变换(FFT): 傅里叶变换是一种将信号从时域...

    conv using overlap add methode.rar_matlab code_overlap-add metho

    本篇文章将详细介绍“Overlap-Add”方法以及如何在MATLAB中实现这一方法。 “Overlap-Add”方法的核心思想是将长输入序列分成若干个较短的重叠子序列,对每个子序列分别进行卷积,然后将这些卷积结果适当重叠并相加...

    XML数据相似度-计算机论文

    #### 二、XML数据特征分析 XML数据具有独特的结构特性,包括但不限于自描述性、树状结构以及结构嵌套等。这些特性使得传统的相似度计算方法难以直接应用于XML文档的比较。例如,在上面给出的XML文档示例中,可以...

    秩偏重叠列表相似性度量 的 Python 实现_python_代码_下载

    一个小的 Python 模块,用于计算rank-biased overlay,衡量参差不齐的、可能无限的排名列表之间的相似性,这些列表可能包含也可能不包含相同的项目(直到实际评估的深度或根本不包含)。参见 W. Webber、A. Moffat ...

    基于Bert+overlap_split分段+门控卷积网络的长文本分类源码(解决长距离依赖问题).zip

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    用DFT计算线性卷积

    通过将输入信号分段,并适当处理每段数据,可以在避免混叠的同时有效地计算出线性卷积结果。这种方法特别适用于处理长时间序列,尤其是在实时处理系统中。通过提供的MATLAB函数示例,读者可以更好地理解整个计算过程...

    overlap2d-runtime-libgdx, Overlap2D用户界面和级别编辑器libgdx运行时.zip

    overlap2d-runtime-libgdx, Overlap2D用户界面和级别编辑器libgdx运行时 ## overlap2d-runtime-libgdx使用overlap2d-runtime-libgdx提供加载,操作和渲染场景的功能由 Overlap2D编辑器生成。 libGDX项目一起使用。 ...

    Learning the quantum algorithm for state overlap.pdf

    随着量子霸权的逐步实现,我们需要在现有技术条件下,尤其是对于即将进入市场的近似量子计算机(NTQCs)而言,能够运行的算法深度将受到去相干和门保真度问题的限制,这些问题将增加计算误差。本文件《Learning the ...

    overlap-interval-.zip_interval overlap_区间树

    区间树通常用于解决如下类型的问题:给定一组区间,查询是否存在某个特定区间与之重叠,或者找出所有与查询区间重叠的区间。 区间树的基本结构是由二叉搜索树演变而来,每个节点代表一个区间,并存储该区间的起始和...

Global site tag (gtag.js) - Google Analytics