aibiology

Artificial intelligence in biology

0%

Enzyme 酶

酶是一类大分子生物催化剂。酶能加快化学反应的速度,具有催化作用。

M-MLV 反转录酶

M-MLV 反转录酶是一种以单链 RNA、DNA 或 RNA:DNA 杂交体为模板合成互补 DNA 链的重组 DNA 聚合酶。

  • 热稳定性—在 37°C 下活性极佳
  • cDNA 大小—M-MLV 可用于合成长达 7 kb 的第一链 cDNA
  • 应用—合成第一链 cDNA、引物延伸、dsDNA 测序、cDNA 文库和 RT-PCR

  • 来源
    纯化自表达质粒所带 M-MLV pol 基因的大肠杆菌

T4 DNA聚合酶

具有5'→3'DNA聚合酶活性,可沿 5'→3'方向催化合成 DNA,补平5'突出末端;同时该酶也具有3'→5'外切酶活性,能够用于3'突出末端的切平,从而将含黏性末端的DNA片段转变为平末端DNA。 - 来源
T4嗜菌体

Taq DNA聚合酶

具有5'→3'聚合酶活性,可以从5'→3'方向合成DNA,同时它具有的脱氧核苷酸转移酶活性可以在PCR产物的3'末端添加一个核苷酸“A”。 - 来源 钱嘉韵于1976年从嗜热细菌水生栖热菌中分离出的DNA聚合酶

T4多聚核苷酸激酶

由于人工合成的PCR引物、接头等5'端通常都是羟基基团而不是磷酸基团,因此需要T4多聚核苷酸激酶在ATP 存在时催化ATP的γ-磷酸基团转移到寡核苷酸链的5'端羟基末端上,为下一步连接接头做准备。 - 来源
T4嗜菌体

Tn5转座酶

用于DNA的片段化
- 来源
大肠杆菌 E.coli

核糖核酸酶R (RNase R)

Ribonuclease R,3'-->5' 外切酶活性,参与RNA降解。

MNase

微球菌核酸酶具有非特异性核酸内外切酶活性,可以结合和切割染色质上未结合蛋白质的DNA区域。 MNase-seq (micrococcal nuclease digestion with deep sequencing)主要用于对由组蛋白或其他染色质结合蛋白结合的DNA区域进行测序。 核小体核心由~146bp的DNA包裹着,围绕着8个组蛋白(histones protein)。
- 来源
1956年在金黄色葡萄球菌中发现。 MNase-Seq

Primer

引物与靶向位点互补,常用与PCR扩增。
设计要点:

  • 18-24个碱基的长度
  • G/C含量在40-60%
  • 起止于1-2 G/C对
  • 熔化温度(Tm)为50-60°C
  • 引物对之间的Tm应在5°C之内
  • 引物对不应该有互补区域

stem-loop primer

用于扩增microRNAs,miRNAs长度17~24 nt。由于miRNA短,不同用于建库,可以使用stem-loop加长。 stem_loop paper

Western Blot

Western免疫印迹(Western Blot)是将蛋白质转移到膜上,然后利用抗体进行检测。对已知表达蛋白,可用相应抗体作为一抗进行检测,对新基因的表达产物,可通过融合部分的抗体检测。

  • 原理
    与 Southern或Northern杂交方法类似,但Western Blot采用的是聚丙烯酰胺凝胶电泳,被检测物是蛋白质,“探针”是抗体,“显色”用标记的二抗。经过PAGE分离的蛋白质样品,转移到固相载体(例如硝 酸纤维素薄膜)上,固相载体以非共价键形式吸附蛋白质,且能保持电泳分离的多肽类型及其生物学活性不变。
    以固相载体上的蛋白质或多肽作为抗原,与对应的抗 体起免疫反应,再与酶或同位素标记的第二抗体起反应,经过底物显色或放射自显影以检测电泳分离的特异性目的基因表达的蛋白成分

refer 抗体技术实验指南

CRISPR

CRIPSR (Clustered Regularly Interspaced Short Palindromic Repeats)
成簇规律间隔短回文重复序列,作为最新的基因组编辑工具,在生物学领域大放异彩。

