Tool: Converting Genome Coordinates From One Genome Version To Another (Ucsc Liftover, Ncbi Remap, Ensembl Api)
gravatar for Malachi Griffith
7.9 years ago by
Washington University School of Medicine, St. Louis, USA
Malachi Griffith18k wrote:

Some recent posts reminded me that it might be useful for us to review the options for converting between genome coordinate systems.

This comes up in several contexts. Probably the most common is that you have some coordinates for a particular version of a reference genome and you want to determine the corresponding coordinates on a different version of the reference genome for that species. For example, you have a bed file with exon coordinates for human build GRC37 (hg19) and wish to update to GRCh38. By the way, for a nice summary of genome versions and their release names refer to the Assembly Releases and Versions FAQ

Or perhaps you have coordinates of a gene and wish to determine the corresponding coordinates in another species. For example, you have coordinates of a gene in human GRCh38 and wish to determine corresponding coordinates in mouse mm10.

Finally you may wish to convert coordinates between coordinate systems within a single assembly. For example, you have the coordinates of a series of exons and you want to determine the position of these exons with respect to the transcript, gene, contig, or entire chromosome.

There are now several well known tools that can help you with these kinds of tasks:

  1. UCSC liftOver. This tool is available through a simple web interface or it can be downloaded as a standalone executable. To use the executable you will also need to download the appropriate chain file. Each chain file describes conversions between a pair of genome assemblies. Liftover can be used through Galaxy as well. There is a python implementation of liftover called pyliftover that does conversion of point coordinates only.

  2. NCBI Remap. This tool is conceptually similar to liftOver in that in manages conversions between a pair of genome assemblies but it uses different methods to achieve these mappings. It is also available through a simple web interface or you can use the API for NCBI Remap.

  3. The Ensembl API. The final example I described above (converting between coordinate systems within a single genome assembly) can be accomplished with the Ensembl core API. Many examples are provided within the installation, overview, tutorial and documentation sections of the Ensembl API project. In particular, refer to these sections of the tutorial: 'Coordinates', 'Coordinate systems', 'Transform', and 'Transfer'.

  4. Assembly Converter. Ensembl also offers their own simple web interface for coordinate conversions called the Assembly Converter.

  5. Bioconductor rtracklayer package. For R users, Bioconductor has an implementation of UCSC liftOver in the rtracklayer package. To see documentation on how to use it, open an R session and run the following commands.


  6. CrossMap. A standalone open source program for convenient conversion of genome coordinates (or annotation files) between different assemblies. It supports most commonly used file formats including SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF. CrossMap is designed to liftover genome coordinates between assemblies. It’s not a program for aligning sequences to reference genome. Not recommended for converting genome coordinates between species.

  7. Flo. A liftover pipeline for different reference genome builds of the same species. It describes the process as follows: "align the new assembly with the old one, process the alignment data to define how a coordinate or coordinate range on the old assembly should be transformed to the new assembly, transform the coordinates."

  8. Picard Liftover VCF. Lifts over a VCF file from one reference build to another. This tool adjusts the coordinates of variants within a VCF file to match a new reference. The tool is based on the UCSC liftOver and uses a UCSC chain file to guide its operation.

ADD COMMENTlink modified 25 days ago by zlbio120 • written 7.9 years ago by Malachi Griffith18k

CrossMap is a program for convenient conversion of genome coordinates between assemblies. It supports most commonly used file formats including SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF.

ADD REPLYlink written 7.2 years ago by wangliguo7890

neat tool, should add this to my toolbelt

ADD REPLYlink written 7.2 years ago by Istvan Albert ♦♦ 86k

By default i use liftOver and haven't really ever considered using the other offering, so thanks for the summary. I wonder, at least for the common genomes like hg19 or mm9, whether anyone has tested to see whether any of the tools outperform the others. I know UCSC uses "chains", but presumably the other methods differ.

ADD REPLYlink written 7.9 years ago by Ian5.7k

Thanks for summarizing these. We need to start linking to this post when this question pops up again.

