Package: inspiral-range
GW detector inspiral range calculation toolsTheinspiral_rangepackage provides tools for calculating various
binary inspiral range measures useful as figures of merit for
gravitational wave detectors characterized by a strain noise spectral
density.It includes a command-line tool for calculating various inspiral
ranges from a supplied file of detector noise spectral density (either
ASD or PSD).See the following references for more information:https://arxiv.org/abs/1709.08079https://dcc.ligo.org/LIGO-T1500491https://dcc.ligo.org/LIGO-T1100338https://dcc.ligo.org/LIGO-T030276Authors:Jameson Rollinsjameson.rollins@ligo.orgJolien Creightonjolien.creighton@ligo.orgInstallationinspiral_rangeis available viapipandconda.$ pip install inspiral_rangeinspiral_rangedepends onscipyfor various optimization routines,
andastropyfor cosmology calculations.  TheLSC Algorithm Library
(LAL)can also be used for
faster versions of some calculations.  The LAL dependencies (bothlalandlalsimulation) can be found in thelalsuitepackage in
pip or conda, or in native packaging available for the variousIGWN supported operating
systems.
Use thelalextra flag during pip installation to pull in the LAL
dependencies:$ pip install inspiral_range[lal]Note the following caveats:cosmologyinspiral_rangeneeds to calculate luminosity distance and
differential comoving volume as a function of redshift, which requires
specifying a cosmology model.  Two different packages are supported
for these cosmological calculations:astropy(default): pure python and widely available, but slowlal: not pure python so not as accessible, but much fasterwaveform generationinspiral_rangeneeds the amplitude of strain waveforms of binary
inspiral signals in order to calculate the detection SNR for a given
detector noise spectrum.  Included in the package is a cached
interpolant for equal mass, non-spinning BBH systems.  For range
calculations for other systems (non-equal masses, including spin) thelalsimulationpackage is required for waveform calculations.other requirementsOther python package requirements:numpyscipygpstime (CLI)gwpy (CLI LIGO data fetching)nds2-client (CLI LIGO data fetching)yaml (CLI output)matplotlib (CLI plotting)Usagelibrary usageThe package includes multiple functions for calculating various range
measures for a given PSD.Analytical methods:sensemon_rangesensemon_horizonint73Cosmologically-corrected measures (seearxiv:1709.08079):horizon (Mpc)horizon_redshift (z)volume (Mpc^3)range (Mpc)response_frac (Mpc)response_frac_redshift (z)reach_frac (Mpc)reach_frac_redshift (z)By default, all functions calculate measures for 1.4/1.4 M_sol BNS
inspirals:>>> import inspiral_range
>>> freq, psd = np.loadtxt('PSD.txt')
>>> range_bns = inspiral_range.range(freq, psd)But other masses can be used as well:>>> range_bbh = inspiral_range.range(freq, psd, m1=30, m2=30)When calculating multiple measures together it is more efficient to
generate the fiducial waveform first and then pass it to the various
functions:>>> H = inspiral_range.CBCWaveform(freq, m1=30, m2=30)
>>> horizon = inspiral_range.horizon(freq, psd, H=H)
>>> range = inspiral_range.range(freq, psd, H=H)The cosmology being used can be modified with the Cosmology class:>>> cosmo = inspiral_range.Cosmology(h=70.0)
>>> H = inspiral_range.CBCWaveform(freq, cosmo=cosmo)The 'cosmo' parameter can also be supplied directly to the range
calculator:>>> range = inspiral_range.range(freq, psd, cosmo=cosmo)A convenience functionall_rangesis included that calculates most
of the range metrics together in an efficient way (all return values
in Mpc):rangehorizonresponse_50response_10reach_50reach_90sensemon_rangesensemon_horizone.g.:>>> metrics, H = inspiral_range.all_ranges(freq, psd)command line interfaceThe package also include a command line interface for easily
calculating ranges for a given ASD or PSD specified in a two-column
text file:$ python3 -m inspiral_range -p PSD.txt m1=30 m2=30LIGO "official" range from calibrated strain dataThe CLI can also calculate the range from LIGO's calibrated strain
data using the--ligooption and a time specified in either GPS or
natural language, e.g.:$ python3 -m inspiral_range --ligo '2017-08-17 12:41:04 UTC'This requiresgwpywithNDSto retrieve the data.