The SEEK package searches for radio pulsars in noisy data sets. Since its initial incantation in 1997, SEEK has been used to find over pulsars in a number of projects with different telescopes and data acquisition systems:
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:
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
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.
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.
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:
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
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:
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.
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.
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:
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:
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!
Search of single-DM time series
Search over range of DM values
Acceleration Search for a given DM
% accn 47t