Answers.Body: <p>Did you try the <a href="http://genome.ucsc.edu/cgi-bin/hgLiftOver" rel="nofollow noreferrer">liftOver</a> tool of UCSC? You'll need a BED file with your SNPs coordinates for this.</p>
  
  <p>You can also do this in <code>R</code> with <code>rtracklayer</code>.</p>
  
  <pre><code>library(rtracklayer)
  ?liftOver
  </code></pre>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-19T10:15:02.350Z
Answers.Text: There's no need to change the coordinates, the question is regarding the IDs themselves.
Answers.UserDisplayName: Devon Ryan
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-19T10:23:22.383Z
Answers.Text: What I have is a  list of dbSNP IDs. I have downloaded source("http://bioconductor.org/workflows.R") workflowInstall("liftOver"), but not sure if ths will accept just a list of IDs.
Answers.UserDisplayName: Rob John
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-19T11:29:08.030Z
Answers.Text: No it won't accept only rsIDs, so you'll need to get the coordinates first with e.g., biomaRt. Sorry I understood that you had coordinates of the SNPs.
Answers.UserDisplayName: benn
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-27T16:21:19.947Z
Answers.Text: Thanks @b.nota I was able to get coordinates from biomaRT.
Answers.UserDisplayName: Rob John
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-19T10:10:16.333Z
Answers.LastActivityDate: 2017-12-19T10:10:16.333Z
Answers.UserDisplayName: benn
Answers.Body: <p>You can assume that the overwhelming majority of rsIDs are the same between GRCh37 and GRCh38 (they're semi-stable IDs). There are, however, a number of rsIDs that are present only in GRCh37, which <a href="ftp://ftp.ncbi.nih.gov/snp/organisms/human_9606/known_issues/b150_rs_without_GRCh38_mapping.bcp" rel="noreferrer">you can find here</a>. Note that the format of this file is a bit strange, it's <code>chromosome|position|ID|weight</code>, where <code>position</code> is sometimes empty, <code>weight</code> is typically 1, and <code>ID</code> is the rsID without the <code>rs</code> prefix.</p>
  
  <p>Also, <a href="ftp://ftp.ncbi.nih.gov/snp/organisms/human_9606/known_issues/b150_rs_GRCh37_to_GRCh38_orientation_flip.bcp" rel="noreferrer">some rsIDs have a different strand</a>. This is less likely to be an issue for you, but it's there in case you need it.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-27T16:23:14.297Z
Answers.Text: Thanks so much @Devon Ryan for all the useful information.
Answers.UserDisplayName: Rob John
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-19T11:13:24.153Z
Answers.LastActivityDate: 2017-12-19T11:13:24.153Z
Answers.UserDisplayName: Devon Ryan
Answers.Body: <p>See also CrossMap:
  <a href="http://crossmap.sourceforge.net/" rel="nofollow noreferrer">http://crossmap.sourceforge.net/</a></p>
  
  <p>20, 21, 22, 23, 24, 30</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2017-12-19T10:26:32.193Z
Answers.LastActivityDate: 2017-12-19T10:26:32.193Z
Answers.UserDisplayName: Dan
Answers.Body: <p>These are only the base positions that have changed between GRCh37 and GRCh38, not the IDs. For example if a study (e.g. found via pubmed) refers to a particular rsID, the genome build does not matter.</p>
  <p>rsIDs do not depend on a reference genome. They point to a specified locus regardless of the differences in genomic assemblies. As a result, you cannot convert rsIDs of one genome build to rsIDs of another build. And there is no such mapping tool available, even if they pretend to be. rsIDs are assigned by dbSNP maintainers, and are stable. The numbers may only change on merge, where multiple numbers were assigned at the same genomic location, and the higher number gets merged into a lower number by the dbSNP maintainers, unless there is a very well-published, notable rsID mentioned in the press, in this case that merged number is considered the mentioned one, not the smaller one.</p>
  <blockquote>
  <p><a href="https://www.ncbi.nlm.nih.gov/snp/docs/RefSNP_about/" rel="nofollow noreferrer">RefSNP number is the stable accession regardless of the differences in genomic assemblies.</a></p>
  </blockquote>
  <p>For more information go to the “RefSNP Number Stability” section at <a href="https://www.ncbi.nlm.nih.gov/books/NBK21088/" rel="nofollow noreferrer">https://www.ncbi.nlm.nih.gov/books/NBK21088/</a></p>
  <p>The rsIDs may also be deleted in some cases see the following links on the explanation:</p>
  <ul>
  <li><a href="https://www.ncbi.nlm.nih.gov/books/NBK44467/#Build.i_found_rs123456_in_the_current_bu" rel="nofollow noreferrer">https://www.ncbi.nlm.nih.gov/books/NBK44467/#Build.i_found_rs123456_in_the_current_bu</a></li>
  <li><a href="https://www.ncbi.nlm.nih.gov/books/NBK44468/#Build.the__rscurrent_field_in_rsmergearc" rel="nofollow noreferrer">https://www.ncbi.nlm.nih.gov/books/NBK44468/#Build.the__rscurrent_field_in_rsmergearc</a></li>
  </ul>
  <p>Thus, specifying the location by rsID is stable, and can be only affected by an eventual merge or delete from the dbSNP database, if any, not by a new genome build. You can only “update” the rsIDs from time to time to make sure they all are the main rsID, not those larger numbers already merged to a smaller one. It should be noted that the base positions (offsets) of the same genomic location may change between the builds of the reference genome. And they did surely change between GRCh37 and GRCh38.</p>
  <p>If your list is relatively small, you can get most recent rsIDs for your chromosome and offset via dbSNP API. It is available at <a href="https://www.ncbi.nlm.nih.gov/snp/docs/eutils_help/" rel="nofollow noreferrer">https://www.ncbi.nlm.nih.gov/snp/docs/eutils_help/</a></p>
  <p>The query for the API is the same as for the “advanced search” of dbSNP at <a href="https://www.ncbi.nlm.nih.gov/snp/advanced" rel="nofollow noreferrer">https://www.ncbi.nlm.nih.gov/snp/advanced</a></p>
  <p>If you specify data in a “Base Position” line, it will look for GRCh38 base position. If you need to specify the base position for a GRCh37, use “Base Position Previous” line. You may also need to add <code>NOT MergedRS[All Fields]</code> to exclude rsIDs that have already been merged.</p>
  <p>For example, to get the rsID for a chromosome 1 GRCh37 base position 249222527, the API query URL is the following <a href="https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=snp&amp;term=1%5BChromosome%5D+AND+249222527%5BBase+Position+Previous%5D+NOT+MergedRS%5BAll+Fields%5D" rel="nofollow noreferrer">https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=snp&amp;term=1[Chromosome]+AND+249222527[Base+Position+Previous]+NOT+MergedRS[All+Fields]</a></p>
  <p>You can do queries from a script if the number of requests is relatively small. You may find a perl script, for example, that does the job.</p>
  <p>Even though the rsID numbers can be merged or deleted, and the changes are reflected in a new dbSNP database build, given the fact that the changes in numbers do not depend on the genome build, is better to always rely to the rsID number from the latest dbSNP database build.</p>
  <p>The changes in rsID numbers are changed due to merges or deletions between dbSNP builds relatively infrequently, given the total number of the IDs in the database.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2020-08-20T20:26:13.350Z
Answers.LastActivityDate: 2020-08-22T17:27:17.867Z
Answers.LastEditDate: 2020-08-22T17:27:17.867Z
Answers.UserDisplayName: Maxim Masiutin
Body: <p>I have a list of dbSNP rsIDs for GRCh37 and I want to convert them to the equivalent IDs in GRCh38. This is using the most recent dbSNP build (150 as of the time of this post). Is there any ID mapping available? If not, are there any tools I can use?</p>
  
Tags: <snp><plink><phylogenetics>
Title: Convert rs ID of one hg build to rs IDs of another build
ThreadText: # Convert rs ID of one hg build to rs IDs of another build
  
  (Asked by: username_0 on 2017-12-17)
  
  I have a list of dbSNP rsIDs for GRCh37 and I want to convert them to the equivalent IDs in GRCh38. This is using the most recent dbSNP build (150 as of the time of this post). Is there any ID mapping available? If not, are there any tools I can use?
  
  **Tags:** snp, plink, phylogenetics
  
  
  ---
  
  ## 4 answers
  
  ### Answer by username_1 on 2017-12-19. Score: 2 | Accepted answer
  
  Did you try the [liftOver](http://genome.ucsc.edu/cgi-bin/hgLiftOver) tool of UCSC? You'll need a BED file with your SNPs coordinates for this.
  
  You can also do this in `R` with `rtracklayer`.
  
  ```
  library(rtracklayer)
  ?liftOver
  
  ```
  
  > **Comments:**
  > **username_2**: There's no need to change the coordinates, the question is regarding the IDs themselves.  
  > **username_0**: What I have is a  list of dbSNP IDs. I have downloaded source("http://bioconductor.org/workflows.R") workflowInstall("liftOver"), but not sure if ths will accept just a list of IDs.  
  > **username_1**: No it won't accept only rsIDs, so you'll need to get the coordinates first with e.g., biomaRt. Sorry I understood that you had coordinates of the SNPs.  
  > **username_0**: Thanks @b.nota I was able to get coordinates from biomaRT.  
  
  ---
  
  ### Answer by username_2 on 2017-12-19. Score: 5
  
  You can assume that the overwhelming majority of rsIDs are the same between GRCh37 and GRCh38 (they're semi-stable IDs). There are, however, a number of rsIDs that are present only in GRCh37, which [you can find here](ftp://ftp.ncbi.nih.gov/snp/organisms/human_9606/known_issues/b150_rs_without_GRCh38_mapping.bcp). Note that the format of this file is a bit strange, it's `chromosome|position|ID|weight`, where `position` is sometimes empty, `weight` is typically 1, and `ID` is the rsID without the `rs` prefix.
  
  Also, [some rsIDs have a different strand](ftp://ftp.ncbi.nih.gov/snp/organisms/human_9606/known_issues/b150_rs_GRCh37_to_GRCh38_orientation_flip.bcp). This is less likely to be an issue for you, but it's there in case you need it.
  
  > **Comments:**
  > **username_0**: Thanks so much @username_2 for all the useful information.  
  
  ---
  
  ### Answer by username_3 on 2017-12-19. Score: 1
  
  See also CrossMap:
  <http://crossmap.sourceforge.net/>
  
  20, 21, 22, 23, 24, 30
  
  
  ---
  
  ### Answer by username_4 on 2020-08-20. Score: 0
  
  These are only the base positions that have changed between GRCh37 and GRCh38, not the IDs. For example if a study (e.g. found via pubmed) refers to a particular rsID, the genome build does not matter.
  
  rsIDs do not depend on a reference genome. They point to a specified locus regardless of the differences in genomic assemblies. As a result, you cannot convert rsIDs of one genome build to rsIDs of another build. And there is no such mapping tool available, even if they pretend to be. rsIDs are assigned by dbSNP maintainers, and are stable. The numbers may only change on merge, where multiple numbers were assigned at the same genomic location, and the higher number gets merged into a lower number by the dbSNP maintainers, unless there is a very well-published, notable rsID mentioned in the press, in this case that merged number is considered the mentioned one, not the smaller one.
  
  > [RefSNP number is the stable accession regardless of the differences in genomic assemblies.](https://www.ncbi.nlm.nih.gov/snp/docs/RefSNP_about/)
  
  For more information go to the “RefSNP Number Stability” section at <https://www.ncbi.nlm.nih.gov/books/NBK21088/>
  
  The rsIDs may also be deleted in some cases see the following links on the explanation:
  
  * <https://www.ncbi.nlm.nih.gov/books/NBK44467/#Build.i_found_rs123456_in_the_current_bu>
  * <https://www.ncbi.nlm.nih.gov/books/NBK44468/#Build.the__rscurrent_field_in_rsmergearc>
  
  Thus, specifying the location by rsID is stable, and can be only affected by an eventual merge or delete from the dbSNP database, if any, not by a new genome build. You can only “update” the rsIDs from time to time to make sure they all are the main rsID, not those larger numbers already merged to a smaller one. It should be noted that the base positions (offsets) of the same genomic location may change between the builds of the reference genome. And they did surely change between GRCh37 and GRCh38.
  
  If your list is relatively small, you can get most recent rsIDs for your chromosome and offset via dbSNP API. It is available at <https://www.ncbi.nlm.nih.gov/snp/docs/eutils_help/>
  
  The query for the API is the same as for the “advanced search” of dbSNP at <https://www.ncbi.nlm.nih.gov/snp/advanced>
  
  If you specify data in a “Base Position” line, it will look for GRCh38 base position. If you need to specify the base position for a GRCh37, use “Base Position Previous” line. You may also need to add `NOT MergedRS[All Fields]` to exclude rsIDs that have already been merged.
  
  For example, to get the rsID for a chromosome 1 GRCh37 base position 249222527, the API query URL is the following [https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=snp&term=1[Chromosome]+AND+249222527[Base+Position+Previous]+NOT+MergedRS[All+Fields]](https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=snp&term=1%5BChromosome%5D+AND+249222527%5BBase+Position+Previous%5D+NOT+MergedRS%5BAll+Fields%5D)
  
  You can do queries from a script if the number of requests is relatively small. You may find a perl script, for example, that does the job.
  
  Even though the rsID numbers can be merged or deleted, and the changes are reflected in a new dbSNP database build, given the fact that the changes in numbers do not depend on the genome build, is better to always rely to the rsID number from the latest dbSNP database build.
  
  The changes in rsID numbers are changed due to merges or deletions between dbSNP builds relatively infrequently, given the total number of the IDs in the database.
  
  
  ---
  
  