常见的几种Cas蛋白Cas9、Cas12、Cas13和Cas14等,用于不同场景的CRISPR。

CRIPSR蛋白 向导RNA PAM 靶标 酶结构域 切割机制
Cas9 sgRNA 5’NGG DNA HNH,RuvC 靶DNA中的特异性钝端双链断裂DSB
Cas12 crRNA 5’TTN DNA RuvC-like 在有5’overhangs的靶DNA中特异性DSB
Cas13a crRNA 3’A、U、C RNA 2X HEPN 特异性RNA切割
Cas13b crRNA / RNA 2X HEPN 特异性RNA切割
Cas14a sgRNA / ssDNA RuvC-like 在有5’overhangs的靶DNA中特异性DSB

crRNA: CRISPR-derived RNAs,特异靶向DNA的RNA序列,自然界中存在。
tracrRNA: trans-activating RNA, 一般crRNA和tracrRNA互补配对形成双链,指导Cas9蛋白切割双链DNA。
sgRNA: single guideRNA 是人工制造的,自然界不存在。使用 CRISPR-Cas9 系统敲除基因表达或敲入特定突变时,
高质量的向导 RNAs (gRNAs) 的设计、产生和递送是成功的关键。
DSB: double-stranded DNA break 双链断裂。
RuvC: Cas9的两个结构域之一,RuvC结构域剪切非互补链。
HNH: Cas9的两个结构域之一,HNH核酸酶结构域剪切互补链。
HEPN: Higher Eukaryotes and Prokaryotes Nucleotide-binding domain, Cas13a含有两个HEPN结构域。

CRISPR

  • Cas9的工作原理

内源CRISPR途径被简化为两个主要组分:Cas9核酸酶和指导RNA(gRNA)。导向RNA是由crRNA和tracrRNA组成的双组分系统。crRNA靶向待切割的双链DNA,并且具有短的同源区域,允许其结合tracrRNA。 tracrRNA提供与Cas9蛋白结合的茎环结构。crRNA:tracrRNA双链体被称为gRNA。 Cas9核酸酶和gRNA形成Cas9核糖核蛋白(RNP),可以在整个基因组环境中结合并切割特定的DNA靶标。为了被RNP切割,靶必须具有两个特定序列。首先,gRNA需要17-21个碱基的RNA至DNA同源性,这被称为前间隔序列。 其次,Cas9蛋白需要有一个短的前间隔序列邻近基序(PAM),以结合靶DNA。如果存在连接tracrRNA,并且在gRNA和基因组靶标之间存在足够的同源性,则RNP切割靶DNA的两条链,在基因组中的该精确位置处产生DSB。
虽然细胞核中的功能性CRISPR是RNP形式,但作为分子工具的CRISPR的组件适合于各种递送方法。 早期实验成功地创建了嵌合单指导RNA或sgRNA,其将crRNA和tracrRNA组合成单个RNA链而不是天然存在的双链体。 该sgRNA和Cas9 mRNA可以从单个质粒表达,用于直接转染或包装成用于慢病毒转导的颗粒。 也可将重组Cas9蛋白与合成产生的crRNA和tracrRNA组合,以生成RNP转染或显微注射给胚胎。

靶向DSB形成后,细胞通常使用两种DNA修复途径中的一种来存活:非同源末端连接(NHEJ)或同源依赖性修复(HDR)。这些修复机制经常会出错,导致在靶位置诱变,或者通过破坏编码序列来功能性地失活或敲除基因(NHEJ),或者通过添加新的DNA序列来敲入特定的序列变化(HDR)。通过这种方式,CRISPR / Cas9系统能够对染色体DNA进行永久的、可遗传的修饰。此外,当Cas9核酸内切酶结构域失活并附着于其他效应分子以作用于基因组中的gRNA指定位点时,CRISPR系统可用作靶向递送系统。 这将CRISPR系统功能扩展到基因激活和抑制。最后,CRISPR系统可用于筛选

  • 基因敲除

