生信课程笔记4-序列算法补充

早期动态规划算法

比较两个序列的相似性(similarities)。

编辑距离(edit distance)

加权编辑距离(weighted edit distance)和相似性评分(similarity score)

最优全局比对(optimal global alignment):Needleman-Wunsch算法

最优局部比对(optimal local alignment):Smith-Waterman算法

Gotoh’s算法:仿射空位罚分(affine gap penalties)

基本局部比对搜索工具BLAST(Basic Local Alignment Search Tool)

启发式的(heuristic)序列比对方法,遵循两种思想:过滤和索引(filtration and indexing)。

搜索和过滤,种子和扩展。

过滤(filtration):识别数据库中与查询片段(query)共享的小匹配模式(small matching patterns)的序列片段,称为种子(seeds)。数据库的其余部分从考虑中丢弃。

扩展:使用成本更高的算法(如动态规划)将种子扩展为有意义的比对。

搜索:使用数据库的预构建索引(pre-built index),通常是哈希表(hash table)。

间隔种子(spaced seed),可以改善敏感性-特异性权衡(the sensitivity–specificity trade-off)。

下一代测序和read mapping

读段映射(read mapping):在参考基因组序列(reference genomic sequence)中定位读段(locating reads)并计算相应的比对(alignments)。

比对软件的效率来源:BWT-或FM-index索引结构(indexing structure)。BWT-index可以被认为是响应二代测序数据量增加这一转变的主要新的算法工具。通用的(generic)类似BLAST的工具让位给了专用的(dedicated)NGS读段比对软件。

与以BLAST为代表的基于哈希的索引基础(hash-based indexes underpinning)支持种子和扩展策略(seed-and-extend strategies)不同,BWT索引是一个全文索引(full-text index)。

宏基因组学(metagenomics)的无比对方法

宏基因组学将数百万reads比对到数千计的微生物基因组(microbial genomes)。即使是专门的比对软件也可能不满足这项任务的实际时间要求。而且计算比对可能并不是必要的,因为我们通常只寻求识别给定read可能起源于的基因组。

放弃计算比对的想法,以较低的精度(lower accuracy)为代价,允许加速和内存增益。

无比对(alignment-free)或基于组合的比较(composition-based comparison),将序列看作是出现在其中的一(多)组模式,例如固定长度k的子字符串(substrings)(k-mers)。大多数用于全基因组测序数据的现代宏基因组分类器(classifiers)都是基于k-mer分析的。

Bloom filters数据结构。

Bloom filters已经被应用于表示de Bruijn graphs——一种广泛用于基因组组装的模型。

spaced k-mers

Sketch-based methods 基于素描/草图的方法

tera-base规模的数据分析方法:局部敏感散列(locality-sensitive hashing,LSH),思想是将复杂的对象(例如长序列)映射(map)到较小的对象,称为草图或指纹(sketches or fingerprints),这样相似的对象很可能被映射到相似或相同的草图。这允许使用草图上的相应操作代替对输入对象的操作(搜索、比较、序列重叠等)。

LSH的一个具体实例,称为MinHash,早些时候被应用于寻找类似的网络文档。MinHash可以看作是遵循无比对模式,认为序列是它们的k-mers的集合,通过比较在一个或几个散列函数(hash functions)下使用相应的k-mers的最小哈希值(minimum hash values)定义的集合的草图来估计Jaccard index。

通过使用minimizers作为种子来改进基于种子的序列搜索(seed-based sequence search (cf above))的方法。对于map由“第三代测序技术”(third-generation sequencing technologies)产生的长reads特别有用。

From genomics to population genomics从基因组学到群体基因组学

    多基因组基因分型(genotyping multiple genomes)并不局限于个体间(inter-individual)遗传变异的研究,而是包括一个细胞群体中的个体内部异质性(intra-individual heterogeneity)。

在大规模测序的支持下,基因组学现在进入了一个新的阶段,其特征是潜在的方法范例(methodological paradigm)的另一次转变:现在基因组学的基本对象从一个物种的“参考基因组”(reference genome)转变为一个个体或细胞群体的集体基因组(collective genome),有时被称为泛基因组(pan-genome)。

从计算的角度来看,群体基因组学(population genomics)的主要问题是如何代表(how to represent)群体的集体基因组(a collective genome of a population),以允许更有效的算法处理,另一方面,捕捉单个基因组的变化。一种方法,将共同的基因组片段(common genomic fragments)表示在一个副本(single copy)中,从而将一个单一的参考基因组序列替换为一个标记的图(a labeled graph),其路径(paths)代表单个基因组。

压缩基因组学(Compressive genomics)是一种试图从基因组数据的全局“拓扑”结构(global ‘topological’ structure)中获益的范例。



补充内容:

索引(index)

人类基因组单倍体有30亿碱基,二代测序目前的长度通常为150,在基因组中找到序列片段位置,类似于找到一本书在图书馆书架的位置,如果从头开始一本一本找十分耗费时间,但从图书馆的书架索引找到对应的位置就会方便很多。从索引中找的关键是,这索引要长什么样才能满足快速找到的目的。

有各种各样建立索引的途径(indexing)。如把基因组拆成无数小段建立索引(substring法)、把基因组做成树结构(suffix trie或者tree)、做成数组(suffix array)、做BWT转化(FM-index)。其实目的只有一个,能快速找到测序序列在基因组的位置。这些方法各有优缺点,需要根据情况选择最合适的方法。选择BWT并不是因为它最快,而是综合效果最好(最快的检索方法是数组法,但缺点是会制造一个巨大的基因组索引,而且速度也不是本质性的提升)。

后缀树

后缀就是包含最后一个字符的子序列。最后一个字符后面还要加上一个$,表示结尾。

后缀i = Si, Si+1, …, Sn。

功能1:查找字符串s是否在字符串S中

方法:从树根开始,与s的字符逐一比对。

功能2:查找字符串s在字符串S中的重复次数

方法:从树根开始,按照功能1的方法找到s,然后看s之后有几片树叶,则重复几次。

功能3:找字符串S中的最长重复子序列

方法:找到从树根到所有节点(非叶片)的子字符串,从中找到最长的。

$的作用:如果某一个后缀是另一个后缀的前缀,那么需要用$标识出一个独立的叶片。

Trie数据结构

Trie (the term comes from retrieval检索) is a data structure that stores all of the suffixes后缀/prefixes前缀 of a string.

Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。Trie一词来自retrieve,发音为/tri:/ “tree”,也有人读为/traɪ/ “try”。Trie树可以利用字符串的公共前缀来节约存储空间。

Trie的核心思想是空间换时间:利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。

典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。

你可能感兴趣的:(生信课程笔记4-序列算法补充)