Open source pulsar search and analysis toolkit
PRESTO is a large suite of pulsar search and analysis software developed primarily by Scott Ransom mostly from scratch, and released under the GPL (v2). 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 Python. According to Steve Eikenberry, PRESTO stands for: PulsaR Exploration and Search TOolkit!
PRESTO has discovered over 700 pulsars, including almost 300 recycled and/or binary pulsars!
rfifindbug that could cause the program to hang if channels had zero variance
prepfoldto allow debugging of TEMPO calls to make polycos
DDplan.pycan now read observation parameters from filterbank or PSRFITS input files. And you can write a
dedisp_*.pydedispersion script, based on the plan, using the
rednoiseprogram now writes a corresponding *_red.inf file
import presto.psr_utils as pu
import psr_utils as pu
All of these changes will likely lead to code breakage and bugs!
Please check your code and processing carefully and post issues (and hopefully pull requests) if you find them.
The installation instructions have been updated in the INSTALL file.
Huge thanks thanks go to Gijs Molenaar, Matteo Bachetti, and Paul Ray for the work that they have done helping with this!
v2.2maintbranch of PRESTO. You can get it using:
git checkout -b v2.2maint origin/v2.2maint
and then installing as per the INSTALL file.
accelsearchnow has a "jerk" search capability (thanks to (then) UVA undergrad Bridget Andersen for help with this!). This makes searches take a lot longer, but definitely improves sensitivity when the observation duration is 5-15% of the duration of the orbital period. Typically -wmax should be set to 3-5x -zmax (and you probably never need to set -zmax to anything larger than 300).
PRESTO is 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
DSPSRto 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 will 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:
rfifind) and removal (
zapbirds) , de-dispersion (
mpiprepsubband), barycentering (via TEMPO).
accelsearch), single-pulse (
single_pulse_search.py), and phase-modulation or sideband searches (
prepfold) and Time-of-Arrival (TOA) generation (
explorefft), de-dispersion planning (
DDplan.py), date conversion (
cal2mjd), tons of python pulsar/astro libraries, average pulse creation, flux density estimation, and more...
rrattrap.py), Production and of single pulse diagnostic plots (
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.
References: The Fourier-Domain acceleration search technique that PRESTO uses in the routine
accelsearchis described in Ransom, Eikenberry, and Middleditch (2002), the "jerk" search capability is described in Andersen & Ransom (2018), and the phase-modulation search technique used by
search_binis described in Ransom, Cordes, and Eikenberry (2003). Some other basic information about PRESTO can be found in my thesis.
Support/Docs: I may 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 (see below).
Tutorial: There is a tutorial in the "docs" directory which walks you through all the main steps of finding pulsars using PRESTO.
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 checkout -b classic origin/classic
then build as per the (old) INSTALL file.
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). And if you want to contribute your changes back, please give me a "pull request"!
Code contributions and/or patches to fix bugs are most welcome!
Please let me know if you decide to use PRESTO for any "real" searches, especially if you find pulsars with it!
And if you find anything with it, it would be great if you would cite either my thesis or whichever of the three papers listed above is appropriate.
Also note that many people are now citing software using the ASCL. PRESTO is there as well.
Big thanks go to Steve Eikenberry for his help developing the algorithms, Dunc Lorimer and David Kaplan for help with (retired) code to process BCPM, SCAMP, and Spigot data, Jason Hessels for many contributions to the Python routines, and (alphabetical): Bridget Andersen, Anne Archibald, Cees Bassa, Matteo Bachetti, Slavko Bogdanov, Fernando Camilo, Paul Demorest, Paulo Freire, Chen Karako, Mike Keith, Patrick Lazarus, Maggie Livingstone, Gijs Molenaar, Chitrang Patel, Paul Ray, Paul Scholz, Ingrid Stairs, Kevin Stovall, Joeri van Leeuwen for many comments, suggestions and patches!
Scott Ransom [email protected]