共表达的适当设计的gRNA指导Cas9切割靶序列,并在目的基因中产生DSB。然后可以通过三种方式中的任何一种实现基因敲除:1)细胞通过NHEJ修复断裂,导致切割基因的开放阅读框(ORF)内的随机插入或缺失(“插入缺失”);2)细胞通过HDR从用户提供的模板修复断裂,将特定的破坏性序列插入ORF中;3)一对gRNA产生两个DSB,其位于基本编码序列的侧翼,导致其切除。

  • 基因敲入

靶向整合(基因敲入)通过HDR发生。为了通过HDR进行基因编辑,必须将含有所需序列的DNA “供体” 或修复模板与gRNA和Cas9一起递送至细胞,通常在供体质粒或寡核苷酸上。基因敲入的效率通常低于敲除(<10%的修饰等位基因),但可用于产生范围从单核苷酸变化至大插入物的特定修饰。

  • dCas9 基因激活和抑制

Cas9的一个独特特征是它能够独立于DNA切割而结合靶DNA,因为这是Cas9机制的两个独立步骤。野生型Cas9具有两个核酸酶结构域:RuvC和HNH。为了在没有切割的情况下实现结合,通过诱导点突变(SpCas9中的D10A和H840A)使两个核酸酶结构域失活,导致核酸酶死亡的Cas9(dCas9)。当与靶向转录起始位点的gRNA组合时,发现单独的dCas9足以通过阻断转录起始来降低或抑制转录。在这一发展之后,科学家开始尝试将转录抑制因子和激活因子与dCas9联系起来。

  • 筛选

筛选可以快速调查大量候选基因或基因组位点,以参与您的途径或感兴趣的表型。池化寡核苷酸生产和大数据处理的改进,加上慢病毒递送的效率,使研究人员能够同时考虑数千个候选基因,无论是作为文库还是更为集中的子集(panel)。通常,子集(panel)和文库可以以两种形式组装:池化(在一个管中有数千个gRNA)或排列(在96孔板中每个孔一个gRNA)。

Summary of CRISPR/Cas tools
Cas9

long non-coding RNA (lncRNA)

长链非编码RNA,>200-nt, 是生物体内广泛存在的RNA,来源方式多样,具有重要的调节功能。 - 基因间区 intergenic
- 基因内部 intragenic
- 内含子 intronic
- 外显子 exonic
- 重叠区 overlapping
- 正义链 sense
- 反义链 antisense

lncRNA
lncRNA

激活lncRNA的表达

使用基因编辑技术可以增强lncRNA的表达。可以使用锌指蛋白、TALE蛋白和CRISPR蛋白等实现lncRNA的敲除或者激活表达。

genome edit
genome edit
  • 使用CRIPSR技术时,针对lncRNA的来源不同,应该采用不同的策略
genome edit2
genome edit2

lncRNA 数据库

目前该数据库收录了66个RNA,来自 10 物种。最短 61 nt, 最长 32,753 nt,平均长度3,086 nt。 lncRNAdb Paper

CpG (CpG sites)

CpG是基因组中的碱基序列以胞嘧啶(C)和鸟嘌呤(G)出现,p表示磷酸基团。 CpG中的C可以被甲基化为5-甲基化胞嘧啶,改变染色质结构,引起DNA 构象、稳定性及其与蛋白质互作方式,进而控制基因表达。

  • 哺乳动物中,70%到80%的CpG位点的胞嘧啶是甲基化的。

  • 在脊椎动物基因组中的出现频率

一个被发现已久的现象:相对于正常的随机概率期望,CpG位点在脊椎动物基因组中出现的概率非常低。以人类基因组为例(GC含量约为42%),CpG位点的出现概率应为0.21*0.21 = 4.41%;而人类基因组中CpG的实际含量约为1% -- 这尚未达到随机概率的四分之一。根据E Scarano等的论文[3],这一现象发生的原因是脊椎动物基因组中CpG的胞嘧啶被甲基化为5-甲基胞嘧啶后再发生脱氨作用变成胸腺嘧啶,从而形成了从C到T的突变,致使CpG位点的出现概率降低。这种现象被称为CG抑制(CG suppression)。

