Bohrium
robot
新建

空间站广场

论文
Notebooks
比赛
课程
Apps
我的主页
我的Notebooks
我的论文库
我的足迹

我的工作空间

任务
节点
文件
数据集
镜像
项目
数据库
公开
Play Around RNA Secondary Structure: Prediction and Visualization of RNA
RNA
RNA
Bohrium小助手
发布于 2023-09-26
推荐镜像 :Basic Image:bohrium-notebook:2023-04-07
推荐机型 :c4_m8_cpu
1
目标
背景
实践
1. RNA二级结构
1.1 认识RNA二级结构
1.2 如何表示RNA二级结构
1.2.1 Connectivity Table
1.2.2 Dot-Bracket文件
1.2.3 邻接矩阵
2. RNA二级结构预测
2.1 热力学方法
2.1.1 最小自由能算法(MFE)
2.1.2 配分函数算法
2.2 端对端预测
2.3 使用LinearFold预测RNA二级结构
3. RNA二级结构可视化
总结
进一步阅读和实践
参考

©️ Copyright 2023 @ Authors
作者: 王喜 📨
日期:2023-06-06
共享协议:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
快速开始:点击上方的 开始连接 按钮,选择 bohrium-notebook:2023-05-31镜像 和任意配置机型即可开始。

代码
文本

🎯 本教程旨在快速掌握使用各种工具进行RNA二级结构的预测和可视化

  • 一键运行,你可以快速在实践中检验你的想法。

  • 丰富完善的注释,对于入门者友好。

代码
文本

Bohrium Notebook 界面,你可以点击界面上方蓝色按钮 开始连接,选择 bohrium-notebook 镜像及任何一款节点配置,稍等片刻即可运行。

代码
文本

目标

快速熟悉RNA二级结构预测和可视化

在学习本教程后,你将能够:

  • 学习如何使用简单的RNA二级结构预测工具。
  • 掌握如何使用各种工具完成RNA二级结构的可视化。

阅读该教程【最多】约需 30 分钟,让我们开始吧!

代码
文本

背景

你不需要理解所有的事。 你的目标是从头到尾完成本教程并获得结果。你不需要在第一次尝试时就了解所有内容。边学习边写下你的问题。使用丰富的 API 文档来了解你正在使用的所有功能。

你不需要精通数学原理。 数学是描述算法如何工作的基本方式,特别是线性代数、概率和微积分的工具。这些并不是你可以用来了解算法如何工作的唯一工具。你还可以通过使用代码并探索具有不同输入和输出的算法行为来增进了解。了解数学不会告诉你选择哪种算法或如何最好地配置它。你只能通过精心控制的实验来发现这一点。

你需要提前了解以下基础知识:

  • 核酸二级结构的基础知识,如果你不了解,推荐阅读:

https://en.wikipedia.org/wiki/Nucleic_acid_secondary_structure

代码
文本

实践

代码
文本

1. RNA二级结构

在这个部分,你将学习RNA二级结构的基础知识。

代码
文本

1.1 认识RNA二级结构

RNA拥有四种碱基,ACGU,其中U对应DNA中的T。四种碱基组成的序列就是RNA序列,也叫做RNA的一级结构。2D平面上由碱基配对形成的结构称之为RNA的二级结构,而将3D空间上形成的立体结构称之为RNA的三级结构。

代码
文本
Overview of RNA Structure
Overview of RNA Structure
代码
文本

1.2 如何表示RNA二级结构

代码
文本

RNA二级结构有多种记录形式,本教程将介绍最常见的三种格式:CT File, Dot-Bracket, 和 Adjacent Matrix

代码
文本
1.2.1 Connectivity Table

CT文件首行包括:

核苷酸总数量,折叠能量,文件名

其他行中,每行包含6列数据,分别为:

  • Column 1: 按照1-N列出的对应位置的核苷酸种类
  • Column 2: 列出核苷酸的种类.
  • Column 3: 从0到N - 1递增的核苷酸列表.
  • Column 4: 从2到N的核苷酸列表.
  • Column 5: 与按递增顺序排列的核苷酸配对的列表。第五列中的任何零表示特定的核苷酸没有配对.
  • Column 6: 列1的重复.

这里给出一个.ct文件的实例:

363	tmRNA
1	G	0	2	359	1
2	G	1	3	358	2
3	G	2	4	357	3
4	G	3	5	356	4
5	C	4	6	355	5
6	U	5	7	354	6
7	G	6	8	353	7
8	A	7	9	0	8
9	U	8	10	0	9
10	U	9	11	0	10
11	C	10	12	0	11
12	U	11	13	0	12
13	G	12	14	0	13
14	G	13	15	0	14
15	A	14	16	0	15
16	U	15	17	0	16
17	U	16	18	0	17
18	C	17	19	0	18
19	G	18	20	0	19
20	A	19	21	0	20
21	C	20	22	332	21
22	G	21	23	331	22
23	G	22	24	330	23
24	G	23	25	329	24
25	A	24	26	328	25
26	U	25	27	327	26
27	U	26	28	326	27
28	U	27	29	325	28
代码
文本
1.2.2 Dot-Bracket文件

