在转录组数据分析中,假设我们已经使用fastqc进行了QC,使用了trimmomatic对序列进行清洗,现在得到了一组高质量的双端测序的reads文件。
但是当你打开这个文件时,发现这里面只有一堆ATGC组成的序列,这和网上说的差异基因分析似乎还有一点距离。而且现在我们有两个双端测序的文件,对于大脑来说有点难以理解。
所以就要使用mapping和alignment来把这些reads比对到参考基因组(reference)上,这次的内容会主要关注RNA-seq的一些分析,下一篇文章会关注DNA的比对,大家可以点个关注不迷路。
序列映射(mapping)
映射是将测序得到的短序列(reads)与参考基因组或转录组中的已知序列进行匹配的过程。这个过程的目的是确定每个read在参考序列中的位置。映射可以是精确的,也可以允许一定程度的差异,如单核苷酸差异或小的插入/缺失。
对齐(Alignment)
对齐是指将两个或多个序列进行比较,以识别它们之间的相似性或差异。这通常涉及到确定序列中相对应的核苷酸或氨基酸位置,并标记匹配、错配和空位。对齐可以是全局的,也可以是局部的,并且可以用于比较相同或不同物种的序列。
值得一提的是,虽然mapping和Alignment在概念上有些许不同,但是在实际应用中可以互换使用,不用过于纠结他们的定义。
应用:
-
转录组分析: 映射和对齐是RNA-seq分析的核心步骤,用于研究基因表达模式和识别转录本变异。
-
基因组组装: 在基因组测序中,映射read到参考基因组帮助组装新序列,并识别基因组变异。
-
变异检测: 在癌症研究、种群遗传学等领域,通过映射和对齐来识别和分析体细胞突变或种群水平的遗传变异。
-
蛋白质功能研究: 通过将蛋白质序列与已知功能的蛋白质序列对齐,可以预测新蛋白质的功能。
-
系统发育分析: 对齐不同物种的基因或蛋白质序列,构建系统发育树,研究物种间的进化关系。
在生物信息学中,映射和对齐是基础且广泛应用的步骤,它们为多种生物学问题的研究提供了重要的数据支持。常用的映射工具包括STAR、HISAT2、Bowtie2等,而对齐工具则包括BLAST、Clustal Omega、MAFFT等。转录组分析时,我使用的流程是用STAR(spliced transcripts alignment to reference)来进行mapping,以后有机会给大家分享。
相关算法
Seed
Seed算法是基于k-mer的。在序列比对中,k-mer指的是序列中长度为k的连续子序列。使用哈希表来储存存储参考序列中所有可能的种子位置。这样,当查询序列中的一个种子与参考序列中的种子匹配时,可以快速找到潜在的匹配区域。
在NCBI的blast中,就使用了类似seed的算法(seed-and-extend paradigm)来快速查找相关序列。
seed算法的应用主要集中在一代测序时期,我拿到一个序列,我去看一下和database中的哪些序列是类似的。但是对于二代高通量测序,进行RNA-seq分析时,运算速度显然不太足够。
Suffix Array(后缀数组)
suffix array(后缀数组)是一种数据结构,它包含了一个字符串所有后缀的起始位置的有序列表。这个列表是按照后缀字符串的字典序进行排序的,使得后缀数组可以用于快速地进行字符串匹配、序列比对和其他相关操作。简单来说,后缀数组是一个高效索引,用于快速查找和比较生物序列中的子字符串。
原理看上去有点像本科在电子信息的时候学的二分算法。已经有一些软件使用suffix array 进行mapping,在RNAseq中有非常广泛的利用,比如前面说的STAR。
STAR --runThreadN 6 \
--runMode genomeGenerate \
--genomeDir ./genome_index/ \
--genomeFastaFiles Danio_rerio.GRCz11.dna.primary_assembly.fa \
--sjdbGTFfile Danio_rerio.GRCz11.112.gtf --sjdbOverhang 149
使用这些比对软件还是非常神奇的,上一秒还是一堆看上去毫无意义的字符串。运行完程序后,就比对到基因组上了。比如RNA测序中,大多会比对到一些表达基因上,可以进行后续使用featurecount进行计数,转化成表达矩阵,然后就可以用R进行后续的处理啦。