CpG岛

CpG岛是一个富含CpG位点的区域,但客观精确描述所谓“富含”的定义尚不明确。通常对于CpG岛的正式定义为:一个长度至少为200bp的片段,其GC含量高于50%,且“观察期望比”(observed-to-expexted)高于60%。

CpG wiki

Motif

Motif是DNA或RNA中存在的长度较短(6-8 bp),有特定模式的序列。 该序列一般具有一定的生物学功能,转录因子结合位点,RBP结合位点均憨厚特定的motif。 Motif的鉴定方法有: - 正则表达式 (Regular expression enumeration)
- 模式驱动
- K-mer+显著性检验
常用的工具有WEEDER(suffix tree implementation of RE motif hits) - 位置权重矩阵 (Position weigtht mstrix)
- EM算法
- Gibbs-sampling算法
- Greedy算法
mit-motif-course

Expectation Maximization for Motif Finding 算法

对象: - seq: 用于motif搜索的序列
- \(θ_0\): 没有motif存在的概率(基因组背景)
- θ: motif概率矩阵参数
- π: motif出现的位置

问题: P(θ, π | seq, \(θ_0\))最优化问题

方法: - π by P(π | θ, seq, \(θ_0\))
- θ by P(θ | π, seq, \(θ_0\))
- EM 和 Gibbs在估计的方法上存在差异

不同的初始化motif矩阵得到的结果不一样,所以MEME采用不同的kmer矩阵作为motif矩阵,计算每一个kmer,选出得分最高top100。

伪代码code

1
2
3
4
5
6
7
8
# Basic EM Approach
given: length parameter W, training set of sequences
set initial values for p
do
re-estimate Z from p (E –step)
re-estimate p from Z (M-step)
until change in p < ε
return: p, Z
EM

  • Gibbs sampling Gibbs
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Gibbs Sampling Approach
    given: length parameter W, training set of sequences
    choose random positions for a
    do
    pick a sequence $X_i$
    estimate p given current motif positions a (update step)
    (using all sequences but $X_i$)
    sample a new motif position $a_i$ for $X_i$ (sampling step)
    until convergence
    return: p, a

Burrows-Wheeler Transform (BWT)

Burrows-Wheeler Transform (BWT)算法是一种数据变换算法,通过BWT变换可以将相同的字符聚集到一块,以简化索引,提升压缩效果。 BWT算法可以作为统计压缩(如VLC)和字典压缩(如LZ78)的补充使用。BWT算法分为正向数据变换运算和逆向数据恢复运算。

正向变换 python 实现

s -> BWT(s)

  • BWM实现
bwt
bwt
1
2
3
4
5
6
7
8
9
10
11
12
13
14

def rotations(t):
"""循环字符串t,返回列表"""
tt = t * 2
return [tt[i:i+len(t)] for i in range(len(t))]

def bwt(t):
"""返回t的rotations排序的列表"""
return sorted(rotations(t))

def bwtViaBwm(t):
""" 返回字符串t的BWT变换的字符"""
return "".join(map(lambda x: x[-1], bwt(t)))

  • SA实现 后缀数组(suffix array),将所有后缀排序后第i小的后缀的编号,也是所说的后缀数组
bwm to sa
bwm to sa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def suffixArray(s):
"""返回字符串s的后缀数组"""
satups = sorted([(s[i:], i) for i in range(len(s))])
return map(lambda x: x[1], satups)
s = 'abaaba$'
sorted([(s[i:], i) for i in range(len(s))])
# [('$', 6), ('a$', 5), ('aaba$', 2), ('aba$', 3), ('abaaba$', 0), ('ba$', 4), ('baaba$', 1)]
suffixArray(s)
# [6, 5, 2, 3, 0, 4, 1]

def bwtViaSa(s):
"""使用后缀数组返回字符串的BWT变换后的字符串"""
bw = []
for si in suffixArray(s):
if si == 0:
bw.append('$')
else:
bw.append(s[si-1])
return ''.join(bw)


