Projects: Reference Management

This is a quick description of how I manage papers and references for keeping track of published research in astrophysics. I store my set of astronomy references in a library.bib file that is synchronized across multiple devices. This is a BibTeX file that is also utilized when writing papers and citing previous work. I typically use JabRef for interaction with this database of references (e.g., looking for specific papers that I have read before, assigning papers to groups).

This page summarizes my approach to dealing with two aspects of managing this list of references:

  1. Adding new papers from my perusal of arXiv/astro-ph, via my voting record on vox charta.
  2. Updating preprint entries with new reference information after they have been published in a journal.

Both scripts described below are included in my PaperTools repository, which also contains scripts to help with writing. Note that you will need to obtain an ADS API key to use these scripts; that process is described in the ADS API Documentation.

Tracking Vox Charta Votes

Software: python3, ads, BibtexParser

I check arXiv/astro-ph on a daily basis, typically via the UF vox charta page. I liberally vote for papers of vox charta and would like to keep track of them in my BibTeX file. Manually adding all these papers is a non-starter, so I have developed a mostly automated way to keep my bibliography file current.

How I do this is to copy the text from my vox charta voting record to a file (voxcharta-votes.txt) and then extract a list the arXiv IDs. This is accomplished from the shell with this one-liner:

grep "^ArXiv #" voxcharta-votes.txt  | \
sed -n 's/.* \([0-9]\+\.[0-9]\+\).*/\1/ p' > voxcharta-arxiv_IDs.txt

Once this list of one arXiv ID per line has been created, I run the add_arXiv_IDs_to_library.py script to update library.bib. This script first determines which of the papers are already in the BibTeX database (by comparing preprint IDs), and then queries NASA ADS to obtain BibTeX for the new papers. These entries are then appended to the library.bib file.

Updating References to Published Versions

Software: python3, ads, BibtexParser

Most astro-ph postings are papers which have not yet fully progressed through the publication process (e.g., when papers are posted to astro-ph after acceptance it may still take some time for them to appear in the journal and have the final DOI and reference information assigned). This means that most of the references added via astro-ph/vox charta (see above) do not have the final journal reference information. When I eventually cite these newest papers it is necessary to find the relevant information for the peer-reviewed version. Keeping these manually up to date would be tedious, so I wrote a python script to do this. bib_update.py uses the ads and BibTeXparser python modules to search my library.bib file for entries which only contain preprint information and no reference to a published journal article. It then queries NASA ADS for the latest reference information. If the article has been published in a journal, it updates the reference information and saves it back to the library.bib file.