ADD REPLYlink modified 7.9 years ago • written 7.9 years ago by Istvan Albert ♦♦ 86k

I'll just add that for R/Bioc users, the rtracklayer has an implementation of liftOver, but it is native to R, so the UCSC liftOver tool is not needed directly. The Bioc version is said to be faster than the UCSC version, but I have not tested this myself.

ADD REPLYlink modified 7.9 years ago • written 7.9 years ago by Sean Davis26k

Thanks. I have now added a brief intro to this in the original post.

ADD REPLYlink written 7.9 years ago by Malachi Griffith18k

Thanks for informative post

ADD REPLYlink modified 4.6 years ago • written 5.8 years ago by morteza.mahmoudisaber80

Thanks for the informative post, I wanna convert SNPs file for maize from V2 to V3. How can I create the chain file to perform this conversion?

ADD REPLYlink written 4.7 years ago by Medhat8.8k

Did you find a way to create the chain file? Thanks!

ADD REPLYlink written 18 months ago by Gabriel40

No, But I contacted the Maize database and they send it to me.

ADD REPLYlink written 18 months ago by Medhat8.8k

We've recently posted the segment_liftover tool to biorxiv The name is rather descriptive of aim & methodology (the paper has a bit more :-) ).

ADD REPLYlink written 2.9 years ago by mbaudis10

rtracklayer's description seems incomplete.

ADD REPLYlink written 4.9 years ago by Anurag Priyam40

With the release of hg38 need to revisit contents of this post!! :)

ADD REPLYlink written 4.9 years ago by manojkumar_bhosale70

I have updated the example, but it should be noted that the majority of these tools generically support all major builds for multiple species (not just human). When a new build comes out, the "chain" files that explain how to convert to/from that build are usually released soon after.

ADD REPLYlink written 3.4 years ago by Malachi Griffith18k

Any updates? I'm trying to find a reliable tool fr cross-species mapping. Unfortunately I can;'t find a bench mark on the tools that are out there. Suggestions welcome.

ADD REPLYlink written 3.6 years ago by YaGalbi1.5k

Hey! did you find anything? I have a still unpublished assembly that I used to align, map and annotate my Seq data, and would need to have the zebra-finch ref assembly converted to its coordinates, so that I can use the zebra finche as my ref in my evo analysis. :/

ADD REPLYlink written 2.8 years ago by madzayasodara0

Can I use this liftover to map co-ordinates between bacterial subspecies? My aim is to do an integrative analysis of certain public RNA-seq data available for a particular bacterial species S. aureus. But each experiment are done in different strains/subspecies.

What I plan to do is to align the reads to their respective reference genomes, and for further analysis, create an annotation file (GFF/GTF) - based on one of the selected subspecies (chosen "target" for lift over) and combine it with the mapped annotation of other subspecies ("source" for lift over).

Is this procedure right? Or are there any other alternatives? I do not wish to do all RNA-seq analysis separately and then simply compare the results of differential expressed gene lists.

ADD REPLYlink written 3.3 years ago by devikaparvathy40

Hello, thankyou for the amazing work compiling all these different tools.

