FRB Example

This doc shows a simple usage case for PATH. It bascially follows the FRB_example Notebook.

Setup

We begin by instantiating the PATH object:

Path = path.PATH()

This object holds the main pieces and also runs the analysis.

Localization

We will generate a simple ellipse localization. First define the coordiantes and the ellipse:

from astropy.coordinates import SkyCoord
frb_coord = SkyCoord('21h44m25.255s -40d54m00.10s', frame='icrs')
eellipse = dict(a=0.1, b=0.1, theta=0.)
# Now in PATH
Path.init_localization('eellipse', center_coord=frb_coord, eellipse=eellipse)

This call also vets the input against the internal data model. See Transient Localization for further details.

Candidates

Now we define the host galaxy candidates. The required input are the ra, dec, and angular size of the sources. Most analyses also require a apparent magnitude.

We read our data from disk and then pass them to the Path object:

cand_file = os.path.join(resource_filename('astropath', 'data'), 'frb_example', 'frb180924_candidates.csv')
import pandas
candidates = pandas.read_csv(cand_file, index_col=0)
# Now in Path
Path.init_candidates(candidates.ra.values,
                 candidates.dec.values,
                 candidates.half_light.values,
                 mag=candidates.VLT_FORS2_g.values)

Again, this call performs some simple vetting of the inputs.

Priors

Now we set the method for calculating priors for the analysis. There are two sets: (1) candidate priors and (2) offset priors.

Define them:

# Candidates
# Set the unseen prior to 0 and use the default inverse approach
Path.init_cand_prior('inverse', P_U=0.)
# Offsets
# Use an exponential profile truncated at 6*ang_size
Path.init_theta_prior('exp', 6.)

Run

Calculate Priors

A simple call:

Path.calc_priors()

These are recorded in the candidates table:

print(Path.candidates.P_O)

Calculate Posteriors

There are two approaches to calculating the posteriors: (i) in a fixed box around the transient; this is best for well-localized transients (e.g. ~1”); (ii) locally around each source; this is best for large localiation regions (>1’).

Another simple call with the “fixed” approach:

P_Ox, P_Ux = Path.calc_posteriors('fixed', box_hwidth=30.)

And we are all done!