使用机器学习和Python揭开DNA测序神秘面纱(一)

简介: 使用机器学习和Python揭开DNA测序神秘面纱(一)

简介

基因组是生物体中DNA的完整集合。所有生物物种都有一个基因组,但是它们的差异很大。例如,人类基因组被排列成23条染色体,这有点像百科全书被编辑成23卷。如果算上所有字符(单个DNA“碱基对”),每个人类基因组中将有超过60亿个字符。所以这是一个巨大的工程。

人类基因组大约有60亿个字符。如果您认为基因组(完整的DNA序列)就像一本书,那就是一本由大约60亿个“ A”,“ C”,“ G”和“ T”字母组成的书。每个人都有独特的基因组。尽管如此,科学家发现人类基因组的大部分彼此相似。

作为数据驱动的科学,基因组学广泛地利用机器学习来捕获数据中的关系并推断出新的生物学假设。但是,要想拥有从不断增长的基因组学数据中提取新发现的能力,就需要更强大的机器学习模型。通过有效利用大型数据集,深度学习已给了计算机视觉和自然语言处理等领域带来了很大进步。它已成为许多基因组建模任务的首选方法,包括预测遗传变异对基因调控机制(如DNA接受性和DNA剪接)的影响。

在本文中,我们将了解如何解释DNA结构以及如何使用机器学习算法来建立DNA序列数据的预测模型。

DNA序列如何表示?

该图显示了DNA双螺旋结构的一小部分。

image.png

DNA的双螺旋结构

双螺旋是DNA的化学表示。但是DNA很特别。它是由四种类型的碱基组成的核苷酸:腺嘌呤(A),胸腺嘧啶(T),鸟嘌呤(G)和胞嘧啶(C)。我们总是称它们为ACGT

这四种化学物质通过氢键以任何可能的顺序连接在一起,形成一条链,这形成了DNA双螺旋的一条线。双螺旋的第二条线平衡了第一根。因此,如果第一条线上有A,则第二条线上对应位置必须为T。此外,C和G始终保持平衡。因此,一旦您确定了螺旋的一个螺纹,就可以随时拼写另一个螺纹。

image.png


单个DNA线(螺旋)的序列

这些碱基的顺序决定了DNA链中包含哪些生物学指令。例如,序列ATCGTT可能指示蓝眼睛,而ATCGCT可能指示棕色眼睛。

使用Python处理DNA序列数据

image.png


熟悉诸如Biopythonsquiggle之类的Python包将在处理Python中的生物序列数据时为您提供帮助。

Biopython是python模块的集合,这些模块提供处理DNA,RNA和蛋白质序列操作的功能,例如DNA字符串的反向互补,寻找蛋白质序列中的基序列等。它提供了很多解析器,可以读取所有主要的遗传数据库,例如 GenBank,SwissPort,FASTA等,

image.png


安装Biopython


pip install biopython

**Squiggle:**这是一个工具,可以自动生成交互式网页下的原始DNA序列的二维图形表示。考虑到易用性,Squiggle实现了几种序列可视化算法,并引入了“为方便人类使用而做”的新颖可视化方法。

安装Squiggle


pip install Squiggle

DNA序列数据通常以“ fasta”格式的文件格式储存。Fasta格式通过包含注释的大于号和包含序列的另一行作为组成自己的单行数据:

“AAGGTGAGTGAAATCTCAACACGAGTATGGTTCTGAGAGTAGCTCTGTAACTCTGAGG”*

文件可以包含一个或多个DNA序列。还有许多其他格式,但是fasta是最常见的格式。

这是使用Biopython处理Fasta格式的DNA序列的简要示例。序列对象将包含诸如序列ID和sequence等属性以及可以直接使用的序列长度。

我们将使用Biopython的Bio.SeqIO来解析DNA序列数据(fasta)。它提供了一个简单的统一界面来输入和输出各种文件格式。


from Bio import SeqIOfor for sequence in SeqIO.parse('./drive/My Drive/example.fa', "fasta"):    print(sequence.id)    print(sequence.seq)    print(len(sequence))

这样就产生了序列ID,序列本身和序列长度。


ENST00000435737.5ATGTTTCGCATCACCAACATTGAGTTTCTTCCCGAATACCGACAAAAGGAGTCCAGGGAATTTCTTTCAGTGTCACGGACTGTGCAGCAAGTGATAAACCTGGTTTATACAACATCTGCCTTCTCCAAATTTTATGAGCAGTCTGTTGTTGCAGATGTCAGCAACAACAAAGGCGGCCTCCTTGTCCACTTTTGGATTGTTTTTGTCATGCCACGTGCCAAAGGCCACATCTTCTGTGAAGACTGTGTTGCCGCCATCTTGAAGGACTCCATCCAGACAAGCATCATAAACCGGACCTCTGTGGGGAGCTTGCAGGGACTGGCTGTGGACATGGACTCTGTGGTACTAAATGAAGTCCTGGGGCTGACTCTCATTGTCTGGATTGACTGA390

我们可以可视化这些DNA序列吗?

是的,我们可以使用Squiggle python库将这些DNA序列可视化,进行操作并运行:


Squiggle example.fa --method=gates

image.png


DNA序列被转换为2D图像,其中T,A,C和G分别在上,下,左和右方位。这给每个序列一个“形状”。

现在,我们来可视化另一个包含6个DNA序列的fasta数据。


Squiggle example.fasta

image.png

在此,首先使用2位编码方案将DNA序列转换为二进制序列,该方案将T映射为00,C映射为01,A映射为10,G映射为11。

现在我们可以轻松加载和操作生物序列数据,那么怎么将数据用于机器学习或深度学习

由于机器学习或深度学习模型要求输入必须是特征矩阵或数字值,但目前我们仍然以字符或字符串格式存储数据。因此,下一步是将这些字符编码为矩阵。

编码序列数据有3种通用方法:

  1. 顺序编码DNA序列
  2. 独热(one-hot)编码DNA序列
  3. DNA序列作为独立“语言”,称为k-mer计数

让我们分别进行实现,看看哪一个为我们提供了完美的输入。

目录
相关文章
|
5天前
|
机器学习/深度学习 并行计算 大数据
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
【Python篇】深入挖掘 Pandas:机器学习数据处理的高级技巧
30 3
|
5天前
|
机器学习/深度学习 数据采集 分布式计算
【Python篇】深入机器学习核心:XGBoost 从入门到实战
【Python篇】深入机器学习核心:XGBoost 从入门到实战
25 3
|
5天前
|
机器学习/深度学习 数据采集 算法
【Python篇】从零到精通:全面分析Scikit-Learn在机器学习中的绝妙应用
【Python篇】从零到精通:全面分析Scikit-Learn在机器学习中的绝妙应用
17 2
|
5天前
|
机器学习/深度学习 算法 数据可视化
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧2
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
13 1
|
2天前
|
机器学习/深度学习 算法 PyTorch
【机器学习】揭开激活函数的神秘面纱
【机器学习】揭开激活函数的神秘面纱
|
5月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
211 14
|
5月前
|
机器学习/深度学习 算法 数据可视化
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
实现机器学习算法时,特征选择是非常重要的一步,你有哪些推荐的方法?
99 1
|
5月前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
5月前
|
机器学习/深度学习 数据采集 算法
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
265 0
|
5月前
|
机器学习/深度学习 数据采集 监控
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
809 0