aibiology

Artificial intelligence in biology

0%

基因组坐标系统0-based和1-based

基因组坐标系统

基因组文件各式各样,但是主要呈现的还是序列的相关信息;但是各类注释文件采用的坐标系统却存在差异, 0-based和1-based坐标均被使用。在计算机中,不同计算机语言对字符串索引采用的规则也存在0-based和1-based, 因此,选择正确的索引规则会影响着序列处理的准确性。 常用的基因组文件格式如下: file format

  • 0-based: 0 1 2 3 4 (UCSC, BED, bedGraph, narrowPeak, BAM)

  • 1-based: 1 2 3 4 (NCBI, Ensembl, GFF, GTF, VCF, SAM, wiggle)

  • sequence: A T C G

0-based文件第一个碱基前面的间隔为0,第二个间隔为1,依次类推,数字记录的是碱基之间的间隔的顺序。
1-based文件第一个碱基为1, 第二个碱基为1,依次类推,数字记录的碱基本身的顺序。

索引

序列\(ATCG\)\(TC\)的索引坐标分别为

1
2
3
4
5
6
7
$ # 索引坐标
$ 0-based: [1, 3) # 左闭右开
$ 1-based: [2, 3] # 左闭右闭
$
$ # 长度计算
$ 0-based: 3 - 1 = 2 # stop - start
$ 1-based: 3 - 2 + 1 = 2 # stop - start + 1
## 计算机语言

不同的计算机语言对字符串的索引不同。

1
2
3
4
5
6
7
$ # C C++ Python Java 等语言字符串/数组索引采用0-based
$ string = 'ATCG'
$ s1 = string[1:3] # TC
$ s2 = string[0:2] # AT
$ # length
$ len(s1) == 3 - 1 # True
$ len(s2) == 2 - 0 # True
1
2
3
4
5
6
$ # R Matlab Julia COBOL等语言字符串/数组索引采用1-based
$ string <- 'ATCG'
$ # substr(string, start, end)
$ substr(string, 1, 3) # ATC
$ nchar(s3) == 3 - 1 + 1 # TRUE

0-based/1-based 转化

0-based --> 1-based, start+1, stop保持不变

1-based --> 0-based, start-1, stop保持不变

UCSC