人类参考基因组(如 GRCh37 和 GRCh38)由国际基因组学研究社区定期更新,以改进基因组的完整性和准确性。每次更新可能会导致以下变化:
ꔷ 基因组序列的调整:添加或修订了某些区域的序列。
ꔷ 坐标系统的变化:基因的起始和终止位置可能会在新版本中被重新定义。
ꔷ 重复区域和伪基因的改进。
这导致不同研究使用的基因组版本可能不一致,需要一个工具在版本之间进行精确的坐标转换。LiftOver 是由 UCSC(加州大学圣克鲁兹分校)基因组学团队开发的一种工具,通过比对基因组序列,将一个参考基因组上的坐标(源版本)映射到另一个版本(目标版本)。它基于预先计算好的 链文件(chain file) 来实现:
ꔷ 链文件(Chain File):记录了源基因组和目标基因组之间的序列对应关系,包括删除、插入和重排信息。
ꔷ如 hg38ToHg19.over.chain.gz 是将 GRCh38 转换为 GRCh37 的链文件。
ꔷ 映射过程:LiftOver 将输入的基因组坐标与链文件比对,找到相应的匹配区域。如果匹配成功,返回目标基因组的坐标;若失败,记录为“未映射坐标”。
方法一:在线使用 UCSC LiftOver
1. 访问 UCSC LiftOver 网站
* 打开 UCSC LiftOver 在线工具:https://genome.ucsc.edu/cgi-bin/hgLiftOver
* 选择自己数据对应的物种、参考基因组版本和需要得到的物种和参考基因组版本
主要的参数说明:
1)Original Genome: 原始的物种基因组,有很多物种(human, mouse, dog等),这里选择Human
2)Original Assembly: 原始物种的基因组版本,根据需求选择,这里选择CRCh37/hg19
3)New Genome: 新的要转换的物种基因组,根据需求选择,这里选择Human
4)New Assembly: 新的要转换物种的基因组版本,根据需求选择,这里选择GRCh38/hg38
2. 准备输入文件
* 输入文件:bed文件格式,可以自行输入,也可以上传文件进行输入,这里输入测试的hg19的坐标文件
* 数据准备完成,点击Submit/Submit File提交,进行转换
主要的参数说明:
ꔷ 0-based坐标(0-based):在这种坐标系统中,第一个碱基的索引是 0。例如,序列的第一个碱基是第 0 位,第二个碱基是第 1 位,依此类推。常见的包括:UCSC Genome Browser、Ensembl、IGV、1000 Genomes、BED 文件
ꔷ 1-based坐标(1-based):在这种坐标系统中,第一个碱基的索引是 1,即序列的第一个碱基是第 1 位,第二个碱基是第 2 位,依此类推。常见的包括:NCBI Genome Browser、GENCODE、RefSeq、GTF/GFF 文件、GeneCards
3. 输出文件文件
方法二:LiftOver
1. 工具及注释文件的下载
# 工具下载
$ wget https://hgdownload.cse.ucsc.edu/admin/exe/linux.x86_64/liftOver
# 坐标注释文件下载
$ wget https://hgdownload.soe.ucsc.edu/gbdb/hg19/liftOver/hg19ToHg38.over.chain.gz
$ wget https://hgdownload.soe.ucsc.edu/goldenPath/hg38/liftOver/hg38ToHg19.over.chain.gz
2. LiftOver运行(以1000 Genomes Project Phase 3 数据“ALL.chr10.phase3_shapeit2_mvncall_integrated_v5b.20130502.genotypes.vcf.gz”为例)
# 整理成LiftOver的输入格式
$ bcftools query -f '%CHROM\t%POS\n' ALL.chr10.phase3_shapeit2_mvncall_integrated_v5b.20130502.genotypes.vcf.gz | awk '{print "chr"$1"\t"$2"\t"($2+1)}' > coords.bed
$ head coords.bed
## chr10 60494 60495
## chr10 60515 60516
## chr10 60523 60524
## chr10 60607 60608
## chr10 60684 60685
## chr10 60723 60724
## chr10 60753 60754
## chr10 60769 60770
## chr10 60803 60804
## chr10 60882 60883
$ /data/software/LiftOver/liftOver coords.bed /data/LiftOver/hg19ToHg38.over.chain.gz coords_hg38.bed unlifted_coords.bed
## Reading liftover chains
## Mapping coordinates
$ head coords_hg38.bed
## chr10 14554 14555
## chr10 14575 14576
## chr10 14583 14584
## chr10 14667 14668
## chr10 14744 14745
## chr10 14783 14784
## chr10 14813 14814
## chr10 14829 14830
## chr10 14863 14864
## chr10 14942 14943