PRESTO

PRESTO is a large suite of pulsar search and analysis software developed by Scott Ransom mostly from scratch.  It was primarily designed to efficiently search for binary millisecond pulsars from long observations of globular clusters (although it has since been used in several surveys with short integrations and to process a lot of X-ray data as well).  It is written primarily in ANSI C, with many of the recent routines in PythonAccording to Steve Eikenberry, PRESTO stands for: PulsaR Exploration and Search TOolkit!

To date,
PRESTO has discovered over 300 pulsars, including more than 150 recycled pulsars, most of which are in binaries!

New in version 2:

About PRESTO:

Written with portability, ease-of-use, and memory efficiency in mind, it can currently handle raw data from the following pulsar machines or formats:
Notice that the following formats which used to be supported are not:

If you need to process them, you can either checkout the "classic" branch of PRESTO (see below), which is not being actively developed. Or you can use DSPSR to convert those formats into SIGPROC filterbank format (and/or maybe someday soon, PSRFITS search format). You can grab DSPSR here. If you really need to get one of these machines working in PRESTO v2, let me know and we can probably make it happen. It wMSP J2214+3000 discovery plotill take a day or two of porting for each backend.

The software is composed of numerous routines designed to handle three main areas of pulsar analysis:
  1. Data Preparation: Interference detection (rfifind) and removal (zapbirds) , de-dispersion (prepdata, prepsubband, and mpiprepsubband), barycentering (via TEMPO).
  2. Searching: Fourier-domain acceleration (accelsearch), single-pulse (single_pulse_search.py), and phase-modulation or sideband searches (search_bin).
  3. Folding: Candidate optimization (prepfold) and Time-of-Arrival (TOA) generation (get_TOAs.py).
  4. Misc: Data exploration (readfile, exploredat, explorefft), de-dispersion planning (DDplan.py), date conversion (mjd2cal, cal2mjd), tons of python pulsar/astro libraries, average pulse creation, flux density estimation, and more...
Many additional utilities are provided for various tasks that are often required when working with pulsar data such as time conversions, Fourier transforms, time series and FFT exploration, byte-swapping, etc.

The Fourier-Domain acceleration search technique that PRESTO uses in the routine accelsearch is described in Ransom, Eikenberry, and Middleditch (2002), and the phase-modulation search technique used by search_bin is described in Ransom, Cordes, and Eikenberry (2003).  Some other basic information about PRESTO can be found in my thesis.  I will eventually get around to finishing the documentation for PRESTO, but until then you should know that each routine returns its basic usage when you call it with no arguments.  I am also willing to provide limited support via email or telephone (434-296-0320).

Getting it:

The PRESTO source code is released under the GPL and can be browsed or gotten from here in many different ways (including zipped or tar'd or via git).  If you are too lazy to read how to get it but have git on your system do:

> git clone git://github.com/scottransom/presto.git

To update it on a regular basis do

> cd $PRESTO
> git pull

and then re-make things in $PRESTO/src.


For more detailed installation instructions, see INSTALL.

If you don't want to mess with git (which means that you will need to re-install a tarball whenever there are updates) you can get it from the "Download Source" link on the github page.

If you want the "classic" branch, do the following:


>
git clone git://github.com/scottransom/presto.git
> cd presto
>
git remote add classic origin/classic
> git checkout -b classic origin/classic

then build as per the (old) INSTALL file.

Development:

If you plan to tweak the code, I highly suggest that you use git and clone the directory (or fork it using an account on github).  If you plan on doing any significant development, please let me know and I'll either add you as a developer, or we can push/pull changes via git/github.  Code contributions and/or patches to fix bugs are most welcome!

NOTE:  for barycentering data, PRESTO uses TEMPO.  You should get the newest version from Sourceforge.
You will also need FFTWCFITSIO, and PGPLOT.

Tutorial:  There is now a tutorial available that will show you the basics.  It is included in the docs directory of the source code as well.

Other Languages
: Here is a Romanian translation of this page (thanks to Alexsandra Seremina!)  Let me know if you have others!

Final Thoughts
:  Please let me know if you decide to use PRESTO for any "real" searches.  And if you find anything with it, it would be great if you would cite either my thesis or whichever of the two papers listed above is appropriate.  Thanks!

Acknowledgements:  Big thanks go to Steve Eikenberry for his help developing the algorithms, Dunc Lorimer for the basic code which is used to process BCPM and WAPP data, David Kaplan for lots of help with the GBT SPIGOT code, Jason Hessels for many contributions to the Python routines (and along with Maggie Livingstone for the rednoise reduction routine), Anne Archibald (for significant help with the recent accelsearch improvements), and Paul Demorest, Paul Ray, Paul Scholz, Ingrid Stairs, Fernando Camilo, Cees Bassa, Patrick Lazarus, Mike Keith, Kevin Stovall, and Paulo Freire for many comments and suggestions (and even some patches!).

Scott Ransom