逆向数据恢复 Python实现

bwt(s) -> s bwt to string

1

refer pdf

基因组

基因组序列是以染色体或者scafford形式排布的, read比对回基因组时开销很大。 为了解决这个问题,需要对参考基因组建立索引,加速比对的过程。

建立索引,一般采用kmer对基因组的序列进行处理,然后针对特地的kmer记录其在染色体索引上的位置信息。

Target(T): CGTGCTGGCTT

1
2
3
4
5
6
7
8
9
# 首先针对Target序列,建立索引,kmer=5
# index T sort index T
# CGTGC: 0 CGTGC: 0,4
# GTGCG: 1 GCGTG: 3
# TGCGT: 2 ==> GTGCG: 1
# GCGTG: 3 GTGCT: 5
# CGTGC: 4 TGCGT: 2
# GTGCT: 5 TGCTT: 6
# TGCTT: 6
1
2
3
4
5
6
7
8
9
10
11
# Pattern(P): GCGTGC 比对回T

# 第一种情况
# P前五个字符 GCGTG比对到T索引为3的位置,同时确认P剩下的一个字符C,发现也能比对上T,
# 因此P能比对上T索引为3的位置。

# 第二种情况
# P的后五个字符CGTGC,能比对上T的0和4位置,但是对于0位置,P的前一个字符G比对不上;
# 对于4位置,G能比对上T,所以P的比对上T位置是4-1=3

# 一共2 index hits
1
2
3
# P: GCGTGA
# 第一种情况
# P的前5个字符 GCGTG比对上T索引为3的位置,但是剩下的字符A比对不上T的C字符, 所以P不在T中
1
2
# P: GCGTAC
# P的前五个字符不在索引中,比对不上

数据结构

针对上面需要对基因组进行k-mer索引的情况,需要采用合适的数据结构来存储基因组的这些信息。 Python中的dict可以实现。只需要对Pattern的kmer在T的索引中查找就行,查找可以使用二分法查找。 二分法查找的时间复杂度是$O(log_2(n))$

python 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import sys
import bisect

class Index(object):
def __init__(self, t, k):
"""创建不同长度的索引"""
self.k = k # kmer 长度
self.index = []
for i in range(len(t) - k + 1): # 循环每个k-mer
self.index.append((t[i:i+k], i)) # 追加(k-mer, offset)
self.index.sort() # 按字母顺序排列
def query(self, p):
"""返回P第一个k-mer匹配的索引"""
kmer = p[:self.k]
i = bisect.bisect_left(self.index, (kmer, -1)) # 二分法查找
hits = []
while i < len(self.index):
if self.index[i][0] != kmer:
break
hits.append(self.index[i][1])
i += 1
return hits

def queryIndex(p, t, index):
k = index.k
offsets = []
for i in index.query(p):
if p[k:] == t[i+k:i+len(p)]: # 验证P剩下的字符 len(p) - k
offsets.append(i)
return offsets

t = 'ACTTGGAGATCTTTGAGGCTAGGTATTCGGGATCGAAGCTCATTTCGGGGATCGATTACGATATGGTGGGTATTCGGGA'
p = 'GGTATTCGGGA'

index = Index(t, 4)
print(queryIndex(p, t, index))

Boyer-Moore算法

Boyer-Moore算法是由德克萨斯大学的Robert S. Boyer教授和J Strother Moore教授与1977年发明的。 算法的主要思想包括以下两点:

  • 坏字符规则 bad character

  • 好后缀规则 good suffix

