A simple tool get get bibtex entries based on a variety of common academic ids. It's not the only such thing out there (I was largely inspired by doi2bib), but I wanted something that could handle Biorxiv citations in a manner that was parallel with arXiv citations.
There's only one function to use, refid2bib
, which will attempt to intuit your request. It can handle DOIs, Arxiv Ids, Pubmed ids, PMC ids, and Biorxiv ids. See test_refid2bib.py
for various examples.
For example, a typical doi copied from Pubmed:
from refid2bib import refid2bib
doi = "DOI: 10.1126/science.1260088"
bibtex = refid2bib(doi)
print(bibtex)
will return
@article{Chen_2015,
doi = {10.1126/science.1260088},
url = {https://doi.org/10.1126%2Fscience.1260088},
year = 2015,
month = {jan},
publisher = {American Association for the Advancement of Science ({AAAS})},
volume = {347},
number = {6221},
pages = {543--548},
author = {Chen, F. and Tillberg, P. W. and Boyden, E. S.},
title = {Expansion microscopy},
journal = {Science}
}
To specify the reference name that will be used, use the short_name
parameter like so
doi = "https://doi.org/10.1126/science.1260088"
custom_name = 'my_custom_name'
bibtex = refid2bib(doi, short_name=custom_name)
print(bibtex)
to return:
@article{my_custom_name,
doi = {10.1126/science.1260088},
...
For author names if you would prefer to use (First Middle Last Suffix) order instead of the default (Last Suffix, First Middle), set the lastname_first
parameter to False
.
doi = "https://doi.org/10.1126/science.1260088"
bibtex = refid2bib(doi, lastname_first=False)
print(bibtex)
This returns the same thing, but now the author line is:
author = {F. Chen and P. W. Tillberg and E. S. Boyden},
refid2bib
can be run as a function with a reference passed as an argument like so:
python -m refid2bib https://doi.org/10.1101/406314
Note that the custom name and author name order options are not yet implemented in the command line version.
Case does not matter for any reference.
DOI:
A doi needs to either start with https://doi.org/
or have a leading doi:
(with or without the space). The id is taken to be everything after the slash of the URL or the space/colon. For example,doi: 10.1126/science.1260088
or https://doi.org/10.1126/science.1260088
.
Biorxiv:
Biorxiv entries are detected if they start with a biorxiv:
(with or without the space) or have a DOI that corresponds to Biorxiv (i.e. a CSHL 10.1101 prefix and a purely numeric suffix). This mode adds eprint and eprinttype entries to the bibtex output, similar to Arxiv entries. For example, biorxiv:376830
or https://doi.org/10.1101/376830
. These are returned as @online
types, not articles.
ArXiv:
Arxiv entries are detected if they start with arxiv:
(no space) or from the URL directly https://arxiv.org/abs/
. For example, arXiv:1801.04381
or https://arxiv.org/abs/1801.04381
. These are returned as @online
types, not articles.
Pubmed:
Either pubmed ids or PMC ids will work, either from pmid:
(with or without space) or PMC
(no space) respectively. For example, PMID: 25056931
or PMC3711719
.