diff --git a/pyproject.toml b/pyproject.toml index 106ab93c..73d9bc70 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,7 @@ classifiers = [ requires-python = ">=3.11, <3.13" dependencies = [ "numpy==1.26.4", - "lalsuite==7.25.1", + "astropy==7.0", "h5py~=3.11", "arviz~=0.19", "pandas~=2.2", @@ -39,6 +39,12 @@ ringdown_scan = "ringdown.cli.ringdown_scan:main" requires = ["hatchling", "hatch-vcs"] build-backend = "hatchling.build" +[project.optional-dependencies] +extra = [ + "lalsuite==7.25.1", + "gwpy==3.0.10", +] + [tool.uv] dev-dependencies = [ "ringdown", diff --git a/ringdown/data.py b/ringdown/data.py index 31a88f5e..014392ff 100644 --- a/ringdown/data.py +++ b/ringdown/data.py @@ -7,7 +7,6 @@ import numpy as np import scipy.signal as sig -import lal import scipy.linalg as sl from scipy.interpolate import interp1d import scipy.signal as ss @@ -510,15 +509,15 @@ def __init__(self, *args, ifo=None, attrs=None, **kwargs): def _constructor(self): return Data - @property - def detector(self) -> lal.Detector: - """:mod:`lal` object containing detector information. - """ - if self.ifo: - d = lal.cached_detector_by_prefix[self.ifo] - else: - d = None - return d + # @property + # def detector(self) -> lal.Detector: + # """:mod:`lal` object containing detector information. + # """ + # if self.ifo: + # d = lal.cached_detector_by_prefix[self.ifo] + # else: + # d = None + # return d def condition(self, t0: float | None = None, ds: int | None = None, diff --git a/ringdown/detector.py b/ringdown/detector.py new file mode 100644 index 00000000..d4a2d06d --- /dev/null +++ b/ringdown/detector.py @@ -0,0 +1,897 @@ +import jax.numpy as jnp +import numpy as np +from astropy.time import Time + +DEG_TO_RAD = np.pi / 180 + +EARTH_SEMI_MAJOR_AXIS = 6378137.0 # for ellipsoid model of Earth, in m +EARTH_SEMI_MINOR_AXIS = 6356752.314 # in m + +DAYSID_SI = 86164.09053133354 +DAYJUL_SI = 86400.0 + +C_SI = 299792458.0 # speed of light in m/s + +# https://lscsoft.docs.ligo.org/lalsuite/lal/_l_a_l_detectors_8h_source.html + +# /** +# * \name TAMA 300m Interferometric Detector constants +# * The following constants describe the location and geometry of the +# * TAMA 300m Interferometric Detector. +# */ +# /** @{ */ +# #define LAL_TAMA_300_DETECTOR_NAME "TAMA_300" /**< TAMA_300 detector name string */ +# #define LAL_TAMA_300_DETECTOR_PREFIX "T1" /**< TAMA_300 detector prefix string */ +# #define LAL_TAMA_300_DETECTOR_LONGITUDE_RAD 2.43536359469 /**< TAMA_300 vertex longitude (rad) */ +# #define LAL_TAMA_300_DETECTOR_LATITUDE_RAD 0.62267336022 /**< TAMA_300 vertex latitude (rad) */ +# #define LAL_TAMA_300_DETECTOR_ELEVATION_SI 90 /**< TAMA_300 vertex elevation (m) */ +# #define LAL_TAMA_300_DETECTOR_ARM_X_AZIMUTH_RAD 4.71238898038 /**< TAMA_300 x arm azimuth (rad) */ +# #define LAL_TAMA_300_DETECTOR_ARM_Y_AZIMUTH_RAD 3.14159265359 /**< TAMA_300 y arm azimuth (rad) */ +# #define LAL_TAMA_300_DETECTOR_ARM_X_ALTITUDE_RAD 0.00000000000 /**< TAMA_300 x arm altitude (rad) */ +# #define LAL_TAMA_300_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00000000000 /**< TAMA_300 y arm altitude (rad) */ +# #define LAL_TAMA_300_DETECTOR_ARM_X_MIDPOINT_SI 150.00000000000 /**< TAMA_300 x arm midpoint (m) */ +# #define LAL_TAMA_300_DETECTOR_ARM_Y_MIDPOINT_SI 150.00000000000 /**< TAMA_300 y arm midpoint (m) */ +# #define LAL_TAMA_300_VERTEX_LOCATION_X_SI -3.94640899111e+06 /**< TAMA_300 x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_TAMA_300_VERTEX_LOCATION_Y_SI 3.36625902802e+06 /**< TAMA_300 y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_TAMA_300_VERTEX_LOCATION_Z_SI 3.69915069233e+06 /**< TAMA_300 z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_TAMA_300_ARM_X_DIRECTION_X 0.64896940530 /**< TAMA_300 x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_TAMA_300_ARM_X_DIRECTION_Y 0.76081450498 /**< TAMA_300 y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_TAMA_300_ARM_X_DIRECTION_Z -0.00000000000 /**< TAMA_300 z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_TAMA_300_ARM_Y_DIRECTION_X -0.44371376921 /**< TAMA_300 x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_TAMA_300_ARM_Y_DIRECTION_Y 0.37848471479 /**< TAMA_300 y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_TAMA_300_ARM_Y_DIRECTION_Z -0.81232223390 /**< TAMA_300 z-component of unit vector pointing along y arm in Earth-centered frame */ +# /** @} */ + +# /** +# * \name VIRGO_CITF Interferometric Detector constants +# * The following constants describe the location and geometry of the +# * VIRGO_CITF Interferometric Detector. FIXME: the armlength is a stub. +# * FIXME: this IFO is called V0 rather than to avoid name clash. +# */ +# /** @{ */ +# #define LAL_VIRGO_CITF_DETECTOR_NAME "VIRGO_CITF" /**< VIRGO_CITF detector name string */ +# #define LAL_VIRGO_CITF_DETECTOR_PREFIX "V0" /**< VIRGO_CITF detector prefix string */ +# #define LAL_VIRGO_CITF_DETECTOR_LONGITUDE_RAD 0.18333805213 /**< VIRGO_CITF vertex longitude (rad) */ +# #define LAL_VIRGO_CITF_DETECTOR_LATITUDE_RAD 0.76151183984 /**< VIRGO_CITF vertex latitude (rad) */ +# #define LAL_VIRGO_CITF_DETECTOR_ELEVATION_SI 51.884 /**< VIRGO_CITF vertex elevation (m) */ +# #define LAL_VIRGO_CITF_DETECTOR_ARM_X_AZIMUTH_RAD 0.33916285222 /**< VIRGO_CITF x arm azimuth (rad) */ +# #define LAL_VIRGO_CITF_DETECTOR_ARM_Y_AZIMUTH_RAD 5.05155183261 /**< VIRGO_CITF y arm azimuth (rad) */ +# #define LAL_VIRGO_CITF_DETECTOR_ARM_X_ALTITUDE_RAD 0.00000000000 /**< VIRGO_CITF x arm altitude (rad) */ +# #define LAL_VIRGO_CITF_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00000000000 /**< VIRGO_CITF y arm altitude (rad) */ +# #define LAL_VIRGO_CITF_DETECTOR_ARM_X_MIDPOINT_SI 0.00000000000 /**< VIRGO_CITF x arm midpoint (m) */ +# #define LAL_VIRGO_CITF_DETECTOR_ARM_Y_MIDPOINT_SI 0.00000000000 /**< VIRGO_CITF y arm midpoint (m) */ +# #define LAL_VIRGO_CITF_VERTEX_LOCATION_X_SI 4.54637409900e+06 /**< VIRGO_CITF x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_VIRGO_CITF_VERTEX_LOCATION_Y_SI 8.42989697626e+05 /**< VIRGO_CITF y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_VIRGO_CITF_VERTEX_LOCATION_Z_SI 4.37857696241e+06 /**< VIRGO_CITF z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_VIRGO_CITF_ARM_X_DIRECTION_X -0.70045821479 /**< VIRGO_CITF x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_VIRGO_CITF_ARM_X_DIRECTION_Y 0.20848948619 /**< VIRGO_CITF y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_VIRGO_CITF_ARM_X_DIRECTION_Z 0.68256166277 /**< VIRGO_CITF z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_VIRGO_CITF_ARM_Y_DIRECTION_X -0.05379255368 /**< VIRGO_CITF x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_VIRGO_CITF_ARM_Y_DIRECTION_Y -0.96908180549 /**< VIRGO_CITF y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_VIRGO_CITF_ARM_Y_DIRECTION_Z 0.24080451708 /**< VIRGO_CITF z-component of unit vector pointing along y arm in Earth-centered frame */ +# /** @} */ + +# /** +# * \name VIRGO 3km Interferometric Detector constants +# * The following constants describe the location and geometry of the +# * VIRGO 3km Interferometric Detector. +# */ +# /** @{ */ +# #define LAL_VIRGO_DETECTOR_NAME "VIRGO" /**< VIRGO detector name string */ +# #define LAL_VIRGO_DETECTOR_PREFIX "V1" /**< VIRGO detector prefix string */ +# #define LAL_VIRGO_DETECTOR_LONGITUDE_RAD 0.18333805213 /**< VIRGO vertex longitude (rad) */ +# #define LAL_VIRGO_DETECTOR_LATITUDE_RAD 0.76151183984 /**< VIRGO vertex latitude (rad) */ +# #define LAL_VIRGO_DETECTOR_ELEVATION_SI 51.884 /**< VIRGO vertex elevation (m) */ +# #define LAL_VIRGO_DETECTOR_ARM_X_AZIMUTH_RAD 0.33916285222 /**< VIRGO x arm azimuth (rad) */ +# #define LAL_VIRGO_DETECTOR_ARM_Y_AZIMUTH_RAD 5.05155183261 /**< VIRGO y arm azimuth (rad) */ +# #define LAL_VIRGO_DETECTOR_ARM_X_ALTITUDE_RAD 0.00000000000 /**< VIRGO x arm altitude (rad) */ +# #define LAL_VIRGO_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00000000000 /**< VIRGO y arm altitude (rad) */ +# #define LAL_VIRGO_DETECTOR_ARM_X_MIDPOINT_SI 1500.00000000000 /**< VIRGO x arm midpoint (m) */ +# #define LAL_VIRGO_DETECTOR_ARM_Y_MIDPOINT_SI 1500.00000000000 /**< VIRGO y arm midpoint (m) */ +# #define LAL_VIRGO_VERTEX_LOCATION_X_SI 4.54637409900e+06 /**< VIRGO x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_VIRGO_VERTEX_LOCATION_Y_SI 8.42989697626e+05 /**< VIRGO y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_VIRGO_VERTEX_LOCATION_Z_SI 4.37857696241e+06 /**< VIRGO z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_VIRGO_ARM_X_DIRECTION_X -0.70045821479 /**< VIRGO x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_VIRGO_ARM_X_DIRECTION_Y 0.20848948619 /**< VIRGO y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_VIRGO_ARM_X_DIRECTION_Z 0.68256166277 /**< VIRGO z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_VIRGO_ARM_Y_DIRECTION_X -0.05379255368 /**< VIRGO x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_VIRGO_ARM_Y_DIRECTION_Y -0.96908180549 /**< VIRGO y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_VIRGO_ARM_Y_DIRECTION_Z 0.24080451708 /**< VIRGO z-component of unit vector pointing along y arm in Earth-centered frame */ +# /** @} */ + + +# /** +# * \name GEO 600m Interferometric Detector constants +# * The following constants describe the location and geometry of the +# * GEO 600m Interferometric Detector. +# */ +# /** @{ */ +# #define LAL_GEO_600_DETECTOR_NAME "GEO_600" /**< GEO_600 detector name string */ +# #define LAL_GEO_600_DETECTOR_PREFIX "G1" /**< GEO_600 detector prefix string */ +# #define LAL_GEO_600_DETECTOR_LONGITUDE_RAD 0.17116780435 /**< GEO_600 vertex longitude (rad) */ +# #define LAL_GEO_600_DETECTOR_LATITUDE_RAD 0.91184982752 /**< GEO_600 vertex latitude (rad) */ +# #define LAL_GEO_600_DETECTOR_ELEVATION_SI 114.425 /**< GEO_600 vertex elevation (m) */ +# #define LAL_GEO_600_DETECTOR_ARM_X_AZIMUTH_RAD 1.19360100484 /**< GEO_600 x arm azimuth (rad) */ +# #define LAL_GEO_600_DETECTOR_ARM_Y_AZIMUTH_RAD 5.83039279401 /**< GEO_600 y arm azimuth (rad) */ +# #define LAL_GEO_600_DETECTOR_ARM_X_ALTITUDE_RAD 0.00000000000 /**< GEO_600 x arm altitude (rad) */ +# #define LAL_GEO_600_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00000000000 /**< GEO_600 y arm altitude (rad) */ +# #define LAL_GEO_600_DETECTOR_ARM_X_MIDPOINT_SI 300.00000000000 /**< GEO_600 x arm midpoint (m) */ +# #define LAL_GEO_600_DETECTOR_ARM_Y_MIDPOINT_SI 300.00000000000 /**< GEO_600 y arm midpoint (m) */ +# #define LAL_GEO_600_VERTEX_LOCATION_X_SI 3.85630994926e+06 /**< GEO_600 x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_GEO_600_VERTEX_LOCATION_Y_SI 6.66598956317e+05 /**< GEO_600 y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_GEO_600_VERTEX_LOCATION_Z_SI 5.01964141725e+06 /**< GEO_600 z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_GEO_600_ARM_X_DIRECTION_X -0.44530676905 /**< GEO_600 x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_GEO_600_ARM_X_DIRECTION_Y 0.86651354130 /**< GEO_600 y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_GEO_600_ARM_X_DIRECTION_Z 0.22551311312 /**< GEO_600 z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_GEO_600_ARM_Y_DIRECTION_X -0.62605756776 /**< GEO_600 x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_GEO_600_ARM_Y_DIRECTION_Y -0.55218609524 /**< GEO_600 y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_GEO_600_ARM_Y_DIRECTION_Z 0.55058372486 /**< GEO_600 z-component of unit vector pointing along y arm in Earth-centered frame */ +# /** @} */ + + +# /** +# * \name LIGO Hanford Observatory 2km Interferometric Detector constants +# * The following constants describe the location and geometry of the +# * LIGO Hanford Observatory 2km Interferometric Detector. +# */ +# /** @{ */ +# #define LAL_LHO_2K_DETECTOR_NAME "LHO_2k" /**< LHO_2k detector name string */ +# #define LAL_LHO_2K_DETECTOR_PREFIX "H2" /**< LHO_2k detector prefix string */ +# #define LAL_LHO_2K_DETECTOR_LONGITUDE_RAD -2.08405676917 /**< LHO_2k vertex longitude (rad) */ +# #define LAL_LHO_2K_DETECTOR_LATITUDE_RAD 0.81079526383 /**< LHO_2k vertex latitude (rad) */ +# #define LAL_LHO_2K_DETECTOR_ELEVATION_SI 142.554 /**< LHO_2k vertex elevation (m) */ +# #define LAL_LHO_2K_DETECTOR_ARM_X_AZIMUTH_RAD 5.65487724844 /**< LHO_2k x arm azimuth (rad) */ +# #define LAL_LHO_2K_DETECTOR_ARM_Y_AZIMUTH_RAD 4.08408092164 /**< LHO_2k y arm azimuth (rad) */ +# #define LAL_LHO_2K_DETECTOR_ARM_X_ALTITUDE_RAD -0.00061950000 /**< LHO_2k x arm altitude (rad) */ +# #define LAL_LHO_2K_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00001250000 /**< LHO_2k y arm altitude (rad) */ +# #define LAL_LHO_2K_DETECTOR_ARM_X_MIDPOINT_SI 1004.50000000000 /**< LHO_2k x arm midpoint (m) */ +# #define LAL_LHO_2K_DETECTOR_ARM_Y_MIDPOINT_SI 1004.50000000000 /**< LHO_2k y arm midpoint (m) */ +# #define LAL_LHO_2K_VERTEX_LOCATION_X_SI -2.16141492636e+06 /**< LHO_2k x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_LHO_2K_VERTEX_LOCATION_Y_SI -3.83469517889e+06 /**< LHO_2k y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_LHO_2K_VERTEX_LOCATION_Z_SI 4.60035022664e+06 /**< LHO_2k z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_LHO_2K_ARM_X_DIRECTION_X -0.22389266154 /**< LHO_2k x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_LHO_2K_ARM_X_DIRECTION_Y 0.79983062746 /**< LHO_2k y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_LHO_2K_ARM_X_DIRECTION_Z 0.55690487831 /**< LHO_2k z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_LHO_2K_ARM_Y_DIRECTION_X -0.91397818574 /**< LHO_2k x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_LHO_2K_ARM_Y_DIRECTION_Y 0.02609403989 /**< LHO_2k y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_LHO_2K_ARM_Y_DIRECTION_Z -0.40492342125 /**< LHO_2k z-component of unit vector pointing along y arm in Earth-centered frame */ +# /** @} */ + + +# /** +# * \name LIGO Hanford Observatory 4km Interferometric Detector constants +# * The following constants describe the location and geometry of the +# * LIGO Hanford Observatory 4km Interferometric Detector. +# */ +# /** @{ */ +# #define LAL_LHO_4K_DETECTOR_NAME "LHO_4k" /**< LHO_4k detector name string */ +# #define LAL_LHO_4K_DETECTOR_PREFIX "H1" /**< LHO_4k detector prefix string */ +# #define LAL_LHO_4K_DETECTOR_LONGITUDE_RAD -2.08405676917 /**< LHO_4k vertex longitude (rad) */ +# #define LAL_LHO_4K_DETECTOR_LATITUDE_RAD 0.81079526383 /**< LHO_4k vertex latitude (rad) */ +# #define LAL_LHO_4K_DETECTOR_ELEVATION_SI 142.554 /**< LHO_4k vertex elevation (m) */ +# #define LAL_LHO_4K_DETECTOR_ARM_X_AZIMUTH_RAD 5.65487724844 /**< LHO_4k x arm azimuth (rad) */ +# #define LAL_LHO_4K_DETECTOR_ARM_Y_AZIMUTH_RAD 4.08408092164 /**< LHO_4k y arm azimuth (rad) */ +# #define LAL_LHO_4K_DETECTOR_ARM_X_ALTITUDE_RAD -0.00061950000 /**< LHO_4k x arm altitude (rad) */ +# #define LAL_LHO_4K_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00001250000 /**< LHO_4k y arm altitude (rad) */ +# #define LAL_LHO_4K_DETECTOR_ARM_X_MIDPOINT_SI 1997.54200000000 /**< LHO_4k x arm midpoint (m) */ +# #define LAL_LHO_4K_DETECTOR_ARM_Y_MIDPOINT_SI 1997.52200000000 /**< LHO_4k y arm midpoint (m) */ +# #define LAL_LHO_4K_VERTEX_LOCATION_X_SI -2.16141492636e+06 /**< LHO_4k x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_LHO_4K_VERTEX_LOCATION_Y_SI -3.83469517889e+06 /**< LHO_4k y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_LHO_4K_VERTEX_LOCATION_Z_SI 4.60035022664e+06 /**< LHO_4k z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_LHO_4K_ARM_X_DIRECTION_X -0.22389266154 /**< LHO_4k x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_LHO_4K_ARM_X_DIRECTION_Y 0.79983062746 /**< LHO_4k y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_LHO_4K_ARM_X_DIRECTION_Z 0.55690487831 /**< LHO_4k z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_LHO_4K_ARM_Y_DIRECTION_X -0.91397818574 /**< LHO_4k x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_LHO_4K_ARM_Y_DIRECTION_Y 0.02609403989 /**< LHO_4k y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_LHO_4K_ARM_Y_DIRECTION_Z -0.40492342125 /**< LHO_4k z-component of unit vector pointing along y arm in Earth-centered frame */ +# /** @} */ + + +# /** +# * \name LIGO Livingston Observatory 4km Interferometric Detector constants +# * The following constants describe the location and geometry of the +# * LIGO Livingston Observatory 4km Interferometric Detector. +# */ +# /** @{ */ +# #define LAL_LLO_4K_DETECTOR_NAME "LLO_4k" /**< LLO_4k detector name string */ +# #define LAL_LLO_4K_DETECTOR_PREFIX "L1" /**< LLO_4k detector prefix string */ +# #define LAL_LLO_4K_DETECTOR_LONGITUDE_RAD -1.58430937078 /**< LLO_4k vertex longitude (rad) */ +# #define LAL_LLO_4K_DETECTOR_LATITUDE_RAD 0.53342313506 /**< LLO_4k vertex latitude (rad) */ +# #define LAL_LLO_4K_DETECTOR_ELEVATION_SI -6.574 /**< LLO_4k vertex elevation (m) */ +# #define LAL_LLO_4K_DETECTOR_ARM_X_AZIMUTH_RAD 4.40317772346 /**< LLO_4k x arm azimuth (rad) */ +# #define LAL_LLO_4K_DETECTOR_ARM_Y_AZIMUTH_RAD 2.83238139666 /**< LLO_4k y arm azimuth (rad) */ +# #define LAL_LLO_4K_DETECTOR_ARM_X_ALTITUDE_RAD -0.00031210000 /**< LLO_4k x arm altitude (rad) */ +# #define LAL_LLO_4K_DETECTOR_ARM_Y_ALTITUDE_RAD -0.00061070000 /**< LLO_4k y arm altitude (rad) */ +# #define LAL_LLO_4K_DETECTOR_ARM_X_MIDPOINT_SI 1997.57500000000 /**< LLO_4k x arm midpoint (m) */ +# #define LAL_LLO_4K_DETECTOR_ARM_Y_MIDPOINT_SI 1997.57500000000 /**< LLO_4k y arm midpoint (m) */ +# #define LAL_LLO_4K_VERTEX_LOCATION_X_SI -7.42760447238e+04 /**< LLO_4k x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_LLO_4K_VERTEX_LOCATION_Y_SI -5.49628371971e+06 /**< LLO_4k y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_LLO_4K_VERTEX_LOCATION_Z_SI 3.22425701744e+06 /**< LLO_4k z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_LLO_4K_ARM_X_DIRECTION_X -0.95457412153 /**< LLO_4k x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_LLO_4K_ARM_X_DIRECTION_Y -0.14158077340 /**< LLO_4k y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_LLO_4K_ARM_X_DIRECTION_Z -0.26218911324 /**< LLO_4k z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_LLO_4K_ARM_Y_DIRECTION_X 0.29774156894 /**< LLO_4k x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_LLO_4K_ARM_Y_DIRECTION_Y -0.48791033647 /**< LLO_4k y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_LLO_4K_ARM_Y_DIRECTION_Z -0.82054461286 /**< LLO_4k z-component of unit vector pointing along y arm in Earth-centered frame */ +# /** @} */ + + +# /** +# * \name LIGO India 4km Interferometric Detector constants +# * @warning These numbers are subject to change. +# * The following constants describe hypothetical location and geometry +# * of the LIGO India 4km Interferometric Detector that have been used +# * in several studies with LALInference. Note that these data do not +# * represent an actual prospective site. +# */ +# /** @{ */ +# #define LAL_LIO_4K_DETECTOR_NAME "LIO_4k" /**< LIO_4K detector name string */ +# #define LAL_LIO_4K_DETECTOR_PREFIX "I1" /**< LIO_4K detector prefix string */ +# #define LAL_LIO_4K_DETECTOR_LONGITUDE_RAD 1.34444215058 /**< LIO_4K vertex longitude (rad; equal to 77°02') */ +# #define LAL_LIO_4K_DETECTOR_LATITUDE_RAD 0.34231676739 /**< LIO_4K vertex latitude (rad; equal to 19°37') */ +# #define LAL_LIO_4K_DETECTOR_ELEVATION_SI 440.0 /**< LIO_4K vertex elevation (m) */ +# #define LAL_LIO_4K_DETECTOR_ARM_X_AZIMUTH_RAD 5.80120119264 /**< LIO_4K x arm azimuth (rad) */ +# #define LAL_LIO_4K_DETECTOR_ARM_Y_AZIMUTH_RAD 4.23039066080 /**< LIO_4K y arm azimuth (rad) */ +# #define LAL_LIO_4K_DETECTOR_ARM_X_ALTITUDE_RAD 0.0 /**< LIO_4K x arm altitude (rad) */ +# #define LAL_LIO_4K_DETECTOR_ARM_Y_ALTITUDE_RAD 0.0 /**< LIO_4K y arm altitude (rad) */ +# #define LAL_LIO_4K_DETECTOR_ARM_X_MIDPOINT_SI 2000.00000000000 /**< LIO_4K x arm midpoint (m) */ +# #define LAL_LIO_4K_DETECTOR_ARM_Y_MIDPOINT_SI 2000.00000000000 /**< LIO_4K y arm midpoint (m) */ +# #define LAL_LIO_4K_VERTEX_LOCATION_X_SI 1.34897115479e+06 /**< LIO_4K x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_LIO_4K_VERTEX_LOCATION_Y_SI 5.85742826577e+06 /**< LIO_4K y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_LIO_4K_VERTEX_LOCATION_Z_SI 2.12756925209e+06 /**< LIO_4K z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_LIO_4K_ARM_X_DIRECTION_X 0.38496278183 /**< LIO_4K x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_LIO_4K_ARM_X_DIRECTION_Y -0.39387275094 /**< LIO_4K y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_LIO_4K_ARM_X_DIRECTION_Z 0.83466634811 /**< LIO_4K z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_LIO_4K_ARM_Y_DIRECTION_X 0.89838844906 /**< LIO_4K x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_LIO_4K_ARM_Y_DIRECTION_Y -0.04722636126 /**< LIO_4K y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_LIO_4K_ARM_Y_DIRECTION_Z -0.43665531647 /**< LIO_4K z-component of unit vector pointing along y arm in Earth-centered frame */ +# /** @} */ + + +# /** +# * \name Caltech 40m Prototype Detector constants +# * The following constants describe the location and geometry of the +# * Caltech 40m Prototype Detector. +# */ +# /** @{ */ +# #define LAL_CIT_40_DETECTOR_NAME "CIT_40" /**< CIT_40 detector name string */ +# #define LAL_CIT_40_DETECTOR_PREFIX "C1" /**< CIT_40 detector prefix string */ +# #define LAL_CIT_40_DETECTOR_LONGITUDE_RAD -2.06175744538 /**< CIT_40 vertex longitude (rad) */ +# #define LAL_CIT_40_DETECTOR_LATITUDE_RAD 0.59637900541 /**< CIT_40 vertex latitude (rad) */ +# #define LAL_CIT_40_DETECTOR_ELEVATION_SI 0 /**< CIT_40 vertex elevation (m) */ +# #define LAL_CIT_40_DETECTOR_ARM_X_AZIMUTH_RAD 3.14159265359 /**< CIT_40 x arm azimuth (rad) */ +# #define LAL_CIT_40_DETECTOR_ARM_Y_AZIMUTH_RAD 1.57079632679 /**< CIT_40 y arm azimuth (rad) */ +# #define LAL_CIT_40_DETECTOR_ARM_X_ALTITUDE_RAD 0.00000000000 /**< CIT_40 x arm altitude (rad) */ +# #define LAL_CIT_40_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00000000000 /**< CIT_40 y arm altitude (rad) */ +# #define LAL_CIT_40_DETECTOR_ARM_X_MIDPOINT_SI 19.12500000000 /**< CIT_40 x arm midpoint (m) */ +# #define LAL_CIT_40_DETECTOR_ARM_Y_MIDPOINT_SI 19.12500000000 /**< CIT_40 y arm midpoint (m) */ +# #define LAL_CIT_40_VERTEX_LOCATION_X_SI -2.49064958347e+06 /**< CIT_40 x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_CIT_40_VERTEX_LOCATION_Y_SI -4.65869968211e+06 /**< CIT_40 y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_CIT_40_VERTEX_LOCATION_Z_SI 3.56206411403e+06 /**< CIT_40 z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_CIT_40_ARM_X_DIRECTION_X -0.26480331633 /**< CIT_40 x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_CIT_40_ARM_X_DIRECTION_Y -0.49530818538 /**< CIT_40 y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_CIT_40_ARM_X_DIRECTION_Z -0.82737476706 /**< CIT_40 z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_CIT_40_ARM_Y_DIRECTION_X 0.88188012386 /**< CIT_40 x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_CIT_40_ARM_Y_DIRECTION_Y -0.47147369718 /**< CIT_40 y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_CIT_40_ARM_Y_DIRECTION_Z 0.00000000000 /**< CIT_40 z-component of unit vector pointing along y arm in Earth-centered frame */ +# /** @} */ + + +# /** +# * \name Einstein Telescop 10km Interferometric Detector constants +# * The following constants describe the locations and geometrys of the +# * three 10km Interferometric Detectors for the planned third generation +# * Einstein Telescop detector as well as the theoretical null stream. +# * See T1400308 +# */ +# /** @{ */ +# #define LAL_ET1_DETECTOR_NAME "ET1_T1400308" /**< ET1 detector name string */ +# #define LAL_ET1_DETECTOR_PREFIX "E1" /**< ET1 detector prefix string */ +# #define LAL_ET1_DETECTOR_LONGITUDE_RAD 0.18333805213 /**< ET1 vertex longitude (rad) */ +# #define LAL_ET1_DETECTOR_LATITUDE_RAD 0.76151183984 /**< ET1 vertex latitude (rad) */ +# #define LAL_ET1_DETECTOR_ELEVATION_SI 51.884 /**< ET1 vertex elevation (m) */ +# #define LAL_ET1_DETECTOR_ARM_X_AZIMUTH_RAD 0.33916285222 /**< ET1 x arm azimuth (rad) */ +# #define LAL_ET1_DETECTOR_ARM_Y_AZIMUTH_RAD 5.57515060820 /**< ET1 y arm azimuth (rad) */ +# #define LAL_ET1_DETECTOR_ARM_X_ALTITUDE_RAD 0.00000000000 /**< ET1 x arm altitude (rad) */ +# #define LAL_ET1_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00000000000 /**< ET1 y arm altitude (rad) */ +# #define LAL_ET1_DETECTOR_ARM_X_MIDPOINT_SI 5000.00000000000 /**< ET1 x arm midpoint (m) */ +# #define LAL_ET1_DETECTOR_ARM_Y_MIDPOINT_SI 5000.00000000000 /**< ET1 y arm midpoint (m) */ +# #define LAL_ET1_VERTEX_LOCATION_X_SI 4.54637409900e+06 /**< ET1 x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ET1_VERTEX_LOCATION_Y_SI 8.42989697626e+05 /**< ET1 y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ET1_VERTEX_LOCATION_Z_SI 4.37857696241e+06 /**< ET1 z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ET1_ARM_X_DIRECTION_X -0.70045821479 /**< ET1 x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ET1_ARM_X_DIRECTION_Y 0.20848948619 /**< ET1 y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ET1_ARM_X_DIRECTION_Z 0.68256166277 /**< ET1 z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ET1_ARM_Y_DIRECTION_X -0.39681482542 /**< ET1 x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_ET1_ARM_Y_DIRECTION_Y -0.73500471881 /**< ET1 y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_ET1_ARM_Y_DIRECTION_Z 0.54982366052 /**< ET1 z-component of unit vector pointing along y arm in Earth-centered frame */ + + +# #define LAL_ET2_DETECTOR_NAME "ET2_T1400308" /**< ET2 detector name string */ +# #define LAL_ET2_DETECTOR_PREFIX "E2" /**< ET2 detector prefix string */ +# #define LAL_ET2_DETECTOR_LONGITUDE_RAD 0.18405858870 /**< ET2 vertex longitude (rad) */ +# #define LAL_ET2_DETECTOR_LATITUDE_RAD 0.76299307990 /**< ET2 vertex latitude (rad) */ +# #define LAL_ET2_DETECTOR_ELEVATION_SI 59.735 /**< ET2 vertex elevation (m) */ +# #define LAL_ET2_DETECTOR_ARM_X_AZIMUTH_RAD 4.52845115854 /**< ET2 x arm azimuth (rad) */ +# #define LAL_ET2_DETECTOR_ARM_Y_AZIMUTH_RAD 3.48125307555 /**< ET2 y arm azimuth (rad) */ +# #define LAL_ET2_DETECTOR_ARM_X_ALTITUDE_RAD -0.00078362156 /**< ET2 x arm altitude (rad) */ +# #define LAL_ET2_DETECTOR_ARM_Y_ALTITUDE_RAD -0.00157024452 /**< ET2 y arm altitude (rad) */ +# #define LAL_ET2_DETECTOR_ARM_X_MIDPOINT_SI 5000.00000000000 /**< ET2 x arm midpoint (m) */ +# #define LAL_ET2_DETECTOR_ARM_Y_MIDPOINT_SI 5000.00000000000 /**< ET2 y arm midpoint (m) */ +# #define LAL_ET2_VERTEX_LOCATION_X_SI 4.53936951685e+06 /**< ET2 x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ET2_VERTEX_LOCATION_Y_SI 8.45074592488e+05 /**< ET2 y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ET2_VERTEX_LOCATION_Z_SI 4.38540257904e+06 /**< ET2 z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ET2_ARM_X_DIRECTION_X 0.30364338937 /**< ET2 x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ET2_ARM_X_DIRECTION_Y -0.94349420500 /**< ET2 y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ET2_ARM_X_DIRECTION_Z -0.13273800225 /**< ET2 z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ET2_ARM_Y_DIRECTION_X 0.70045821479 /**< ET2 x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_ET2_ARM_Y_DIRECTION_Y -0.20848948619 /**< ET2 y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_ET2_ARM_Y_DIRECTION_Z -0.68256166277 /**< ET2 z-component of unit vector pointing along y arm in Earth-centered frame */ + + +# #define LAL_ET3_DETECTOR_NAME "ET3_T1400308" /**< ET3 detector name string */ +# #define LAL_ET3_DETECTOR_PREFIX "E3" /**< ET3 detector prefix string */ +# #define LAL_ET3_DETECTOR_LONGITUDE_RAD 0.18192996730 /**< ET3 vertex longitude (rad) */ +# #define LAL_ET3_DETECTOR_LATITUDE_RAD 0.76270463257 /**< ET3 vertex latitude (rad) */ +# #define LAL_ET3_DETECTOR_ELEVATION_SI 59.727 /**< ET3 vertex elevation (m) */ +# #define LAL_ET3_DETECTOR_ARM_X_AZIMUTH_RAD 2.43258574281 /**< ET3 x arm azimuth (rad) */ +# #define LAL_ET3_DETECTOR_ARM_Y_AZIMUTH_RAD 1.38538766217 /**< ET3 y arm azimuth (rad) */ +# #define LAL_ET3_DETECTOR_ARM_X_ALTITUDE_RAD -0.00156852107 /**< ET3 x arm altitude (rad) */ +# #define LAL_ET3_DETECTOR_ARM_Y_ALTITUDE_RAD -0.00078189811 /**< ET3 y arm altitude (rad) */ +# #define LAL_ET3_DETECTOR_ARM_X_MIDPOINT_SI 5000.00000000000 /**< ET3 x arm midpoint (m) */ +# #define LAL_ET3_DETECTOR_ARM_Y_MIDPOINT_SI 5000.00000000000 /**< ET3 y arm midpoint (m) */ +# #define LAL_ET3_VERTEX_LOCATION_X_SI 4.54240595075e+06 /**< ET3 x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ET3_VERTEX_LOCATION_Y_SI 8.35639650438e+05 /**< ET3 y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ET3_VERTEX_LOCATION_Z_SI 4.38407519902e+06 /**< ET3 z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ET3_ARM_X_DIRECTION_X 0.39681482542 /**< ET3 x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ET3_ARM_X_DIRECTION_Y 0.73500471881 /**< ET3 y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ET3_ARM_X_DIRECTION_Z -0.54982366052 /**< ET3 z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ET3_ARM_Y_DIRECTION_X -0.30364338937 /**< ET3 x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_ET3_ARM_Y_DIRECTION_Y 0.94349420500 /**< ET3 y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_ET3_ARM_Y_DIRECTION_Z 0.13273800225 /**< ET3 z-component of unit vector pointing along y arm in Earth-centered frame */ + + +# #define LAL_ET0_DETECTOR_NAME "ET0_T1400308" /**< ET0 detector name string */ +# #define LAL_ET0_DETECTOR_PREFIX "E0" /**< ET0 detector prefix string */ +# #define LAL_ET0_DETECTOR_LONGITUDE_RAD 0.18192996730 /**< ET0 vertex longitude (rad) */ +# #define LAL_ET0_DETECTOR_LATITUDE_RAD 0.76270463257 /**< ET0 vertex latitude (rad) */ +# #define LAL_ET0_DETECTOR_ELEVATION_SI 59.727 /**< ET0 vertex elevation (m) */ +# #define LAL_ET0_DETECTOR_ARM_X_AZIMUTH_RAD 0.00000000000 /**< ET0 x arm azimuth (rad) */ +# #define LAL_ET0_DETECTOR_ARM_Y_AZIMUTH_RAD 0.00000000000 /**< ET0 y arm azimuth (rad) */ +# #define LAL_ET0_DETECTOR_ARM_X_ALTITUDE_RAD 0.00000000000 /**< ET0 x arm altitude (rad) */ +# #define LAL_ET0_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00000000000 /**< ET0 y arm altitude (rad) */ +# #define LAL_ET0_DETECTOR_ARM_X_MIDPOINT_SI 0.00000000000 /**< ET0 x arm midpoint (m) */ +# #define LAL_ET0_DETECTOR_ARM_Y_MIDPOINT_SI 0.00000000000 /**< ET0 y arm midpoint (m) */ +# #define LAL_ET0_VERTEX_LOCATION_X_SI 4.54240595075e+06 /**< ET0 x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ET0_VERTEX_LOCATION_Y_SI 8.35639650438e+05 /**< ET0 y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ET0_VERTEX_LOCATION_Z_SI 4.38407519902e+06 /**< ET0 z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ET0_ARM_X_DIRECTION_X 0.00000000000 /**< ET0 x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ET0_ARM_X_DIRECTION_Y 0.00000000000 /**< ET0 y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ET0_ARM_X_DIRECTION_Z 0.00000000000 /**< ET0 z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ET0_ARM_Y_DIRECTION_X 0.00000000000 /**< ET0 x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_ET0_ARM_Y_DIRECTION_Y 0.00000000000 /**< ET0 y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_ET0_ARM_Y_DIRECTION_Z 0.00000000000 /**< ET0 z-component of unit vector pointing along y arm in Earth-centered frame */ +# /** @} */ + +# /** +# * \name KAGRA Interferometric Detector constants +# * The following constants describe the location and geometry of the +# * KAGRA Interferometric Detector. +# * \sa +# * > Yoshio Saito, "KAGRA location", KAGRA Technical Document JGW-G1503824 +# * > http://gwdoc.icrr.u-tokyo.ac.jp/cgi-bin/DocDB/ShowDocument?docid=3824 +# */ +# /** @{ */ +# #define LAL_KAGRA_DETECTOR_NAME "KAGRA" /**< KAGRA detector name string */ +# #define LAL_KAGRA_DETECTOR_PREFIX "K1" /**< KAGRA detector prefix string */ +# #define LAL_KAGRA_DETECTOR_LONGITUDE_RAD 2.396441015 /**< KAGRA vertex longitude (rad) */ +# #define LAL_KAGRA_DETECTOR_LATITUDE_RAD 0.6355068497 /**< KAGRA vertex latitude (rad) */ +# #define LAL_KAGRA_DETECTOR_ELEVATION_SI 414.181 /**< KAGRA vertex elevation (m) */ +# #define LAL_KAGRA_DETECTOR_ARM_X_AZIMUTH_RAD 1.054113 /**< KAGRA x arm azimuth (rad) */ +# #define LAL_KAGRA_DETECTOR_ARM_Y_AZIMUTH_RAD -0.5166798 /**< KAGRA y arm azimuth (rad) */ +# #define LAL_KAGRA_DETECTOR_ARM_X_ALTITUDE_RAD 0.0031414 /**< KAGRA x arm altitude (rad) */ +# #define LAL_KAGRA_DETECTOR_ARM_Y_ALTITUDE_RAD -0.0036270 /**< KAGRA y arm altitude (rad) */ +# #define LAL_KAGRA_DETECTOR_ARM_X_MIDPOINT_SI 1513.2535 /**< KAGRA x arm midpoint (m) */ +# #define LAL_KAGRA_DETECTOR_ARM_Y_MIDPOINT_SI 1511.611 /**< KAGRA y arm midpoint (m) */ +# #define LAL_KAGRA_VERTEX_LOCATION_X_SI -3777336.024 /**< KAGRA x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_KAGRA_VERTEX_LOCATION_Y_SI 3484898.411 /**< KAGRA y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_KAGRA_VERTEX_LOCATION_Z_SI 3765313.697 /**< KAGRA z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_KAGRA_ARM_X_DIRECTION_X -0.3759040 /**< KAGRA x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_KAGRA_ARM_X_DIRECTION_Y -0.8361583 /**< KAGRA y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_KAGRA_ARM_X_DIRECTION_Z 0.3994189 /**< KAGRA z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_KAGRA_ARM_Y_DIRECTION_X 0.7164378 /**< KAGRA x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_KAGRA_ARM_Y_DIRECTION_Y 0.01114076 /**< KAGRA y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_KAGRA_ARM_Y_DIRECTION_Z 0.6975620 /**< KAGRA z-component of unit vector pointing along y arm in Earth-centered frame */ +# /** @} */ + + +# /** +# * \name ACIGA Interferometric Detector constants (not implemented) +# * The following constants are stubs for the location and geometry of the +# * ACIGA Interferometric Detector. +# */ +# /** @{ */ +# #define LAL_ACIGA_DETECTOR_NAME "ACIGA" /**< ACIGA detector name string */ +# #define LAL_ACIGA_DETECTOR_PREFIX "U1" /**< ACIGA detector prefix string */ +# #define LAL_ACIGA_DETECTOR_LONGITUDE_RAD 0.0 /**< ACIGA vertex longitude (rad) */ +# #define LAL_ACIGA_DETECTOR_LATITUDE_RAD 0.0 /**< ACIGA vertex latitude (rad) */ +# #define LAL_ACIGA_DETECTOR_ELEVATION_SI 0.0 /**< ACIGA vertex elevation (m) */ +# #define LAL_ACIGA_DETECTOR_ARM_X_AZIMUTH_RAD 0.0 /**< ACIGA x arm azimuth (rad) */ +# #define LAL_ACIGA_DETECTOR_ARM_Y_AZIMUTH_RAD 0.0 /**< ACIGA y arm azimuth (rad) */ +# #define LAL_ACIGA_DETECTOR_ARM_X_ALTITUDE_RAD 0.0 /**< ACIGA x arm altitude (rad) */ +# #define LAL_ACIGA_DETECTOR_ARM_Y_ALTITUDE_RAD 0.0 /**< ACIGA y arm altitude (rad) */ +# #define LAL_ACIGA_DETECTOR_ARM_X_MIDPOINT_SI 0.0 /**< ACIGA x arm midpoint (m) */ +# #define LAL_ACIGA_DETECTOR_ARM_Y_MIDPOINT_SI 0.0 /**< ACIGA y arm midpoint (m) */ +# #define LAL_ACIGA_VERTEX_LOCATION_X_SI 0.0 /**< ACIGA x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ACIGA_VERTEX_LOCATION_Y_SI 0.0 /**< ACIGA y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ACIGA_VERTEX_LOCATION_Z_SI 0.0 /**< ACIGA z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ACIGA_ARM_X_DIRECTION_X 0.0 /**< ACIGA x-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ACIGA_ARM_X_DIRECTION_Y 0.0 /**< ACIGA y-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ACIGA_ARM_X_DIRECTION_Z 0.0 /**< ACIGA z-component of unit vector pointing along x arm in Earth-centered frame */ +# #define LAL_ACIGA_ARM_Y_DIRECTION_X 0.0 /**< ACIGA x-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_ACIGA_ARM_Y_DIRECTION_Y 0.0 /**< ACIGA y-component of unit vector pointing along y arm in Earth-centered frame */ +# #define LAL_ACIGA_ARM_Y_DIRECTION_Z 0.0 /**< ACIGA z-component of unit vector pointing along y arm in Earth-centered frame */ +# /** @} */ + + +# /* Resonant Mass (Bar) Detectors */ + + +# /** +# * \name ALLEGRO Resonant Mass Detector with 320 degree azimuth "IGEC axis" constants +# * The following constants describe the location and geometry of the +# * ALLEGRO Resonant Mass Detector with 320 degree azimuth "IGEC axis". +# */ +# /** @{ */ +# #define LAL_ALLEGRO_320_DETECTOR_NAME "ALLEGRO_320" /**< ALLEGRO_320 detector name string */ +# #define LAL_ALLEGRO_320_DETECTOR_PREFIX "A1" /**< ALLEGRO_320 detector prefix string */ +# #define LAL_ALLEGRO_320_DETECTOR_LONGITUDE_RAD -1.59137068496 /**< ALLEGRO_320 vertex longitude (rad) */ +# #define LAL_ALLEGRO_320_DETECTOR_LATITUDE_RAD 0.53079879206 /**< ALLEGRO_320 vertex latitude (rad) */ +# #define LAL_ALLEGRO_320_DETECTOR_ELEVATION_SI 0 /**< ALLEGRO_320 vertex elevation (m) */ +# #define LAL_ALLEGRO_320_DETECTOR_ARM_X_AZIMUTH_RAD -0.69813170080 /**< ALLEGRO_320 x arm azimuth (rad) */ +# #define LAL_ALLEGRO_320_DETECTOR_ARM_Y_AZIMUTH_RAD 0.00000000000 /**< ALLEGRO_320 y arm azimuth (rad) UNUSED FOR BARS */ +# #define LAL_ALLEGRO_320_DETECTOR_ARM_X_ALTITUDE_RAD 0.00000000000 /**< ALLEGRO_320 x arm altitude (rad) */ +# #define LAL_ALLEGRO_320_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00000000000 /**< ALLEGRO_320 y arm altitude (rad) UNUSED FOR BARS */ +# #define LAL_ALLEGRO_320_DETECTOR_ARM_X_MIDPOINT_SI 0.00000000000 /**< ALLEGRO_320 x arm midpoint (m) UNUSED FOR BARS */ +# #define LAL_ALLEGRO_320_DETECTOR_ARM_Y_MIDPOINT_SI 0.00000000000 /**< ALLEGRO_320 y arm midpoint (m) UNUSED FOR BARS */ +# #define LAL_ALLEGRO_320_VERTEX_LOCATION_X_SI -1.13258964140e+05 /**< ALLEGRO_320 x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ALLEGRO_320_VERTEX_LOCATION_Y_SI -5.50408337391e+06 /**< ALLEGRO_320 y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ALLEGRO_320_VERTEX_LOCATION_Z_SI 3.20989567981e+06 /**< ALLEGRO_320 z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_ALLEGRO_320_AXIS_DIRECTION_X -0.63467362345 /**< ALLEGRO_320 x-component of unit vector pointing along axis in Earth-centered frame */ +# #define LAL_ALLEGRO_320_AXIS_DIRECTION_Y 0.40093077976 /**< ALLEGRO_320 y-component of unit vector pointing along axis in Earth-centered frame */ +# #define LAL_ALLEGRO_320_AXIS_DIRECTION_Z 0.66063901000 /**< ALLEGRO_320 z-component of unit vector pointing along axis in Earth-centered frame */ +# /** @} */ + +# /** +# * \name AURIGA Resonant Mass Detector constants +# * The following constants describe the location and geometry of the +# * AURIGA Resonant Mass Detector. +# */ +# /** @{ */ +# #define LAL_AURIGA_DETECTOR_NAME "AURIGA" /**< AURIGA detector name string */ +# #define LAL_AURIGA_DETECTOR_PREFIX "O1" /**< AURIGA detector prefix string */ +# #define LAL_AURIGA_DETECTOR_LONGITUDE_RAD 0.20853775679 /**< AURIGA vertex longitude (rad) */ +# #define LAL_AURIGA_DETECTOR_LATITUDE_RAD 0.79156499342 /**< AURIGA vertex latitude (rad) */ +# #define LAL_AURIGA_DETECTOR_ELEVATION_SI 0 /**< AURIGA vertex elevation (m) */ +# #define LAL_AURIGA_DETECTOR_ARM_X_AZIMUTH_RAD 0.76794487088 /**< AURIGA x arm azimuth (rad) */ +# #define LAL_AURIGA_DETECTOR_ARM_Y_AZIMUTH_RAD 0.00000000000 /**< AURIGA y arm azimuth (rad) UNUSED FOR BARS */ +# #define LAL_AURIGA_DETECTOR_ARM_X_ALTITUDE_RAD 0.00000000000 /**< AURIGA x arm altitude (rad) */ +# #define LAL_AURIGA_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00000000000 /**< AURIGA y arm altitude (rad) UNUSED FOR BARS */ +# #define LAL_AURIGA_DETECTOR_ARM_X_MIDPOINT_SI 0.00000000000 /**< AURIGA x arm midpoint (m) UNUSED FOR BARS */ +# #define LAL_AURIGA_DETECTOR_ARM_Y_MIDPOINT_SI 0.00000000000 /**< AURIGA y arm midpoint (m) UNUSED FOR BARS */ +# #define LAL_AURIGA_VERTEX_LOCATION_X_SI 4.39246733007e+06 /**< AURIGA x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_AURIGA_VERTEX_LOCATION_Y_SI 9.29508666967e+05 /**< AURIGA y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_AURIGA_VERTEX_LOCATION_Z_SI 4.51502913071e+06 /**< AURIGA z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_AURIGA_AXIS_DIRECTION_X -0.64450412225 /**< AURIGA x-component of unit vector pointing along axis in Earth-centered frame */ +# #define LAL_AURIGA_AXIS_DIRECTION_Y 0.57365538956 /**< AURIGA y-component of unit vector pointing along axis in Earth-centered frame */ +# #define LAL_AURIGA_AXIS_DIRECTION_Z 0.50550364038 /**< AURIGA z-component of unit vector pointing along axis in Earth-centered frame */ +# /** @} */ + +# /** +# * \name EXPLORER Resonant Mass Detector constants +# * The following constants describe the location and geometry of the +# * EXPLORER Resonant Mass Detector. +# */ +# /** @{ */ +# #define LAL_EXPLORER_DETECTOR_NAME "EXPLORER" /**< EXPLORER detector name string */ +# #define LAL_EXPLORER_DETECTOR_PREFIX "X1" /**< EXPLORER detector prefix string */ +# #define LAL_EXPLORER_DETECTOR_LONGITUDE_RAD 0.10821041362 /**< EXPLORER vertex longitude (rad) */ +# #define LAL_EXPLORER_DETECTOR_LATITUDE_RAD 0.81070543755 /**< EXPLORER vertex latitude (rad) */ +# #define LAL_EXPLORER_DETECTOR_ELEVATION_SI 0 /**< EXPLORER vertex elevation (m) */ +# #define LAL_EXPLORER_DETECTOR_ARM_X_AZIMUTH_RAD 0.68067840828 /**< EXPLORER x arm azimuth (rad) */ +# #define LAL_EXPLORER_DETECTOR_ARM_Y_AZIMUTH_RAD 0.00000000000 /**< EXPLORER y arm azimuth (rad) UNUSED FOR BARS */ +# #define LAL_EXPLORER_DETECTOR_ARM_X_ALTITUDE_RAD 0.00000000000 /**< EXPLORER x arm altitude (rad) */ +# #define LAL_EXPLORER_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00000000000 /**< EXPLORER y arm altitude (rad) UNUSED FOR BARS */ +# #define LAL_EXPLORER_DETECTOR_ARM_X_MIDPOINT_SI 0.00000000000 /**< EXPLORER x arm midpoint (m) UNUSED FOR BARS */ +# #define LAL_EXPLORER_DETECTOR_ARM_Y_MIDPOINT_SI 0.00000000000 /**< EXPLORER y arm midpoint (m) UNUSED FOR BARS */ +# #define LAL_EXPLORER_VERTEX_LOCATION_X_SI 4.37645395452e+06 /**< EXPLORER x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_EXPLORER_VERTEX_LOCATION_Y_SI 4.75435044067e+05 /**< EXPLORER y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_EXPLORER_VERTEX_LOCATION_Z_SI 4.59985274450e+06 /**< EXPLORER z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_EXPLORER_AXIS_DIRECTION_X -0.62792641437 /**< EXPLORER x-component of unit vector pointing along axis in Earth-centered frame */ +# #define LAL_EXPLORER_AXIS_DIRECTION_Y 0.56480832712 /**< EXPLORER y-component of unit vector pointing along axis in Earth-centered frame */ +# #define LAL_EXPLORER_AXIS_DIRECTION_Z 0.53544371484 /**< EXPLORER z-component of unit vector pointing along axis in Earth-centered frame */ +# /** @} */ + +# /** +# * \name Nautilus Resonant Mass Detector constants +# * The following constants describe the location and geometry of the +# * Nautilus Resonant Mass Detector. +# */ +# /** @{ */ +# #define LAL_NAUTILUS_DETECTOR_NAME "Nautilus" /**< Nautilus detector name string */ +# #define LAL_NAUTILUS_DETECTOR_PREFIX "N1" /**< Nautilus detector prefix string */ +# #define LAL_NAUTILUS_DETECTOR_LONGITUDE_RAD 0.22117684946 /**< Nautilus vertex longitude (rad) */ +# #define LAL_NAUTILUS_DETECTOR_LATITUDE_RAD 0.72996456710 /**< Nautilus vertex latitude (rad) */ +# #define LAL_NAUTILUS_DETECTOR_ELEVATION_SI 0 /**< Nautilus vertex elevation (m) */ +# #define LAL_NAUTILUS_DETECTOR_ARM_X_AZIMUTH_RAD 0.76794487088 /**< Nautilus x arm azimuth (rad) */ +# #define LAL_NAUTILUS_DETECTOR_ARM_Y_AZIMUTH_RAD 0.00000000000 /**< Nautilus y arm azimuth (rad) UNUSED FOR BARS */ +# #define LAL_NAUTILUS_DETECTOR_ARM_X_ALTITUDE_RAD 0.00000000000 /**< Nautilus x arm altitude (rad) */ +# #define LAL_NAUTILUS_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00000000000 /**< Nautilus y arm altitude (rad) UNUSED FOR BARS */ +# #define LAL_NAUTILUS_DETECTOR_ARM_X_MIDPOINT_SI 0.00000000000 /**< Nautilus x arm midpoint (m) UNUSED FOR BARS */ +# #define LAL_NAUTILUS_DETECTOR_ARM_Y_MIDPOINT_SI 0.00000000000 /**< Nautilus y arm midpoint (m) UNUSED FOR BARS */ +# #define LAL_NAUTILUS_VERTEX_LOCATION_X_SI 4.64410999868e+06 /**< Nautilus x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_NAUTILUS_VERTEX_LOCATION_Y_SI 1.04425342477e+06 /**< Nautilus y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_NAUTILUS_VERTEX_LOCATION_Z_SI 4.23104713307e+06 /**< Nautilus z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_NAUTILUS_AXIS_DIRECTION_X -0.62039441384 /**< Nautilus x-component of unit vector pointing along axis in Earth-centered frame */ +# #define LAL_NAUTILUS_AXIS_DIRECTION_Y 0.57250373141 /**< Nautilus y-component of unit vector pointing along axis in Earth-centered frame */ +# #define LAL_NAUTILUS_AXIS_DIRECTION_Z 0.53605060283 /**< Nautilus z-component of unit vector pointing along axis in Earth-centered frame */ +# /** @} */ + +# /** +# * \name NIOBE Resonant Mass Detector constants +# * The following constants describe the location and geometry of the +# * NIOBE Resonant Mass Detector. +# */ +# /** @{ */ +# #define LAL_NIOBE_DETECTOR_NAME "NIOBE" /**< NIOBE detector name string */ +# #define LAL_NIOBE_DETECTOR_PREFIX "B1" /**< NIOBE detector prefix string */ +# #define LAL_NIOBE_DETECTOR_LONGITUDE_RAD 2.02138216202 /**< NIOBE vertex longitude (rad) */ +# #define LAL_NIOBE_DETECTOR_LATITUDE_RAD -0.55734180780 /**< NIOBE vertex latitude (rad) */ +# #define LAL_NIOBE_DETECTOR_ELEVATION_SI 0 /**< NIOBE vertex elevation (m) */ +# #define LAL_NIOBE_DETECTOR_ARM_X_AZIMUTH_RAD 0.00000000000 /**< NIOBE x arm azimuth (rad) */ +# #define LAL_NIOBE_DETECTOR_ARM_Y_AZIMUTH_RAD 0.00000000000 /**< NIOBE y arm azimuth (rad) UNUSED FOR BARS */ +# #define LAL_NIOBE_DETECTOR_ARM_X_ALTITUDE_RAD 0.00000000000 /**< NIOBE x arm altitude (rad) */ +# #define LAL_NIOBE_DETECTOR_ARM_Y_ALTITUDE_RAD 0.00000000000 /**< NIOBE y arm altitude (rad) UNUSED FOR BARS */ +# #define LAL_NIOBE_DETECTOR_ARM_X_MIDPOINT_SI 0.00000000000 /**< NIOBE x arm midpoint (m) UNUSED FOR BARS */ +# #define LAL_NIOBE_DETECTOR_ARM_Y_MIDPOINT_SI 0.00000000000 /**< NIOBE y arm midpoint (m) UNUSED FOR BARS */ +# #define LAL_NIOBE_VERTEX_LOCATION_X_SI -2.35948871453e+06 /**< NIOBE x-component of vertex location in Earth-centered frame (m) */ +# #define LAL_NIOBE_VERTEX_LOCATION_Y_SI 4.87721571259e+06 /**< NIOBE y-component of vertex location in Earth-centered frame (m) */ +# #define LAL_NIOBE_VERTEX_LOCATION_Z_SI -3.35416003274e+06 /**< NIOBE z-component of vertex location in Earth-centered frame (m) */ +# #define LAL_NIOBE_AXIS_DIRECTION_X -0.23034623759 /**< NIOBE x-component of unit vector pointing along axis in Earth-centered frame */ +# #define LAL_NIOBE_AXIS_DIRECTION_Y 0.47614056486 /**< NIOBE y-component of unit vector pointing along axis in Earth-centered frame */ +# define LAL_NIOBE_AXIS_DIRECTION_Z 0.84866411101 /**< NIOBE z-component of unit vector pointing along axis in Earth-centered frame */ + + +IFO_PARAMETERS = dict( + H1=dict( + latitude=0.81079526383, + longitude=-2.08405676917, + xarm_azimuth=125.9994 * DEG_TO_RAD, + yarm_azimuth=215.9994 * DEG_TO_RAD, + xarm_tilt=-0.00061950000, + yarm_tilt=0.00001250000, + elevation=142.554, + ), + L1=dict( + latitude=(30 + 33.0 / 60 + 46.4196 / 3600) * DEG_TO_RAD, + longitude=-(90 + 46.0 / 60 + 27.2654 / 3600) * DEG_TO_RAD, + xarm_azimuth=197.7165 * DEG_TO_RAD, + yarm_azimuth=287.7165 * DEG_TO_RAD, + xarm_tilt=-0.00031210000, + yarm_tilt=-0.00061070000, + elevation=-6.574, + ), + V1=dict( + latitude=(43 + 37.0 / 60 + 53.0921 / 3600) * DEG_TO_RAD, + longitude=(10 + 30.0 / 60 + 16.1887 / 3600) * DEG_TO_RAD, + xarm_azimuth=70.5674 * DEG_TO_RAD, + yarm_azimuth=160.5674 * DEG_TO_RAD, + xarm_tilt=0, + yarm_tilt=0, + elevation=51.884, + ), +) + +IFO_ARMS = dict( + H1=dict( + x=np.array([-0.22389266154, 0.79983062746, 0.55690487831]), + y=np.array([-0.91397818574, 0.02609403989, -0.40492342125]), + ), + L1=dict( + x=np.array([-0.95457412153, -0.14158077340, -0.26218911324]), + y=np.array([0.29774156894, -0.48791033647, -0.82054461286]), + ), + V1=dict( + x=np.array([-0.70045821479, 0.20848948619, 0.68256166277]), + y=np.array([-0.05379255368, -0.96908180549, 0.24080451708]), + ), +) + +KNOWN_IFOS = set(IFO_PARAMETERS.keys()).union(set(IFO_ARMS.keys())) + +# POLARIZATION TENSORS + + +def polarization_p(x, y): + """Plus polarization tensor product.""" + return jnp.einsum("i,j->ij", x, x) - jnp.einsum("i,j->ij", y, y) + + +def polarization_c(x, y): + """Cross polarization tensor product.""" + return jnp.einsum("i,j->ij", x, y) + jnp.einsum("i,j->ij", y, x) + + +def polarization_x(x, y): + """Vector x polarization tensor product.""" + z = jnp.cross(x, y) + return jnp.einsum("i,j->ij", x, z) + jnp.einsum("i,j->ij", z, x) + + +def polarization_y(x, y): + """Vector y polarization tensor product.""" + z = jnp.cross(x, y) + return jnp.einsum("i,j->ij", y, z) + jnp.einsum("i,j->ij", z, y) + + +def polarization_b(x, y): + """Scalar breathing polarization tensor product.""" + return jnp.einsum("i,j->ij", x, x) + jnp.einsum("i,j->ij", y, y) + + +def polarization_l(x, y): + """Scalar longitudinal polarization tensor product.""" + z = jnp.cross(x, y) + return jnp.einsum("i,j->ij", z, z) + + +polarization_function_dict = { + "p": polarization_p, + "c": polarization_c, + "x": polarization_x, + "y": polarization_y, + "b": polarization_b, + "l": polarization_l, +} + + +def wave_basis_from_sky(ra: float, dec: float, psi: float, gmst: float): + """Computes {name} polarization tensor in celestial + coordinates from sky location and orientation parameters. + + Arguments + --------- + ra : Float + right ascension in radians. + dec : Float + declination in radians. + psi : Float + polarization angle in radians. + gmst : Float + Greenwhich mean standard time (GMST) in radians. + + Returns + ------- + m : Float[Array, " 3"] + x-axis of wave frame + n : Float[Array, " 3"] + y-axis of wave frame + """ + gmst = jnp.mod(gmst, 2 * jnp.pi) + phi = ra - gmst + theta = jnp.pi / 2 - dec + + u = jnp.array( + [ + jnp.cos(phi) * jnp.cos(theta), + jnp.cos(theta) * jnp.sin(phi), + -jnp.sin(theta), + ] + ) + v = jnp.array([-jnp.sin(phi), jnp.cos(phi), 0]) + m = -u * jnp.sin(psi) - v * jnp.cos(psi) + n = -u * jnp.cos(psi) + v * jnp.sin(psi) + + return m, n + + +# DETECTOR + + +def get_detector_arm_from_coordinates( + lat: float, lon: float, tilt: float, azimuth: float +): + """ + Construct detector-arm vectors in Earth-centric Cartesian coordinates. + + Parameters + --------- + lat : Float + vertex latitude in rad. + lon : Float + vertex longitude in rad. + tilt : Float + arm tilt in rad. + azimuth : Float + arm azimuth in rad. + + Returns + ------- + arm : Float[Array, " 3"] + detector arm vector in Earth-centric Cartesian coordinates. + """ + e_lon = jnp.array([-jnp.sin(lon), jnp.cos(lon), 0]) + e_lat = jnp.array( + [ + -jnp.sin(lat) * jnp.cos(lon), + -jnp.sin(lat) * jnp.sin(lon), + jnp.cos(lat), + ] + ) + e_h = jnp.array( + [jnp.cos(lat) * jnp.cos(lon), jnp.cos(lat) * jnp.sin(lon), jnp.sin(lat)] + ) + + return ( + jnp.cos(tilt) * jnp.cos(azimuth) * e_lon + + jnp.cos(tilt) * jnp.sin(azimuth) * e_lat + + jnp.sin(tilt) * e_h + ) + + +def get_detector_arms(name): + """Detector arm vectors (x, y) in Earth-centric Cartesian coordinates. + + Arguments + --------- + name : str + detector name. + + Returns + ------- + x : Float[Array, " 3"] + x-arm vector in Earth-centric Cartesian coordinates. + y : Float[Array, " 3"] + y-arm vector in Earth-centric Cartesian coordinates. + """ + if name in IFO_ARMS: + return IFO_ARMS[name]["x"], IFO_ARMS[name]["y"] + + xarm_azimuth = IFO_PARAMETERS[name]["xarm_azimuth"] + yarm_azimuth = IFO_PARAMETERS[name]["yarm_azimuth"] + xarm_tilt = IFO_PARAMETERS[name]["xarm_tilt"] + yarm_tilt = IFO_PARAMETERS[name]["yarm_tilt"] + latitude = IFO_PARAMETERS[name]["latitude"] + longitude = IFO_PARAMETERS[name]["longitude"] + + x = get_detector_arm_from_coordinates( + latitude, longitude, xarm_tilt, xarm_azimuth + ) + y = get_detector_arm_from_coordinates( + latitude, longitude, yarm_tilt, yarm_azimuth + ) + return x, y + + +def get_detector_tensor(name): + """Detector tensor defining the strain measurement. + + Returns + ------- + tensor : Float[Array, " 3 3"] + detector tensor. + """ + arm1, arm2 = get_detector_arms(name) + return 0.5 * ( + jnp.einsum("i,j->ij", arm1, arm1) - jnp.einsum("i,j->ij", arm2, arm2) + ) + + +def get_vertex_from_coordinates(lat, lon, h): + """Detector vertex coordinates in the reference celestial frame. Based + on arXiv:gr-qc/0008066 Eqs. (B11-B13) except for a typo in the + definition of the local radius; see Section 2.1 of LIGO-T980044-10. + + Returns + ------- + vertex : Float[Array, " 3"] + detector vertex coordinates. + """ + # get detector and Earth parameters + major, minor = EARTH_SEMI_MAJOR_AXIS, EARTH_SEMI_MINOR_AXIS + # compute vertex location + r = major**2 * ( + major**2 * jnp.cos(lat) ** 2 + minor**2 * jnp.sin(lat) ** 2 + ) ** (-0.5) + x = (r + h) * jnp.cos(lat) * jnp.cos(lon) + y = (r + h) * jnp.cos(lat) * jnp.sin(lon) + z = ((minor / major) ** 2 * r + h) * jnp.sin(lat) + return jnp.array([x, y, z]) + + +def get_geocenter_delay_function(name) -> float: + """ + Calculate time delay between two detectors in geocentric + coordinates based on XLALArrivaTimeDiff in TimeDelay.c + + https://lscsoft.docs.ligo.org/lalsuite/lal/group___time_delay__h.html + + Parameters + --------- + ra : Float + right ascension of the source in rad. + dec : Float + declination of the source in rad. + gmst : Float + Greenwich mean sidereal time in rad. + + Returns + ------- + Float: time delay from Earth center. + """ + vertex = get_vertex_from_coordinates( + IFO_PARAMETERS[name]["latitude"], + IFO_PARAMETERS[name]["longitude"], + IFO_PARAMETERS[name]["elevation"], + ) + delta_d = -vertex + + def delay_from_geocenter(ra, dec, gmst): + gmst = jnp.mod(gmst, 2 * jnp.pi) + phi = ra - gmst + theta = jnp.pi / 2 - dec + omega = jnp.array( + [ + jnp.sin(theta) * jnp.cos(phi), + jnp.sin(theta) * jnp.sin(phi), + jnp.cos(theta), + ] + ) + return jnp.dot(omega, delta_d) / C_SI + + return delay_from_geocenter + + +def get_antenna_pattern_function(ifo, polarization): + """Computes {name} antenna patterns for {modes} polarizations + at the specified sky location, orientation and GMST. + + In the long-wavelength approximation, the antenna pattern for a + given polarization is the dyadic product between the detector + tensor and the corresponding polarization tensor. + + Parameters + --------- + ra : Float + source right ascension in radians. + dec : Float + source declination in radians. + psi : Float + source polarization angle in radians. + gmst : Float + Greenwich mean sidereal time (GMST) in radians. + modes : str + string of polarizations to include, defaults to tensor modes: 'pc'. + + Returns + ------- + result : list + antenna pattern values for {modes}. + """ + detector_tensor = get_detector_tensor(ifo) + polarization_tensor_function = polarization_function_dict[polarization] + + def antenna_pattern(ra, dec, psi, gmst): + m, n = wave_basis_from_sky(ra, dec, psi, gmst) + wave_tensor = polarization_tensor_function(m, n) + return jnp.einsum("ij,ij->", detector_tensor, wave_tensor) + + return antenna_pattern + + +def gmst_from_gps(gps_time: float) -> float: + """Return Greenwich mean sidereal time (rad) from + GPS time. + """ + t = Time(gps_time, format="gps") + return t.sidereal_time("apparent", "greenwich").rad diff --git a/ringdown/fit.py b/ringdown/fit.py index 9e809951..ad001921 100644 --- a/ringdown/fit.py +++ b/ringdown/fit.py @@ -14,7 +14,6 @@ import numpyro import jaxlib.xla_extension import xarray as xr -import lal import logging from .data import Data, AutoCovariance, PowerSpectrum from . import utils @@ -1666,7 +1665,7 @@ def set_target( """ # turn float into LIGOTimeGPS object to ensure we get the right # number of digits when converting to string - t0 = lal.LIGOTimeGPS(t0) if isinstance(t0, float) else t0 + # t0 = lal.LIGOTimeGPS(t0) if isinstance(t0, float) else t0 # record all arguments for provenance settings = {k: v for k, v in locals().items() if k != "self"} diff --git a/ringdown/imr.py b/ringdown/imr.py index e4f3538d..693df88b 100644 --- a/ringdown/imr.py +++ b/ringdown/imr.py @@ -19,14 +19,14 @@ get_dict_from_pattern, ) from .config import IMR_CONFIG_SECTION, WHITENED_LOGLIKE_KEY -import lal import multiprocessing as mp -from lalsimulation import nrfits import logging import inspect logger = logging.getLogger(__name__) +MSUN_SI = 1.988409870698050677689968230400e30 + MASS_ALIASES = [ "final_mass", "mf", @@ -59,6 +59,8 @@ def get_remnant( f_ref, model, ): + # lazy import LAL (optional dependency) + from lalsimulation import nrfits r = nrfits.eval_nrfit( mass_1, mass_2, @@ -391,8 +393,8 @@ def get_remnant_parameters( if nproc is None: r = np.vectorize(get_remnant)( - self["mass_1"] * lal.MSUN_SI, - self["mass_2"] * lal.MSUN_SI, + self["mass_1"] * MSUN_SI, + self["mass_2"] * MSUN_SI, self["spin_1x"], self["spin_1y"], self["spin_1z"], @@ -407,8 +409,8 @@ def get_remnant_parameters( r = p.starmap( get_remnant, zip( - self["mass_1"] * lal.MSUN_SI, - self["mass_2"] * lal.MSUN_SI, + self["mass_1"] * MSUN_SI, + self["mass_2"] * MSUN_SI, self["spin_1x"], self["spin_1y"], self["spin_1z"], @@ -421,7 +423,7 @@ def get_remnant_parameters( ) r = np.array(r).reshape(len(self), 2) - self["final_mass"] = r[:, 0] / lal.MSUN_SI + self["final_mass"] = r[:, 0] / MSUN_SI self["final_spin"] = r[:, 1] return self[keys] diff --git a/ringdown/target.py b/ringdown/target.py index 1c758f10..7fabf05a 100644 --- a/ringdown/target.py +++ b/ringdown/target.py @@ -3,13 +3,14 @@ __all__ = ["Target", "SkyTarget", "DetectorTarget", "TargetCollection"] import numpy as np -import lal +from astropy.time import Time import logging from dataclasses import dataclass, asdict from abc import ABC, abstractmethod from .utils import utils from .utils.utils import try_parse from .config import T_MSUN, IMR_CONFIG_SECTION, PIPE_SECTION +from . import detector logger = logging.getLogger(__name__) @@ -134,7 +135,7 @@ def construct( class SkyTarget(Target): """Sky location target for a ringdown analysis.""" - geocenter_time: float | lal.LIGOTimeGPS | None = None + geocenter_time: float | Time | None = None ra: float | None = None dec: float | None = None psi: float | None = None @@ -143,7 +144,7 @@ class SkyTarget(Target): def __post_init__(self): # validate input: floats or None for k, v in self.as_dict().items(): - if v is not None and not isinstance(v, lal.LIGOTimeGPS): + if v is not None and not isinstance(v, Time): setattr(self, k, float(v)) # make sure options are not contradictory if self.is_set: @@ -177,12 +178,11 @@ def get_detector_time(self, ifo) -> float: times : float time for specified detector. """ - if ifo in lal.cached_detector_by_prefix: - det = lal.cached_detector_by_prefix[ifo] - else: + if ifo not in detector.KNOWN_IFOS: raise ValueError(f"unrecognized detector {ifo}") - tgps = lal.LIGOTimeGPS(self.geocenter_time) - dt = lal.TimeDelayFromEarthCenter(det.location, self.ra, self.dec, tgps) + dt_func = detector.get_geocenter_delay_function(ifo) + gmst = detector.gmst_from_gps(self.geocenter_time) + dt = dt_func(self.ra, self.dec, gmst) t0 = self.geocenter_time + dt return float(t0) @@ -199,16 +199,16 @@ def get_antenna_patterns(self, ifo) -> tuple[float, float]: antenna_patterns : dict dictionary of antenna patterns. """ - if ifo in lal.cached_detector_by_prefix: - det = lal.cached_detector_by_prefix[ifo] - else: + if ifo not in detector.KNOWN_IFOS: raise ValueError(f"unrecognized detector {ifo}") - tgps = lal.LIGOTimeGPS(self.geocenter_time) - gmst = lal.GreenwichMeanSiderealTime(tgps) - fpfc = lal.ComputeDetAMResponse( - det.response, self.ra, self.dec, self.psi, gmst - ) - return tuple(fpfc) + # get plus and cross functions + fp_func = detector.get_antenna_pattern_function(ifo, 'p') + fc_func = detector.get_antenna_pattern_function(ifo, 'c') + # evaluate at requested parameters + gmst = detector.gmst_from_gps(self.geocenter_time) + fp = float(fp_func(self.ra, self.dec, self.psi, gmst)) + fc = float(fc_func(self.ra, self.dec, self.psi, gmst)) + return fp, fc @classmethod def construct( @@ -247,13 +247,12 @@ def construct( if reference_ifo is None: tgeo = t0 else: - det = lal.cached_detector_by_prefix[reference_ifo] - tgps = lal.LIGOTimeGPS(t0) - dt = lal.TimeDelayFromEarthCenter(det.location, ra, dec, tgps) + dt_func = detector.get_geocenter_delay_function(reference_ifo) + dt = float(dt_func(ra, dec, detector.gmst_from_gps(t0))) tgeo = t0 - dt if kws: logger.info(f"unused keyword arguments: {kws}") - return cls(lal.LIGOTimeGPS(tgeo), ra, dec, psi, duration) + return cls(np.float64(tgeo), ra, dec, psi, duration) @property def settings(self) -> dict: diff --git a/ringdown/waveforms/coalescence.py b/ringdown/waveforms/coalescence.py index 810d1e4b..16b7deb7 100644 --- a/ringdown/waveforms/coalescence.py +++ b/ringdown/waveforms/coalescence.py @@ -1,7 +1,7 @@ __all__ = ["Coalescence", "Parameters"] import numpy as np -import lal + from .core import Signal, _ishift from ..utils import docstring_parameter @@ -9,7 +9,6 @@ from scipy.signal.windows import tukey except ImportError: from scipy.signal import tukey -import lalsimulation as ls from dataclasses import dataclass, asdict, fields import inspect import h5py @@ -17,6 +16,22 @@ logger = logging.getLogger(__name__) +MSUN_SI = 1.988409870698050677689968230400e30 +PC_SI = 3.08567758149136720000e16 +GMSUN_SI = 1.32712440000000000000e20 +C_SI = 2.99792458000000000000e08 + +try: + import lalsimulation as ls + MODELS = [ + ls.GetStringFromApproximant(a) + for a in range(ls.NumApproximants) + if ls.SimInspiralImplementedFDApproximants(a) + or ls.SimInspiralImplementedTDApproximants(a) + ] +except ImportError: + MODELS = [] + def m1m2_from_mtotq(mtot, q): m1 = mtot / (1 + q) @@ -215,6 +230,9 @@ def construct(cls, **kws): pars : Parameters coalescence parameters container object """.format(cls._ALIASES_STR) + # lazy import of LAL (optional dependency) + import lalsimulation as ls + kws["f_ref"] = kws.get("f_ref", kws.get("f_low")) for par, aliases in cls._ALIASES.items(): for k in aliases: @@ -239,8 +257,8 @@ def construct(cls, **kws): if not all(lsim_given) and any(linf_given): try: a = [kws[k] for k in cls._SPIN_KEYS_LALINF] + [ - kws["mass_1"] * lal.MSUN_SI, - kws["mass_2"] * lal.MSUN_SI, + kws["mass_1"] * MSUN_SI, + kws["mass_2"] * MSUN_SI, kws["f_ref"], kws["phase"], ] @@ -304,17 +322,17 @@ def cos_iota(self): @property def luminosity_distance_si(self): """Luminosity distance in meters.""" - return self.luminosity_distance * 1e6 * lal.PC_SI + return self.luminosity_distance * 1e6 * PC_SI @property def mass_1_si(self): """First component mass in kg.""" - return self.mass_1 * lal.MSUN_SI + return self.mass_1 * MSUN_SI @property def mass_2_si(self): """Second component mass in kg.""" - return self.mass_2 * lal.MSUN_SI + return self.mass_2 * MSUN_SI def compute_remnant_mchi( self, model: str = "NRSur7dq4Remnant", solar_masses=True @@ -333,13 +351,16 @@ def compute_remnant_mchi( chif : float remnant dimensionless spin magnitude. """ + # lazy import LAL (optional dependency) + from lalsimulation import nrfits + if solar_masses: - m1 = self["mass_1"] * lal.MSUN_SI - m2 = self["mass_2"] * lal.MSUN_SI + m1 = self["mass_1"] * MSUN_SI + m2 = self["mass_2"] * MSUN_SI else: m1 = self["mass_1"] m2 = self["mass_2"] - remnant = ls.nrfits.eval_nrfit( + remnant = nrfits.eval_nrfit( m1, m2, [self["spin_1x"], self["spin_1y"], self["spin_1z"]], @@ -350,7 +371,7 @@ def compute_remnant_mchi( ) mf = remnant["FinalMass"] if solar_masses: - mf /= lal.MSUN_SI + mf /= MSUN_SI chif = np.linalg.norm(remnant["FinalSpin"]) return mf, chif @@ -368,11 +389,11 @@ def final_spin(self): @property def final_mass_seconds(self): - return self.final_mass * lal.GMSUN_SI / lal.C_SI**3 + return self.final_mass * GMSUN_SI / C_SI**3 @property def final_mass_si(self): - return self.final_mass * lal.MSUN_SI + return self.final_mass * MSUN_SI def get_choosetdwaveform_args(self, delta_t): """Construct input for :func:`ls.SimInspiralChooseTDWaveform`. @@ -506,14 +527,9 @@ class Coalescence(Signal): """An inspiral-merger-ringdown signal from a compact binary coalescence.""" _DEF_TUKEY_ALPHA = 0.125 + _MODELS = MODELS # register names of all available LALSimulation approximants - _MODELS = [ - ls.GetStringFromApproximant(a) - for a in range(ls.NumApproximants) - if ls.SimInspiralImplementedFDApproximants(a) - or ls.SimInspiralImplementedTDApproximants(a) - ] def __init__(self, *args, modes=None, **kwargs): super(Coalescence, self).__init__(*args, **kwargs) @@ -602,6 +618,10 @@ def from_parameters( h : Coalescence compact binary coalescence signal. """ + # lazy import of LAL (optional dependency) + import lal + import lalsimulation as ls + approximant = model or approximant if approximant is None: @@ -779,6 +799,8 @@ def get_invariant_peak_time(self, ell_max=None, force=False): t_peak : float peak time of the invariant strain """ + # lazy import LAL (optional dependency) + import lal # LALDict *LALpars, # /**< LAL dictionary containing accessory parameters */ diff --git a/ringdown/waveforms/core.py b/ringdown/waveforms/core.py index 7c467983..e8945f01 100644 --- a/ringdown/waveforms/core.py +++ b/ringdown/waveforms/core.py @@ -1,10 +1,10 @@ __all__ = ["Signal", "get_detector_signals", "get_delay"] import numpy as np -import lal from ..data import Data, TimeSeries from inspect import getfullargspec import logging +from .. import detector logger = logging.getLogger(__name__) @@ -259,16 +259,16 @@ def project( if ifo is None: raise ValueError("must provide IFO name or antenna patterns") # compute antenna patterns for detector - tgps = lal.LIGOTimeGPS(t0 or self.t0) - gmst = lal.GreenwichMeanSiderealTime(tgps) - det = lal.cached_detector_by_prefix[ifo] - antenna_patterns = lal.ComputeDetAMResponse( - det.response, ra, dec, psi, gmst - ) + tgps =float(t0 or self.t0) + gmst = detector.gmst_from_gps(tgps) + fp_func = detector.get_antenna_pattern_function(ifo, 'p') + fc_func = detector.get_antenna_pattern_function(ifo, 'c') + fp = float(fp_func(ra, dec, psi, gmst)) + fc = float(fc_func(ra, dec, psi, gmst)) + antenna_patterns = (fp, fc) else: # use provided antenna patterns tgps = None - det = None Fp, Fc = antenna_patterns h = Fp * self._hp + Fc * self._hc @@ -490,7 +490,7 @@ def get_detector_signals( def get_delay( ifo: str, - t0: float | lal.LIGOTimeGPS, + t0: float, ra: float, dec: float, reference: str = Signal._FROM_GEO_KEY, @@ -518,17 +518,17 @@ def get_delay( dt : float time-of-flight delay. """ - if not isinstance(t0, lal.LIGOTimeGPS): - t0 = lal.LIGOTimeGPS(t0) - d = lal.cached_detector_by_prefix[ifo] + gmst = detector.gmst_from_gps(float(t0)) + dt_func = detector.get_geocenter_delay_function(ifo) + dt = float(dt_func(ra, dec, gmst)) if reference.lower() == Signal._FROM_GEO_KEY: - dt = lal.TimeDelayFromEarthCenter(d.location, ra, dec, t0) + return dt elif isinstance(reference, str): - dref = lal.cached_detector_by_prefix[reference] - dt = lal.ArrivalTimeDiff(d.location, dref.location, ra, dec, t0) + dt_func_ref = detector.get_geocenter_delay_function(reference) + dt_ref = float(dt_func_ref(ra, dec, gmst)) + return dt - dt_ref else: raise ValueError("unrecognized reference: {}".format(reference)) - return dt get_delay.__doc__ = get_delay.__doc__.format(from_geo=Signal._FROM_GEO_KEY) diff --git a/uv.lock b/uv.lock index 900480d1..4667cd37 100644 --- a/uv.lock +++ b/uv.lock @@ -28,7 +28,7 @@ wheels = [ [[package]] name = "astropy" -version = "7.0.1" +version = "7.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "astropy-iers-data" }, @@ -37,22 +37,22 @@ dependencies = [ { name = "pyerfa" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/45/12/a1c582b3f9df5e2680eae0ed82c8057ae06d6130a1f7a5c0770fa899737e/astropy-7.0.1.tar.gz", hash = "sha256:392feeb443b2437cd4c2e0641a65e0f15ba791e148e9b1e5ed7de7dfcb38e460", size = 7139539 } +sdist = { url = "https://files.pythonhosted.org/packages/6a/12/d6ad68d5acd751e3827d54a64333e0dd789bcc747fe9528f5758b35421f8/astropy-7.0.0.tar.gz", hash = "sha256:e92d7c9fee86eb3df8714e5dd41bbf9f163d343e1a183d95bf6bd09e4313c940", size = 7130087 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/79/ab4edcdb5928ed636b24d6e721460880d0bb6a7a2bca228d06abb5d2a5e4/astropy-7.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b16c5e3cd30ecedc79401a931eaeae3b9f2fc17f19ea26693c6c424cda74bd0e", size = 6574981 }, - { url = "https://files.pythonhosted.org/packages/57/34/87a0feca0214f21092c75381b046b9eb71cf56ea406f6148aa34cf30c3bb/astropy-7.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:11c680207674a53afd603addf5640809bb670f72e9f9a6f023b862040ba7e100", size = 6499230 }, - { url = "https://files.pythonhosted.org/packages/4e/08/e112c26a69ce00238d3d03b5d200d86816b9db5b582169957a9102416aae/astropy-7.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e930aa618a1df80ecc38ecc594ca1e7508909c79c4b1145e9e91e8695fd163c", size = 10251470 }, - { url = "https://files.pythonhosted.org/packages/75/9d/1e150830a5491b684e2bb8c8e7224702ac57c101b4e208ed8f84eeedbf5a/astropy-7.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b4831c5b8a8e6c62afc095d9f65e6c023f058821c1fcc829adc2d941090cd2a", size = 10310513 }, - { url = "https://files.pythonhosted.org/packages/5c/f0/2c4cd9fbbdb222aaafe902fe39e62851ab8fe25b394f328d68df0d0f2301/astropy-7.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2245f23020db2382f187a880dd903f1d4747cbdce6af8f299bc6d4f256b382bf", size = 10345694 }, - { url = "https://files.pythonhosted.org/packages/5a/0c/f0c7624e0db2b81ff7e2bb8fbf3c0403c9f4e9ed29a99132af51d26b54b6/astropy-7.0.1-cp311-cp311-win32.whl", hash = "sha256:91bec2ac62f759300279fd98f3baf2fe33082729045d80c231948d6df0cceacc", size = 6364686 }, - { url = "https://files.pythonhosted.org/packages/65/61/b85c917adbd0a69ebe0e512285abea1ae81e1a713ae55452b4f20afdb1e7/astropy-7.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:0ae8960fe690f62672afff723d5e7d25ccd054c941c3ded96471d4d62563864e", size = 6489635 }, - { url = "https://files.pythonhosted.org/packages/74/e2/3dc27026a098171cf3f88d964dfdf39c70c75fd205624f2f9be8381268f7/astropy-7.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b075f4b8034a3e40d417c079232f1adb613a40e3b8d7cebdb05278666bfeb3ca", size = 6581263 }, - { url = "https://files.pythonhosted.org/packages/2d/45/0ae6513fc819a9223c5a779b2955ceb27ab5ad57c44e16abcc9fbaee838c/astropy-7.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:71bb61871859635653e0530ca152c379882473ff4aabf2484a848ead94efe248", size = 6504874 }, - { url = "https://files.pythonhosted.org/packages/ae/f8/2d151d9476eb8797923164aee9764873c28be3654c7c60eae5d33f916d30/astropy-7.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1692857a3f21cecadefe89e4371e9c5a2d03e80173f4bb01dcbe3e3213ad1303", size = 10279377 }, - { url = "https://files.pythonhosted.org/packages/ed/70/930a24bd3f2046ba2c4b8a914d0349ffb17760d044f2a4e8c3195b984851/astropy-7.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:062f9dc6549884699c551310a21434ff650c9a1cb6c0eea9476ead456f8a8500", size = 10358814 }, - { url = "https://files.pythonhosted.org/packages/22/07/28bc41436ada5e614a583371780d03f6377aa845450d0b04d544dee5c49c/astropy-7.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9cd02ef44007e0d6f27f0136410253a64b1ae56a2333c7071fd775c6feea8e12", size = 10377323 }, - { url = "https://files.pythonhosted.org/packages/4e/56/175acf7145af6c77cfeca339837293b2dee06936280bf841b6df8da30c92/astropy-7.0.1-cp312-cp312-win32.whl", hash = "sha256:ba9c09cb1ba9c126b40cbbbe9273b4e6f2b0403d268f64a15ed976f77754372b", size = 6364259 }, - { url = "https://files.pythonhosted.org/packages/69/a8/ae5bb7849274b04248817fc8c885c0966c02c7d20a9a7f9e7388fa9f091f/astropy-7.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:02259457097a3bad3e50975d67bd7586753b2a69d680f071be5c8da439e0f2c4", size = 6489380 }, + { url = "https://files.pythonhosted.org/packages/d6/54/de05566563bb3327d7878cec81507ad5677801f5739eb7623dffef6f6a39/astropy-7.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ada206f13b1e9c9c07ae0fce55e3090d694c555107c23c30b271a58fea1732b", size = 6664940 }, + { url = "https://files.pythonhosted.org/packages/e3/b4/308bcffcde4c971245f75a8805a6b7606d150090ff9e94317b818808e0ca/astropy-7.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d5f5657a1443421b0ab8ae6afa85fc7934f5e384648b7acef21aca5918acfca8", size = 6540264 }, + { url = "https://files.pythonhosted.org/packages/79/3d/54c4c3773d10f8a6010ab60619c0b0a39c058d2f58abacb3895fac461478/astropy-7.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b47d7af967e51dc612fd8440ed65ad371c0c2bbf5d739ef4aa147bcd2fbe6b13", size = 10605227 }, + { url = "https://files.pythonhosted.org/packages/34/4c/ec389497ae4305dce4a35062b2851065c535d792f91231f5c290b5c25725/astropy-7.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74c6df5c68cc4acb86e343db6d4b96419d585c7ba5fd41fe3023f47ee9f5dbc9", size = 10663688 }, + { url = "https://files.pythonhosted.org/packages/21/90/3e2563e37df91c36b1e8e03d2ef49561b6eeb86abac39ee8f66fcf652fb5/astropy-7.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9fcfb92043994dfbd1a267b893398aab8f680b0587b4333dacbfa034a3159aa0", size = 10696004 }, + { url = "https://files.pythonhosted.org/packages/51/52/a1a5d365d34c6b933db759960fa7451ae3f076e9d020dfa9c5b6fa8dd359/astropy-7.0.0-cp311-cp311-win32.whl", hash = "sha256:1ad4483712effdd691c085e7b58805c01a54cebf8f4c6955973ceccd60bd36ed", size = 6391060 }, + { url = "https://files.pythonhosted.org/packages/38/76/c7165f1729c98273c9af6a756e0c1f95893b7ff7eea939cb9a72e2699c0f/astropy-7.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:f8a00fcb30c2317b111d8b6a99eb60a81e8292c24dce65e986ee4610ea16b8d2", size = 6522031 }, + { url = "https://files.pythonhosted.org/packages/83/cf/3356a9b3428b37a895c9f23b6a844814a18dd486e1d3358925bf6222d3eb/astropy-7.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b103516dd54a90f9b9652dff3dd47ad6d43436c61ed800023943a562b7ea9712", size = 6669091 }, + { url = "https://files.pythonhosted.org/packages/1c/08/e6d55b98514720e6d574647385570e9602414c49c1b6b48903c3cec9415a/astropy-7.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3ced126597ea2d2876a341821d76ba20fb895c2eef117b447b6b3182993794df", size = 6545597 }, + { url = "https://files.pythonhosted.org/packages/96/d2/a64c3ca06b010cb228f78d9ffc0a41b0c26bcfe7323b60a41f66cfb534b6/astropy-7.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:733be30f52e7ed5ace7fc5ab9bbfbf1f2f604661682141f177ea356893b58cc4", size = 10646328 }, + { url = "https://files.pythonhosted.org/packages/01/5f/aa4c1a6b1769b0a48d289b9293aaf92b51f190d2ef5da3b4a2090411010d/astropy-7.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14bb14bce6e7cc41066037d8a168b26a5fe6722a9201e9fae8da22a4c34c8780", size = 10728865 }, + { url = "https://files.pythonhosted.org/packages/01/76/79f2fcf90800d98abfb37928589f54fdf06621d029e2ba6093661c6951d4/astropy-7.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5c14ca39b607af23273ee2b86cecee782a4feb4220b8f7a93b1dc3fe07582779", size = 10741642 }, + { url = "https://files.pythonhosted.org/packages/e6/75/eae5d114fed94248e1ff83eb798aeb3c67f985bbbdf1312ee690dc723ae4/astropy-7.0.0-cp312-cp312-win32.whl", hash = "sha256:6f2ee5872b0fffd8b9c4d9ce9af51c69f24cdad0d2f4fffbabfcfd4debd303f8", size = 6390205 }, + { url = "https://files.pythonhosted.org/packages/0a/f6/627fe5592c1f903f8d8d707486e30e2d13eda3fe3e903bd4e35eba5e1b5c/astropy-7.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:62d62d3603bb8b243f6bac21f02341f963418ccf6f299be1d45d8c3918e64c91", size = 6520322 }, ] [[package]] @@ -64,6 +64,96 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cb/a8/4c635e27f0c4fe41f3a882429e3be988148a62bcdfd49e150484ba2406b0/astropy_iers_data-0.2025.4.7.0.35.30-py3-none-any.whl", hash = "sha256:d84001b8631b416b67286c74b074510e89f296b3ab91cd5f595cd4d7440ffab8", size = 1950784 }, ] +[[package]] +name = "certifi" +version = "2025.1.31" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/ab/c9f1e32b7b1bf505bf26f0ef697775960db7932abeb7b516de930ba2705f/certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", size = 167577 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393 }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401", size = 182264 }, + { url = "https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf", size = 178651 }, + { url = "https://files.pythonhosted.org/packages/94/dd/a3f0118e688d1b1a57553da23b16bdade96d2f9bcda4d32e7d2838047ff7/cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4", size = 445259 }, + { url = "https://files.pythonhosted.org/packages/2e/ea/70ce63780f096e16ce8588efe039d3c4f91deb1dc01e9c73a287939c79a6/cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41", size = 469200 }, + { url = "https://files.pythonhosted.org/packages/1c/a0/a4fa9f4f781bda074c3ddd57a572b060fa0df7655d2a4247bbe277200146/cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1", size = 477235 }, + { url = "https://files.pythonhosted.org/packages/62/12/ce8710b5b8affbcdd5c6e367217c242524ad17a02fe5beec3ee339f69f85/cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6", size = 459721 }, + { url = "https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d", size = 467242 }, + { url = "https://files.pythonhosted.org/packages/1a/52/d9a0e523a572fbccf2955f5abe883cfa8bcc570d7faeee06336fbd50c9fc/cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6", size = 477999 }, + { url = "https://files.pythonhosted.org/packages/44/74/f2a2460684a1a2d00ca799ad880d54652841a780c4c97b87754f660c7603/cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f", size = 454242 }, + { url = "https://files.pythonhosted.org/packages/f8/4a/34599cac7dfcd888ff54e801afe06a19c17787dfd94495ab0c8d35fe99fb/cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b", size = 478604 }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727 }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400 }, + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995 }, + { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471 }, + { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831 }, + { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335 }, + { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862 }, + { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673 }, + { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211 }, + { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039 }, + { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939 }, + { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075 }, + { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340 }, + { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205 }, + { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441 }, + { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, + { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, + { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, + { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, + { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, + { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, + { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, + { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, + { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, + { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, + { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, + { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, + { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, + { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, +] + +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "platform_system == 'Windows'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -104,6 +194,45 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a1/35/c2de8823211d07e8a79ab018ef03960716c5dff6f4d5bff5af87fd682992/contourpy-1.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:08d9d449a61cf53033612cb368f3a1b26cd7835d9b8cd326647efe43bca7568d", size = 220971 }, ] +[[package]] +name = "cryptography" +version = "44.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/25/4ce80c78963834b8a9fd1cc1266be5ed8d1840785c0f2e1b73b8d128d505/cryptography-44.0.2.tar.gz", hash = "sha256:c63454aa261a0cf0c5b4718349629793e9e634993538db841165b3df74f37ec0", size = 710807 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/ef/83e632cfa801b221570c5f58c0369db6fa6cef7d9ff859feab1aae1a8a0f/cryptography-44.0.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:efcfe97d1b3c79e486554efddeb8f6f53a4cdd4cf6086642784fa31fc384e1d7", size = 6676361 }, + { url = "https://files.pythonhosted.org/packages/30/ec/7ea7c1e4c8fc8329506b46c6c4a52e2f20318425d48e0fe597977c71dbce/cryptography-44.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29ecec49f3ba3f3849362854b7253a9f59799e3763b0c9d0826259a88efa02f1", size = 3952350 }, + { url = "https://files.pythonhosted.org/packages/27/61/72e3afdb3c5ac510330feba4fc1faa0fe62e070592d6ad00c40bb69165e5/cryptography-44.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc821e161ae88bfe8088d11bb39caf2916562e0a2dc7b6d56714a48b784ef0bb", size = 4166572 }, + { url = "https://files.pythonhosted.org/packages/26/e4/ba680f0b35ed4a07d87f9e98f3ebccb05091f3bf6b5a478b943253b3bbd5/cryptography-44.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3c00b6b757b32ce0f62c574b78b939afab9eecaf597c4d624caca4f9e71e7843", size = 3958124 }, + { url = "https://files.pythonhosted.org/packages/9c/e8/44ae3e68c8b6d1cbc59040288056df2ad7f7f03bbcaca6b503c737ab8e73/cryptography-44.0.2-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7bdcd82189759aba3816d1f729ce42ffded1ac304c151d0a8e89b9996ab863d5", size = 3678122 }, + { url = "https://files.pythonhosted.org/packages/27/7b/664ea5e0d1eab511a10e480baf1c5d3e681c7d91718f60e149cec09edf01/cryptography-44.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4973da6ca3db4405c54cd0b26d328be54c7747e89e284fcff166132eb7bccc9c", size = 4191831 }, + { url = "https://files.pythonhosted.org/packages/2a/07/79554a9c40eb11345e1861f46f845fa71c9e25bf66d132e123d9feb8e7f9/cryptography-44.0.2-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4e389622b6927d8133f314949a9812972711a111d577a5d1f4bee5e58736b80a", size = 3960583 }, + { url = "https://files.pythonhosted.org/packages/bb/6d/858e356a49a4f0b591bd6789d821427de18432212e137290b6d8a817e9bf/cryptography-44.0.2-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f514ef4cd14bb6fb484b4a60203e912cfcb64f2ab139e88c2274511514bf7308", size = 4191753 }, + { url = "https://files.pythonhosted.org/packages/b2/80/62df41ba4916067fa6b125aa8c14d7e9181773f0d5d0bd4dcef580d8b7c6/cryptography-44.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1bc312dfb7a6e5d66082c87c34c8a62176e684b6fe3d90fcfe1568de675e6688", size = 4079550 }, + { url = "https://files.pythonhosted.org/packages/f3/cd/2558cc08f7b1bb40683f99ff4327f8dcfc7de3affc669e9065e14824511b/cryptography-44.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b721b8b4d948b218c88cb8c45a01793483821e709afe5f622861fc6182b20a7", size = 4298367 }, + { url = "https://files.pythonhosted.org/packages/71/59/94ccc74788945bc3bd4cf355d19867e8057ff5fdbcac781b1ff95b700fb1/cryptography-44.0.2-cp37-abi3-win32.whl", hash = "sha256:51e4de3af4ec3899d6d178a8c005226491c27c4ba84101bfb59c901e10ca9f79", size = 2772843 }, + { url = "https://files.pythonhosted.org/packages/ca/2c/0d0bbaf61ba05acb32f0841853cfa33ebb7a9ab3d9ed8bb004bd39f2da6a/cryptography-44.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:c505d61b6176aaf982c5717ce04e87da5abc9a36a5b39ac03905c4aafe8de7aa", size = 3209057 }, + { url = "https://files.pythonhosted.org/packages/9e/be/7a26142e6d0f7683d8a382dd963745e65db895a79a280a30525ec92be890/cryptography-44.0.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e0ddd63e6bf1161800592c71ac794d3fb8001f2caebe0966e77c5234fa9efc3", size = 6677789 }, + { url = "https://files.pythonhosted.org/packages/06/88/638865be7198a84a7713950b1db7343391c6066a20e614f8fa286eb178ed/cryptography-44.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81276f0ea79a208d961c433a947029e1a15948966658cf6710bbabb60fcc2639", size = 3951919 }, + { url = "https://files.pythonhosted.org/packages/d7/fc/99fe639bcdf58561dfad1faa8a7369d1dc13f20acd78371bb97a01613585/cryptography-44.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a1e657c0f4ea2a23304ee3f964db058c9e9e635cc7019c4aa21c330755ef6fd", size = 4167812 }, + { url = "https://files.pythonhosted.org/packages/53/7b/aafe60210ec93d5d7f552592a28192e51d3c6b6be449e7fd0a91399b5d07/cryptography-44.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6210c05941994290f3f7f175a4a57dbbb2afd9273657614c506d5976db061181", size = 3958571 }, + { url = "https://files.pythonhosted.org/packages/16/32/051f7ce79ad5a6ef5e26a92b37f172ee2d6e1cce09931646eef8de1e9827/cryptography-44.0.2-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1c3572526997b36f245a96a2b1713bf79ce99b271bbcf084beb6b9b075f29ea", size = 3679832 }, + { url = "https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b042d2a275c8cee83a4b7ae30c45a15e6a4baa65a179a0ec2d78ebb90e4f6699", size = 4193719 }, + { url = "https://files.pythonhosted.org/packages/72/97/430e56e39a1356e8e8f10f723211a0e256e11895ef1a135f30d7d40f2540/cryptography-44.0.2-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d03806036b4f89e3b13b6218fefea8d5312e450935b1a2d55f0524e2ed7c59d9", size = 3960852 }, + { url = "https://files.pythonhosted.org/packages/89/33/c1cf182c152e1d262cac56850939530c05ca6c8d149aa0dcee490b417e99/cryptography-44.0.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c7362add18b416b69d58c910caa217f980c5ef39b23a38a0880dfd87bdf8cd23", size = 4193906 }, + { url = "https://files.pythonhosted.org/packages/e1/99/87cf26d4f125380dc674233971069bc28d19b07f7755b29861570e513650/cryptography-44.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8cadc6e3b5a1f144a039ea08a0bdb03a2a92e19c46be3285123d32029f40a922", size = 4081572 }, + { url = "https://files.pythonhosted.org/packages/b3/9f/6a3e0391957cc0c5f84aef9fbdd763035f2b52e998a53f99345e3ac69312/cryptography-44.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6f101b1f780f7fc613d040ca4bdf835c6ef3b00e9bd7125a4255ec574c7916e4", size = 4298631 }, + { url = "https://files.pythonhosted.org/packages/e2/a5/5bc097adb4b6d22a24dea53c51f37e480aaec3465285c253098642696423/cryptography-44.0.2-cp39-abi3-win32.whl", hash = "sha256:3dc62975e31617badc19a906481deacdeb80b4bb454394b4098e3f2525a488c5", size = 2773792 }, + { url = "https://files.pythonhosted.org/packages/33/cf/1f7649b8b9a3543e042d3f348e398a061923ac05b507f3f4d95f11938aa9/cryptography-44.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:5f6f90b72d8ccadb9c6e311c775c8305381db88374c65fa1a68250aa8a9cb3a6", size = 3210957 }, + { url = "https://files.pythonhosted.org/packages/d6/d7/f30e75a6aa7d0f65031886fa4a1485c2fbfe25a1896953920f6a9cfe2d3b/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:909c97ab43a9c0c0b0ada7a1281430e4e5ec0458e6d9244c0e821bbf152f061d", size = 3887513 }, + { url = "https://files.pythonhosted.org/packages/9c/b4/7a494ce1032323ca9db9a3661894c66e0d7142ad2079a4249303402d8c71/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96e7a5e9d6e71f9f4fca8eebfd603f8e86c5225bb18eb621b2c1e50b290a9471", size = 4107432 }, + { url = "https://files.pythonhosted.org/packages/45/f8/6b3ec0bc56123b344a8d2b3264a325646d2dcdbdd9848b5e6f3d37db90b3/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d1b3031093a366ac767b3feb8bcddb596671b3aaff82d4050f984da0c248b615", size = 3891421 }, + { url = "https://files.pythonhosted.org/packages/57/ff/f3b4b2d007c2a646b0f69440ab06224f9cf37a977a72cdb7b50632174e8a/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:04abd71114848aa25edb28e225ab5f268096f44cf0127f3d36975bdf1bdf3390", size = 4107081 }, +] + [[package]] name = "cycler" version = "0.12.1" @@ -113,6 +242,35 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 }, ] +[[package]] +name = "dateparser" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "regex" }, + { name = "tzlocal" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/3f/d3207a05f5b6a78c66d86631e60bfba5af163738a599a5b9aa2c2737a09e/dateparser-1.2.1.tar.gz", hash = "sha256:7e4919aeb48481dbfc01ac9683c8e20bfe95bb715a38c1e9f6af889f4f30ccc3", size = 309924 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/0a/981c438c4cd84147c781e4e96c1d72df03775deb1bc76c5a6ee8afa89c62/dateparser-1.2.1-py3-none-any.whl", hash = "sha256:bdcac262a467e6260030040748ad7c10d6bacd4f3b9cdb4cfd2251939174508c", size = 295658 }, +] + +[[package]] +name = "dqsegdb2" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "igwn-auth-utils" }, + { name = "igwn-segments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/37/7874b39abede48fe05c3b5a25092e419e521145e9705c97b711965e5f05d/dqsegdb2-1.3.0.tar.gz", hash = "sha256:4e291899cd395daf5913c48a835d213ef20833d78354871cb848988cc2cc8ae4", size = 33661 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/67/c977e7307d432911fe28acf55dba01f84f3a0a4a2a968350195c0f52d23e/dqsegdb2-1.3.0-py3-none-any.whl", hash = "sha256:c93087da332b7d91519a370abed3cfc91b64a6bf393ec64d79c2747c837aeb66", size = 27957 }, +] + [[package]] name = "fonttools" version = "4.57.0" @@ -138,6 +296,56 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/90/27/45f8957c3132917f91aaa56b700bcfc2396be1253f685bd5c68529b6f610/fonttools-4.57.0-py3-none-any.whl", hash = "sha256:3122c604a675513c68bd24c6a8f9091f1c2376d18e8f5fe5a101746c81b3e98f", size = 1093605 }, ] +[[package]] +name = "gwdatafind" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "igwn-auth-utils" }, + { name = "ligo-segments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2b/10/9f1b9100f59e2ca4a85dad8a21942d0702d756f4b80a433c728be4a871d2/gwdatafind-1.2.0.tar.gz", hash = "sha256:8f74942e66cdb9a53030da29069110b3cb30afc2a034790957786028fb09f451", size = 40381 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/89/61/5020eff070e04b1e07c7cf8bed63705aa705011e057cbb839e9a31367bdd/gwdatafind-1.2.0-py3-none-any.whl", hash = "sha256:58c505ee188c1186ff81b3de5f946f289179a4f8c334f7eb45d07dd70a71bd2c", size = 45529 }, +] + +[[package]] +name = "gwosc" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/2d/c95e5cb3f6f3d3d77dcc288c7823fd4f10dcff63a89a3466bb25c64c0192/gwosc-0.8.0.tar.gz", hash = "sha256:5f6b054e13b899ff7720083a51bcbe3f3e7e59e0cf601f0738809f2bc18a092a", size = 35505 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/91/ca5e9a74aec8114a7d0387b7fdafc2dcd2a93bbdc9f40312ba1fca46282c/gwosc-0.8.0-py3-none-any.whl", hash = "sha256:8ce5c0d92f3b1079461fa2c513790d38dbe1a17c906486f78a630520e624d18d", size = 32311 }, +] + +[[package]] +name = "gwpy" +version = "3.0.10" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "astropy" }, + { name = "dateparser" }, + { name = "dqsegdb2" }, + { name = "gwdatafind" }, + { name = "gwosc" }, + { name = "h5py" }, + { name = "ligo-segments" }, + { name = "ligotimegps" }, + { name = "matplotlib" }, + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "requests" }, + { name = "scipy" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/40/d5/82a45dcaf285aaf04550c77a4d06abeaff2695c018be2901ddc116b60ce5/gwpy-3.0.10.tar.gz", hash = "sha256:073b4d8ec14e3db32c7cff74df2248f31d378fb095089e7ceb241cfb34f6e8fd", size = 1540393 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/1b/fee8e2007913613d7494b8591b5a62d3dee389f88b2425be22a9576c98ea/gwpy-3.0.10-py3-none-any.whl", hash = "sha256:348070a88b6b2acefe6b40ee541e0a6100c89604c5def62e55fd31417b82076b", size = 1395063 }, +] + [[package]] name = "h5netcdf" version = "1.6.1" @@ -172,6 +380,30 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/25/61/d897952629cae131c19d4c41b2521e7dd6382f2d7177c87615c2e6dced1a/h5py-3.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec", size = 2954179 }, ] +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "igwn-auth-utils" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "requests" }, + { name = "safe-netrc" }, + { name = "scitokens" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/49/bec88217045c1a5ad3bf21f0e8af54add5562392aa4dc7adbdf12c115196/igwn_auth_utils-1.3.1.tar.gz", hash = "sha256:0addd3f8d247c2c68de7cd328265968de1d3912a9150871f36ad7354165d2a57", size = 39782 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/81/ddaa2f195b608598a5e3e928fe1eb546827ea8f4714632dd344fe1f3bd54/igwn_auth_utils-1.3.1-py3-none-any.whl", hash = "sha256:5596b3ac259a5b87c21515e0f52b92df57819753036880f3a7948d0997014517", size = 34118 }, +] + [[package]] name = "igwn-segments" version = "2.0.0" @@ -301,6 +533,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b5/37/c962f26408ce45271a5a3aaa918f7beae74a8e8a6f00bbe5fdf77fd778ca/ligo_segments-1.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:601be6d92e52bdebbb5a82b608ed1ceb781a0ea86b3e5333d61af77575b32664", size = 50555 }, ] +[[package]] +name = "ligotimegps" +version = "2.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/39/2e/cef2ee4c4f3f1f04566e3e7e9343811a74f6e9a0bc6ef4711248f132e3bb/ligotimegps-2.0.1.tar.gz", hash = "sha256:88626c02ad9a464d1242a1147b40074792f424bafa2ab013eee629c7d1b6469c", size = 35191 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/b6/6d6d0585fa2ae936a9f5d411b1f0fbe9fcb0aca0c51a775aa4f8f95fdf5e/ligotimegps-2.0.1-py2.py3-none-any.whl", hash = "sha256:da8c1289ba1310337ef5177e7936e25ce47d4e8e6a269cbdd5e9abfc5b5db490", size = 19930 }, +] + [[package]] name = "llvmlite" version = "0.44.0" @@ -537,6 +778,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/37/f3/9b18362206b244167c958984b57c7f70a0289bfb59a530dd8af5f699b910/pillow-11.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:4dd43a78897793f60766563969442020e90eb7847463eca901e41ba186a7d4a5", size = 2375240 }, ] +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, +] + [[package]] name = "pyerfa" version = "2.0.1.5" @@ -555,6 +805,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b4/11/97233cf23ad5411ac6f13b1d6ee3888f90ace4f974d9bf9db887aa428912/pyerfa-2.0.1.5-cp39-abi3-win_amd64.whl", hash = "sha256:66292d437dcf75925b694977aa06eb697126e7b86553e620371ed3e48b5e0ad0", size = 349410 }, ] +[[package]] +name = "pyjwt" +version = "2.10.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 }, +] + [[package]] name = "pyparsing" version = "3.2.3" @@ -626,15 +885,68 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6d/a3/e2d6b17b02b5c52ce6c68fce7f2f190e796c2c1c5419e675f6a947fdb78c/qnm-0.4.4-py3-none-any.whl", hash = "sha256:63711c37ff4847c8cb59e6266da5baf81f88cc6ab728f40fc3fe39a3025f6252", size = 95563 }, ] +[[package]] +name = "regex" +version = "2024.11.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/58/7e4d9493a66c88a7da6d205768119f51af0f684fe7be7bac8328e217a52c/regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638", size = 482669 }, + { url = "https://files.pythonhosted.org/packages/34/4c/8f8e631fcdc2ff978609eaeef1d6994bf2f028b59d9ac67640ed051f1218/regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7", size = 287684 }, + { url = "https://files.pythonhosted.org/packages/c5/1b/f0e4d13e6adf866ce9b069e191f303a30ab1277e037037a365c3aad5cc9c/regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20", size = 284589 }, + { url = "https://files.pythonhosted.org/packages/25/4d/ab21047f446693887f25510887e6820b93f791992994f6498b0318904d4a/regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114", size = 792121 }, + { url = "https://files.pythonhosted.org/packages/45/ee/c867e15cd894985cb32b731d89576c41a4642a57850c162490ea34b78c3b/regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3", size = 831275 }, + { url = "https://files.pythonhosted.org/packages/b3/12/b0f480726cf1c60f6536fa5e1c95275a77624f3ac8fdccf79e6727499e28/regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f", size = 818257 }, + { url = "https://files.pythonhosted.org/packages/bf/ce/0d0e61429f603bac433910d99ef1a02ce45a8967ffbe3cbee48599e62d88/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0", size = 792727 }, + { url = "https://files.pythonhosted.org/packages/e4/c1/243c83c53d4a419c1556f43777ccb552bccdf79d08fda3980e4e77dd9137/regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55", size = 780667 }, + { url = "https://files.pythonhosted.org/packages/c5/f4/75eb0dd4ce4b37f04928987f1d22547ddaf6c4bae697623c1b05da67a8aa/regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89", size = 776963 }, + { url = "https://files.pythonhosted.org/packages/16/5d/95c568574e630e141a69ff8a254c2f188b4398e813c40d49228c9bbd9875/regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d", size = 784700 }, + { url = "https://files.pythonhosted.org/packages/8e/b5/f8495c7917f15cc6fee1e7f395e324ec3e00ab3c665a7dc9d27562fd5290/regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34", size = 848592 }, + { url = "https://files.pythonhosted.org/packages/1c/80/6dd7118e8cb212c3c60b191b932dc57db93fb2e36fb9e0e92f72a5909af9/regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d", size = 852929 }, + { url = "https://files.pythonhosted.org/packages/11/9b/5a05d2040297d2d254baf95eeeb6df83554e5e1df03bc1a6687fc4ba1f66/regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45", size = 781213 }, + { url = "https://files.pythonhosted.org/packages/26/b7/b14e2440156ab39e0177506c08c18accaf2b8932e39fb092074de733d868/regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9", size = 261734 }, + { url = "https://files.pythonhosted.org/packages/80/32/763a6cc01d21fb3819227a1cc3f60fd251c13c37c27a73b8ff4315433a8e/regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60", size = 274052 }, + { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781 }, + { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455 }, + { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759 }, + { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976 }, + { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077 }, + { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160 }, + { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896 }, + { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997 }, + { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725 }, + { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481 }, + { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896 }, + { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138 }, + { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692 }, + { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135 }, + { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + [[package]] name = "ringdown" -version = "1.0.1.dev242+gbd9fdad.d20250407" +version = "1.0.1.dev255+g2d638f0.d20250408" source = { editable = "." } dependencies = [ { name = "arviz" }, + { name = "astropy" }, { name = "h5py" }, { name = "jax" }, - { name = "lalsuite" }, { name = "numpy" }, { name = "numpyro" }, { name = "pandas" }, @@ -643,12 +955,20 @@ dependencies = [ { name = "seaborn" }, ] +[package.optional-dependencies] +extra = [ + { name = "gwpy" }, + { name = "lalsuite" }, +] + [package.metadata] requires-dist = [ { name = "arviz", specifier = "~=0.19" }, + { name = "astropy", specifier = "==7.0" }, + { name = "gwpy", marker = "extra == 'extra'", specifier = "==3.0.10" }, { name = "h5py", specifier = "~=3.11" }, { name = "jax", specifier = "~=0.4" }, - { name = "lalsuite", specifier = "==7.25.1" }, + { name = "lalsuite", marker = "extra == 'extra'", specifier = "==7.25.1" }, { name = "numpy", specifier = "==1.26.4" }, { name = "numpyro", specifier = "~=0.15" }, { name = "pandas", specifier = "~=2.2" }, @@ -660,6 +980,15 @@ requires-dist = [ [package.metadata.requires-dev] dev = [{ name = "ringdown", editable = "." }] +[[package]] +name = "safe-netrc" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/f1/fb3c8ccd4a8963d7400cfd80100d5ae7fd95d49ace3a6722736bb4c1c1a6/safe-netrc-1.0.1.tar.gz", hash = "sha256:1dcc7263b4d9ce72e0109d8e2bc9ba89c8056ccc618d26c8c94802c6fd753720", size = 10846 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/2a/b5b09ff2781c7ea694b337f65f52a00319396578c049af8890ff9b4b8232/safe_netrc-1.0.1-py3-none-any.whl", hash = "sha256:5f0dd6a5e304b1da3be220f15efedbf09e50779fe90462143c228c781b9d8218", size = 10891 }, +] + [[package]] name = "scipy" version = "1.15.2" @@ -689,6 +1018,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f5/6f/e6e5aff77ea2a48dd96808bb51d7450875af154ee7cbe72188afb0b37929/scipy-1.15.2-cp312-cp312-win_amd64.whl", hash = "sha256:e7c68b6a43259ba0aab737237876e5c2c549a031ddb7abc28c7b47f22e202ded", size = 40942317 }, ] +[[package]] +name = "scitokens" +version = "1.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "pyjwt" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/13/13372ff4f4b6335819d2592b7f10ff1e56513261558b2a4162f6d6cba971/scitokens-1.8.1.tar.gz", hash = "sha256:f255383d9c7402b3fcd20d5ed26a6b407b4be8bec6f282d0af29b6275382b54d", size = 48564 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/17/916811af05e98d86b347f3a9d9c2d490ef9e5c75dc5980842bf946a70ba3/scitokens-1.8.1-py3-none-any.whl", hash = "sha256:a5455d85969cd7c7b341ed8691ea89e0e446bd414a734f8443752081b049b46c", size = 31190 }, +] + [[package]] name = "seaborn" version = "0.13.2" @@ -751,6 +1094,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, ] +[[package]] +name = "tzlocal" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tzdata", marker = "platform_system == 'Windows'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8b/2e/c14812d3d4d9cd1773c6be938f89e5735a1f11a9f184ac3639b93cef35d5/tzlocal-5.3.1.tar.gz", hash = "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd", size = 30761 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/14/e2a54fabd4f08cd7af1c07030603c3356b74da07f7cc056e600436edfa17/tzlocal-5.3.1-py3-none-any.whl", hash = "sha256:eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d", size = 18026 }, +] + +[[package]] +name = "urllib3" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", size = 307268 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369 }, +] + [[package]] name = "xarray" version = "2025.3.1"