下面采用一个例子进行解释:

  • 1
    1
    2
    "字符串" HERE IS A SIMPLE EXAMPLE  
    "模式串" EXAMPLE
  • 2

    1
    2
    HERE I`S` A SIMPLE EXAMPLE  
    EXAMPL`E`
    可以发现头部对齐时, 从尾部开始比较,发现尾部的字符不匹配,那么只要比较一次,就知道字符串的前七个字符不是我们要找的。 SE不匹配,此时,S就被成为坏字符(bad character)。同时我们发现,S不在模式串EXAMPLE中,因此可以直接将模式串移动到S的后一位。 只需比较一次就可以跳7个字符,也是该算法加速的原因之一。

  • 3
    1
    2
    "字符串" HERE IS A SIM`P`LE EXAMPLE
    "模式串" EXAMPL`E`
    依然从尾部开始比较,发现PE不匹配,所以P坏字符。但是, P包含在搜索词EXAMPLE之中。所以,将搜索词后移两位,两个P对齐。
  • 4

    1
    2
    HERE IS A SIM`P`LE EXAMPLE
    EXAM`P`LE
    因此,我们可以总结出坏字符规则
    1
    后移动的位数 = 坏字符在模式串中的位置 - 模式串中的坏字符上一次出现的位置
    如果坏字符在模式串中不出现,则上一次的位置为-1, 取值-1是因为字符串索引是0-based

3中的匹配为例,P是坏字符,出现在模式串的第6位(0-based), 由于模式串中存在该坏字符,且出现的位置为4, 所以,后移动的位数为6-4 = 2位
再以2中出现的S为例,该坏字符出现的位置是6位置,但是在模式串中上一次没有出现,因此,上一次出现的位置为-1, 则整个模式串后移的位数6 - (-1) = 7位

  • 5
1
2
3
HERE IS A SIMPL`E` EXAMPLE
EXAMPL`E`

依然从尾部开始比较,EE匹配

  • 6
1
2
3
HERE IS A SIMP`L`E EXAMPLE
EXAMP`L`E

LELE匹配

  • 7

    1
    2
    3
    HERE IS A SIM`PLE` EXAMPLE
    EXAM`PLE`

    PLEPLE匹配

  • 8

    1
    2
    3
    HERE IS A SI`MPLE` EXAMPLE
    EXA`MPLE`

    MPLEMPLE匹配. 我们把E, LE, PLE, MPLE中出现的字符称为好后缀(good suffix)。

  • 9

    1
    2
    3
    HERE IS A S`I`MPLE EXAMPLE
    EX`A`MPLE

    比较前一位,发现IA不匹配,所以I是坏字符。

  • 10

    1
    2
    3
    HERE IS A SI`M`PLE EXAMPLE
    `E`XAMPLE

    根据坏字符规则,后移的位数2-(-1) = 3位i, ME对齐,但是此时,会有一个疑问,有没有更好的移法呢?比3更多呢?

  • 11

1
2
HERE IS A SI`MPLE` EXAMPLE
EXA`MPLE`

此时,存在好后缀MPLE,采用好后缀规则

1
后移的位数 = 好后缀的位置 - 模式串中好后缀上一次出现的位置

好后缀规则的注意点:

  • 12

    1
    2
    HERE IS A SIMPLE EXAMPLE
    EXAMPLE
    此时的好后缀有E, LE, PLE, MPLE,在四个中间只有E出现,在模式串EXAMPLE中,且出现在头部, 所以后移的位数6 - 0 = 6位, 可以看到使用好后缀规则移动的更多,比坏字符多出3位。因此Boyer-Moore算法的 思想就是每次后移选取两个规则中移动位数最多的。由于,两个规则只和模式串有关,与原字符串无关,因此可以预先制定 坏字符规则表好后缀规则表,使用时,查表即可。

  • 13

    1
    2
    HERE IS A SIMPLE EXAM`P`LE
    EXAMPL`E`
    继续从尾部比较,PE不匹配,因此P是坏字符,根据坏字符规则,后移的位数6 - 4 = 2位, 此时没有好后缀。

  • 14

    1
    2
    3
    HERE IS A SIMPLE EXAMPLE
    EXAMPLE

    继续从尾部开始比较,发现完全匹配上了,搜索结束。若还要继续匹配,则使用好后缀规则,使用的是好后缀E, 后移6 - 0 = 6位,继续匹配。

Python 实现

1
2
3
4
5
6
7
8
def bad_character():
pass

def good_suffix():
pass

def boyer_moore():
pass

reference