DB(点括号)格式(.db、.dbn)是一种纯文本格式,是最常见的二级结构记录格式。

二级结构表示法:

  • 未配对的核苷酸用.或:字符表示。
  • 匹配的括号对表示碱基对。
  • 要表示非嵌套的碱基对(伪结),可以使用额外的括号:[]、{}或<>。

这里给出一个实例:

GGUGCAUGCCGAGGGGCGGUUGGCCUCGUAAAAAGCCGCAAAAAAUAGCAUGUAGUACC
((((((((((((((.[[[[[[..))))).....]]]]]]........)))))...))))
代码
文本
1.2.3 邻接矩阵

RNA二级结构的邻接矩阵表示方法是一种用于描述RNA分子中碱基对之间相互关系的形式化表示。它通常是一个二维矩阵,其中每个元素(i, j)表示第i个碱基与第j个碱基是否形成了氢键或其他特定类型的相互作用。通常,这个矩阵的元素可以是二进制值,1表示存在相互作用,0表示不存在。此外,矩阵的元素也可以是浮点数值,用以表示碱基i,j的配对概率。通常情况下邻接矩阵是个对称的矩阵。

代码
文本
Overview of RNA Structure
Simple Explaination of Adjacent Matrix
代码
文本

The images of adjacent matrix origins from ICLR Paper:

Chen, X., Li, Y., Umarov, R., Gao, X., & Song, L. (2020). RNA secondary structure prediction by learning unrolled algorithms. arXiv preprint arXiv:2002.05810.

代码
文本

2. RNA二级结构预测

RNA二级结构预测是一种生物信息学方法,旨在推测RNA分子中碱基对之间的相互作用关系,从而确定RNA分子的二级结构,包括内部环、外部环和伪结构等元素的排列。这一预测过程通常依赖于序列信息以及RNA分子中碱基对的稳定性。预测方法包括动态规划、基于机器学习的方法和概率建模等。

RNA二级结构预测对于理解RNA的功能和结构至关重要,它可以用于识别RNA分子中的功能元素,如编码区域和结构域,以及预测RNA的空间折叠。这对于研究RNA生物学、药物设计以及基因表达调控等领域都具有广泛的应用。然而,由于RNA分子的结构复杂性,准确的二级结构预测仍然是一个具有挑战性的问题,需要不断改进的算法和技术。

代码
文本

2.1 热力学方法

代码
文本

热力学方法主要分为两种,最小自由能算法和配分函数方法。

代码
文本
2.1.1 最小自由能算法(MFE)

最小自由能(MFE)算法是一个常用方法,用于找出给定RNA序列可能形成的最稳定的二级结构。这种结构通常以最低的自由能来定义。该算法基于热力学参数,通常在高温下测得,但可调整以适用于生物体内条件。

最核心的数学表达式如下:

其中是可能的二级结构集合,是碱基成对的能量。

代码
文本

通常使用动态规划算法求解最小能量对应的结构,虽然该方法在计算复杂度上相对高,但由于其基于实验测定的热力学参数,通常被认为是相当准确和可靠的。

代码
文本
2.1.2 配分函数算法

Partition Function方法是用于RNA二级结构预测的另一种有效算法,该方法不仅提供了最可能的结构,还给出了所有可能结构的概率分布。这是通过计算所谓的“配分函数”(Partition Function)实现的,该函数对应于统计物理学中热力学系统的配分函数。

代码
文本

配分函数 定义为:

其中:

  • 表示所有可能二级结构的集合。
  • 是特定结构 的自由能。
  • 是玻尔兹曼常数。
  • 是温度。

目标是计算 ,作为所有可能配置的玻尔兹曼因子加权和。

计算完成配分函数 后,我们可以容易地计算任何特定二级结构 出现的概率:

这使我们能够不仅预测最可能的结构,还能量化不确定性。

代码
文本

2.2 端对端预测

基于深度学习算法的端对端预测是一种新兴且高效的RNA二级结构预测算法,通过设计特异性神经网络,端对端预测算法能够有更快的预测速度和更高的精度,但受限于数据量的影响,该方法在某些类型的RNA上预测精度较差。

代码
文本

2.3 使用LinearFold预测RNA二级结构

代码
文本

Linearfold是百度研究院提出的一种先进的基于配分函数的RNA二级结构预测算法,相对于其他热力学方法,Linearfold有更好的预测速度和精度。

接下来介绍如果使用Linearfold预测RNA二级结构。

