限制性图谱构建
限制性图谱(restriction mapping)是通过限制性酶切实验确定 DNA 分子上酶切位点位置的技术。核心计算问题是根据片段长度数据推断酶切位点的顺序和位置。
- 理解部分消化问题(Partial Digest Problem, PDP)的数学形式
- 掌握穷举算法和分支定界策略(Branch-and-Bound)
- 了解双消化问题(Double Digest Problem, DDP)和探针部分消化问题(PPDP)
限制性内切酶(restriction endonucleases) 是一类能够识别特定DNA序列并在特定位点切割DNA链的酶。
- 每种酶识别特定的短序列(通常4-8个碱基)
- 例如:EcoRI 识别 GAATTC 并在 G 和 A 之间切割
- 切割后产生DNA片段
限制性图谱显示限制性酶切位点在DNA分子上的相对位置。
应用:
- 基因组作图(在测序时代之前非常重要)
- 基因克隆和载体构建
- 基因组结构分析
- 遗传疾病研究
主要有两种实验方法:
- 完全消化(complete digestion):用限制性酶完全消化DNA,产生所有可能的片段
- 部分消化(partial digestion):控制酶切时间,产生部分片段
通过凝胶电泳可以测量这些片段的长度,但无法知道它们的顺序。
部分消化问题(PDP)
Section titled “部分消化问题(PDP)”给定一组切割位点 (假设在一条直线上,),定义所有点对之间的距离集合:
ΔX = \{|xᵢ - xⱼ| : 1 ≤ i < j ≤ n\}部分消化问题(Partial Digest Problem, PDP):
- 输入:距离多重集 L = ΔX
- 输出:还原位点集合 X
示例: 如果 X = {0, 2, 4, 7} 则 ΔX = {2, 4, 7, 2, 5, 3} = {2, 2, 3, 4, 5, 7}
给定 L = {2, 2, 3, 4, 5, 7},需要找出 X = {0, 2, 4, 7}
Brute Force PDP (穷举法)
Section titled “Brute Force PDP (穷举法)”穷举算法通过枚举所有可能的位点组合来寻找解。对于长度为 ,含有 个位点的图谱:
BRUTEFORCEPDP(L, n)1 M ← max(L)2 for every subset X = {0, x2, ..., xn-1, M} from {1, ..., M-1}3 if ΔX = L4 return X缺点:搜索空间为 ,当 较大时极度低效。
Practical PDP (分支定界算法)
Section titled “Practical PDP (分支定界算法)”PDP 可以用分支定界(branch-and-bound)策略高效求解。
关键观察:
- 最大距离一定是某个点到最远点的距离
- 可以递归地构建解
算法思路:
- 从最大距离开始,确定最远的两个点
- 递归地在中间插入新点
- 使用距离约束进行剪枝
PARTIALDIGEST(L)1 X ← \{0, max(L)\}2 L ← L \ \{max(L)\}3 return PLACEPOINTS(L, X)
PLACEPOINTS(L, X)4 if L is empty5 return X6 y ← max(L)7 // 尝试在 X 的最右侧添加 y8 if CONSISTENT(y, X, L)9 X' ← X ∪ \{y\}10 L' ← L \ DISTANCES(y, X)11 result ← PLACEPOINTS(L', X')12 if result ≠ failure13 return result14 // 尝试在 X 的最左侧添加 max(X) - y15 if CONSISTENT(max(X) - y, X, L)16 X' ← X ∪ \{max(X) - y\}17 L' ← L \ DISTANCES(max(X) - y, X)18 result ← PLACEPOINTS(L', X')19 if result ≠ failure20 return result21 return failureCONSISTENT 函数检查添加新点后是否与距离集合一致。
给定 L = {2, 2, 3, 4, 5, 7}:
- 最大距离 7,设 X = {0, 7}
- 剩余 L = {2, 2, 3, 4, 5}
- 最大距离 5:
- 尝试在右侧添加 5:X = {0, 5, 7}
- 检查距离:|5-0|=5, |5-7|=2, 符合
- 剩余 L = {2, 3, 4}
- 最大距离 4:
- 尝试在右侧添加 4:X = {0, 4, 5, 7}
- 距离 |4-0|=4, |4-5|=1(不在L中),不一致
- 尝试在左侧添加 7-4=3:X = {0, 3, 5, 7}
- 距离 |3-0|=3, |3-5|=2, |3-7|=4,符合
- 剩余 L = {2}
- 最大距离 2:
- 尝试添加 2:X = {0, 2, 3, 5, 7}
- 距离 |2-0|=2, 符合
- L 为空,返回 X = {0, 2, 3, 5, 7}
PDP 是 NP-困难的,但分支定界算法在实践中通常可以高效求解,因为距离约束提供了很强的剪枝能力。
双消化问题(DDP)
Section titled “双消化问题(DDP)”**双消化问题(Double Digest Problem, DDP)**使用两种不同的限制性酶。
给定:
- 酶 A 单独消化的片段长度集合 A
- 酶 B 单独消化的片段长度集合 B
- 酶 A 和 B 同时消化的片段长度集合 A + B
需要重构两种酶的切割位点顺序。
假设酶 A 的切割位点产生片段 {1, 2, 4, 5, 6} 酶 B 的切割位点产生片段 {1, 3, 3, 3, 8} 双消化产生片段 {1, 1, 1, 1, 2, 2, 2, 3, 5}
需要找到一种排列使得:
- 单独 A 消化得到 {1, 2, 4, 5, 6}
- 单独 B 消化得到 {1, 3, 3, 3, 8}
- 双消化得到 {1, 1, 1, 1, 2, 2, 2, 3, 5}
DDP 也可以用分支定界策略求解:
BRUTEFORCEDDP(A, B, AB)1 for each possible ordering of A cuts2 for each possible ordering of B cuts3 if combined digestion matches AB4 return the ordering由于搜索空间很大,需要更强的剪枝策略。
DDP 通常比 PDP 更难,因为需要同时考虑两种酶的切割位点。
探针部分消化问题(PPDP)
Section titled “探针部分消化问题(PPDP)”**探针部分消化问题(Probed Partial Digest Problem, PPDP)**使用标记探针。
给定:
- 一个标记探针的位置(设为 0)
- 部分消化实验测量的距离(包含探针的片段)
需要重构切割位点 A(负坐标)和 B(正坐标)。
输入:多重集 输出:集合 和
PPDP 可以分解为两个独立的 PDP:
- 重构 A
- 重构 B
实际实验中存在测量误差,算法需要:
- 容忍小的距离误差
- 处理缺失或额外的片段
现代方法包括:
- 整数线性规划
- 约束满足
- 启发式搜索
与测序的关系
Section titled “与测序的关系”在下一代测序时代,限制性图谱的重要性有所下降,但:
- 仍用于验证组装结果
- 用于研究结构变异
- 在某些应用中作为补充方法