SEEK - Pulsar Search Software

SEEK - Pulsar Search Software

|PDF Version|PostScript Version|Test Data (Solaris)|Test Data (Linux)|

About SEEK

The SEEK package searches for radio pulsars in noisy data sets. Since its initial incantation in 1997, SEEK has been used to find over 60 pulsars in a number of projects with different telescopes and data acquisition systems:

  • First pulsar discoveries with Effelsberg telescope (Lorimer et al. 2000)
  • Eleven binary millisecond pulsars in the globular cluster 47 Tucanae (Camilo et al. 2000)
  • First pulsar discovered with the upgraded Arecibo telescope (Lorimer & Xilouris 2000)
  • A faint pulsar in the supernova remnant G292.0+1.8 (Camilo et al. 2002a)
  • Youngest ever radio pulsar in supernova remnant 3C58 with GBT (Camilo et al. 2002b)
  • A young pulsar in the supernova remnant G54.1+0.3 (Camilo et al. 2002c)
  • A high-velocity pulsar associated with the Mouse nebula (Camilo et al. 2002d)
  • Ten pulsars discovered in Arecibo drift searches (McLaughlin et al. 2004)
  • Two relativistic binary pulsars (Champion et al. 2004; Lorimer et al. 2006)
  • Pulsar ``B'' in the double pulsar system! (Lyne et al. 2004)
  • 28 pulsars in PALFA searches (Cordes et al. 2005)
  • 2 pulsars in the direction of the Galactic centre (Johnston et al. 2006)

    The point of SEEK is simply to find pulsar candidates. Follow-up programs (e.g. folding the data modulo the best pulse period as shown in the above figure) are NOT included here - since these usually exist at the various observatories (e.g. pdm at Parkes). The main programs of SEEK are:

  • SEEK/HUNT/ACCN: Standard Pulsar Search (FFT+harmonic summing) and Acceleration Searching
  • BEST: Sifting through the output from above FFT and/or acceleration searches
  • SPEC/MASK: Rudimentary spectrum analysis and interference excision

    This guide is meant to be used primarily as a cookbook for standard search reduction, acceleration searches and interference excision.


    STEP 1: The software is currently tested on solaris or linux machines. In order to prepare your computer for installation, you must set the OSTYPE environment variable to either "solaris" or "linux", depending on your system.

    STEP 2: SEEK is now part of SIGPROC which can be downloaded here

    Data formats

    The SEEK programs work on dedispersed time series which are written as binary files in a simple format. In order to get your data into this format, you'll either have to adapt your dedispersion code, or use the SIGPROC package which currently handles data from a selection of pulsar machines based at Parkes, Jodrell, Arecibo and GBT. Click here for full details on installing this package and the data format.

    In brief, SIGPROC provides a frontend program FILTERBANK to interface with the raw data and produce data in a standard format (which we term filterbank format) ready for dedispersion. For example, let's consider an imaginary raw datafile "rawdata.dat". To get this into filterbank format, type

    filterbank rawdata.dat > rawdata.fil

    Once the data are in filterbank format, SIGPROC provides a program DEDISPERSE to convert this into a dedispersed time series. For example:

    dedisperse rawdata.fil -d 25.6 > rawdata.tim

    will produce a time series (rawdata.tim) dedispersed for DM=25.6. These data are now in the correct format for SEEK to work on.


    The following recipes show how to use SEEK by running the programs on example time series. These are binary files which can be downloaded for Big Endian Machines (e.g. Solaris) or Little Endian Machines (e.g. Linux). These data were produced using SIGPROC described schematically in the previous section. Click for further details about SIGPROC.

    Search of single-DM time series

    Finding a known pulsar in a time series that has been dedispersed at the nominal DM is usually the first thing you'd want to check out before searching other data sets. The example time series file 1930+22.tim is a 17.8-min observation using the 76-m Lovell telescope on the 144-ms pulsar B1930+22. To search it for periodicities, type:

    % seek 1930+22.tim

    which will produce the following screen output:

    which shows a clear detection of the pulsar with a signal-to-noise ratio (S/N) of about 40. For this system (frequency 1400 MHz, bandwidth 64 MHz, system equivalent flux density ~35 Jy), the observed S/N is in good agreement with that expected from B1930+22 (a 1.2 mJy pulsar with a duty cycle of 8%).

    The above output to the screen is just the candidate from the search with the highest S/N. In the above example, where the pulsar is clearly detected, this output is satisfactory. Other pulsars may not be the strongest signal in the search, as in the following 9-min observation of the 372-ms pulsar B2022+50. Download the time series 2022+50.tim and search it in the usual way:

    % seek 2022+50.tim

    FIND will report a 20-ms signal with S/N~123. This is, of course, the mains frequency (50 Hz) power line. To dig deeper into the candidate list requires examination of the output files from seek. The main file of interest is the complete list of S/Ns and periods for each harmonic fold: the so-called "period file". In this example, the period file produced by seek is "2022+50.prd". The first few lines of the file look like this:

    from left to right, the 10 columns are in pairs of S/N and period (ms) for harmonic folds 1-5. In this notation, fold 1 refers to the raw spectrum, fold 2 is the spectrum with the one harmonic stretch and add, fold 3 is a further stretch and add, and so on. Fold 5 then refers to addition of 16 harmonics. An inspection of this list shows the pulsar as the 372.6-ms signal in fold 5.

    Obviously one does not want to look at period files like this one very often! What is required is a program to sift through the list and produce a summary of the best candidates. This is what the program BEST does:

    % best 2022+50.prd

    scans the file, sorts out harmonic relationships and produces the following output:

    Listed here are the period, S/N, DM of each candidate. The other columns list DM index (DMID; there is only one DM in this case), the number of identifications of this period including harmonics (NIDs), the harmonic fold that the candidate peaked in (f). The P/Ptop column lists ratio the period of this candidate to the period of the best candidate. Ptop/P is the inverse of this.

    Search over range of DM values

    Given a datafile in filterbank format, the script HUNT will dedisperse and run FIND on the data over a range of DM values. To use this, create an ASCII file "dmlist" with the DM values you wish to search and then run HUNT. As an example, try downloading the Arecibo drift-scan data file aobeam.fil - a beam containing a recently discovered 5.79-ms pulsar with DM~14. To create simple dmlists, the program STEP is available. For example:

    % step 10 20 0.2 > dmlist

    would create a list in the DM range 10-20 in steps of 0.2. To search this file for periodicities, run HUNT on the filestem:

    % hunt aobeam

    when the search is complete, the script runs BEST on the file aobeam.prd to search for the best suspects. You should see the pulsar with S/N~27 in fold f=3.

    A very useful diagnostic is the plot of S/N versus trial DM. To produce this plot, run best in the viewing mode:

    % best aobeam.prd -v

    which will cycle through the candidates displaying each plot in turn. The plot for the pulsar in this example should look like this:

    Acceleration Search for a given DM

    One of the first uses of SEEK was to perform coherent acceleration searches on dedispersed time series at a fixed DM. This application is tuned to globular clusters where the detection of the first pulsar limits the search so that the computing power can be applied to searching in acceleration (AC) space, rather than DM space. Our ongoing search of 47 Tuc with SEEK in this manner has so far turned up 11 binary pulsars.

    Given a dedispersed time series, the acceleration search is controlled by the ACCN script which works much in the same way as the HUNT script described above. Instead of the "dmlist" file, you now need to supply an "aclist" file with the range of acceleration values (in m s-2) to search over. In addition, if you have time you can also search in acceleration derivative (AD) by creating a file "adlist" with the range of values (in cm s-3) to search.

    Consider for now a 1-D acceleration search (AD=0 throughout). Download the example 18-min Parkes observation of 47 Tuc (47tuc.tim) and run ACCN for a range of AC values between -10 m s-2 and +10 m s-2 with a step size of 0.2 m s-2:

    % step -10 10 .2 > aclist
    % accn 47t

    on completion, running BEST in interactive mode you should see a clear detection of the 2.1-ms pulsar 47TucJ at a best acceleration of 3.2 m s-2, as well as the 4.34-ms pulsar 47TucU at an acceleration of -3.8 m s-2. Running best interactively as before with the -v option

    % best 47t.prd -v

    will show the variation of S/N in acceleration space. For J this looks like this:

    Interference Excision

    Radio Frequency Interference (RFI) can produce a lot of spurious pulsar candidates seen as spikes in the amplitude spectrum. In extreme cases, this can bury potentially real pulsar candidates in a sea of RFI making them difficult to pick out. A simple technique to remove them is to censor certain bins in the spectrum so that they do not appear in the candidate lists. SEEK provides two methods for doing this: zap tables and spectral masks.

    Zap Tables

    A zap table is a list of frequency ranges and harmonics to be censored in the spectrum. One common entry in such a table is the mains power line and its harmonics visible most prominently in the DM=0 time series. As an example, download the Arecibo time series 0.tim. Running seek on the data shows up a very strong signal from the mains (60 Hz at Arecibo) which would be good to zap. Before zapping, it is a good idea to examine the amplitude spectrum to see how many harmonics are present. To do this you will first need to produce binary spectrum files using the -s option in FIND:

    % seek 0.tim -s

    which will produces files fold0.spc, fold1.spc .... fold5.spc corresponding to the raw spectrum (fold0.spc), the spectrum after normalization (fold1.spc) and the spectrum after each of the four stages of harmonic summing (fold2-5.spc). To view the spectra, use the SPEC program. For example, to look at fold1.spc, you need to type:

    % spec fold1.spc

    which will produce a plot from 0 Hz up to the Nyquist frequency (~780 Hz in this case). To help identify spectral features, there is a -F option in SPEC which will display the fundamental and harmonics of a given frequency. So, to mark the 60-Hz line, type

    % spec fold1.spc -F60

    which should look like this:

    which shows the fundamental plus about 7 harmonics. You can zap these lines by creating an ASCII file called "birdies" with the frequency ranges and total number of harmonics (including fundamental) to zap. So to zap these 8 lines, try creating a birdies file with the following line:

    59.9 60.1 8

    and now run SEEK with the zap (-z) option to read the file. Looking at fold1.spc as before you should see a much cleaner spectrum like this.

    Spectral Mask

    Sometimes it is helpful to censor specific spectral bins of interest. For example we might want to mask the following spectrum containing many harmonics from the strong pulsar B1550-54:

    To mask these harmonics, which are all predominantly above S/N=10, use the mask command:

    % mask fold1.spc -t10

    to display the spectrum after clipping these bins. To produce a mask file, add the -f option:

    % mask fold1.spc -t10 -f

    which will write out an ASCII file "mask.out" which is of the format

    bin_number frequency_hz S/N

    scan through this file and make sure that just the spectral frequencies of interest are being masked (you may need to delete unrelated features by hand!). When you are happy with the file, rename "mask.out" to simply "mask" and run SEEK with the -m option. The resultant output is:

    Miscellaneous Features

    I will add some "advanced" and "obscure" features of the SEEK programs here when time permits. In the meantime, some help can be obtained by just typing the name of the program you are interested in, for example:

    Closing Remarks

    SEEK is by no means the be all and end all of pulsar search packages, and should be thought of as a first attempt at making pulsar searcher's equivalent of TEMPO: i.e. a general use package that can be applied to data from different telescopes. Current plans are towards rewriting the package in C, with a view to improving some of the algorithms and making better use of memory, and merging it into a larger effort of general pulsar data analysis (SIGPROC).

    Several people have contributed to the software development so far, particular thanks are due to Michael Kramer, Fernando Camilo, Maura McLaughlin, Ingrid Stairs and Paulo Freire who have provided code and/or comments on SEEK. Please let me know your comments (good and bad!) on your SEEK experiences, I will try to incorporate these into future versions. I'd also be very pleased to hear of any new pulsars you discover with SEEK... happy hunting!