代码
文本
[25]
!git clone https://github.com/LinearFold/LinearFold.git
Cloning into 'LinearFold'...
remote: Enumerating objects: 499, done.
remote: Counting objects: 100% (256/256), done.
remote: Compressing objects: 100% (141/141), done.
remote: Total 499 (delta 145), reused 209 (delta 114), pack-reused 243
Receiving objects: 100% (499/499), 1.34 MiB | 1.12 MiB/s, done.
Resolving deltas: 100% (247/247), done.
代码
文本

接下来完成Linearfold的编译。

代码
文本
[26]
!cd LinearFold && make
chmod +x linearfold draw_circular_plot
mkdir -p bin
g++ src/LinearFold.cpp -std=c++11 -O3 -Dlv -Dis_cube_pruning -Dis_candidate_list -o bin/linearfold_v 
g++ src/LinearFold.cpp -std=c++11 -O3 -Dis_cube_pruning -Dis_candidate_list -o bin/linearfold_c
代码
文本

我们来尝试预测萝卜黄花叶病毒中的ssRNA二级结构:

ssRNA
ssRNA from Turnip yellow mosaic virus
代码
文本
[27]
!cd LinearFold && echo "GGGAGCUCAACUCUCCCCCCCUUUUCCGAGGGUCAUCGGAACCA" | ./linearfold -v
GGGAGCUCAACUCUCCCCCCCUUUUCCGAGGGUCAUCGGAACCA
>verbose
Interior loop ( 24, 41) UA; ( 25, 40) UA : 100000.00
Interior loop ( 25, 40) UA; ( 26, 39) CG : 100000.00
Interior loop ( 26, 39) CG; ( 27, 38) CG : 100000.00
Interior loop ( 27, 38) CG; ( 28, 37) GC : 100000.00
Interior loop ( 28, 37) GC; ( 29, 36) AU : 100000.00
Hairpin loop ( 29, 36) AU : 100005.40
Interior loop ( 1, 17) GC; ( 2, 16) GC : 100000.00
Interior loop ( 2, 16) GC; ( 3, 15) GC : 100000.00
Interior loop ( 3, 15) GC; ( 4, 14) AU : 100000.00
Interior loop ( 4, 14) AU; ( 5, 13) GC : 100000.00
Hairpin loop ( 5, 13) GC : 100006.00
External loop : 200000.00
Energy(kcal/mol): 1300011.40
Parse Time: 0.000512 len: 44 score 5.964678 #states 17554 H 307 P 11922 M2 1175 Multi 2688 M 1112 C 350
(((((.......)))))......((((((......))))))... (5.96)
代码
文本

3. RNA二级结构可视化

代码
文本

在本章节,你将学习到如何从各种RNA二级结构记录文件出发,完成RNA二级结构的可视化。在这里,我们使用LinearFold提供的工具完成可视化操作。

代码
文本

首先需要准备预测好结构的dbn文件,格式如下:

>
<sequence>
<dot-bracket>

如下的例子即可直接完成二级结构可视化操作:

代码
文本
[28]
!pip -qqq install forgi matplotlib viennarna
代码
文本
[29]
import forgi.graph.bulge_graph as fgb
import forgi.visual.mplotlib as fvm
import matplotlib.pyplot as plt

sequence = "GGGAGCUCAACUCUCCCCCCCUUUUCCGAGGGUCAUCGGAACCA"
structure = "(((((.......)))))......((((((......))))))..."

bg = fgb.BulgeGraph.from_dotbracket(seq=sequence, dotbracket_str=structure)
fvm.plot_rna(bg, text_kwargs={"fontweight":"black"}, lighten=0.7,
backbone_kwargs={"linewidth":3})
plt.show()
代码
文本

总结

代码
文本

RNA二级结构的预测和可视化是研究RNA问题的基础,有助于研究与二级结构相关的稳定性,转录调控加工问题。

具体而言,您了解到:

  • 了解如何使用LinearFold预测RNA二级结构。
  • 掌握如何使用forgi包可视化RNA二级结构。

你有什么问题吗? 欢迎与我们联系 bohrium@dp.tech

代码
文本

进一步阅读和实践

代码
文本
RNA
RNA
点个赞吧
本文被以下合集收录
RNA Secondary Structure Prediction
bohred9f3d
更新于 2023-10-09
1 篇0 人关注
AI4Sci
alexander_zzh@163.com
更新于 2023-09-20
4 篇0 人关注
推荐阅读
公开
迈入大模型时代的深度学习:使用Flash Attention技术让Transformer起飞
Deep LearningTransformersPyTorch
Deep LearningTransformersPyTorch
Bohrium小助手
发布于 2023-07-29
5 赞3 转存文件3 评论
公开
《计算材料学》(分子动力学)算法原理
python计算材料学分子动力学
python计算材料学分子动力学
JH_Wang
更新于 2024-07-18
8 赞7 转存文件