选择参加了学院的科研提升实训项目,写写东西记录下实训的过程与心得。先从开题开始,简单的介绍下整个项目的内容,感谢老师和学长在开题的时候对我的帮助!
项目名称
多核平台下FASTQ文件预处理软件的设计与优化
项目目标
1、 设计并实现针对FASTQ类型文件保存的基因测序数据质量控制与预处理的功能。
2、 编写软件的多线程版本,加速FASTQ文件的质量控制与预处理过程。
3、 增加对第三代测序数据格式的支持。
技术要点
生物大数据 基因测序 质量评估 并行计算 多核平台优化
项目背景
随着基因测序技术的不断发展,测序技术,特别是新一代测序技术(NGS),已经被广泛地用于临床应用。然而,测序可能会因为测序接头污染、聚合酶活性下架等原因产生碱基错误或缺失的序列,出现碱基缺失、碱基含量偏倚等情况。因此,对测序数据的质量控制与预处理对于得到高质量与高可信度的基因分析结果至关重要。
FASTQ文件是目前用于存储各种NGS系统产生的测序数据的“事实”标准格式。它是一种紧凑的碱基文本格式,包括核苷酸碱基序列及其质量值。FASTQ文件中的每个读段序列包括4行信息,第一行以符号“@”开始,随后是序列ID和描述符,第2行式读段序列,第三行则以“+”与“-”分别代表了测序的方向,第四行列出了每个碱基的质量值。
工作内容
使用C/C++实现对基因测序得到的FASTQ文件的质量控制与预处理,并使用openMp等多线程编程模型,向量化指令等对计算过程进行优化,此外,要增加对第三代基因测序数据格式的支持。
1)设计并实现对基因序列的质量控制
NGS测序方法是依靠化学反应完成碱基的合成,在合成过程中,伴随着合成链的增长,DNA聚合酶的效率会不断下降,使得碱基合成的错误率升高,质量控制则可以帮助我们更好地认识测序数据,主要包括以下几个方面:
a) 读段中碱基的质量分数分布
计算一个段中碱基质量分数随着长度的变化,并以图表的形式展示。
b) 碱基的总体质量分数分布
计算测序数据总体的质量分数分布,用于判别测序结果的正确性与可信度。一般采用Q20与Q30指标(即质量分数大于20或30的碱基占总碱基数的比例)。
c) 读段中碱基分布比例(GC碱基比例)
对于大多数碱基来说,ACTG四种碱基的比例应该相当,通过观察碱基分布比例,判定测序结果的质量。
d) 读段中未检出的碱基比例
由于测序的光学信号无法被清晰分辨,因此存在部分未检出的碱基。测定未检出的比例可以得出测序的质量。
e) 读段中测序接头序列的比例
当多个样本同时测序时,测序接头可以用来区分不同样本,当测序读段的长度大于被测DNA长度时,会测到接头序列,当接头序列比例过高时,需要在预处理阶段进行剪切。
2)实现对FASTQ文件的预处理
由于FASTQ文件中可能包含测序接头序列或者未检出的碱基,因此需对其进行预处理。对于测序接头序列,可直接进行“切除”,即识别并删除测序接头,对于未检出的碱基,可以直接删除未检出碱基过多的段,或者将未检出的碱基作随机替换。
3)统计信息可视化
为了更直观的了解测序质量控制的统计信息与预处理效果,使用图表的形式将结果进行可视化,下图展示了不同碱基含量与位置的关系
4) 基于多核平台对质量控制与预处理过程进行优化
为了充分发挥多核平台的计算优势,主要从以下几个方面对质量控制与预处理过程进行优化。
a) 多线程优化
将计算任务划分,使得质量控制与预处理过程并行化,同时预处理与质量控制仅需一次扫描序列,时间复杂度为O(N),主要瓶颈在于I/O读写,需要针对I/O读写做进一步优化。
b) 单线程优化
使用AVX512指令集提供的向量化指令,优化单线程的计算过程。同时通过循环展开等方式优化指令流水,进一步从细粒度层面加速计算过程。
5) 增加对第三代测序数据格式的支持
技术创新
观察现存的质量控制与预处理软件,可以发现现有的软件存在以下两个问题。
1) 性能仍有提升的空间
FASTQC是较为流行的质量控制软件,但其采用Java编写,且对多线程支持较差,性能较差。FASTP使用C语言编写,同时进行了多线程优化,但并未对I/O热点进行优化,且未进行向量化。
2) 功能不完善
对于传统的分析流程,FASTQ文件的质量控制与预处理需要使用多个工具,一般是使用FASTQC进行质量控制,Cutadapt用于接头序列的裁剪,Trimmomatic用于读段的过滤。
针对以上两个问题,本项目将整合质量分析与预处理整套流程所需的功能,实现一个工具完成所有服务。同时,使用性能最佳的C语言编写程序,并依托多核平台多线程并行计算的优势,对软件代码进行深度优化,提供高效的服务。此外,注意到第三代测序技术的蓬勃发展,本项目加入了对第三代测序技术的支持,适应技术的发展。
四、 技术路线
本项目技术路线设计如下
实施方案
1)使用C/C++语言开发一整套完善的FASTQ文件质量控制与预处理流程。
2)针对多核平台的特点,对软件进行深度性能优化。
3)增加对第三代测序数据格式的支持,增加影响力。
参考资料
[1]https://www.bioinformatics.babraham.ac.uk/projects/fastqc/
[2]《新一代测序数据分析》 ,9787030564696,科学出版社,(美)王忻琨 著;陈浩峰 译
[3]Chen S , Zhou Y , Chen Y , et al. fastp: an ultra-fast all-in-one FASTQ preprocessor[J]. Bioinformatics, 2018, 34(17):i884-i890.