当我们对vcf的数据标准化,往往会涉及hg19向hg38坐标的转换。
使用的工具基本是liftOver
输入也很方便:
- 需要转换的坐标,bed文件
- 构建好的over chain文件(也可以自己使用lastz制作)
但是当我使用时候会发现对snp的坐标转换会出现问题:
chr12 12870910 12870910
chr2 99013489 99013489
chr11 107966268 107966268
chr2 172309702 172309702
chr18 50683792 50683792
由于bed文件是0-based的所以不支持单一位置。但是我的问题是既然要求的输入是bed格式,那坐标到底是以0为首位还是以1呢?
因为这涉及到我转换的方式:
switch (首坐标){
case 以0为第一位:start-1
case 以1为第一位:end+1
}
所以我进行了如下测验:
#maf with hg19
#48295477 48295477 + missense_variant Missense_Mutation SNP T
liftOver <(echo -e "chr16\t48295477\t48295478") hg19ToHg38.over.chain.gz t.map t.unmap
#chr16 48261566 48261567
facut <(echo -e "chr16\t48261565\t48261567") GRCh38_perChr/chr16
#>chr16:48261565-48261567
#GTC
可以看出使用end+1的方式,得到的48295477对应hg38的48261566 。而48261566的前后均不是T碱基,因此没有歧义
所以虽然输入是bed文件,但是liftover处理的数据还是以1为首坐标的~