地球上各个分支的生物都包含染色体序列,生物信息学可以方便地将这样的一条碱基序列录入电脑中进行研究。参考基因组作为坐标系统来定位所有我们需要描述的东西。通过线性染色体序列的区域关联很多类型的基因组数据,例如基因模块,变异的位置等等。
指定染色体的一个区域需要指定3个信息:
- 染色体名:每个基因组都包含一系列的染色体,需要指定我们说的是哪一条。不幸的是没有一个统一的命名模式,不同的数据与不同的版本可能采用不同的说法,有可能是:"chr22",“12”, "chrX",“MT”,“scaffold_1648”等等。
- 范围:一组起点与终点坐标,例如112,333,444到222,333,444
- 链:分为正义链与反义链,染色体体由两条互补的碱基序列组成。很多特征是链特异的,例如蛋白编码基因只有在某一条链上才有生物学意义。
注意,使用基因组坐标系统的时候一定要注意数据的版本,人类参考基因组序列一直在完善,不同版本间的碱基位置可能完全不同。
基因组坐标第2个令人头疼的地方在于坐标起始位置的编号。有的数据采用基于0起始,前闭后开(例如[2,3),包含2不包含3),而有的采用基于1起始,闭区间(例如[2,3],2和3都包括)(见下图)
两种编号方式都有其优点,例如使用0为起点更好计算序列的长度(终止位置- 开始位置,而使用1为起点则是:终止位置-开始位置+1),使用1作为起点更符合我们的直觉。
对于字符串来说Python采用的是0起点,而R采用的是1起点。基于0的[1,5)与基于1的[2,5]是一致的区域:
# python
>>> "CTTACTTCGAAGGCTG"[1:5]
'TTAC'
# R
> substr("CTTACTTCGAAGGCTG", 2, 5)
[1] "TTAC"
下表给出了不同的文件采用的编号起始数字,使用的时候多加注意: