2.5 节的注释流程在几乎每一个环节都重复同一个动作:把一条新序列与一条已知序列并排放在一起,逐位指出“这两个字母对应”。这个动作就是序列比对(sequence alignment),它是基因组科学中使用频率最高的计算操作,也是本章从“读出序列”走向“读懂序列”的枢纽。比对之所以需要认真的理论,是因为两个问题远比看上去困难:其一,什么样的比对才算“好”,需要一套客观的打分体系;其二,如何在可以接受的时间内,在数以亿计的候选位置中找到最好的比对。本节先把比对问题形式化(2.6.1),再讨论工业上最重要的启发式工具 BLAST(2.6.2–2.6.3),最后把两两比较放大到整个基因组,进入比较基因组学(2.6.4–2.6.5)。
2.6.1 比对问题的形式化:打分与最优解
给定长度为 m 与 n 的两条序列 x、y,一个比对是指:在任一序列的任意位置插入空位(gap)“−”,使两行长度相等,从而把同一列的两个字符置于相互对应的关系。空位并不存在于真实序列之中,它是历史上一次插入/缺失(insertion/deletion, indel)事件留下的痕迹;比对因此不是排版游戏,而是关于两条序列共同历史的一个假设。既然是假设,就有优劣之分,而优劣必须可以度量。
同源与相似之辨。同源(homology)指两条序列(或两个基因)源自某一共同祖先序列的历史关系,是一个有或无的质性判断,不存在“同源性为百分之几”的说法。相似性(similarity)则是比对所能给出的经验量,如“比对区域内一致残基占 62%”。高相似性通常是同源的证据,但两者并不等价:短片段或低复杂度区域的高相似可能出于巧合或氨基酸组成偏好;反过来,远缘同源蛋白的相似性可以低至 20–25% 的“暮区”(twilight zone)。规范的学术表述是“相似性为 x%,提示两者同源”,而非“两者的同源性为 x%”。序列相似不等于同源,同源也不等于功能相同。
打分体系由两部分组成:列内残基对的替换得分,以及对空位的处罚。替换得分由替换矩阵(substitution matrix)给出:矩阵元素 s(a, b) 表示把 a 与 b 放在同一列应得的分数。核苷酸序列只有四种字符且多数应用只关心是否配对,常用“匹配 +1、错配 −m”的简单方案(blastn 缺省即属此类),更精细的方案可对转换(嘌呤间或嘧啶间)与颠换(嘌呤对嘧啶)设置不同罚分,因为转换在进化上远为常见。氨基酸的替换倾向则悬殊得多:理化性质相近的替换(如异亮氨酸与缬氨酸)频繁且常被选择容忍,而色氨酸突变为半胱氨酸一类的事件罕见且多受净化选择排斥。因此蛋白比对必须使用经验矩阵:PAM 系列由 Dayhoff 等自密切同源蛋白中观察到的接受点突变(accepted point mutation)计数外推而来;BLOSUM 系列由 Henikoff 与 Henikoff 从未经比对的保守序列块(blocks)中直接统计替换频率而得(Henikoff & Henikoff, 1992)。两个家族共享同一个核心思想——以“取代的可观测性”计分:矩阵元素本质上是观测替换频率对随机背景频率的比值取对数(对数几率,log-odds),常见替换得正分,罕见替换得负分,从而使总分与“两序列同源与否”的证据强度挂钩。其中 BLOSUM62 由块内相似度不低于 62% 的序列先合并成簇再统计,是蛋白数据库检索的缺省矩阵。
空位的处罚采用仿射空位罚分(affine gap penalty):开设一个新空位付出较重的开放罚分(gap-open penalty) d,此后空位每延长一位只付出较轻的延伸罚分(gap-extension penalty) e,故长度为 L 的一个空位共罚 d + e·L。这一设计的生物学动机十分明确:一次真实的插入/缺失事件——复制滑移、不等交换或转座子插入——往往一次牵连多个碱基;如果按“每位重罚”的线性罚分,把一个长空位拆散成许多单碱基空位反而“更便宜”,最优比对将系统性地背离进化事实。综合两部分,比对 A 的总分定义为:
求解式 (2.6-1) 最优比对的经典框架是动态规划(dynamic programming)。全局比对(global alignment)要求两条序列从头到尾全部参与,由 Needleman 与 Wunsch 于 1970 年提出:以 F(i, j) 记“x 的前 i 位与 y 的前 j 位的最优比对得分”,则 F(i, j) 只依赖三个更小的子问题 F(i−1, j−1)、F(i−1, j)、F(i, j−1),按行列填满整张表后回溯即得最优比对(Needleman & Wunsch, 1970)。局部比对(local alignment)由 Smith 与 Waterman 于 1981 年给出:在递推式中增加取 0 的一支,使比对可以在任意位置开始与结束,最终只保留整张表中得分最高的一条路径(Smith & Waterman, 1981)。局部比对对应数据库检索的常态——查询与库序列往往只有一段同源,例如只共享一个结构域,强迫首尾对齐的全局比对反而会被无关区段淹没。仿射空位罚分需要三条并行的递推线,复杂度量级不变(Gotoh, 1982)。无论全局还是局部,填表需要约 m×n 个格子、每格常数次比较,故时间与空间均为 O(mn)。
动态规划为何保证最优。关键在于最优子结构:考察“x[1..i] 与 y[1..j] 的最优比对”的最后一列,它只有三种可能——xi 对 yj(对角线而来)、xi 对空位(自上而来)、yj 对空位(自左而来)——三种情形穷尽了一切比对,且除去最后一列后剩下的必然是同类子问题的一个比对。按 i、j 从小到大填表,每个格子取三种可能的最大值,故由数学归纳法,每个格子都是该子问题的严格最优值;到达 (m, n) 时即得全局最优。与后面 BLAST 的启发式不同,动态规划不依赖“好比对通常含有精确短匹配”之类的假设,它是对解空间的一次完备划分,保证找到给定打分体系下的最优解——代价正是 O(mn) 的计算量。
把这笔账具体化:一条 500 aa 的查询对总计 109 aa 残基的数据库做逐条 Smith–Waterman,需要约 5×1011 次格子更新。精确算法在离线比对两条指定序列时毫无问题,却撑不起“任何实验室随时提交一条序列、数秒内得到结果”的在线检索。理论与工程之间的这道缺口,由下一小节的启发式填补。
2.6.2 BLAST:种子—扩展的启发式加速
BLAST(基本局部比对搜索工具)(Basic Local Alignment Search Tool)(Altschul et al., 1990)建立在一条生物学直觉之上:一段足够显著的同源片段,几乎总是含有若干短而无空位的精确匹配。据此它把检索分成两步,即种子—扩展(seed-and-extend)策略。
第一步播种:把查询序列切成所有长度为 k 的字(word)(核酸缺省 k = 11,蛋白缺省 k = 3),在数据库序列中快速定位完全相同的字;对蛋白还进一步考虑邻字(neighborhood words)——凡与查询字比对得分不低于阈值 T 的所有 k 字(按替换矩阵计)都算作潜在种子,例如一个三肽字通常能展开出数十个邻字。T 越小,种子越多、敏感性越高而速度越慢。第二步扩展:从每个种子出发沿两个方向作无空位延伸并逐列累加分数,一旦累计分从已经达到的峰值跌落超过阈值 X(X-drop)即停止——分数一旦跌落过深便几乎不可能回升,继续延伸只是浪费。扩展后仍达标的局部比对称为高分片段对(high-scoring segment pair, HSP),即 BLAST 的基本产出(图 2.6-1)。1997 年的 gapped BLAST 改为先以“同一链上相距有限的两个种子”触发、再作带空位的最终比对,并把逐条序列的统计折算得更精细,在提高速度约三倍的同时降低了假命中率(Altschul et al., 1997)。启发式的代价是明确的:BLAST 不保证找到最优比对,它以放弃理论最优换取数千倍的提速;在绝大多数检索场景中,这一交换是划算的。
BLAST 的第二重贡献是给每个 HSP 配上严格的统计。Karlin 与 Altschul 证明:在随机序列背景下,无空位局部比对的最高得分服从极值分布,由此可以算出得分不低于 S 的命中按期望会出现多少个(Karlin & Altschul, 1990):
式 (2.6-2) 的解读必须紧扣“期望计数”这一含义:E = 0.001 表示纯靠巧合也能在千次检索中期望撞出一次这么高分的命中,通常可以认真对待;E = 10 则表示这个分数在随机背景下本来就该出现约十次,没有意义。常用的工作阈值:严格的功能推断取 E < 10−5,一般注释取 E < 10−3,粗筛可放宽到 E < 0.05,但必须与一致性、覆盖率合读。还应注意 E 值是相对于检索规模的:同一命中在扩大 100 倍的数据库中 E 值约增大 100 倍——数据库越大,巧合越多,这正是公式的直观内容。
E 值不是 P 值。E 是期望计数,可以大于 1(E = 10 意为随机背景下期望有 10 个这样的命中);P 值则是“至少出现一个不低于此分的命中”的概率,上限为 1。两者由 P = 1 − e−E 相联系:E 远小于 1 时二者几乎相等(如 E = 0.01 对应 P ≈ 0.00995),所以在小值区域常被混用;但 E ≥ 1 时差异巨大,读文献与报告结果时应分清。BLAST 输出报告的是 E 值。
式 (2.6-2) 中得分 S 与参数 λ、K 耦合,使不同打分体系之间、不同规模检索之间的原始得分不可直接比较。为此把 λ 与 K 吸收进得分定义,得到位得分(bit score):
习题 2.6-1
同一次 blastp 检索(同一查询、同一数据库)得到四个命中:甲 E = 3×10−40,位得分 148;乙 E = 0.002,位得分 43;丙 E = 5,位得分 26;丁 E = 4×10−4,位得分 50。(1) 按统计显著性从高到低排序;(2) 哪些命中可以作为功能推断的依据;(3) 若换用扩大 100 倍的数据库重检,排序、阈值判断与位得分各如何变化?
参考解答(1) 甲 > 丁 > 乙 > 丙。E 越小越显著;同一检索内 E 值与位得分单调一致(位得分 148 > 50 > 43 > 26)。(2) 甲(E ≪ 10−5)可靠;丁(E < 10−3)可作为功能提示,但须核对覆盖率与一致性;乙处于灰区(E < 0.05 而未达 10−3),只能算线索;丙(E = 5 > 1)在随机背景下期望就会出现 5 次,无统计意义。(3) 数据库扩大 100 倍后各命中 E 值约增大 100 倍(丁变为约 0.04,跌出常用阈值;甲仍极显著),排序不变;位得分完全不变——位得分与数据库规模无关,这正是它存在的意义。
2.6.3 数据库搜索的实践:程序、参数与规范
BLAST 不是一个程序而是一个家族,五个成员按“查询与数据库各是核酸还是蛋白”划分;核酸库的六个阅读框可以在检索时动态翻译,从而使核酸查询直接接受蛋白层面的证据(表 2.6-1)。
| 程序 | 查询序列 | 数据库 | 典型用途 |
|---|---|---|---|
| blastn | 核酸 | 核酸 | 把读段或片段定位到参考基因组、验证拼装归属、鉴定扩增子;近缘序列可用加大字长的 megablast 模式 |
| blastp | 蛋白 | 蛋白 | 为新预测的蛋白找同源、推断功能与直系同源关系,检索时以 BLOSUM62 等矩阵计分 |
| blastx | 核酸(翻译) | 蛋白 | 无注释的基因组 contig 或 EST 读段直接对蛋白库检索,同时获得编码方向与阅读框线索,是草图基因组注释的主力 |
| tblastn | 蛋白 | 核酸(翻译) | 用已知蛋白在新测序物种的基因组中“钓”对应基因,识别直系同源序列乃至假基因 |
| tblastx | 核酸(翻译) | 核酸(翻译) | 两条核酸之间的远缘比较,核苷酸层面已发散而蛋白层面仍有信号时的补充手段 |
实践中的另一个要点是对低复杂度区域(low-complexity region)的处理。胶原的甘氨酸—脯氨酸重复、卫星序列、富 Alu 区段等不携带多少特异性信息,却极易制造虚高得分,把毫不相干的序列“粘”在一起。BLAST 缺省以 SEG(蛋白)与 DUST(核酸)算法把这类区段遮蔽为 X 或 N 再行检索;解读结果时应留意比对图中被遮蔽的片段——一段看似漂亮的命中若主要落在遮蔽区,其证据价值应大打折扣。
最后是学术写作中的引用与报告规范。BLAST 是一套参数体系:矩阵与空位罚分、字长与邻字阈值、E 值阈值、过滤选项乃至数据库的版本,都会影响结果。报告检索结果时应给出程序名称与版本、数据库及版本(或访问日期)、关键参数设置和命中的具体位置( accession 与坐标区间),以保证可重复。引用时应当引算法原文——用 BLAST 引 Altschul 等(1990、1997),提到全局或局部最优比对引 Needleman 与 Wunsch(1970)和 Smith 与 Waterman(1981),用 BLOSUM 矩阵引 Henikoff 与 Henikoff(1992)——而不是只给出网站地址。这既是学术溯源的要求,也使方法链条可以被后来的读者完整检查。
习题 2.6-2
为下列场景各选择一个最合适的 BLAST 程序,并说明理由:(1) 一段无注释的新基因组 contig,希望尽快知道其中蛋白编码基因的功能线索;(2) 已知一个人源蛋白激酶,想在某新测序的鱼类基因组中找它的对应基因;(3) 鉴定一条 16S rRNA 扩增子序列的物种归属;(4) 用一条可能含测序错误与移码的 EST 读段在蛋白库中搜寻远缘同源。
参考解答(1) blastx:把核酸查询六框翻译后对蛋白库检索,无需先知道基因位置与阅读框即可获得蛋白层面的功能线索。(2) tblastn:以蛋白为查询、对翻译后的基因组库检索,容许基因组序列尚未拼装完美,是跨物种“钓”直系同源的标准做法。(3) blastn:核酸对核酸,序列保守且近缘,直接精确匹配即可;可适当放宽字长与错配参数以覆盖不同属。(4) blastx:翻译后检索把读段错误分散到氨基酸层面,且能在不同阅读框中找到同源片段,对移码与错误最不敏感。
2.6.4 比较基因组学:直系、旁系与同线性
当比较的对象从两条序列扩展到两个基因组,必须先把“同源”这个词拆开,因为它对应两种不同的事件。
直系同源(ortholog):因物种形成事件而分开的同源基因,如人与小鼠各自的 β-珠蛋白基因;旁系同源(paralog):同一谱系内因基因复制而产生的同源拷贝,如人 α-珠蛋白与 β-珠蛋白基因簇。二者统称同源。相对某一物种形成事件,复制发生在其之后的旁系拷贝称 in-paralog(物种间仍近似一对一),发生在其之前的称 out-paralog(跨物种形成多对多对应)(Sonnhammer & Koonin, 2002)。功能推断的默认经验规则:直系同源通常保持相同功能,旁系同源常经亚功能化或新功能化而分工——因此注释新基因时优先寻找直系同源。
直系同源的推断在算法上并不容易,因为复制与基因丢失会把“最像”与“对应”搅在一起。最简单的方法是最佳命中互惠(reciprocal best hit, RBH):若物种 A 的基因 a 在物种 B 的蛋白组中的最佳命中是 b,而 b 反过来在 A 中的最佳命中恰是 a,则推断 a 与 b 为直系同源。RBH 简单快速,是快速注释的常用手段,但一旦基因家族在某一谱系发生过扩张,旁系拷贝可能恰好比真正的直系拷贝更相似而被误判。全基因组规模的方法转而把所有种内、种间相似关系连成一张图再行聚类:COG 数据库以多物种间的最佳命中传递关系聚类原核基因(Tatusov et al., 2001),OrthoMCL 以种内种间同源图配合 MCL 图聚类处理真核基因家族(Li et al., 2003)。它们的共同思想是把直系/旁系判定从孤立的“两两比较”提升为跨物种基因家族的系统关系问题,从而部分抵消家族扩张带来的误导。
在基因次序的层面,比较还有更大尺度的结构信号。相关物种的基因组往往整段整段地保留着基因次序与方向的保守性,称为同线性(synteny);一段内部次序基本一致的区段称为共线性区块(collinear block)。人与小鼠约 7 500 万年前分化,小鼠基因组计划的首篇比较分析仍能将两个基因组对应地切成 300 余个(约 340 个)大尺度保守同线区块,覆盖基因组的大部分(Waterston et al., 2002)。考察同线性的标准可视化是点阵图(dot plot):把两个基因组分别放在横轴与纵轴上,在每一对同源位置打一个点(图 2.6-2)。连续的对角线就是同线区块;对角线的中断处(断点)对应分化以来发生的染色体重排——倒位、易位或断裂;方向相反的反向斜线提示一次倒位;主对角线之外的零散灰点则多是旁系同源或重复序列的相似。点阵图因此是全基因组比较的第一张图,读图即读重排历史。
同线性的价值在于它把功能推断从“序列相似”升级为“位置同源”。一个功能未知的基因若恰好落在两个物种互相保守的同线区块中、且其上下游邻居也彼此对应,则其注释的可信度显著高于单凭序列相似;反过来,两个物种同线断裂的分布本身就是一份重排事件的编年记录,可用来重构祖先染色体的结构。比较基因组学由此成为注释流程的放大器:序列层面的 BLAST 找到候选同源基因,结构层面的同线性为它们提供位置证据。
习题 2.6-3
设物种 X 与物种 Y 在 5 000 万年前分化。(1) 分化之后,X 中的基因 g 经复制产生 g1 与 g2。写出 g1 与 g2 的关系、g1 与 Y 中未复制的对应基因 g′ 的关系,并指出 g1 与 g2 相对 X–Y 分化事件属于哪一类旁系同源。(2) 若复制发生在分化之前,X 与 Y 中都同时保留了 g 与 h 两个拷贝,那么 X 中的 g 与 Y 中的 h 是什么关系?X 中的 g 与 Y 中的 g 呢?(3) 某注释流程把 Y 中 h 的实验功能直接转赋给 X 中的 g,这一做法的风险何在?
参考解答(1) g1 与 g2 互为旁系同源(复制产生),且相对 X–Y 分化事件为 in-paralog(复制发生在种化之后);g1 与 g′ 为直系同源(它们的最近共同祖先恰经历 X–Y 物种形成事件),属于“一对多”的直系对应关系。(2) X.g 与 Y.h 为旁系同源,且为 out-paralog(复制先于种化);X.g 与 Y.g 才是直系同源。(3) 功能转移的默认安全对象是直系同源;向 out-paralog 转移功能等于假设两次独立的基因丢失史恰好保住了对应拷贝,而旁系拷贝在分化后各自积累了分工乃至新功能化的改变,h 的功能未必代表 g 的功能。稳妥的做法是结合 RBH/聚类推断与同线性位置证据再下结论。
2.6.5 保守性与功能元件的发现
比较基因组学还有一条威力强大的推理路径,出发点是一个群体遗传学事实:不承担功能的序列在中性漂变下以大致恒定的速率自由积累替换,而承担功能的序列因净化选择而进化受限。于是在适当选择的物种距离上,“比中性背景更保守”本身就成了功能的证据。物种距离的选择是一门折中艺术:太近(如人–黑猩猩)中性背景尚未发散,几乎处处“保守”,无从分辨;太远则连功能性同源也已饱和。人与鼠是经典组合——中性位点自分化以来平均已置换约 0.5 次,中性背景已充分发散,而功能元件依然醒目。
在基因调控层面,这一思想发展为系统发育足迹法(phylogenetic footprinting):对一组物种中同一基因的旁侧非编码区做多重比对,跨物种保守出现的短 motif 多为转录因子结合位点等调控元件。编码区有密码子结构可循,而裸露的非编码背景上,保守性几乎是我们赖以辨认调控信号的唯一通用线索。全基因组尺度的同类比较揭示了大量保守非编码序列(conserved noncoding element, CNE):它们不编码蛋白、却保守得异乎寻常,且在基因组中富集于发育调控基因附近,其中相当一部分经报告基因实验验证为增强子。
Sonic hedgehog 的远程肢体增强子。发育信号分子基因 SHH 的一个关键增强子(文献中称 ZRS)并不位于 SHH 基因附近,而是落在约 1 Mb 之外、毫无功能关联的 LMBR1 基因的内含子中;它从鱼类到哺乳动物高度保守,突变可破坏肢体发育(如前轴多指症),而其缺失或易位同样引起肢体表型(Lettice et al., 2003)。这一案例定性地说明两件事:调控元件可以距离靶基因极远,“就近注释”会漏掉它们;而跨物种保守性搜索恰能把这类元件从浩瀚的非编码背景中识别出来——这正是 CNE 作为调控元件预言者的价值。
保守性逻辑的极端情形是所谓超保守元件:人、小鼠与大鼠三个物种间长达 200 bp 以上完全一致的片段有 480 余段,多位于调控区与发育基因附近(Bejerano et al., 2004)。如此长度的严格不变远超蛋白编码的需要,提示尚待完全阐明的强功能约束,至今仍是比较基因组学的著名谜题。本节的三层工具——序列层面的同源检索、结构层面的同线性、功能层面的保守性证据——共同把“比较”变成了基因组注释与发现的通用方法;下一章(第 3 章)将把比较的对象从物种之间转向同一物种的个体之间,进入 SNP 与变异的讨论。
关键术语
- 同源性 (homology)
- 两条序列源自共同祖先的历史关系,质性判断;与可度量的相似性严格区分。
- 直系同源 (ortholog)
- 因物种形成事件而分开的同源基因,通常保持相同功能,功能推断的首选对象。
- 旁系同源 (paralog)
- 同一谱系内因基因复制产生的同源拷贝,常经亚功能化或新功能化发生分工。
- 仿射空位罚分 (affine gap penalty)
- 空位计分 d + e·L:开放罚分 d 计一次、延伸罚分 e 逐位计,反映一次事件常涉及多碱基。
- 替换矩阵 (substitution matrix)
- 以观测替换频率对背景频率之比(log-odds)给出的残基对计分表,如 PAM 与 BLOSUM62。
- 动态规划 (dynamic programming)
- 利用最优子结构逐格填表求最优比对的方法,Needleman–Wunsch 全局与 Smith–Waterman 局部,复杂度 O(mn)。
- 高分片段对 (high-scoring segment pair, HSP)
- BLAST 由种子扩展得到的高分无空位(或最终带空位)局部比对,检索的基本产出。
- E 值 (E-value)
- 随机背景下得分不低于此的期望命中条数,E = Kmn·e^(−λS);期望计数而非概率。
- 位得分 (bit score)
- 吸收参数 λ、K 后的标准分,与数据库规模无关,使不同检索的命中可相互比较。
- 同线性 (synteny)
- 相关物种基因组间基因次序(常含方向)的保守性;点阵图上表现为对角线区块。
- 系统发育足迹法 (phylogenetic footprinting)
- 以多物种非编码区多重比对中保守的 motif 预示转录因子结合位点等调控元件。
- 保守非编码序列 (conserved noncoding element, CNE)
- 强保守而不编码的区段,富集于发育基因附近,多数证据指向增强子等调控功能。
参考文献与延伸阅读
- Needleman SB, Wunsch CD. 1970. A general method applicable to the search for similarities in the amino acid sequence of two proteins. Journal of Molecular Biology 48: 443–453.
- Smith TF, Waterman MS. 1981. Identification of common molecular subsequences. Journal of Molecular Biology 147: 195–197.
- Gotoh O. 1982. An improved algorithm for matching biological sequences. Journal of Molecular Biology 162: 705–708.
- Henikoff S, Henikoff JG. 1992. Amino acid substitution matrices from protein blocks. Proceedings of the National Academy of Sciences USA 89: 10915–10919.
- Altschul SF, Gish W, Miller W, Myers EW, Lipman DJ. 1990. Basic local alignment search tool. Journal of Molecular Biology 215: 403–410.
- Karlin S, Altschul SF. 1990. Methods for assessing the statistical significance of molecular sequence features by using general scoring schemes. Proceedings of the National Academy of Sciences USA 87: 2264–2268.
- Altschul SF, Madden TL, Schäffer AA, et al. 1997. Gapped BLAST and PSI-BLAST: a new generation of protein database search programs. Nucleic Acids Research 25: 3389–3402.
- Tatusov RL, Natale DA, Garkavtsev IV, et al. 2001. The COG database: new developments in phylogenetic classification of proteins from complete genomes. Nucleic Acids Research 29: 22–28.
- Li L, Stoeckert CJ Jr, Roos DS. 2003. OrthoMCL: identification of ortholog groups for eukaryotic genomes. Genome Research 13: 2178–2189.
- Sonnhammer EL, Koonin EV. 2002. Orthology, paralogy and proposed classification for paralog subtypes. Trends in Genetics 18: 619–620.
- Waterston RH, Lindblad-Toh K, Birney E, et al. 2002. Initial sequencing and comparative analysis of the mouse genome. Nature 420: 520–562.
- Lettice LA, Heaney SJ, Purdie LA, et al. 2003. A long-range Shh enhancer regulates expression in the developing limb bud and is associated with preaxial polydactyly. Human Molecular Genetics 12: 1725–1735.
- Bejerano G, Pheasant M, Makunin I, et al. 2004. Ultraconserved elements in the human genome. Science 304: 1321–1325.
- Gibson G, Muse SV. 2009. A Primer of Genome Science, 3rd ed. Sunderland (MA): Sinauer Associates. (Chapter 2)