gwpy 3.0.9__py3-none-any.whl → 3.0.10__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of gwpy might be problematic. Click here for more details.
- gwpy/_version.py +2 -2
- gwpy/cli/gwpy_plot.py +1 -1
- gwpy/cli/tests/base.py +11 -1
- gwpy/detector/units.py +1 -1
- gwpy/frequencyseries/tests/test_hist.py +4 -3
- gwpy/plot/plot.py +12 -2
- gwpy/plot/tests/test_segments.py +1 -1
- gwpy/segments/flag.py +13 -11
- gwpy/signal/filter_design.py +1 -1
- gwpy/signal/tests/test_coherence.py +31 -10
- gwpy/table/io/ligolw.py +1 -1
- gwpy/table/tests/test_io_ligolw.py +1 -1
- gwpy/testing/errors.py +1 -0
- gwpy/timeseries/core.py +0 -1
- gwpy/timeseries/statevector.py +4 -2
- gwpy/timeseries/tests/test_core.py +7 -13
- gwpy/timeseries/tests/test_io_gwf_framecpp.py +1 -1
- gwpy/timeseries/tests/test_statevector.py +29 -17
- gwpy/timeseries/tests/test_timeseries.py +10 -14
- gwpy/types/tests/test_array.py +12 -10
- gwpy/types/tests/test_array2d.py +5 -9
- gwpy/types/tests/test_series.py +5 -5
- gwpy/utils/sphinx/zenodo.py +5 -1
- gwpy/utils/tests/test_sphinx_zenodo.py +10 -5
- gwpy-3.0.10.dist-info/METADATA +125 -0
- {gwpy-3.0.9.dist-info → gwpy-3.0.10.dist-info}/RECORD +30 -30
- {gwpy-3.0.9.dist-info → gwpy-3.0.10.dist-info}/WHEEL +1 -1
- gwpy-3.0.9.dist-info/METADATA +0 -124
- {gwpy-3.0.9.dist-info → gwpy-3.0.10.dist-info}/LICENSE +0 -0
- {gwpy-3.0.9.dist-info → gwpy-3.0.10.dist-info}/entry_points.txt +0 -0
- {gwpy-3.0.9.dist-info → gwpy-3.0.10.dist-info}/top_level.txt +0 -0
gwpy/_version.py
CHANGED
gwpy/cli/gwpy_plot.py
CHANGED
|
@@ -55,7 +55,7 @@ Examples:
|
|
|
55
55
|
$ gwpy-plot coherencegram --chan H1:GDS-CALIB_STRAIN H1:PEM-CS_ACC_PSL_PERISCOPE_X_DQ --start 1126260017 --duration 600
|
|
56
56
|
|
|
57
57
|
Written by {__author__}.
|
|
58
|
-
Report bugs to https://
|
|
58
|
+
Report bugs to https://gitlab.com/gwpy/gwpy/-/issues/.
|
|
59
59
|
""" # noqa: E501
|
|
60
60
|
|
|
61
61
|
|
gwpy/cli/tests/base.py
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"""Unit tests for :mod:`gwpy.cli`
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
|
+
import warnings
|
|
22
23
|
from argparse import ArgumentParser
|
|
23
24
|
from unittest import mock
|
|
24
25
|
|
|
@@ -237,7 +238,16 @@ class _TestCliProduct(object):
|
|
|
237
238
|
xmin = min(series.xspan[0] for series in data)
|
|
238
239
|
xmax = max(series.xspan[1] for series in data)
|
|
239
240
|
|
|
240
|
-
|
|
241
|
+
# ignore warnings from matplotlib about having no labels
|
|
242
|
+
# (because we have cut some corners in preparing this test)
|
|
243
|
+
with warnings.catch_warnings():
|
|
244
|
+
warnings.filterwarnings(
|
|
245
|
+
"ignore",
|
|
246
|
+
message="No artists with labels found to put in legend",
|
|
247
|
+
category=UserWarning,
|
|
248
|
+
)
|
|
249
|
+
plotprod.set_plot_properties()
|
|
250
|
+
|
|
241
251
|
ax = plotprod.ax
|
|
242
252
|
|
|
243
253
|
ymin, ymax = ax.get_ylim()
|
gwpy/detector/units.py
CHANGED
|
@@ -187,7 +187,7 @@ units.def_unit(['NONE', 'undef'], namespace=_ns,
|
|
|
187
187
|
|
|
188
188
|
# other dimenionless units
|
|
189
189
|
units.def_unit('strain', namespace=_ns)
|
|
190
|
-
units.def_unit('coherence', namespace=_ns)
|
|
190
|
+
units.def_unit('coherence', represents=units.dimensionless_unscaled, namespace=_ns)
|
|
191
191
|
|
|
192
192
|
# alias for 'second' but with prefices
|
|
193
193
|
units.def_unit((['sec'], ['sec']), represents=units.second, prefixes=True,
|
|
@@ -77,7 +77,8 @@ class TestSpectralVariance(_TestArray2D):
|
|
|
77
77
|
utils.assert_array_equal(array.yindex, array.bins[:-1])
|
|
78
78
|
|
|
79
79
|
def test_transpose(self, array):
|
|
80
|
-
|
|
80
|
+
with pytest.raises(NotImplementedError):
|
|
81
|
+
array.T
|
|
81
82
|
|
|
82
83
|
# -- test utilities -------------------------
|
|
83
84
|
|
|
@@ -110,10 +111,10 @@ class TestSpectralVariance(_TestArray2D):
|
|
|
110
111
|
pytest.skip("float precision test not supported for SpectralVariance")
|
|
111
112
|
|
|
112
113
|
def test_is_compatible_yindex(self, array):
|
|
113
|
-
|
|
114
|
+
pytest.skip(f"not implemented for {type(self).__name__}")
|
|
114
115
|
|
|
115
116
|
def test_is_compatible_error_yindex(self, array):
|
|
116
|
-
|
|
117
|
+
pytest.skip(f"not implemented for {type(self).__name__}")
|
|
117
118
|
|
|
118
119
|
def test_plot(self, array):
|
|
119
120
|
with rc_context(rc={'text.usetex': False}):
|
gwpy/plot/plot.py
CHANGED
|
@@ -27,7 +27,12 @@ from itertools import zip_longest
|
|
|
27
27
|
|
|
28
28
|
import numpy
|
|
29
29
|
|
|
30
|
-
from matplotlib import (
|
|
30
|
+
from matplotlib import (
|
|
31
|
+
_pylab_helpers,
|
|
32
|
+
backends,
|
|
33
|
+
figure,
|
|
34
|
+
get_backend,
|
|
35
|
+
)
|
|
31
36
|
from matplotlib.artist import setp
|
|
32
37
|
from matplotlib.gridspec import GridSpec
|
|
33
38
|
from matplotlib.ticker import LogFormatterSciNotation
|
|
@@ -53,7 +58,12 @@ iterable_types = (list, tuple, KeysView, ValuesView,)
|
|
|
53
58
|
def interactive_backend():
|
|
54
59
|
"""Returns `True` if the current backend is interactive
|
|
55
60
|
"""
|
|
56
|
-
|
|
61
|
+
try:
|
|
62
|
+
interactive_bk = backends.backend_registry.list_builtin(
|
|
63
|
+
backends.BackendFilter.INTERACTIVE,
|
|
64
|
+
)
|
|
65
|
+
except AttributeError: # matplotlib < 3.9.0
|
|
66
|
+
from matplotlib.rcsetup import interactive_bk
|
|
57
67
|
return get_backend() in interactive_bk
|
|
58
68
|
|
|
59
69
|
|
gwpy/plot/tests/test_segments.py
CHANGED
gwpy/segments/flag.py
CHANGED
|
@@ -453,18 +453,20 @@ class DataQualityFlag(object):
|
|
|
453
453
|
Examples
|
|
454
454
|
--------
|
|
455
455
|
>>> from gwpy.segments import DataQualityFlag
|
|
456
|
-
>>> print(DataQualityFlag.fetch_open_data(
|
|
457
|
-
...
|
|
456
|
+
>>> print(DataQualityFlag.fetch_open_data(
|
|
457
|
+
... "H1_DATA",
|
|
458
|
+
... "Sep 14 2015",
|
|
459
|
+
... "Sep 15 2015",
|
|
460
|
+
... ))
|
|
458
461
|
<DataQualityFlag('H1:DATA',
|
|
459
|
-
known=[[
|
|
460
|
-
active=[[
|
|
461
|
-
[
|
|
462
|
-
[
|
|
463
|
-
|
|
464
|
-
[
|
|
465
|
-
[
|
|
466
|
-
[
|
|
467
|
-
[946415770 ... 946422986)],
|
|
462
|
+
known=[[1126224017 ... 1126310417)]
|
|
463
|
+
active=[[1126251604 ... 1126252133)
|
|
464
|
+
[1126252291 ... 1126274322)
|
|
465
|
+
[1126276234 ... 1126281754)
|
|
466
|
+
...
|
|
467
|
+
[1126308670 ... 1126309577)
|
|
468
|
+
[1126309637 ... 1126309817)
|
|
469
|
+
[1126309877 ... 1126310417)]
|
|
468
470
|
description=None)>
|
|
469
471
|
"""
|
|
470
472
|
start = to_gps(start).gpsSeconds
|
gwpy/signal/filter_design.py
CHANGED
|
@@ -89,7 +89,7 @@ def _design_fir(wp, ws, sample_rate, gpass, gstop, window='hamming', **kwargs):
|
|
|
89
89
|
if wp[0] > ws[0]:
|
|
90
90
|
kwargs.setdefault('pass_zero', False)
|
|
91
91
|
if ws.shape == (1,):
|
|
92
|
-
kwargs.setdefault(
|
|
92
|
+
kwargs.setdefault("width", ws.item() - wp.item())
|
|
93
93
|
kwargs.setdefault('fs', sample_rate)
|
|
94
94
|
return signal.firwin(nt, wp, window=window, **kwargs)
|
|
95
95
|
|
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
|
|
22
22
|
__author__ = "Alex Southgate <alex.southgate@ligo.org>"
|
|
23
23
|
|
|
24
|
+
import warnings
|
|
25
|
+
|
|
24
26
|
import numpy as np
|
|
25
27
|
import pytest
|
|
26
28
|
import scipy.signal as sig
|
|
@@ -121,7 +123,11 @@ def test_coherence_resample(unequal_fs_series_data):
|
|
|
121
123
|
# the first coherence val coh12 is broken intentionally since
|
|
122
124
|
# secondarr data should not have fs_1, instead fs_2
|
|
123
125
|
coh12 = spectral.coherence(first, second, segmentlength=seglen)
|
|
124
|
-
|
|
126
|
+
with pytest.warns(
|
|
127
|
+
UserWarning,
|
|
128
|
+
match="Sampling frequencies are unequal",
|
|
129
|
+
):
|
|
130
|
+
coh13 = spectral.coherence(first, third, segmentlength=seglen)
|
|
125
131
|
|
|
126
132
|
# get the frequency at minimum coherence, this should be the extra
|
|
127
133
|
# component in secondarr
|
|
@@ -136,7 +142,7 @@ def test_coherence_resample(unequal_fs_series_data):
|
|
|
136
142
|
assert not (4 <= maxf12.value <= 6)
|
|
137
143
|
|
|
138
144
|
|
|
139
|
-
def
|
|
145
|
+
def test_coherence_resample_downsample(series_data):
|
|
140
146
|
"""Ensure warning is raised by unequal sampling frequencies.
|
|
141
147
|
"""
|
|
142
148
|
firstarr, secondarr, seglen = series_data
|
|
@@ -145,15 +151,30 @@ def test_coherence_resample_arg(series_data):
|
|
|
145
151
|
first = TimeSeries(firstarr, sample_rate=f_s)
|
|
146
152
|
second = TimeSeries(secondarr, sample_rate=f_s * 2.32)
|
|
147
153
|
|
|
148
|
-
with pytest.warns(
|
|
149
|
-
|
|
154
|
+
with pytest.warns(
|
|
155
|
+
UserWarning,
|
|
156
|
+
match="Sampling frequencies are unequal",
|
|
157
|
+
):
|
|
158
|
+
coh1 = spectral.coherence(first, second, segmentlength=seglen)
|
|
150
159
|
|
|
160
|
+
# check that forcibly disabling downsample results in an error
|
|
151
161
|
with pytest.raises(ValueError):
|
|
152
|
-
spectral.coherence(
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
162
|
+
spectral.coherence(
|
|
163
|
+
first,
|
|
164
|
+
second,
|
|
165
|
+
segmentlength=seglen,
|
|
166
|
+
downsample=False,
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
# but that accepting downsampling gives you the same result as
|
|
170
|
+
# doing nothing (but doesn't emit a warning)
|
|
171
|
+
with warnings.catch_warnings():
|
|
172
|
+
warnings.simplefilter("error", DeprecationWarning)
|
|
173
|
+
coh2 = spectral.coherence(
|
|
174
|
+
first,
|
|
175
|
+
second,
|
|
176
|
+
segmentlength=seglen,
|
|
177
|
+
downsample=True,
|
|
178
|
+
)
|
|
158
179
|
|
|
159
180
|
assert all(np.array(coh1.data) == np.array(coh2.data))
|
gwpy/table/io/ligolw.py
CHANGED
|
@@ -70,7 +70,7 @@ def test_to_astropy_table_empty():
|
|
|
70
70
|
tab = EventTable(llwtable, columns=["peak", "ifo"])
|
|
71
71
|
assert set(tab.colnames) == {"peak", "ifo"}
|
|
72
72
|
assert tab['peak'].dtype.type is numpy.object_
|
|
73
|
-
assert tab['ifo'].dtype.type is numpy.
|
|
73
|
+
assert tab['ifo'].dtype.type is numpy.str_
|
|
74
74
|
|
|
75
75
|
|
|
76
76
|
@pytest.mark.requires("ligo.lw.lsctables")
|
gwpy/testing/errors.py
CHANGED
gwpy/timeseries/core.py
CHANGED
|
@@ -793,7 +793,6 @@ class TimeSeriesBase(Series):
|
|
|
793
793
|
op_ = ufunc.__name__
|
|
794
794
|
out = out.view(StateTimeSeries)
|
|
795
795
|
out.__metadata_finalize__(orig)
|
|
796
|
-
out.override_unit('')
|
|
797
796
|
oname = orig.name if isinstance(orig, type(self)) else orig
|
|
798
797
|
vname = value.name if isinstance(value, type(self)) else value
|
|
799
798
|
out.name = '{0!s} {1!s} {2!s}'.format(oname, op_, vname)
|
gwpy/timeseries/statevector.py
CHANGED
|
@@ -184,8 +184,10 @@ class StateTimeSeries(TimeSeriesBase):
|
|
|
184
184
|
def unit(self):
|
|
185
185
|
return units.dimensionless_unscaled
|
|
186
186
|
|
|
187
|
-
def override_unit(self,
|
|
188
|
-
|
|
187
|
+
def override_unit(self, *args, **kwargs):
|
|
188
|
+
raise NotImplementedError(
|
|
189
|
+
f"overriding units is not supported for {type(self).__name__}",
|
|
190
|
+
)
|
|
189
191
|
|
|
190
192
|
def _to_own_unit(self, value, check_precision=True):
|
|
191
193
|
if isinstance(value, units.Quantity) and value.unit != self.unit:
|
|
@@ -53,7 +53,8 @@ class TestTimeSeriesBase(_TestSeries):
|
|
|
53
53
|
def test_new(self):
|
|
54
54
|
"""Test `gwpy.timeseries.TimeSeriesBase` constructor
|
|
55
55
|
"""
|
|
56
|
-
array =
|
|
56
|
+
array = self.create()
|
|
57
|
+
super().test_new()
|
|
57
58
|
|
|
58
59
|
# check time-domain metadata
|
|
59
60
|
assert array.epoch == GPS_EPOCH
|
|
@@ -145,7 +146,7 @@ class TestTimeSeriesBase(_TestSeries):
|
|
|
145
146
|
def test_sample_rate_ghz(self, array):
|
|
146
147
|
"""Test that very large sample rates don't get rounded to dt=0.
|
|
147
148
|
|
|
148
|
-
Regression: https://
|
|
149
|
+
Regression: https://gitlab.com/gwpy/gwpy/-/issues/1646
|
|
149
150
|
"""
|
|
150
151
|
array.sample_rate = 1e9
|
|
151
152
|
assert array.dt.value > 0.
|
|
@@ -400,20 +401,13 @@ class TestTimeSeriesBaseDict(object):
|
|
|
400
401
|
|
|
401
402
|
def test_resample(self, instance):
|
|
402
403
|
if self.ENTRY_CLASS is TimeSeriesBase: # currently only for subclasses
|
|
403
|
-
|
|
404
|
+
pytest.skip(f"not implemented for {type(instance).__name__}")
|
|
405
|
+
|
|
406
|
+
# for all subclasses
|
|
404
407
|
a = instance.resample(.5)
|
|
405
408
|
for key in a:
|
|
406
409
|
assert a[key].dx == 1/.5 * a[key].xunit
|
|
407
410
|
|
|
408
|
-
def test_fetch(self):
|
|
409
|
-
return NotImplemented
|
|
410
|
-
|
|
411
|
-
def test_find(self):
|
|
412
|
-
return NotImplemented
|
|
413
|
-
|
|
414
|
-
def test_get(self):
|
|
415
|
-
return NotImplemented
|
|
416
|
-
|
|
417
411
|
@pytest.mark.requires("nds2")
|
|
418
412
|
def test_from_nds2_buffers(self):
|
|
419
413
|
buffers = [
|
|
@@ -445,7 +439,7 @@ class TestTimeSeriesBaseDict(object):
|
|
|
445
439
|
def test_plot_separate(self, instance):
|
|
446
440
|
"""Test plotting `TimeSeriesDict` on separate axes.
|
|
447
441
|
|
|
448
|
-
See https://
|
|
442
|
+
See https://gitlab.com/gwpy/gwpy/-/issues/1609
|
|
449
443
|
"""
|
|
450
444
|
with rc_context(rc={'text.usetex': False}):
|
|
451
445
|
plot = instance.plot(separate=True)
|
|
@@ -63,7 +63,7 @@ def test_read_scaled_type_change(int32ts, tmp_path):
|
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
def test_read_write_frvect_name(tmp_path):
|
|
66
|
-
"""Test against regression of https://
|
|
66
|
+
"""Test against regression of https://gitlab.com/gwpy/gwpy/-/issues/1206
|
|
67
67
|
"""
|
|
68
68
|
data = TimeSeries(
|
|
69
69
|
numpy.random.random(10),
|
|
@@ -144,29 +144,39 @@ class TestStateTimeSeries(_TestTimeSeriesBase):
|
|
|
144
144
|
assert flag.label == 'Label'
|
|
145
145
|
assert flag.description == 'Description'
|
|
146
146
|
|
|
147
|
-
def test_override_unit(self):
|
|
148
|
-
|
|
147
|
+
def test_override_unit(self, array):
|
|
148
|
+
with pytest.raises(NotImplementedError):
|
|
149
|
+
super().test_override_unit(array)
|
|
149
150
|
|
|
150
151
|
def test_is_compatible_error_unit(self):
|
|
151
|
-
|
|
152
|
+
pytest.skip(f"not implemented for {self.TEST_CLASS.__name__}")
|
|
152
153
|
|
|
153
154
|
def test_to_from_pycbc(self):
|
|
154
|
-
|
|
155
|
+
pytest.skip(f"not implemented for {self.TEST_CLASS.__name__}")
|
|
155
156
|
|
|
156
|
-
def test_to_from_lal(self):
|
|
157
|
-
|
|
157
|
+
def test_to_from_lal(self, array):
|
|
158
|
+
with pytest.raises(NotImplementedError):
|
|
159
|
+
super().test_to_from_lal(array)
|
|
158
160
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
+
@pytest.mark.parametrize("copy", (False, True))
|
|
162
|
+
def test_to_from_lal_no_copy(self, array, copy):
|
|
163
|
+
with pytest.raises(NotImplementedError):
|
|
164
|
+
super().test_to_from_lal_no_copy(array, copy)
|
|
161
165
|
|
|
162
|
-
|
|
163
|
-
|
|
166
|
+
@pytest.mark.requires("lal")
|
|
167
|
+
def test_to_from_lal_pow10_units(self, array):
|
|
168
|
+
with pytest.raises(NotImplementedError):
|
|
169
|
+
super().test_to_from_lal_pow10_units(array)
|
|
164
170
|
|
|
165
|
-
|
|
166
|
-
|
|
171
|
+
@pytest.mark.requires("lal")
|
|
172
|
+
def test_to_from_lal_scaled_units(self, array):
|
|
173
|
+
with pytest.raises(NotImplementedError):
|
|
174
|
+
super().test_to_from_lal_scaled_units(array)
|
|
167
175
|
|
|
168
|
-
|
|
169
|
-
|
|
176
|
+
@pytest.mark.requires("lal")
|
|
177
|
+
def test_to_from_lal_unrecognised_units(self, array):
|
|
178
|
+
with pytest.raises(NotImplementedError):
|
|
179
|
+
super().test_to_from_lal_unrecognised_units(array)
|
|
170
180
|
|
|
171
181
|
|
|
172
182
|
# -- StateTimeSeriesDict ------------------------------------------------------
|
|
@@ -176,8 +186,8 @@ class TestStateTimeSeriesDict(_TestTimeSeriesBaseDict):
|
|
|
176
186
|
ENTRY_CLASS = StateTimeSeries
|
|
177
187
|
DTYPE = 'bool'
|
|
178
188
|
|
|
179
|
-
def test_resample(self):
|
|
180
|
-
|
|
189
|
+
def test_resample(self, instance):
|
|
190
|
+
pytest.skip(f"not implemented for {type(instance).__name__}")
|
|
181
191
|
|
|
182
192
|
|
|
183
193
|
# -- Bits ---------------------------------------------------------------------
|
|
@@ -326,7 +336,9 @@ class TestStateVector(_TestTimeSeriesBase):
|
|
|
326
336
|
array.resample(array.sample_rate * 1.5)
|
|
327
337
|
|
|
328
338
|
def test_to_from_lal_scaled_units(self):
|
|
329
|
-
|
|
339
|
+
pytest.skip(
|
|
340
|
+
f"not implemented for {self.TEST_CLASS.__name__}",
|
|
341
|
+
)
|
|
330
342
|
|
|
331
343
|
# -- data access ----------------------------
|
|
332
344
|
|
|
@@ -201,7 +201,7 @@ class TestTimeSeries(_TestTimeSeriesBase):
|
|
|
201
201
|
def test_read_ascii_header(self, tmpdir):
|
|
202
202
|
"""Check that ASCII files with headers are read without extra options
|
|
203
203
|
|
|
204
|
-
[regression: https://
|
|
204
|
+
[regression: https://gitlab.com/gwpy/gwpy/-/issues/1473]
|
|
205
205
|
"""
|
|
206
206
|
txt = tmpdir / "text.txt"
|
|
207
207
|
txt.write_text(
|
|
@@ -284,7 +284,7 @@ class TestTimeSeries(_TestTimeSeriesBase):
|
|
|
284
284
|
"""Check that each GWF API can read a series of files, either in
|
|
285
285
|
a single process, or in multiple processes
|
|
286
286
|
|
|
287
|
-
Regression: https://
|
|
287
|
+
Regression: https://gitlab.com/gwpy/gwpy/-/issues/1486
|
|
288
288
|
"""
|
|
289
289
|
fmt = "gwf" if api is None else "gwf." + api
|
|
290
290
|
a1 = self.create(name='TEST')
|
|
@@ -512,7 +512,7 @@ class TestTimeSeries(_TestTimeSeriesBase):
|
|
|
512
512
|
"""Check that `TimeSeries.read` with `gap='raise'` actually
|
|
513
513
|
raises appropriately.
|
|
514
514
|
|
|
515
|
-
[regression: https://
|
|
515
|
+
[regression: https://gitlab.com/gwpy/gwpy/-/issues/1211]
|
|
516
516
|
"""
|
|
517
517
|
from gwpy.io.cache import file_segment
|
|
518
518
|
span = file_segment(utils.TEST_HDF5_FILE)
|
|
@@ -846,9 +846,7 @@ class TestTimeSeries(_TestTimeSeriesBase):
|
|
|
846
846
|
gw150914.psd(abs(gw150914.span), method='lal_median_mean')
|
|
847
847
|
|
|
848
848
|
# odd number of segments should warn
|
|
849
|
-
|
|
850
|
-
# triggered here, for some reason
|
|
851
|
-
with pytest.warns(UserWarning):
|
|
849
|
+
with pytest.warns(UserWarning), pytest.deprecated_call():
|
|
852
850
|
gw150914.psd(1, .5, method='lal_median_mean')
|
|
853
851
|
|
|
854
852
|
@pytest.mark.parametrize('method', ('welch', 'bartlett', 'median'))
|
|
@@ -1022,18 +1020,16 @@ class TestTimeSeries(_TestTimeSeriesBase):
|
|
|
1022
1020
|
pytest.param('pycbc', marks=pytest.mark.requires("pycbc.psd")),
|
|
1023
1021
|
])
|
|
1024
1022
|
def test_spectrogram_median_mean(self, gw150914, library):
|
|
1025
|
-
method =
|
|
1023
|
+
method = f"{library}-median-mean"
|
|
1026
1024
|
|
|
1027
|
-
# median-mean
|
|
1028
|
-
# even number of FFTs.
|
|
1029
|
-
# pytest only asserts a single warning, and UserWarning will take
|
|
1030
|
-
# precedence apparently, so check that for lal
|
|
1025
|
+
# the LAL implementation of median-mean warns if not given the
|
|
1026
|
+
# correct amount of data for an even number of FFTs.
|
|
1031
1027
|
if library == 'lal':
|
|
1032
|
-
|
|
1028
|
+
lal_warn_ctx = pytest.warns(UserWarning)
|
|
1033
1029
|
else:
|
|
1034
|
-
|
|
1030
|
+
lal_warn_ctx = nullcontext()
|
|
1035
1031
|
|
|
1036
|
-
with
|
|
1032
|
+
with pytest.deprecated_call(), lal_warn_ctx:
|
|
1037
1033
|
sg = gw150914.spectrogram(
|
|
1038
1034
|
1.5,
|
|
1039
1035
|
fftlength=.5,
|
gwpy/types/tests/test_array.py
CHANGED
|
@@ -88,23 +88,25 @@ class TestArray(object):
|
|
|
88
88
|
|
|
89
89
|
# -- test basic construction ----------------
|
|
90
90
|
|
|
91
|
-
def
|
|
92
|
-
"""
|
|
91
|
+
def assert_new(self, array):
|
|
92
|
+
"""Run basic assertions for a new instance of the type under test.
|
|
93
93
|
"""
|
|
94
|
-
# test basic empty contructor
|
|
95
|
-
with pytest.raises(TypeError):
|
|
96
|
-
self.TEST_CLASS()
|
|
97
|
-
|
|
98
|
-
# test with some data
|
|
99
|
-
array = self.create()
|
|
100
94
|
utils.assert_array_equal(array.value, self.data)
|
|
101
95
|
|
|
102
96
|
# test that copy=True ensures owndata
|
|
103
97
|
assert self.create(copy=False).flags.owndata is False
|
|
104
98
|
assert self.create(copy=True).flags.owndata is True
|
|
105
99
|
|
|
106
|
-
|
|
107
|
-
|
|
100
|
+
def test_new_empty(self):
|
|
101
|
+
"""Test that `Array()` raises an exception.
|
|
102
|
+
"""
|
|
103
|
+
with pytest.raises(TypeError):
|
|
104
|
+
self.TEST_CLASS()
|
|
105
|
+
|
|
106
|
+
def test_new(self):
|
|
107
|
+
"""Test Array creation.
|
|
108
|
+
"""
|
|
109
|
+
self.assert_new(self.create())
|
|
108
110
|
|
|
109
111
|
def test_unit(self, array):
|
|
110
112
|
# test default unit is dimensionless
|
gwpy/types/tests/test_array2d.py
CHANGED
|
@@ -198,7 +198,7 @@ class TestArray2D(_TestSeries):
|
|
|
198
198
|
|
|
199
199
|
But still represent the output as an `Array2D` with `Index` arrays.
|
|
200
200
|
|
|
201
|
-
This tests regression of https://
|
|
201
|
+
This tests regression of https://gitlab.com/gwpy/gwpy/-/issues/1504.
|
|
202
202
|
"""
|
|
203
203
|
# create an array with indices
|
|
204
204
|
a = self.create()
|
|
@@ -239,18 +239,14 @@ class TestArray2D(_TestSeries):
|
|
|
239
239
|
with pytest.raises(IndexError):
|
|
240
240
|
array.value_at(1.6, 4.8)
|
|
241
241
|
|
|
242
|
-
@pytest.mark.skip("not implemented for >1D arrays")
|
|
243
242
|
def test_pad(self):
|
|
244
|
-
|
|
243
|
+
pytest.skip("not implemented for >1D arrays")
|
|
245
244
|
|
|
246
|
-
@pytest.mark.skip("not implemented for >1D arrays")
|
|
247
245
|
def test_pad_index(self):
|
|
248
|
-
|
|
246
|
+
pytest.skip("not implemented for >1D arrays")
|
|
249
247
|
|
|
250
|
-
@pytest.mark.skip("not implemented for >1D arrays")
|
|
251
248
|
def test_pad_asymmetric(self):
|
|
252
|
-
|
|
249
|
+
pytest.skip("not implemented for >1D arrays")
|
|
253
250
|
|
|
254
|
-
@pytest.mark.skip("not applicable for >1D arrays")
|
|
255
251
|
def test_single_getitem_not_created(self):
|
|
256
|
-
|
|
252
|
+
pytest.skip("not implemented for >1D arrays")
|
gwpy/types/tests/test_series.py
CHANGED
|
@@ -36,11 +36,10 @@ from .test_array import TestArray as _TestArray
|
|
|
36
36
|
class TestSeries(_TestArray):
|
|
37
37
|
TEST_CLASS = Series
|
|
38
38
|
|
|
39
|
-
def
|
|
40
|
-
|
|
39
|
+
def assert_new(self, array):
|
|
40
|
+
super().assert_new(array)
|
|
41
41
|
assert array.x0 == units.Quantity(0, self.TEST_CLASS._default_xunit)
|
|
42
42
|
assert array.dx == units.Quantity(1, self.TEST_CLASS._default_xunit)
|
|
43
|
-
return array
|
|
44
43
|
|
|
45
44
|
# -- test properties ------------------------
|
|
46
45
|
|
|
@@ -168,7 +167,7 @@ class TestSeries(_TestArray):
|
|
|
168
167
|
|
|
169
168
|
When subsetting a Series with an iterable of integer indices,
|
|
170
169
|
make sure that the xindex, if it exists, is also subsetted. Tests
|
|
171
|
-
regression against https://
|
|
170
|
+
regression against https://gitlab.com/gwpy/gwpy/-/issues/1680.
|
|
172
171
|
"""
|
|
173
172
|
array.xindex # create xindex
|
|
174
173
|
indices = numpy.array([0, 1, len(array)-1])
|
|
@@ -250,7 +249,8 @@ class TestSeries(_TestArray):
|
|
|
250
249
|
def test_crop_float_precision(self):
|
|
251
250
|
"""Verify the float precision of the crop function.
|
|
252
251
|
|
|
253
|
-
This tests regression
|
|
252
|
+
This tests against regression of
|
|
253
|
+
https://gitlab.com/gwpy/gwpy/-/issues/1601.
|
|
254
254
|
"""
|
|
255
255
|
# construct empty data array with the right shape for this array object
|
|
256
256
|
shape = (101,) * self.TEST_CLASS._ndim
|
gwpy/utils/sphinx/zenodo.py
CHANGED
|
@@ -62,7 +62,11 @@ def format_citations(
|
|
|
62
62
|
"page": 1,
|
|
63
63
|
"size": int(hits),
|
|
64
64
|
}
|
|
65
|
-
resp = requests.get(
|
|
65
|
+
resp = requests.get( # make the request
|
|
66
|
+
apiurl,
|
|
67
|
+
params=params,
|
|
68
|
+
timeout=30,
|
|
69
|
+
)
|
|
66
70
|
resp.raise_for_status() # make sure it worked
|
|
67
71
|
records = resp.json() # parse the response
|
|
68
72
|
|
|
@@ -85,15 +85,20 @@ MOCK_ZENODO_API_RST = """
|
|
|
85
85
|
""".strip()
|
|
86
86
|
|
|
87
87
|
|
|
88
|
-
def
|
|
89
|
-
"""Execute `func` but skip if it raises a
|
|
88
|
+
def pytest_skip_zenodo_http_errors(func):
|
|
89
|
+
"""Execute `func` but skip if it raises a known server-side error.
|
|
90
90
|
"""
|
|
91
91
|
@wraps(func)
|
|
92
92
|
def wrapper(*args, **kwargs):
|
|
93
93
|
try:
|
|
94
94
|
return func(*args, **kwargs)
|
|
95
95
|
except requests.HTTPError as exc: # pragma: no cover
|
|
96
|
-
if
|
|
96
|
+
if (
|
|
97
|
+
# API rate limit
|
|
98
|
+
str(exc).startswith("403 Client Error: rate limit exceeded")
|
|
99
|
+
# Bad Gateway
|
|
100
|
+
or exc.response.status_code == 502
|
|
101
|
+
):
|
|
97
102
|
pytest.skip(str(exc))
|
|
98
103
|
raise
|
|
99
104
|
return wrapper
|
|
@@ -101,7 +106,7 @@ def pytest_skip_rate_limit(func):
|
|
|
101
106
|
|
|
102
107
|
@pytest.fixture
|
|
103
108
|
@pytest_skip_network_error
|
|
104
|
-
@
|
|
109
|
+
@pytest_skip_zenodo_http_errors
|
|
105
110
|
def latest():
|
|
106
111
|
"""Get the latest release of GWpy from the GitHub API.
|
|
107
112
|
"""
|
|
@@ -114,7 +119,7 @@ def latest():
|
|
|
114
119
|
|
|
115
120
|
|
|
116
121
|
@pytest_skip_network_error
|
|
117
|
-
@
|
|
122
|
+
@pytest_skip_zenodo_http_errors
|
|
118
123
|
def test_zenodo_format_citations_latest(latest):
|
|
119
124
|
"""Check that :func:`gwpy.utils.sphinx.zenodo.format_citations` includes
|
|
120
125
|
the latest actual release in the output.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: gwpy
|
|
3
|
+
Version: 3.0.10
|
|
4
|
+
Summary: A python package for gravitational-wave astrophysics
|
|
5
|
+
Author-email: Duncan Macleod <duncan.macleod@ligo.org>
|
|
6
|
+
License: GPL-3.0-or-later
|
|
7
|
+
Project-URL: Bug Tracker, https://gitlab.com/gwpy/gwpy/-/issues
|
|
8
|
+
Project-URL: Discussion Forum, https://gwpy.slack.com
|
|
9
|
+
Project-URL: Documentation, https://gwpy.github.io/docs/
|
|
10
|
+
Project-URL: Source Code, https://gitlab.com/gwpy/gwpy
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Science/Research
|
|
13
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
14
|
+
Classifier: Natural Language :: English
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Topic :: Scientific/Engineering :: Astronomy
|
|
24
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
25
|
+
Requires-Python: >=3.8
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: astropy>=4.3.0
|
|
29
|
+
Requires-Dist: dateparser>=1.1.4
|
|
30
|
+
Requires-Dist: dqsegdb2
|
|
31
|
+
Requires-Dist: gwdatafind>=1.1.0
|
|
32
|
+
Requires-Dist: gwosc>=0.5.3
|
|
33
|
+
Requires-Dist: h5py>=3.0.0
|
|
34
|
+
Requires-Dist: ligo-segments>=1.0.0
|
|
35
|
+
Requires-Dist: ligotimegps>=1.2.1
|
|
36
|
+
Requires-Dist: matplotlib>=3.3.0
|
|
37
|
+
Requires-Dist: numpy>=1.19
|
|
38
|
+
Requires-Dist: python-dateutil
|
|
39
|
+
Requires-Dist: requests>=2.20.0
|
|
40
|
+
Requires-Dist: scipy>=1.6.0
|
|
41
|
+
Requires-Dist: tqdm>=4.10.0
|
|
42
|
+
Provides-Extra: astro
|
|
43
|
+
Requires-Dist: inspiral-range>=0.5.0; extra == "astro"
|
|
44
|
+
Provides-Extra: conda
|
|
45
|
+
Requires-Dist: python-framel!=8.46.0,>=8.40.1; extra == "conda"
|
|
46
|
+
Requires-Dist: python-nds2-client; extra == "conda"
|
|
47
|
+
Requires-Dist: python-ldas-tools-framecpp; sys_platform != "win32" and extra == "conda"
|
|
48
|
+
Requires-Dist: lxml!=4.9.1; sys_platform == "win32" and extra == "conda"
|
|
49
|
+
Provides-Extra: dev
|
|
50
|
+
Requires-Dist: ciecplib; extra == "dev"
|
|
51
|
+
Requires-Dist: inspiral-range>=0.5.0; extra == "dev"
|
|
52
|
+
Requires-Dist: pymysql; extra == "dev"
|
|
53
|
+
Requires-Dist: sqlalchemy; extra == "dev"
|
|
54
|
+
Requires-Dist: uproot>=4.1.5; extra == "dev"
|
|
55
|
+
Requires-Dist: lalsuite; sys_platform != "win32" and extra == "dev"
|
|
56
|
+
Requires-Dist: lscsoft-glue; sys_platform != "win32" and extra == "dev"
|
|
57
|
+
Requires-Dist: pycbc>=1.13.4; sys_platform != "win32" and extra == "dev"
|
|
58
|
+
Requires-Dist: python-ligo-lw>=1.7.0; sys_platform != "win32" and extra == "dev"
|
|
59
|
+
Requires-Dist: psycopg2; sys_platform == "linux" and extra == "dev"
|
|
60
|
+
Provides-Extra: docs
|
|
61
|
+
Requires-Dist: numpydoc>=0.8.0; extra == "docs"
|
|
62
|
+
Requires-Dist: Sphinx>=4.4.0; extra == "docs"
|
|
63
|
+
Requires-Dist: sphinx-automodapi; extra == "docs"
|
|
64
|
+
Requires-Dist: sphinx-immaterial>=0.7.3; extra == "docs"
|
|
65
|
+
Requires-Dist: sphinxcontrib-programoutput; extra == "docs"
|
|
66
|
+
Provides-Extra: test
|
|
67
|
+
Requires-Dist: coverage[toml]>=5.0; extra == "test"
|
|
68
|
+
Requires-Dist: pytest>=3.9.1; extra == "test"
|
|
69
|
+
Requires-Dist: pytest-freezer; extra == "test"
|
|
70
|
+
Requires-Dist: pytest-cov>=2.4.0; extra == "test"
|
|
71
|
+
Requires-Dist: pytest-requires; extra == "test"
|
|
72
|
+
Requires-Dist: pytest-socket; extra == "test"
|
|
73
|
+
Requires-Dist: pytest-xdist; extra == "test"
|
|
74
|
+
Requires-Dist: requests-mock; extra == "test"
|
|
75
|
+
|
|
76
|
+
GWpy is a collaboration-driven Python package providing tools for
|
|
77
|
+
studying data from ground-based gravitational-wave detectors.
|
|
78
|
+
|
|
79
|
+
GWpy provides a user-friendly, intuitive interface to the common
|
|
80
|
+
time-domain and frequency-domain data produced by the LIGO and Virgo
|
|
81
|
+
observatories and their analyses, with easy-to-follow tutorials at each
|
|
82
|
+
step.
|
|
83
|
+
|
|
84
|
+
<https://gwpy.github.io>
|
|
85
|
+
|
|
86
|
+
# Release status
|
|
87
|
+
|
|
88
|
+
[](http://badge.fury.io/py/gwpy)
|
|
89
|
+
[](https://anaconda.org/conda-forge/gwpy/)
|
|
90
|
+
|
|
91
|
+
[](https://choosealicense.com/licenses/gpl-3.0/)
|
|
92
|
+

|
|
93
|
+
|
|
94
|
+
# Development status
|
|
95
|
+
|
|
96
|
+
[](https://gitlab.com/gwpy/gwpy/-/pipelines/?ref=main)
|
|
97
|
+
[](https://gitlab.com/gwpy/gwpy/-/pipelines/?ref=main)
|
|
98
|
+
|
|
99
|
+
# Installation
|
|
100
|
+
|
|
101
|
+
To install, you can do:
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
conda install -c conda-forge gwpy
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
or
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
python -m pip install gwpy
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
You can test your installation, and its version by
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
python -c "import gwpy; print(gwpy.__version__)"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
# License
|
|
120
|
+
|
|
121
|
+
GWpy is released under the GNU General Public License v3.0 or later, see
|
|
122
|
+
[here](https://choosealicense.com/licenses/gpl-3.0/) for a description of
|
|
123
|
+
this license, or see the
|
|
124
|
+
[LICENSE](https://gitlab.com/gwpy/gwpy/-/blob/main/LICENSE) file for the
|
|
125
|
+
full text.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
gwpy/__init__.py,sha256=3chu5cxfVA08qkFYk3lyXBlFXO6lrgytIIdh_nL9YzU,1533
|
|
2
|
-
gwpy/_version.py,sha256=
|
|
2
|
+
gwpy/_version.py,sha256=8x3USMh-QXDOqs112oCeNZdt7w1M5P5hyLCG9bkT-c4,413
|
|
3
3
|
gwpy/conftest.py,sha256=nMqidKFNcwTCvDb-vHzzCmzUyyL0TH9DwbmagfdE1II,1639
|
|
4
4
|
gwpy/astro/__init__.py,sha256=DtaqsbVdlI4Qy6eRlXuLtraTCLXjpQYadk5pEFwXrM8,1909
|
|
5
5
|
gwpy/astro/range.py,sha256=BcRrJkgxiceL1QsOy1uUtCMslEeic0MUxWFs76LgY0Y,24892
|
|
@@ -9,14 +9,14 @@ gwpy/cli/__init__.py,sha256=3DnwWaykhjk-bT0h3n-f8vSHNtGzpi7RVG3rbOkFQhM,1404
|
|
|
9
9
|
gwpy/cli/cliproduct.py,sha256=9OPACkQyjQmRtEmIgis4O3NaQLQV7AvEET1T44rSyLM,34269
|
|
10
10
|
gwpy/cli/coherence.py,sha256=CbGwFl9pLHNncBMRdEr5mv-6EJLuML56Tp_kMD4F-Ds,4048
|
|
11
11
|
gwpy/cli/coherencegram.py,sha256=mpGG3fHBR2OfjhfnRm3VgewAdr6wUgB6kwtsCeWnc64,3353
|
|
12
|
-
gwpy/cli/gwpy_plot.py,sha256=
|
|
12
|
+
gwpy/cli/gwpy_plot.py,sha256=54rjAoiywUA4KLL03JyXsg0yd57XTHqXbxl9n-Gb2K8,5101
|
|
13
13
|
gwpy/cli/qtransform.py,sha256=jC44b5YLmR5N5CC6YN5FrnntOEPD1wb-Sk8N4Dif840,9148
|
|
14
14
|
gwpy/cli/spectrogram.py,sha256=NlNHVJhjb162j5P5e0G_6ngcbPlCW31Umw-IqKmsqGs,7131
|
|
15
15
|
gwpy/cli/spectrum.py,sha256=IpBhoi70h1Cx1R6qlA3RMCyB7BXWrNFyQEVRpEIOSWE,4899
|
|
16
16
|
gwpy/cli/timeseries.py,sha256=GWRQnUzc0oI2cJlDTTGnwRdFaL2X0ky8nlzMZF6dlvs,3891
|
|
17
17
|
gwpy/cli/transferfunction.py,sha256=O1EUUWL5Wn6ZoJieVXu1YlCpuoZhmdtPLHvNGE_6fbQ,9784
|
|
18
18
|
gwpy/cli/tests/__init__.py,sha256=5kO_qzfJZbuffI8x4SQDMAv1NRRlm0XYjrgZ0vIpWW4,744
|
|
19
|
-
gwpy/cli/tests/base.py,sha256=
|
|
19
|
+
gwpy/cli/tests/base.py,sha256=b1U9JZybQQRMd7569oT552E_mM7i6TZnP3kwkYd994E,11213
|
|
20
20
|
gwpy/cli/tests/test_coherence.py,sha256=3ue1akkasZwUDfLQ6vk4BL6lYwhYmkWTAcgeB8ncmNM,1353
|
|
21
21
|
gwpy/cli/tests/test_coherencegram.py,sha256=BvRpIOIkedzcrK0zo2o4bS41F7m4HYBsZekfJ41NEB0,1580
|
|
22
22
|
gwpy/cli/tests/test_gwpy_plot.py,sha256=idX0p2uFpGAsCxSRhFhkYq-hV0IMrw7GXkIXUja7tCk,1718
|
|
@@ -27,7 +27,7 @@ gwpy/cli/tests/test_timeseries.py,sha256=HCYeRdk1Y7owMHTURmV-G9N4iSPZpoKXKvfigOr
|
|
|
27
27
|
gwpy/cli/tests/test_transferfunction.py,sha256=VCve5NgBQo7tBgM5zaBlqY29R0ymc7Tfk9pRpJLsBdg,1999
|
|
28
28
|
gwpy/detector/__init__.py,sha256=gsC_0ca8m8xRQzQ8ns6fpwFQ14_uxUu1LRh1B-sN6EA,2252
|
|
29
29
|
gwpy/detector/channel.py,sha256=2X37knAbqzDg3GavKheXnOHOAgVaPHrOFQ4f4WpmvPc,26786
|
|
30
|
-
gwpy/detector/units.py,sha256=
|
|
30
|
+
gwpy/detector/units.py,sha256=KdHrKyN6CSuA9zh1LanQKIdd4LAt7PwPJ-5RBpMP_00,7364
|
|
31
31
|
gwpy/detector/io/__init__.py,sha256=dAsz8ii5RVhwI_BNVjYrsnX1Pt3nfjh8jqVl4xqLTec,1037
|
|
32
32
|
gwpy/detector/io/cis.py,sha256=gHGnB68xMAv0xQUG4eazA-4Jp0BesYlrttPBXt2g2Qs,3184
|
|
33
33
|
gwpy/detector/io/clf.py,sha256=AusPzKEEuJM6qRyrAzBKmVeYrpnU8Tniql1DPtVHW28,5689
|
|
@@ -45,7 +45,7 @@ gwpy/frequencyseries/io/hdf5.py,sha256=_Fdr5Z8__Q1xh3XYVJdSBTDxRb0cJ_dIt2J-q_V-g
|
|
|
45
45
|
gwpy/frequencyseries/io/ligolw.py,sha256=8MdCcYPHdum6UjWWVO21X3gizOSpFKOLpqzQZmvspYA,1149
|
|
46
46
|
gwpy/frequencyseries/tests/__init__.py,sha256=t0bL_VWIaPVKnxEZhq67LlyHVnjca9b01GBDQmOI4TA,756
|
|
47
47
|
gwpy/frequencyseries/tests/test_frequencyseries.py,sha256=khe7VzuiMaNzGlP2YkYkMOLfpZvXmckPsf4ifEsA3D0,11033
|
|
48
|
-
gwpy/frequencyseries/tests/test_hist.py,sha256=
|
|
48
|
+
gwpy/frequencyseries/tests/test_hist.py,sha256=hAhFzX2k2irV6QhQUciF2L4sQYmG9qSiL7Mnv5MW4zM,4237
|
|
49
49
|
gwpy/io/__init__.py,sha256=Y-QjvthCmjEKRHxix-0iZjx9-VKT30ynPT4bWbKdAA4,831
|
|
50
50
|
gwpy/io/_framecpp.py,sha256=1CTZgxJ7YD8tZv_zP9Hucj9_TE0oMrtdhFWSncZ5jzo,4250
|
|
51
51
|
gwpy/io/cache.py,sha256=6kX4akC7a9m3B8AvDmwVYgiVkBb2L6B3IiPFyoweAnw,15124
|
|
@@ -77,7 +77,7 @@ gwpy/plot/colors.py,sha256=qmrM4u4Ir8OB2jkHUG3ZnriUlp1sdAB_IAb0H9mhC_A,3367
|
|
|
77
77
|
gwpy/plot/gps.py,sha256=Xui1PMSh9K0ovSFuLyVJNKsMoNoOqppQtoEU3y5ZVDU,16846
|
|
78
78
|
gwpy/plot/legend.py,sha256=mD07CTmv0rF171olt6ObsK9k4i-TxKacHQ4kBRzdb_0,1635
|
|
79
79
|
gwpy/plot/log.py,sha256=Sn1BJRB5ml0oqE8UXBphb7MDhwu7ru-UtlvG4i5qTyE,5030
|
|
80
|
-
gwpy/plot/plot.py,sha256=
|
|
80
|
+
gwpy/plot/plot.py,sha256=9aAdInsN5Aoa06VIxhVkCTbi53fSpdSEOrbRvErvsZ8,22080
|
|
81
81
|
gwpy/plot/rc.py,sha256=cK8pOzcvuRsMv_16k9Hl2mkn_dk8FaRrIVhtNhBzyp8,4816
|
|
82
82
|
gwpy/plot/segments.py,sha256=HhjQEv8G00Rp7iRun98CGIk91-c_vAvEsv-uch3CbyU,16943
|
|
83
83
|
gwpy/plot/tex.py,sha256=W1EPjdd9T6H2irDsbbbNNLL_CqBcYRTcAWx9OlsCcFg,4869
|
|
@@ -92,13 +92,13 @@ gwpy/plot/tests/test_gps.py,sha256=l2FhNOpR1u6NxczaaDf1Wq_moOPFVFC1wQiyX-6jvJQ,5
|
|
|
92
92
|
gwpy/plot/tests/test_log.py,sha256=WLYEOYVxwIkXQWGMqioeC0mEB0JbVQxkowlwmUbPqkc,2652
|
|
93
93
|
gwpy/plot/tests/test_plot.py,sha256=BJJkkmbJ_RHKQhD4oDeBCi9Ym9Vnrizh_1F5VxLbMlU,4398
|
|
94
94
|
gwpy/plot/tests/test_rc.py,sha256=8wxIVknBtJOnDWtWlNyPMPlgzYFLFef9BmOsOMIlBfQ,1252
|
|
95
|
-
gwpy/plot/tests/test_segments.py,sha256=
|
|
95
|
+
gwpy/plot/tests/test_segments.py,sha256=Sh1dL5sE0WWlN6OLYuA9_GmkQYcDN-VqROzUF5MGSms,5478
|
|
96
96
|
gwpy/plot/tests/test_tex.py,sha256=nrmwfpBMuoE9PoCx_lbpCjT-fTHWAlYmcgmJIcKuPro,2423
|
|
97
97
|
gwpy/plot/tests/test_text.py,sha256=9gITSsIKiERP4_iN2iB6K-mUL4PRXvL06jon2zUoSNw,1291
|
|
98
98
|
gwpy/plot/tests/test_utils.py,sha256=_PgJNR3Ly6T26ixCwXMm1NmjAqPhPvHL2r2iza3VgfY,1615
|
|
99
99
|
gwpy/plot/tests/utils.py,sha256=_G0yoG1qJ1iz2Iz541_dqSyWQz3rJLOwKbXeZDPL55c,1925
|
|
100
100
|
gwpy/segments/__init__.py,sha256=9h0gedE_OjlNqWmwibTNLSsjqTokbXVKYMfMKSaKocQ,1194
|
|
101
|
-
gwpy/segments/flag.py,sha256=
|
|
101
|
+
gwpy/segments/flag.py,sha256=VzlTMv1Cyy3iCV3zj1PV4RIEMSXivr6X_SR3Hz4dYT8,53042
|
|
102
102
|
gwpy/segments/segments.py,sha256=bozaq1fYPO_a4MxwU35Iaaf_t3d59K1jtISvoMwItxg,9042
|
|
103
103
|
gwpy/segments/io/__init__.py,sha256=ObnJsqSk_Y8qD5-OVmYRcdtDbZcm5pdEu0kRoI9vHtA,1005
|
|
104
104
|
gwpy/segments/io/hdf5.py,sha256=gH0xKxLBx4OQlUjP2Bvsyt02SKY8dVFG6D6poKWBQ4s,11048
|
|
@@ -110,7 +110,7 @@ gwpy/segments/tests/test_flag.py,sha256=LdpG9PUjlirl-54rdMDRv4d4ASJbhWmpA6RVVltR
|
|
|
110
110
|
gwpy/segments/tests/test_segments.py,sha256=VSvjy3p4MuVyucK_QB5PfOjZ0FvJU-jd4pNHv7ppiE8,5360
|
|
111
111
|
gwpy/signal/__init__.py,sha256=1FcrzAPP5fkp9OzrpQyrDswINDqGuLYY_cdtJQttB64,972
|
|
112
112
|
gwpy/signal/fft.py,sha256=YS2g5Urh5Y4x_L2rGts11O5t-M5Y_yAtAvrFkqTv4KQ,1189
|
|
113
|
-
gwpy/signal/filter_design.py,sha256=
|
|
113
|
+
gwpy/signal/filter_design.py,sha256=IGKHJOyFGpEyax06hs3TzlYpcP91UPpIKvQW4pbGaZ4,20339
|
|
114
114
|
gwpy/signal/qtransform.py,sha256=3yhxkioNa3EdwKvsmvYoXnQqA8VPAZW58OnAuE4YHxw,24471
|
|
115
115
|
gwpy/signal/window.py,sha256=ukwcyoAtmLC6LWGyvcOh-gyh0s8paIVk3Z5gjCUk9F8,5927
|
|
116
116
|
gwpy/signal/spectral/__init__.py,sha256=dEKuHIaekXqgmoBJ-gvE0xWym9d7STcAAmewY8qo8xI,1818
|
|
@@ -122,7 +122,7 @@ gwpy/signal/spectral/_scipy.py,sha256=cLoWA9CynvCdTXW3X22H2GBgYx4-o3cMVZorFlWMjd
|
|
|
122
122
|
gwpy/signal/spectral/_ui.py,sha256=MbB3aSUFS4bS5S39fEcSqyhbC6Foq15PGlazVJalWjM,14241
|
|
123
123
|
gwpy/signal/spectral/_utils.py,sha256=qSaj1GctqOd4HmiVwtfUUrBXvZAh0WJYbKiePUKEa1E,1669
|
|
124
124
|
gwpy/signal/tests/__init__.py,sha256=k8yHNX5UvKYZCwZQA4oDEK7gNAYMX7JLhztV67_JoOY,747
|
|
125
|
-
gwpy/signal/tests/test_coherence.py,sha256=
|
|
125
|
+
gwpy/signal/tests/test_coherence.py,sha256=Bb6oUfnZvCeHxbKYky0cJ1r87hONNFAtXFMC5ovD3LQ,5554
|
|
126
126
|
gwpy/signal/tests/test_filter_design.py,sha256=_TyguEED-zkv594XdcKaYkic0EhVFBYHPAHza8UyzAg,4349
|
|
127
127
|
gwpy/signal/tests/test_qtransform.py,sha256=LKBow9vIYI7jRNjuzw53WgsJYMSv9EwkQt-T_Xti1Uk,4017
|
|
128
128
|
gwpy/signal/tests/test_spectral_lal.py,sha256=b7LkyTYtSMVBxikwHQQG042SS1_Zj8WHYqHXWB8lXvo,3543
|
|
@@ -152,7 +152,7 @@ gwpy/table/io/gravityspy.py,sha256=rBxxA1a3EN4YI5LW9CQSXdffUnhPV7EtJFSgf4E-aS8,4
|
|
|
152
152
|
gwpy/table/io/gstlal.py,sha256=SxCYJ_8yuVGGOl7YtCXaLpIuvFHfCRe3VJUvwBkOhJg,8390
|
|
153
153
|
gwpy/table/io/gwf.py,sha256=bOhM7A19Gkyj-8llhn30LSwZLvTJ_wvdtnabWRepgd8,5433
|
|
154
154
|
gwpy/table/io/hacr.py,sha256=raOFk51Lmk9Kc6fMWnt0GdIw2h3hZsH8kbKXn71wXWI,5205
|
|
155
|
-
gwpy/table/io/ligolw.py,sha256=
|
|
155
|
+
gwpy/table/io/ligolw.py,sha256=h1I_TZKWXmZ4YQ_PrZqfe5s_mpDyCpEE2aAe_PfGCbQ,13591
|
|
156
156
|
gwpy/table/io/losc.py,sha256=wMhssG-d1lgG2wNhieG5mFXwpyrzROIGaTiX6cwKZ3w,4434
|
|
157
157
|
gwpy/table/io/omega.py,sha256=5AyWynSb3h30RxE2c_H195HuRtdLdkE8tHuudIWo_lg,2604
|
|
158
158
|
gwpy/table/io/omicron.py,sha256=1TkP4OhwvyjO1LzKQuKRAXb3gDhPUT3ruaDzGdaMrwk,1333
|
|
@@ -164,11 +164,11 @@ gwpy/table/io/utils.py,sha256=V4Ar90f1wYQ9LbE6BYjPBWqLqCKSsejCsDccmx1t_bc,3183
|
|
|
164
164
|
gwpy/table/tests/__init__.py,sha256=3ZMqpj4n63jKiKMH64hfqLsE8_7xxU8xjZgc3hrXtIw,746
|
|
165
165
|
gwpy/table/tests/test_gravityspy.py,sha256=7epyrhKdMcmA7uN5-vFhY1LfifdPOuPUGv-qK4FXjKk,3392
|
|
166
166
|
gwpy/table/tests/test_io_gstlal.py,sha256=Lm8eEfj0-agFm6g9_SUB0Judr1QZYEEiyfPYSmQGxSg,7979
|
|
167
|
-
gwpy/table/tests/test_io_ligolw.py,sha256=
|
|
167
|
+
gwpy/table/tests/test_io_ligolw.py,sha256=_0SlfsSTQ1LZWcjvydqggLyieU8kTLIJDGTwMg3z2BQ,2844
|
|
168
168
|
gwpy/table/tests/test_io_pycbc.py,sha256=65f_AXgD2DCeIcz-rDOucjRStWRd__VQRfK1gcYFaj8,8313
|
|
169
169
|
gwpy/table/tests/test_table.py,sha256=HthR885GqcBQSB8vD5Q6sOSPHojo8m5fa8HPeFx5m6w,30399
|
|
170
170
|
gwpy/testing/__init__.py,sha256=_dtbhI4nOnnUPu8hLZUTUZxgPCq2KB2ATZiLEns9ybw,745
|
|
171
|
-
gwpy/testing/errors.py,sha256=
|
|
171
|
+
gwpy/testing/errors.py,sha256=tITVQ2o3mP7VICKK2T0d9xfZeV0JwNMWaarARVSpCm0,2820
|
|
172
172
|
gwpy/testing/fixtures.py,sha256=pu0sA3l3rcs0osVj97C0lmENYDa-1SF5B44uXey5cb0,3344
|
|
173
173
|
gwpy/testing/marks.py,sha256=BIZ2Q4yfJSS9YQWCWSOwt66JKFnrhbx5XPXbvwfuFyo,1480
|
|
174
174
|
gwpy/testing/mocks.py,sha256=3GoAT1z-1LJXNuoskCmpSi3GTqAa_quO7Tm5pyns0SA,4131
|
|
@@ -185,8 +185,8 @@ gwpy/time/tests/__init__.py,sha256=EF4G-IubXcMA_-mucDvcpjqM-ITyp0G_3cvO0VeYdxI,7
|
|
|
185
185
|
gwpy/time/tests/test_main.py,sha256=3QV6kTWQ6AkGCYmqxfw-JfAoiR6VXzyrM__7XeyQvTI,1362
|
|
186
186
|
gwpy/time/tests/test_time.py,sha256=Cj3Yv0N4MYi9C5fzuXPgR6rge6aKgfIbnhUwzeKDRDM,4402
|
|
187
187
|
gwpy/timeseries/__init__.py,sha256=e-ncacmSPxUUmya8xlQ-Govk4ptr-0TVp26vMIPmxTU,1134
|
|
188
|
-
gwpy/timeseries/core.py,sha256=
|
|
189
|
-
gwpy/timeseries/statevector.py,sha256=
|
|
188
|
+
gwpy/timeseries/core.py,sha256=DOGeO3kjk7twinS8aDDwgNKIZLYrGtnfCPOm05KKxi8,57804
|
|
189
|
+
gwpy/timeseries/statevector.py,sha256=9yAlpBbR8eWDMK6PTpuGUAwAGO1tyE07SohfU2DJUJs,35891
|
|
190
190
|
gwpy/timeseries/timeseries.py,sha256=lg28EEMASBR2IS_4gJfcU0j3uo7tEfFEVjK-Uv64ziw,87809
|
|
191
191
|
gwpy/timeseries/io/__init__.py,sha256=qviFCaeTVeTZ7ZiIQKQyU1xxh76Ba60yE9vVtm9y1bY,938
|
|
192
192
|
gwpy/timeseries/io/ascii.py,sha256=M05FDTCa06KLJ1Sb0jDh3NxrmMboV73j38nyMacVPkQ,1185
|
|
@@ -201,13 +201,13 @@ gwpy/timeseries/io/gwf/framecpp.py,sha256=sFrsWr5uiE5p7wym-u3oMPsKih4OckZoXLdnTL
|
|
|
201
201
|
gwpy/timeseries/io/gwf/framel.py,sha256=UQuydhR9reAgSmYSI0lqHJ7120gDyXHoImaQUjXz0mc,4776
|
|
202
202
|
gwpy/timeseries/io/gwf/lalframe.py,sha256=zXaDxnSWW9d3xdkwm8hQLnQAN_hEmTuZ4ibsJYndBzw,7729
|
|
203
203
|
gwpy/timeseries/tests/__init__.py,sha256=QJdnWz_IQOTYq6MvKuBzz2HFiNVf6QMXrZ-kDks-lDI,751
|
|
204
|
-
gwpy/timeseries/tests/test_core.py,sha256=
|
|
204
|
+
gwpy/timeseries/tests/test_core.py,sha256=YEFCcH0zj1z0Qz1uczhvCs7nbqasGyLLPEf5NdaJB6c,19613
|
|
205
205
|
gwpy/timeseries/tests/test_io_cache.py,sha256=nEEDjEaJ8Nf9KV2p6k9LchbmhvU-O5xcmJT2gbC5QZw,2294
|
|
206
|
-
gwpy/timeseries/tests/test_io_gwf_framecpp.py,sha256=
|
|
206
|
+
gwpy/timeseries/tests/test_io_gwf_framecpp.py,sha256=S0MgBEZ2_o6MDrBfAZbj4SWk3LDbagh6XOfBAySuoWE,2267
|
|
207
207
|
gwpy/timeseries/tests/test_io_gwf_lalframe.py,sha256=iD9m01menvAgUXoGJnX7Xv-O5t3mgX2C2N2nRN-gitY,5479
|
|
208
208
|
gwpy/timeseries/tests/test_io_losc.py,sha256=E_bLM3bc4TO2-cMOEF3vDG8cr6TKgQwPY-EBN6DzyUg,1833
|
|
209
|
-
gwpy/timeseries/tests/test_statevector.py,sha256
|
|
210
|
-
gwpy/timeseries/tests/test_timeseries.py,sha256=
|
|
209
|
+
gwpy/timeseries/tests/test_statevector.py,sha256=-wmDd1GLEXeR1vWa2jixndLyx0WL4eYJLU-BlcEA9JE,13768
|
|
210
|
+
gwpy/timeseries/tests/test_timeseries.py,sha256=fa_6tnHEJTgqcDbLgLMsSa8dmUwxq27frWQLj0bURrk,57347
|
|
211
211
|
gwpy/types/__init__.py,sha256=JIpXRdi0av2V0BkynOwUhijxQShSAqE5gLrowJ6Nckg,1159
|
|
212
212
|
gwpy/types/array.py,sha256=D4EwGC80hKFhrRuFD3xnHaqJR7jdT88v5nik-3o-RU0,15595
|
|
213
213
|
gwpy/types/array2d.py,sha256=NtwW5T6PWHiAS6kFYUfF8fm3WE4qQdPbXN01iaBET0k,12367
|
|
@@ -219,10 +219,10 @@ gwpy/types/io/ascii.py,sha256=bamzUBneh2DZXjQ1jPlUjMvfnvBU-ckjGJ4eYR9zzY8,2872
|
|
|
219
219
|
gwpy/types/io/hdf5.py,sha256=OMGrLD3B3oiJpN9q_-OHUhVXxkJKxDWVacEcpwGK5A4,8019
|
|
220
220
|
gwpy/types/io/ligolw.py,sha256=p0181ziPEuKcJJBA9WVOYmus7KD7UzGai7xCd7U49-A,7267
|
|
221
221
|
gwpy/types/tests/__init__.py,sha256=1-XqGdROuPGF7ee-MsWjZVh5uY29SKGuA6VlJs4Z-Ac,746
|
|
222
|
-
gwpy/types/tests/test_array.py,sha256=
|
|
223
|
-
gwpy/types/tests/test_array2d.py,sha256=
|
|
222
|
+
gwpy/types/tests/test_array.py,sha256=qIGurik5g-GxNl4oV6f2BpZf3swkiCA7WE4zn5jr-6s,8698
|
|
223
|
+
gwpy/types/tests/test_array2d.py,sha256=RM072wwSvCOQb1LQFzOjrXkpMyuc5h7biQ18JmtIhgo,9089
|
|
224
224
|
gwpy/types/tests/test_index.py,sha256=2DKZnlNCU2tQ1IU4w4yQGtRKTTvcJlSwFvQLjhV2RrU,2044
|
|
225
|
-
gwpy/types/tests/test_series.py,sha256=
|
|
225
|
+
gwpy/types/tests/test_series.py,sha256=EgzmgTquXFevZ478Nxq84-BfeYMjaiKDDv8tUyB4xjc,16573
|
|
226
226
|
gwpy/utils/__init__.py,sha256=OiPOQ69N9q8xE6VQI9rpEvhPx0bgAmHjxo-rV8RHoDE,933
|
|
227
227
|
gwpy/utils/decorators.py,sha256=tvf4j3HarUIgbG_eFolbJcn5032nJBlhfZLK4UvaRKw,3723
|
|
228
228
|
gwpy/utils/enum.py,sha256=o2LhVx0G_-T_PlDe1aGD7dlOu1ySY4rPx-UTasr_8Qw,1490
|
|
@@ -234,7 +234,7 @@ gwpy/utils/progress.py,sha256=coDB4ju-qJ710TGwposHAKZ95GWj36hJEBRHjl1-Frk,1367
|
|
|
234
234
|
gwpy/utils/shell.py,sha256=PErkh4RGlS_2_FPX5_kKSUeQj-_CgCWSkA-kf2ON3iQ,3371
|
|
235
235
|
gwpy/utils/sphinx/__init__.py,sha256=awmoBU_ou-WAYmR4SrqRniWrU0G1icxXJZN_9wuChs8,770
|
|
236
236
|
gwpy/utils/sphinx/ex2rst.py,sha256=9q4Bk7eIx1rfCSDRSyqerXYfjBdIuwhQQWv-Y-XsAoY,4763
|
|
237
|
-
gwpy/utils/sphinx/zenodo.py,sha256=
|
|
237
|
+
gwpy/utils/sphinx/zenodo.py,sha256=s_jw-lHizuLC6AQ6U--xN6PJFQ-BlLt207gDBmx_SrU,4148
|
|
238
238
|
gwpy/utils/tests/__init__.py,sha256=ECvgWEjRqaYVJKOCfxbVSJmMrQS0k5iVanDJoJ7CHyU,746
|
|
239
239
|
gwpy/utils/tests/test_decorators.py,sha256=CS7zoXcVS71VyVr7d9_ll7tWZjuFxBGuKsGKxpS331c,2209
|
|
240
240
|
gwpy/utils/tests/test_enum.py,sha256=xOEKR-Id8krxTTBcTNlVjM-S_aGA__4_zMh1DupavM0,2185
|
|
@@ -244,10 +244,10 @@ gwpy/utils/tests/test_misc.py,sha256=rkTxdu7gv9Dxs0OI6IvGivGiAs3PuK8ckMtNF5_kE6I
|
|
|
244
244
|
gwpy/utils/tests/test_mp.py,sha256=kZXUTFqCPi4wvCkGgSSk8XrG9pHPGakPNuNUykgSp-k,2062
|
|
245
245
|
gwpy/utils/tests/test_shell.py,sha256=arHzI96Rmje5JPhbQ33vEN0ByRh8qwRVqfl4-jzLUv4,2334
|
|
246
246
|
gwpy/utils/tests/test_sphinx_ex2rst.py,sha256=KcIBPWTsPp00iTdYT6bZ8g2F7bN66PaX5uLJlcWu0J0,2263
|
|
247
|
-
gwpy/utils/tests/test_sphinx_zenodo.py,sha256=
|
|
248
|
-
gwpy-3.0.
|
|
249
|
-
gwpy-3.0.
|
|
250
|
-
gwpy-3.0.
|
|
251
|
-
gwpy-3.0.
|
|
252
|
-
gwpy-3.0.
|
|
253
|
-
gwpy-3.0.
|
|
247
|
+
gwpy/utils/tests/test_sphinx_zenodo.py,sha256=GL-3R7yFxF6ZQLuVhJI74djdgvE9sX4Q0atdHi3SyiU,5237
|
|
248
|
+
gwpy-3.0.10.dist-info/LICENSE,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
|
|
249
|
+
gwpy-3.0.10.dist-info/METADATA,sha256=5HAN-1AH7-zngu1o2VZrBVOjK0sHGA5gKNPE71IoB5U,4866
|
|
250
|
+
gwpy-3.0.10.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
|
|
251
|
+
gwpy-3.0.10.dist-info/entry_points.txt,sha256=pcO_XRknobU7b1uuxFb3nTdGMk8FrHQsWBOflnj6Ev8,54
|
|
252
|
+
gwpy-3.0.10.dist-info/top_level.txt,sha256=0XRdsSjFdBe_QF_Qst002-CCxuuO13ag2n-11nBpZ4E,5
|
|
253
|
+
gwpy-3.0.10.dist-info/RECORD,,
|
gwpy-3.0.9.dist-info/METADATA
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: gwpy
|
|
3
|
-
Version: 3.0.9
|
|
4
|
-
Summary: A python package for gravitational-wave astrophysics
|
|
5
|
-
Author-email: Duncan Macleod <duncan.macleod@ligo.org>
|
|
6
|
-
License: GPL-3.0-or-later
|
|
7
|
-
Project-URL: Bug Tracker, https://github.com/gwpy/gwpy/issues
|
|
8
|
-
Project-URL: Discussion Forum, https://gwpy.slack.com
|
|
9
|
-
Project-URL: Documentation, https://gwpy.github.io/docs/
|
|
10
|
-
Project-URL: Source Code, https://github.com/gwpy/gwpy
|
|
11
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
-
Classifier: Intended Audience :: Science/Research
|
|
13
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
14
|
-
Classifier: Natural Language :: English
|
|
15
|
-
Classifier: Operating System :: OS Independent
|
|
16
|
-
Classifier: Programming Language :: Python
|
|
17
|
-
Classifier: Programming Language :: Python :: 3
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
-
Classifier: Topic :: Scientific/Engineering :: Astronomy
|
|
24
|
-
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
25
|
-
Requires-Python: >=3.8
|
|
26
|
-
Description-Content-Type: text/markdown
|
|
27
|
-
License-File: LICENSE
|
|
28
|
-
Requires-Dist: astropy >=4.3.0
|
|
29
|
-
Requires-Dist: dateparser >=1.1.4
|
|
30
|
-
Requires-Dist: dqsegdb2
|
|
31
|
-
Requires-Dist: gwdatafind >=1.1.0
|
|
32
|
-
Requires-Dist: gwosc >=0.5.3
|
|
33
|
-
Requires-Dist: h5py >=3.0.0
|
|
34
|
-
Requires-Dist: ligo-segments >=1.0.0
|
|
35
|
-
Requires-Dist: ligotimegps >=1.2.1
|
|
36
|
-
Requires-Dist: matplotlib >=3.3.0
|
|
37
|
-
Requires-Dist: numpy >=1.19
|
|
38
|
-
Requires-Dist: python-dateutil
|
|
39
|
-
Requires-Dist: requests
|
|
40
|
-
Requires-Dist: scipy >=1.6.0
|
|
41
|
-
Requires-Dist: tqdm >=4.10.0
|
|
42
|
-
Provides-Extra: astro
|
|
43
|
-
Requires-Dist: inspiral-range >=0.5.0 ; extra == 'astro'
|
|
44
|
-
Provides-Extra: conda
|
|
45
|
-
Requires-Dist: python-framel !=8.46.0,>=8.40.1 ; extra == 'conda'
|
|
46
|
-
Requires-Dist: python-nds2-client ; extra == 'conda'
|
|
47
|
-
Requires-Dist: python-ldas-tools-framecpp ; (sys_platform != "win32") and extra == 'conda'
|
|
48
|
-
Requires-Dist: lxml !=4.9.1 ; (sys_platform == "win32") and extra == 'conda'
|
|
49
|
-
Provides-Extra: dev
|
|
50
|
-
Requires-Dist: ciecplib ; extra == 'dev'
|
|
51
|
-
Requires-Dist: psycopg2 ; extra == 'dev'
|
|
52
|
-
Requires-Dist: pymysql ; extra == 'dev'
|
|
53
|
-
Requires-Dist: pyRXP ; extra == 'dev'
|
|
54
|
-
Requires-Dist: sqlalchemy ; extra == 'dev'
|
|
55
|
-
Requires-Dist: uproot >=4.1.5 ; extra == 'dev'
|
|
56
|
-
Requires-Dist: lalsuite ; (sys_platform != "win32") and extra == 'dev'
|
|
57
|
-
Requires-Dist: lscsoft-glue ; (sys_platform != "win32") and extra == 'dev'
|
|
58
|
-
Requires-Dist: pycbc >=1.13.4 ; (sys_platform != "win32") and extra == 'dev'
|
|
59
|
-
Requires-Dist: python-ligo-lw >=1.7.0 ; (sys_platform != "win32") and extra == 'dev'
|
|
60
|
-
Provides-Extra: docs
|
|
61
|
-
Requires-Dist: numpydoc >=0.8.0 ; extra == 'docs'
|
|
62
|
-
Requires-Dist: Sphinx >=4.4.0 ; extra == 'docs'
|
|
63
|
-
Requires-Dist: sphinx-automodapi ; extra == 'docs'
|
|
64
|
-
Requires-Dist: sphinx-immaterial >=0.7.3 ; extra == 'docs'
|
|
65
|
-
Requires-Dist: sphinx-panels >=0.6.0 ; extra == 'docs'
|
|
66
|
-
Requires-Dist: sphinxcontrib-programoutput ; extra == 'docs'
|
|
67
|
-
Provides-Extra: test
|
|
68
|
-
Requires-Dist: coverage[toml] >=5.0 ; extra == 'test'
|
|
69
|
-
Requires-Dist: pytest >=3.9.1 ; extra == 'test'
|
|
70
|
-
Requires-Dist: pytest-freezer ; extra == 'test'
|
|
71
|
-
Requires-Dist: pytest-cov >=2.4.0 ; extra == 'test'
|
|
72
|
-
Requires-Dist: pytest-requires ; extra == 'test'
|
|
73
|
-
Requires-Dist: pytest-socket ; extra == 'test'
|
|
74
|
-
Requires-Dist: pytest-xdist ; extra == 'test'
|
|
75
|
-
Requires-Dist: requests-mock ; extra == 'test'
|
|
76
|
-
|
|
77
|
-
GWpy is a collaboration-driven Python package providing tools for
|
|
78
|
-
studying data from ground-based gravitational-wave detectors.
|
|
79
|
-
|
|
80
|
-
GWpy provides a user-friendly, intuitive interface to the common
|
|
81
|
-
time-domain and frequency-domain data produced by the LIGO and Virgo
|
|
82
|
-
observatories and their analyses, with easy-to-follow tutorials at each
|
|
83
|
-
step.
|
|
84
|
-
|
|
85
|
-
<https://gwpy.github.io>
|
|
86
|
-
|
|
87
|
-
# Release status
|
|
88
|
-
|
|
89
|
-
[](http://badge.fury.io/py/gwpy)
|
|
90
|
-
[](https://anaconda.org/conda-forge/gwpy/)
|
|
91
|
-
|
|
92
|
-
[](https://zenodo.org/badge/latestdoi/9979119)
|
|
93
|
-
[](https://choosealicense.com/licenses/gpl-3.0/)
|
|
94
|
-

|
|
95
|
-
|
|
96
|
-
# Development status
|
|
97
|
-
|
|
98
|
-
[](https://github.com/gwpy/gwpy/actions?query=branch%3Amain)
|
|
99
|
-
[](https://codecov.io/gh/gwpy/gwpy)
|
|
100
|
-
[](https://codeclimate.com/github/gwpy/gwpy/maintainability)
|
|
101
|
-
|
|
102
|
-
# Installation
|
|
103
|
-
|
|
104
|
-
To install, you can do:
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
conda install -c conda-forge gwpy
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
or
|
|
111
|
-
|
|
112
|
-
```
|
|
113
|
-
python -m pip install gwpy
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
You can test your installation, and its version by
|
|
117
|
-
|
|
118
|
-
```
|
|
119
|
-
python -c "import gwpy; print(gwpy.__version__)"
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
# License
|
|
123
|
-
|
|
124
|
-
GWpy is released under the GNU General Public License v3.0 or later, see [here](https://choosealicense.com/licenses/gpl-3.0/) for a description of this license, or see the [LICENSE](https://github.com/gwpy/gwpy/blob/main/LICENSE) file for the full text.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|