For what I got, most of this tools work well between different assembly versions (let's say 37 vs 38), BUT if I want to compare data within the same assembly but different releases do you have any suggestion of the best approach? I need to compare data from mouse assembly 38, ensembl release 73 with the latest release - Ensembl 90. I have the transposon data with the coordinates of the hit and information about the genome region it hit (gene X/intergenic) Thank you !

ADD REPLYlink written 3.2 years ago by mgdias.jose10

converting coordinates across assemblies is the easy bit. That is the basic function of most of these tools.

ADD REPLYlink written 3.2 years ago by YaGalbi1.5k

My problem here is that I want to make comparisons within the same assembly, but just different releases. And for that none of these tools will work. Or is there any way to do it?

Thank you !

ADD REPLYlink written 3.2 years ago by mgdias.jose10

What exactly is it that you want to compare? What difference are you hoping to show between releases?

Have you taken a look at Ensembl Biomarts archive?

ADD REPLYlink written 3.2 years ago by YaGalbi1.5k

I have transposons data organised in the following manner (txt)

chr start end hit 1 111 130 geneXXX 2 1546 1867 intergenic 3 123 234 geneYYY

this is for the assembly 38, Ensembl release 73.

I want to compare it now with the release 90 of Ensembl to confirm if the hits of the transposon are still accurate with most updated version. (e.g. to know if the transposon on chr 2 is still hitting on an intergenic region or if that region is now attributed to a gene. Or if the region in chr 3 where my transposon hit is still annotated as geneYYY and so on.


ADD REPLYlink written 3.2 years ago by mgdias.jose10

Comparing annotations within the same assembly (which is what you are asking, I think) is a problem unrelated to converting genomic coordinates. I'd suggest asking a new question, taking care to describe specifically what you want to do.

ADD REPLYlink written 3.2 years ago by Sean Davis26k

Thanks for this summary list

ADD REPLYlink written 2.7 years ago by gsr9999140

Anybody knows whether any of these tools can be used to convert hg19 to a denovo genome assembled coordinate?

ADD REPLYlink written 22 months ago by olechnwin30

Does anyone know if there is a tool to make the chain files required for all of these programs without relying on UCSC tools? It looks like every one depends on UCSC dependencies that you need to pay for if you aren't academic if you want to make a chain file for your own genome.

ADD REPLYlink written 3 months ago by bsaylor230

Nice summary, thanks. I have encountered a problem recently when trying to convert coordinates between GRCH38 and CRCH37 assemblies.

The problem is that, the tools sometimes give very unexpected conversions. Below is an example using liftover, which I have tested in both the UCSC web portal and the local standalone version.

The test SNP is rs138257042, which has the coordinate GRCH38 chr22:15528888 and GRCH37 chr22:16449075. When I converted it from the GRCH38 to the GRCH37 with the following input format chr22 15528888 15528889 rs138257042 through the following web portal I got the following unexpected output chr14 19378323 19378324 rs138257042

Obviously the converted coordinate is incorrect even to a different chromosome 14.

In some cases, the error is not so severe but is more difficult to identify. For example, SNP rs200923174 has a coordinate chr22:16287557 in the GRCH37 assembly. When liftover it using the following "bed" format input : chr22 16287557 16287558 rs200923174 and the chain file downloaded from here: Then the converted coordinate has the following "bed" output: chr22 15690404 15690405 rs200923174 The GRCH38 coordinate of this SNP is found to be 15690406 in the dbSNP, which has a 2-base difference with the liftovered one.

Because I rely on converted coordinate as a key to match genomic variants called from different assemblies, this would be a big issue for me.

I have tried another tool Remap, but the same issue exists. So, is there an excellent tool that is able to convert to the precise coordinate for EVERY given genomic variant, or I just misused tools? Many thanks for any suggestion.

ADD REPLYlink written 25 days ago by zlbio120

I just misused tools?

I think you are confused by 0 vs 1-based coordinate systems: Cheat Sheet For One-Based Vs Zero-Based Coordinate Systems

If you liftOver the following site from hg19 to hg38 :

SNP: rs200923174

  • hg19 - chr22:16287557-16287557


  • hg38 - chr22:15690406-15690406

Also specifically using your example of 57-58 still gives chr22:15690405-15690406 in hg38 using the UCSC online tool... Not sure where your discrepancy is coming from - maybe strand information?

ADD REPLYlink modified 25 days ago • written 25 days ago by benformatics2.0k
gravatar for Giovanni M Dall'Olio
7.1 years ago by
London, UK
Giovanni M Dall'Olio27k wrote:

This new tool seems to be interesting: Crossmap. It allows to convert many formats, like SAM and wiggle.

ADD COMMENTlink written 7.1 years ago by Giovanni M Dall'Olio27k

In fact Ensembl's tool uses CrossMap

ADD REPLYlink written 5.4 years ago by Eli Korvigo180
Please log in to add an answer.


Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 1978 users visited in the last hour