gwexpy 0.1.1__tar.gz
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.
- gwexpy-0.1.1/CHANGELOG.md +211 -0
- gwexpy-0.1.1/LICENSE.txt +21 -0
- gwexpy-0.1.1/MANIFEST.in +17 -0
- gwexpy-0.1.1/PKG-INFO +203 -0
- gwexpy-0.1.1/README.md +78 -0
- gwexpy-0.1.1/gwexpy/__init__.py +224 -0
- gwexpy-0.1.1/gwexpy/_bootstrap.py +59 -0
- gwexpy-0.1.1/gwexpy/_version.py +3 -0
- gwexpy-0.1.1/gwexpy/_warnings.py +50 -0
- gwexpy-0.1.1/gwexpy/analysis/__init__.py +39 -0
- gwexpy-0.1.1/gwexpy/analysis/bruco.py +1746 -0
- gwexpy-0.1.1/gwexpy/analysis/coupling.py +1034 -0
- gwexpy-0.1.1/gwexpy/analysis/coupling_result.py +1155 -0
- gwexpy-0.1.1/gwexpy/analysis/response.py +999 -0
- gwexpy-0.1.1/gwexpy/analysis/stat_info.py +103 -0
- gwexpy-0.1.1/gwexpy/analysis/stats.py +52 -0
- gwexpy-0.1.1/gwexpy/analysis/threshold.py +409 -0
- gwexpy-0.1.1/gwexpy/astro/__init__.py +14 -0
- gwexpy-0.1.1/gwexpy/astro/range.py +28 -0
- gwexpy-0.1.1/gwexpy/cli/__init__.py +58 -0
- gwexpy-0.1.1/gwexpy/cli/__main__.py +6 -0
- gwexpy-0.1.1/gwexpy/cli/cliproduct.py +42 -0
- gwexpy-0.1.1/gwexpy/cli/coherence.py +12 -0
- gwexpy-0.1.1/gwexpy/cli/coherencegram.py +10 -0
- gwexpy-0.1.1/gwexpy/cli/gwpy_plot.py +5 -0
- gwexpy-0.1.1/gwexpy/cli/qtransform.py +18 -0
- gwexpy-0.1.1/gwexpy/cli/spectrogram.py +15 -0
- gwexpy-0.1.1/gwexpy/cli/spectrum.py +15 -0
- gwexpy-0.1.1/gwexpy/cli/timeseries.py +13 -0
- gwexpy-0.1.1/gwexpy/cli/transferfunction.py +15 -0
- gwexpy-0.1.1/gwexpy/detector/__init__.py +14 -0
- gwexpy-0.1.1/gwexpy/detector/channel.py +23 -0
- gwexpy-0.1.1/gwexpy/detector/io/__init__.py +9 -0
- gwexpy-0.1.1/gwexpy/detector/io/cis.py +15 -0
- gwexpy-0.1.1/gwexpy/detector/io/clf.py +17 -0
- gwexpy-0.1.1/gwexpy/detector/io/omega.py +15 -0
- gwexpy-0.1.1/gwexpy/detector/units.py +21 -0
- gwexpy-0.1.1/gwexpy/fields/__init__.py +46 -0
- gwexpy-0.1.1/gwexpy/fields/base.py +540 -0
- gwexpy-0.1.1/gwexpy/fields/collections.py +307 -0
- gwexpy-0.1.1/gwexpy/fields/demo.py +315 -0
- gwexpy-0.1.1/gwexpy/fields/scalar.py +2303 -0
- gwexpy-0.1.1/gwexpy/fields/signal.py +1533 -0
- gwexpy-0.1.1/gwexpy/fields/tensor.py +464 -0
- gwexpy-0.1.1/gwexpy/fields/vector.py +387 -0
- gwexpy-0.1.1/gwexpy/fitting/__init__.py +83 -0
- gwexpy-0.1.1/gwexpy/fitting/core.py +1245 -0
- gwexpy-0.1.1/gwexpy/fitting/gls.py +183 -0
- gwexpy-0.1.1/gwexpy/fitting/highlevel.py +363 -0
- gwexpy-0.1.1/gwexpy/fitting/mixin.py +59 -0
- gwexpy-0.1.1/gwexpy/fitting/models.py +255 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/__init__.py +32 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/_fdcommon.py +1 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/bifrequencymap.py +876 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/collections.py +1099 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/frequencyseries.py +1686 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/hist.py +1 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/io/__init__.py +9 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/io/ascii.py +6 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/io/dttxml.py +258 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/io/hdf5.py +6 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/io/ligolw.py +1 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/io/stubs.py +38 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/matrix.py +145 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/matrix_analysis.py +197 -0
- gwexpy-0.1.1/gwexpy/frequencyseries/matrix_core.py +95 -0
- gwexpy-0.1.1/gwexpy/histogram/__init__.py +18 -0
- gwexpy-0.1.1/gwexpy/histogram/_core.py +415 -0
- gwexpy-0.1.1/gwexpy/histogram/_rebin.py +260 -0
- gwexpy-0.1.1/gwexpy/histogram/_typing.py +40 -0
- gwexpy-0.1.1/gwexpy/histogram/collections.py +436 -0
- gwexpy-0.1.1/gwexpy/histogram/histogram.py +395 -0
- gwexpy-0.1.1/gwexpy/histogram/io/__init__.py +1 -0
- gwexpy-0.1.1/gwexpy/histogram/io/_hdf5.py +104 -0
- gwexpy-0.1.1/gwexpy/interop/__init__.py +305 -0
- gwexpy-0.1.1/gwexpy/interop/_modal_helpers.py +215 -0
- gwexpy-0.1.1/gwexpy/interop/_optional.py +194 -0
- gwexpy-0.1.1/gwexpy/interop/_registry.py +142 -0
- gwexpy-0.1.1/gwexpy/interop/_time.py +98 -0
- gwexpy-0.1.1/gwexpy/interop/astropy_.py +39 -0
- gwexpy-0.1.1/gwexpy/interop/base.py +34 -0
- gwexpy-0.1.1/gwexpy/interop/control_.py +227 -0
- gwexpy-0.1.1/gwexpy/interop/cupy_.py +42 -0
- gwexpy-0.1.1/gwexpy/interop/dask_.py +39 -0
- gwexpy-0.1.1/gwexpy/interop/emg3d_.py +494 -0
- gwexpy-0.1.1/gwexpy/interop/errors.py +38 -0
- gwexpy-0.1.1/gwexpy/interop/exudyn_.py +123 -0
- gwexpy-0.1.1/gwexpy/interop/finesse_.py +280 -0
- gwexpy-0.1.1/gwexpy/interop/frequency.py +184 -0
- gwexpy-0.1.1/gwexpy/interop/gwinc_.py +200 -0
- gwexpy-0.1.1/gwexpy/interop/harmonica_.py +93 -0
- gwexpy-0.1.1/gwexpy/interop/hdf5_.py +69 -0
- gwexpy-0.1.1/gwexpy/interop/jax_.py +24 -0
- gwexpy-0.1.1/gwexpy/interop/json_.py +47 -0
- gwexpy-0.1.1/gwexpy/interop/lal_.py +221 -0
- gwexpy-0.1.1/gwexpy/interop/meep_.py +322 -0
- gwexpy-0.1.1/gwexpy/interop/meshio_.py +369 -0
- gwexpy-0.1.1/gwexpy/interop/metpy_.py +90 -0
- gwexpy-0.1.1/gwexpy/interop/mne_.py +490 -0
- gwexpy-0.1.1/gwexpy/interop/mt_.py +274 -0
- gwexpy-0.1.1/gwexpy/interop/multitaper_.py +277 -0
- gwexpy-0.1.1/gwexpy/interop/neo_.py +107 -0
- gwexpy-0.1.1/gwexpy/interop/netcdf4_.py +62 -0
- gwexpy-0.1.1/gwexpy/interop/obspy_.py +300 -0
- gwexpy-0.1.1/gwexpy/interop/openems_.py +405 -0
- gwexpy-0.1.1/gwexpy/interop/opensees_.py +133 -0
- gwexpy-0.1.1/gwexpy/interop/pandas_.py +228 -0
- gwexpy-0.1.1/gwexpy/interop/polars_.py +232 -0
- gwexpy-0.1.1/gwexpy/interop/pycbc_.py +184 -0
- gwexpy-0.1.1/gwexpy/interop/pydub_.py +69 -0
- gwexpy-0.1.1/gwexpy/interop/pyoma_.py +97 -0
- gwexpy-0.1.1/gwexpy/interop/pyroomacoustics_.py +578 -0
- gwexpy-0.1.1/gwexpy/interop/pyspeckit_.py +69 -0
- gwexpy-0.1.1/gwexpy/interop/pyspice_.py +331 -0
- gwexpy-0.1.1/gwexpy/interop/quantities_.py +110 -0
- gwexpy-0.1.1/gwexpy/interop/root_.py +544 -0
- gwexpy-0.1.1/gwexpy/interop/sdynpy_.py +231 -0
- gwexpy-0.1.1/gwexpy/interop/sdypy_.py +141 -0
- gwexpy-0.1.1/gwexpy/interop/simpeg_.py +202 -0
- gwexpy-0.1.1/gwexpy/interop/skrf_.py +524 -0
- gwexpy-0.1.1/gwexpy/interop/specutils_.py +88 -0
- gwexpy-0.1.1/gwexpy/interop/sqlite_.py +92 -0
- gwexpy-0.1.1/gwexpy/interop/tensorflow_.py +22 -0
- gwexpy-0.1.1/gwexpy/interop/torch_.py +100 -0
- gwexpy-0.1.1/gwexpy/interop/torch_dataset.py +167 -0
- gwexpy-0.1.1/gwexpy/interop/wrf_.py +133 -0
- gwexpy-0.1.1/gwexpy/interop/xarray_.py +364 -0
- gwexpy-0.1.1/gwexpy/interop/zarr_.py +75 -0
- gwexpy-0.1.1/gwexpy/io/__init__.py +20 -0
- gwexpy-0.1.1/gwexpy/io/_framecpp.py +12 -0
- gwexpy-0.1.1/gwexpy/io/cache.py +14 -0
- gwexpy-0.1.1/gwexpy/io/collection_dir.py +165 -0
- gwexpy-0.1.1/gwexpy/io/datafind.py +19 -0
- gwexpy-0.1.1/gwexpy/io/dttxml_common.py +597 -0
- gwexpy-0.1.1/gwexpy/io/ffldatafind.py +22 -0
- gwexpy-0.1.1/gwexpy/io/gwf.py +20 -0
- gwexpy-0.1.1/gwexpy/io/hdf5.py +10 -0
- gwexpy-0.1.1/gwexpy/io/hdf5_collection.py +121 -0
- gwexpy-0.1.1/gwexpy/io/kerberos.py +6 -0
- gwexpy-0.1.1/gwexpy/io/ligolw.py +35 -0
- gwexpy-0.1.1/gwexpy/io/nds2.py +14 -0
- gwexpy-0.1.1/gwexpy/io/pickle_compat.py +88 -0
- gwexpy-0.1.1/gwexpy/io/registry.py +22 -0
- gwexpy-0.1.1/gwexpy/io/utils.py +297 -0
- gwexpy-0.1.1/gwexpy/noise/__init__.py +55 -0
- gwexpy-0.1.1/gwexpy/noise/asd.py +58 -0
- gwexpy-0.1.1/gwexpy/noise/colored.py +171 -0
- gwexpy-0.1.1/gwexpy/noise/field.py +202 -0
- gwexpy-0.1.1/gwexpy/noise/gwinc_.py +183 -0
- gwexpy-0.1.1/gwexpy/noise/line_mask.py +66 -0
- gwexpy-0.1.1/gwexpy/noise/magnetic.py +141 -0
- gwexpy-0.1.1/gwexpy/noise/non_gaussian.py +238 -0
- gwexpy-0.1.1/gwexpy/noise/obspy_.py +261 -0
- gwexpy-0.1.1/gwexpy/noise/peaks.py +166 -0
- gwexpy-0.1.1/gwexpy/noise/wave.py +956 -0
- gwexpy-0.1.1/gwexpy/numerics/__init__.py +38 -0
- gwexpy-0.1.1/gwexpy/numerics/constants.py +97 -0
- gwexpy-0.1.1/gwexpy/numerics/scaling.py +169 -0
- gwexpy-0.1.1/gwexpy/plot/__init__.py +48 -0
- gwexpy-0.1.1/gwexpy/plot/_coord.py +261 -0
- gwexpy-0.1.1/gwexpy/plot/_init_helpers.py +499 -0
- gwexpy-0.1.1/gwexpy/plot/_label_utils.py +50 -0
- gwexpy-0.1.1/gwexpy/plot/axes.py +25 -0
- gwexpy-0.1.1/gwexpy/plot/bode.py +6 -0
- gwexpy-0.1.1/gwexpy/plot/colorbar.py +14 -0
- gwexpy-0.1.1/gwexpy/plot/colors.py +17 -0
- gwexpy-0.1.1/gwexpy/plot/defaults.py +382 -0
- gwexpy-0.1.1/gwexpy/plot/field.py +222 -0
- gwexpy-0.1.1/gwexpy/plot/gauch_dashboard.py +121 -0
- gwexpy-0.1.1/gwexpy/plot/geomap.py +217 -0
- gwexpy-0.1.1/gwexpy/plot/gps.py +31 -0
- gwexpy-0.1.1/gwexpy/plot/legend.py +8 -0
- gwexpy-0.1.1/gwexpy/plot/log.py +17 -0
- gwexpy-0.1.1/gwexpy/plot/pairplot.py +248 -0
- gwexpy-0.1.1/gwexpy/plot/plot.py +554 -0
- gwexpy-0.1.1/gwexpy/plot/rc.py +20 -0
- gwexpy-0.1.1/gwexpy/plot/segments.py +22 -0
- gwexpy-0.1.1/gwexpy/plot/skymap.py +188 -0
- gwexpy-0.1.1/gwexpy/plot/tex.py +1 -0
- gwexpy-0.1.1/gwexpy/plot/text.py +1 -0
- gwexpy-0.1.1/gwexpy/plot/units.py +9 -0
- gwexpy-0.1.1/gwexpy/plot/utils.py +71 -0
- gwexpy-0.1.1/gwexpy/py.typed +0 -0
- gwexpy-0.1.1/gwexpy/segments/__init__.py +14 -0
- gwexpy-0.1.1/gwexpy/segments/flag.py +6 -0
- gwexpy-0.1.1/gwexpy/segments/io/__init__.py +10 -0
- gwexpy-0.1.1/gwexpy/segments/io/hdf5.py +6 -0
- gwexpy-0.1.1/gwexpy/segments/io/json.py +12 -0
- gwexpy-0.1.1/gwexpy/segments/io/ligolw.py +20 -0
- gwexpy-0.1.1/gwexpy/segments/io/segwizard.py +17 -0
- gwexpy-0.1.1/gwexpy/segments/segments.py +4 -0
- gwexpy-0.1.1/gwexpy/signal/__init__.py +49 -0
- gwexpy-0.1.1/gwexpy/signal/fft.py +6 -0
- gwexpy-0.1.1/gwexpy/signal/filter_design.py +4 -0
- gwexpy-0.1.1/gwexpy/signal/normalization.py +153 -0
- gwexpy-0.1.1/gwexpy/signal/preprocessing/__init__.py +16 -0
- gwexpy-0.1.1/gwexpy/signal/preprocessing/imputation.py +282 -0
- gwexpy-0.1.1/gwexpy/signal/preprocessing/ml.py +388 -0
- gwexpy-0.1.1/gwexpy/signal/preprocessing/standardization.py +114 -0
- gwexpy-0.1.1/gwexpy/signal/preprocessing/whitening.py +174 -0
- gwexpy-0.1.1/gwexpy/signal/qtransform.py +10 -0
- gwexpy-0.1.1/gwexpy/signal/spectral/__init__.py +18 -0
- gwexpy-0.1.1/gwexpy/signal/spectral/_lal.py +27 -0
- gwexpy-0.1.1/gwexpy/signal/spectral/_median_mean.py +1 -0
- gwexpy-0.1.1/gwexpy/signal/spectral/_pycbc.py +1 -0
- gwexpy-0.1.1/gwexpy/signal/spectral/_registry.py +1 -0
- gwexpy-0.1.1/gwexpy/signal/spectral/_scipy.py +21 -0
- gwexpy-0.1.1/gwexpy/signal/spectral/_ui.py +23 -0
- gwexpy-0.1.1/gwexpy/signal/spectral/_utils.py +1 -0
- gwexpy-0.1.1/gwexpy/signal/window.py +4 -0
- gwexpy-0.1.1/gwexpy/spectral/__init__.py +13 -0
- gwexpy-0.1.1/gwexpy/spectral/estimation.py +762 -0
- gwexpy-0.1.1/gwexpy/spectrogram/__init__.py +33 -0
- gwexpy-0.1.1/gwexpy/spectrogram/cleaning.py +154 -0
- gwexpy-0.1.1/gwexpy/spectrogram/coherence.py +11 -0
- gwexpy-0.1.1/gwexpy/spectrogram/collections.py +948 -0
- gwexpy-0.1.1/gwexpy/spectrogram/io/__init__.py +8 -0
- gwexpy-0.1.1/gwexpy/spectrogram/io/hdf5.py +6 -0
- gwexpy-0.1.1/gwexpy/spectrogram/matrix.py +849 -0
- gwexpy-0.1.1/gwexpy/spectrogram/matrix_analysis.py +131 -0
- gwexpy-0.1.1/gwexpy/spectrogram/matrix_core.py +194 -0
- gwexpy-0.1.1/gwexpy/spectrogram/spectrogram.py +1029 -0
- gwexpy-0.1.1/gwexpy/statistics/__init__.py +15 -0
- gwexpy-0.1.1/gwexpy/statistics/dq_flag.py +82 -0
- gwexpy-0.1.1/gwexpy/statistics/gauch.py +149 -0
- gwexpy-0.1.1/gwexpy/statistics/rayleigh_test.py +95 -0
- gwexpy-0.1.1/gwexpy/statistics/roc.py +85 -0
- gwexpy-0.1.1/gwexpy/statistics/student_t_indicator.py +124 -0
- gwexpy-0.1.1/gwexpy/table/__init__.py +25 -0
- gwexpy-0.1.1/gwexpy/table/filter.py +39 -0
- gwexpy-0.1.1/gwexpy/table/filters.py +13 -0
- gwexpy-0.1.1/gwexpy/table/gravityspy.py +35 -0
- gwexpy-0.1.1/gwexpy/table/io/__init__.py +37 -0
- gwexpy-0.1.1/gwexpy/table/io/cwb.py +23 -0
- gwexpy-0.1.1/gwexpy/table/io/fetch.py +17 -0
- gwexpy-0.1.1/gwexpy/table/io/gravityspy.py +11 -0
- gwexpy-0.1.1/gwexpy/table/io/gstlal.py +47 -0
- gwexpy-0.1.1/gwexpy/table/io/gwf.py +27 -0
- gwexpy-0.1.1/gwexpy/table/io/hacr.py +39 -0
- gwexpy-0.1.1/gwexpy/table/io/ligolw.py +47 -0
- gwexpy-0.1.1/gwexpy/table/io/losc.py +33 -0
- gwexpy-0.1.1/gwexpy/table/io/omega.py +21 -0
- gwexpy-0.1.1/gwexpy/table/io/omicron.py +13 -0
- gwexpy-0.1.1/gwexpy/table/io/pycbc.py +47 -0
- gwexpy-0.1.1/gwexpy/table/io/root.py +27 -0
- gwexpy-0.1.1/gwexpy/table/io/snax.py +25 -0
- gwexpy-0.1.1/gwexpy/table/io/sql.py +17 -0
- gwexpy-0.1.1/gwexpy/table/io/utils.py +21 -0
- gwexpy-0.1.1/gwexpy/table/segment_cell.py +117 -0
- gwexpy-0.1.1/gwexpy/table/segment_plot.py +551 -0
- gwexpy-0.1.1/gwexpy/table/segment_table.py +1118 -0
- gwexpy-0.1.1/gwexpy/table/table.py +35 -0
- gwexpy-0.1.1/gwexpy/time/__init__.py +21 -0
- gwexpy-0.1.1/gwexpy/time/__main__.py +19 -0
- gwexpy-0.1.1/gwexpy/time/_tconvert.py +29 -0
- gwexpy-0.1.1/gwexpy/time/core.py +185 -0
- gwexpy-0.1.1/gwexpy/timeseries/__init__.py +57 -0
- gwexpy-0.1.1/gwexpy/timeseries/_analysis.py +411 -0
- gwexpy-0.1.1/gwexpy/timeseries/_core.py +100 -0
- gwexpy-0.1.1/gwexpy/timeseries/_gwf_io.py +243 -0
- gwexpy-0.1.1/gwexpy/timeseries/_interop.py +1191 -0
- gwexpy-0.1.1/gwexpy/timeseries/_resampling.py +822 -0
- gwexpy-0.1.1/gwexpy/timeseries/_signal.py +1573 -0
- gwexpy-0.1.1/gwexpy/timeseries/_spectral.py +23 -0
- gwexpy-0.1.1/gwexpy/timeseries/_spectral_fourier.py +580 -0
- gwexpy-0.1.1/gwexpy/timeseries/_spectral_special.py +1672 -0
- gwexpy-0.1.1/gwexpy/timeseries/_statistics.py +732 -0
- gwexpy-0.1.1/gwexpy/timeseries/_timeseries_legacy.py +41 -0
- gwexpy-0.1.1/gwexpy/timeseries/_typing.py +69 -0
- gwexpy-0.1.1/gwexpy/timeseries/arima.py +473 -0
- gwexpy-0.1.1/gwexpy/timeseries/collections.py +1981 -0
- gwexpy-0.1.1/gwexpy/timeseries/core.py +41 -0
- gwexpy-0.1.1/gwexpy/timeseries/decomposition.py +708 -0
- gwexpy-0.1.1/gwexpy/timeseries/hurst.py +362 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/__init__.py +31 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/_registration.py +290 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/ascii.py +13 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/ats.py +337 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/audio.py +267 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/cache.py +11 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/core.py +13 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/csv_config.py +133 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/csv_enhanced.py +463 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/dttxml.py +133 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/gbd.py +441 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/gwf/__init__.py +51 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/gwf/framecpp.py +11 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/gwf/framel.py +25 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/gwf/lalframe.py +11 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/hdf5.py +45 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/losc.py +11 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/nds2.py +29 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/ndscope_hdf5.py +274 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/netcdf4_.py +409 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/sdb.py +175 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/seismic.py +270 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/stubs.py +32 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/tdms.py +160 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/wav.py +149 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/win.py +244 -0
- gwexpy-0.1.1/gwexpy/timeseries/io/zarr_.py +256 -0
- gwexpy-0.1.1/gwexpy/timeseries/matrix.py +360 -0
- gwexpy-0.1.1/gwexpy/timeseries/matrix_analysis.py +919 -0
- gwexpy-0.1.1/gwexpy/timeseries/matrix_core.py +495 -0
- gwexpy-0.1.1/gwexpy/timeseries/matrix_interop.py +50 -0
- gwexpy-0.1.1/gwexpy/timeseries/matrix_spectral.py +415 -0
- gwexpy-0.1.1/gwexpy/timeseries/pipeline.py +617 -0
- gwexpy-0.1.1/gwexpy/timeseries/preprocess.py +1437 -0
- gwexpy-0.1.1/gwexpy/timeseries/rolling.py +362 -0
- gwexpy-0.1.1/gwexpy/timeseries/spectral.py +319 -0
- gwexpy-0.1.1/gwexpy/timeseries/statevector.py +8 -0
- gwexpy-0.1.1/gwexpy/timeseries/timeseries.py +431 -0
- gwexpy-0.1.1/gwexpy/timeseries/utils.py +371 -0
- gwexpy-0.1.1/gwexpy/types/__init__.py +75 -0
- gwexpy-0.1.1/gwexpy/types/_stats.py +269 -0
- gwexpy-0.1.1/gwexpy/types/array.py +82 -0
- gwexpy-0.1.1/gwexpy/types/array2d.py +137 -0
- gwexpy-0.1.1/gwexpy/types/array3d.py +315 -0
- gwexpy-0.1.1/gwexpy/types/array4d.py +444 -0
- gwexpy-0.1.1/gwexpy/types/axis.py +125 -0
- gwexpy-0.1.1/gwexpy/types/axis_api.py +261 -0
- gwexpy-0.1.1/gwexpy/types/hht_spectrogram.py +130 -0
- gwexpy-0.1.1/gwexpy/types/index.py +13 -0
- gwexpy-0.1.1/gwexpy/types/io/__init__.py +13 -0
- gwexpy-0.1.1/gwexpy/types/io/ascii.py +25 -0
- gwexpy-0.1.1/gwexpy/types/io/hdf5.py +45 -0
- gwexpy-0.1.1/gwexpy/types/io/ligolw.py +17 -0
- gwexpy-0.1.1/gwexpy/types/metadata.py +939 -0
- gwexpy-0.1.1/gwexpy/types/mixin/__init__.py +27 -0
- gwexpy-0.1.1/gwexpy/types/mixin/_collection_mixin.py +156 -0
- gwexpy-0.1.1/gwexpy/types/mixin/_plot_mixin.py +19 -0
- gwexpy-0.1.1/gwexpy/types/mixin/_protocols.py +228 -0
- gwexpy-0.1.1/gwexpy/types/mixin/mixin_legacy.py +90 -0
- gwexpy-0.1.1/gwexpy/types/mixin/signal_interop.py +326 -0
- gwexpy-0.1.1/gwexpy/types/plane2d.py +86 -0
- gwexpy-0.1.1/gwexpy/types/series.py +17 -0
- gwexpy-0.1.1/gwexpy/types/series_creator.py +156 -0
- gwexpy-0.1.1/gwexpy/types/series_matrix_analysis.py +389 -0
- gwexpy-0.1.1/gwexpy/types/series_matrix_core.py +328 -0
- gwexpy-0.1.1/gwexpy/types/series_matrix_indexing.py +275 -0
- gwexpy-0.1.1/gwexpy/types/series_matrix_io.py +387 -0
- gwexpy-0.1.1/gwexpy/types/series_matrix_math.py +566 -0
- gwexpy-0.1.1/gwexpy/types/series_matrix_structure.py +222 -0
- gwexpy-0.1.1/gwexpy/types/series_matrix_validation_mixin.py +186 -0
- gwexpy-0.1.1/gwexpy/types/series_matrix_visualization.py +14 -0
- gwexpy-0.1.1/gwexpy/types/seriesmatrix.py +29 -0
- gwexpy-0.1.1/gwexpy/types/seriesmatrix_base.py +608 -0
- gwexpy-0.1.1/gwexpy/types/seriesmatrix_validation.py +943 -0
- gwexpy-0.1.1/gwexpy/types/sliceutils.py +17 -0
- gwexpy-0.1.1/gwexpy/types/time_plane_transform.py +410 -0
- gwexpy-0.1.1/gwexpy/types/typing.py +190 -0
- gwexpy-0.1.1/gwexpy/utils/__init__.py +9 -0
- gwexpy-0.1.1/gwexpy/utils/decorators.py +17 -0
- gwexpy-0.1.1/gwexpy/utils/enum.py +11 -0
- gwexpy-0.1.1/gwexpy/utils/env.py +11 -0
- gwexpy-0.1.1/gwexpy/utils/fft_args.py +332 -0
- gwexpy-0.1.1/gwexpy/utils/lal.py +39 -0
- gwexpy-0.1.1/gwexpy/utils/logger.py +18 -0
- gwexpy-0.1.1/gwexpy/utils/misc.py +11 -0
- gwexpy-0.1.1/gwexpy/utils/mp.py +13 -0
- gwexpy-0.1.1/gwexpy/utils/progress.py +13 -0
- gwexpy-0.1.1/gwexpy/utils/shell.py +19 -0
- gwexpy-0.1.1/gwexpy/utils/units.py +191 -0
- gwexpy-0.1.1/gwexpy.egg-info/PKG-INFO +203 -0
- gwexpy-0.1.1/gwexpy.egg-info/SOURCES.txt +369 -0
- gwexpy-0.1.1/gwexpy.egg-info/dependency_links.txt +1 -0
- gwexpy-0.1.1/gwexpy.egg-info/entry_points.txt +2 -0
- gwexpy-0.1.1/gwexpy.egg-info/requires.txt +112 -0
- gwexpy-0.1.1/gwexpy.egg-info/top_level.txt +1 -0
- gwexpy-0.1.1/pyproject.toml +424 -0
- gwexpy-0.1.1/setup.cfg +4 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [Unreleased]
|
|
4
|
+
|
|
5
|
+
### Packaging & Optional Dependencies (issue #251)
|
|
6
|
+
|
|
7
|
+
- **packaging**: Added `netcdf4` extra (`netCDF4`, `xarray`) and `zarr` extra (`zarr`) to `pyproject.toml`; both are now included in the `all` convenience extra.
|
|
8
|
+
- **packaging**: Removed the experimental `gwexpy.gui` package, console script, and `gui` extra from the first PyPI distribution; GUI work remains source/development-only until the post-release stabilization track is complete.
|
|
9
|
+
- **packaging**: Tightened first-release artifact hygiene by excluding top-level tests, docs sample data, and package-internal Sphinx helper shims from built distributions.
|
|
10
|
+
- **packaging**: Removed hand-edited tail from `requirements-dev.txt`; `analysis` extras are now managed exclusively through `pyproject.toml`.
|
|
11
|
+
- **interop**: Fixed `_optional.py` `_EXTRA_MAP` — phantom extras (`interop`, `bio`, `stats`, `eda`) replaced with `None` entries that fall back to bare `pip install <package>`; `netCDF4`/`xarray` now point to `netcdf4` extra; `zarr` points to `zarr` extra.
|
|
12
|
+
- **io**: `ensure_dependency()` error hint corrected to `pip install 'gwexpy[<extra>]'` instead of `pip install <pkg>[<extra>]`.
|
|
13
|
+
- **io**: `_import_pydub`, `_import_obspy`, `_import_nptdms`, `_import_zarr`, `_import_xarray` error messages now include `pip install 'gwexpy[<extra>]'` hints.
|
|
14
|
+
- **fitting**: `gwexpy.fitting.__getattr__` error messages now suggest `pip install 'gwexpy[fitting]'`.
|
|
15
|
+
- **ci**: `io-optional` gate extended with `test_seismic_public_io.py`; `test_optional_deps.py` augmented with `gwexpy[extra]` hint assertions and `TestSeismicImportGuard`.
|
|
16
|
+
- **docs**: Installation guide updated with `netcdf4`, `zarr` extras and clarified `gui` is not in `all`.
|
|
17
|
+
|
|
18
|
+
### Infrastructure & CI
|
|
19
|
+
|
|
20
|
+
- **ci**: Comprehensive stabilization of the CI pipeline, resolving all `ModuleNotFoundError` and `SyntaxError` regressions.
|
|
21
|
+
- **ci**: Added mandatory **Notebook syntax validation** to the primary test workflow to proactively catch corrupted `.ipynb` files.
|
|
22
|
+
- **ci**: Restored and standardized scientific dependencies (`control`, `statsmodels`, `scikit-learn`, etc.) across all GitHub Actions environments.
|
|
23
|
+
- **docs**: Performed a global "reset-and-rewrap" of tutorial notebooks to fix indentation errors in `warnings.catch_warnings()` blocks.
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- **fields**: `VectorField` and `TensorField` now support initialization directly from NumPy ndarrays (5D for VectorField, 6D for TensorField), automatically creating the component `ScalarField`s without breaking backward-compatible dictionary initialization.
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
|
|
31
|
+
- **fields**: `ScalarField` binary arithmetic now fails fast with `ValueError` when operands have mismatched time/frequency domains, spatial domains, or coordinate grids. Align fields explicitly before arithmetic; future regridding/interpolation APIs will track explicit grid-alignment workflows.
|
|
32
|
+
- **plot**: `FieldPlot` labels now avoid empty unit brackets for unitless metadata and expose the latest scalar colorbar via the public `last_field_colorbar` attribute. Explicit `label=""` colorbar labels remain supported.
|
|
33
|
+
|
|
34
|
+
### Documentation
|
|
35
|
+
|
|
36
|
+
- **docs**: Unified the Class Index into five major categories (Core, Field, Signal, Analysis, Utilities) with standardized Japanese translations (e.g., "時系列行列" for `TimeSeriesMatrix`).
|
|
37
|
+
- **docs**: Redesigned major guidance pages (`io_formats`, `numerical_stability`, `time_utilities`, `architecture`) using judgment tables and decision-driven structures.
|
|
38
|
+
- **docs**: Refined visual aesthetics with custom CSS for modern typography, responsive tables, and card-based navigation in the Sphinx RTD theme.
|
|
39
|
+
- **docs**: Integrated SEO/OGP metadata, sitemaps, and automated "Last updated" timestamps.
|
|
40
|
+
|
|
41
|
+
### Infrastructure
|
|
42
|
+
|
|
43
|
+
- **ci**: Implemented a weekly documentation health check (`docs-weekly-health.yml`) to monitor broken links, terminology consistency, and JA/EN synchronization.
|
|
44
|
+
- **ci**: Standardized notebook testing pipeline with `papermill` for full execution (Light) and `nbval` for syntax validation (Heavy).
|
|
45
|
+
- **ci**: Integrated `nbstripout` into pre-commit hooks to manage repository size and diff clarity.
|
|
46
|
+
- **pre-commit**: Added a GitHub Actions PR template with automated quality gate checklist.
|
|
47
|
+
|
|
48
|
+
## [0.1.1] - 2026-04-28
|
|
49
|
+
|
|
50
|
+
### Added
|
|
51
|
+
|
|
52
|
+
- **SegmentTable**: New factory methods `read()` and `read_csv()` for initializing from external files.
|
|
53
|
+
- **SegmentTable**: Support for the iterable protocol (`__iter__`) and `RowProxy` for direct row-wise processing.
|
|
54
|
+
- **Tutorials**: Comprehensive new notebooks for `SegmentTable`, `Noise Generation`, and `Spectral Fitting`.
|
|
55
|
+
- **Infrastructure**: Automated tutorial execution testing via `pytest --nbmake` and GitHub Actions.
|
|
56
|
+
- **analysis/coupling**: `CouplingFunctionAnalysis` — `from_time_windows()`, `from_time_windows_batch()`, `bkg_window` パラメータ追加 (Phase 1).
|
|
57
|
+
- **analysis/coupling_result**: `CouplingResult` — `to_csv()`, `from_csv()`, `to_txt()`, `from_txt()`, `to_summary_csv()` によるファイルエクスポート (Phase 2).
|
|
58
|
+
- **analysis/coupling_result**: `CouplingResult` — `plot_significance()`, `plot_asdgram()`, `plot_snrgram()` 可視化メソッド追加 (Phase 3).
|
|
59
|
+
- **analysis/coupling_result**: `CouplingResultCollection` — 複数結果の集約コンテナ (Phase 2).
|
|
60
|
+
- **analysis/stats**: `SpectralStats` — スペクトル統計コンテナ(`spectral_stats()` より取得) (Phase 2).
|
|
61
|
+
- **analysis/response**: `ResponseFunctionResult` — `plot_projection_summary()`, `plot_response_matrix()` 可視化メソッド追加 (Phase 3).
|
|
62
|
+
- **analysis**: `ResponseFunctionResult`, `ResponseFunctionAnalysis`, `estimate_response_function`, `detect_step_segments` を `gwexpy.analysis` から公開 (Phase 4).
|
|
63
|
+
- **docs**: Sphinx API リファレンスに `coupling_result`, `response`, `threshold`, `stats` モジュール追加 (Phase 4).
|
|
64
|
+
- **tutorials**: `case_coupling_analysis.ipynb` / `case_response_analysis.ipynb` に Phase 1–3 の利用例を追補 (Phase 4).
|
|
65
|
+
|
|
66
|
+
### Changed
|
|
67
|
+
|
|
68
|
+
- **SegmentTable**: `add_series_column()` now accepts a simple `loader(segment)` callable for intuitive lazy loading.
|
|
69
|
+
- **noise/peaks**: Renamed `lorentzian_line()` parameter `fwhm` to `gamma` for consistency with implementation.
|
|
70
|
+
|
|
71
|
+
### Fixed
|
|
72
|
+
|
|
73
|
+
- **fitting/highlevel**: Resolved frequency bin alignment between PSD and covariance matrix in `fit_bootstrap_spectrum`.
|
|
74
|
+
- **fitting/highlevel**: Removed unsupported `stride` parameter from `fit_bootstrap_spectrum`.
|
|
75
|
+
- **table/segment_plot**: Fixed `TypeError` when an existing `Axes` object is provided to `segments()`.
|
|
76
|
+
|
|
77
|
+
### Previously Unreleased (merged into 0.1.1)
|
|
78
|
+
|
|
79
|
+
- **interop/multitaper**: `from_mtspec` / `from_mtspec_array` が `cls` パラメータを
|
|
80
|
+
無視して CI 付き入力でも常に `FrequencySeriesDict` を返していた問題を修正。
|
|
81
|
+
- **interop/meshio**: `cell_data` のみを持つ `meshio.Mesh` を `from_meshio` に渡した場合の
|
|
82
|
+
誤った補間経路を廃止し、明確な `ValueError` を送出。
|
|
83
|
+
- **interop/pyroomacoustics**: `room.rir` のインデックス順序(マイク ↔ ソース)を修正。
|
|
84
|
+
- **interop/openems**: HDF5 データセットの `"Time"` / `"frequency"` 属性の優先使用を修正。
|
|
85
|
+
|
|
86
|
+
## [0.1.0] - 2026-03-15
|
|
87
|
+
|
|
88
|
+
### Release Summary
|
|
89
|
+
|
|
90
|
+
First stable release of GWexpy for SoftwareX publication. This release focuses on API stability, GWpy compatibility, and reproducible commissioning workflows.
|
|
91
|
+
|
|
92
|
+
### Changed
|
|
93
|
+
|
|
94
|
+
- **Version**: Updated from `0.1.0b2` to `0.1.0` (stable release)
|
|
95
|
+
- **GWpy API UX Compatibility**: Aligned key spectral API call conventions with GWpy 4.x usage patterns.
|
|
96
|
+
- `TimeSeries.transfer_function` now accepts GWpy-style positional calls:
|
|
97
|
+
- `transfer_function(other, fftlength, overlap, window, average, ...)`
|
|
98
|
+
- `TimeSeriesDict` / `TimeSeriesList` now accept positional spectral args for:
|
|
99
|
+
- `csd`, `coherence`, `csd_matrix`, `coherence_matrix`
|
|
100
|
+
- positional `(fftlength, overlap)` is supported in addition to keyword usage
|
|
101
|
+
- Mixed positional+keyword specification of `fftlength`/`overlap` now raises clear `TypeError`.
|
|
102
|
+
- **Authors**: Removed email from `pyproject.toml` to prevent spam (contact via GitHub Issues or paper)
|
|
103
|
+
|
|
104
|
+
### Added
|
|
105
|
+
|
|
106
|
+
- **Compatibility policy doc**:
|
|
107
|
+
- `docs/developers/compatibility/gwpy/API_UX_POLICY_20260303.md`
|
|
108
|
+
- **GWpy compatibility tests**:
|
|
109
|
+
- `tests/timeseries/test_transfer_function_compat.py`
|
|
110
|
+
- `tests/timeseries/test_collections_spectral_compat.py`
|
|
111
|
+
- `tests/timeseries/test_fft_param_compat.py`
|
|
112
|
+
- Includes edge-case checks for positional/keyword conflicts and invalid numeric `other` in collection APIs.
|
|
113
|
+
- **CI workflow for compatibility gate**:
|
|
114
|
+
- `.github/workflows/test-compat-gwpy.yml`
|
|
115
|
+
- Runs focused GWpy-compat tests plus `tests/timeseries`, with pinned `numpy<2.0` and `astropy<7.0`.
|
|
116
|
+
- **Publication materials**:
|
|
117
|
+
- Paper source: `docs/gwexpy-paper/main.tex`
|
|
118
|
+
- Publication preparation plan: `docs/developers/plans/for_paper_publication.md`
|
|
119
|
+
|
|
120
|
+
## [0.1.0b2] - 2026-02-23
|
|
121
|
+
|
|
122
|
+
### Changed
|
|
123
|
+
|
|
124
|
+
- **API Unification**: Standardized all spectral analysis function signatures to use time-based parameters (`fftlength`/`overlap` in seconds) instead of sample-count-based parameters (`nperseg`/`noverlap`). This aligns gwexpy with GWpy conventions and improves user experience.
|
|
125
|
+
- **Affected Functions**:
|
|
126
|
+
- `gwexpy.spectral.bootstrap_spectrogram()` - now accepts `fftlength` and `overlap` (seconds)
|
|
127
|
+
- `gwexpy.fitting.fit_bootstrap_spectrum()` - now accepts `fftlength` and `overlap` (seconds)
|
|
128
|
+
- `gwexpy.spectrogram.Spectrogram.bootstrap()` and `.bootstrap_asd()` - now accept `fftlength` and `overlap` (seconds)
|
|
129
|
+
- `gwexpy.fields.signal.*` spectral functions (spectral_density, compute_psd, freq_space_map, coherence_map) - now accept `fftlength` and `overlap` (seconds)
|
|
130
|
+
- `gwexpy.timeseries.TimeSeriesMatrix` spectral methods (\_vectorized_psd, \_vectorized_csd, \_vectorized_coherence) - now accept `fftlength` and `overlap` (seconds)
|
|
131
|
+
- **Migration Note**: Using deprecated `nperseg` or `noverlap` parameters will raise `TypeError` with guidance to use `fftlength` and `overlap` instead. No deprecation period - breaking change applies immediately.
|
|
132
|
+
- **New Module**: `gwexpy.utils.fft_args` provides helper functions for parameter validation and conversion:
|
|
133
|
+
- `parse_fftlength_or_overlap()` - converts time values (float, int, Quantity) to seconds and samples
|
|
134
|
+
- `check_deprecated_kwargs()` - detects and rejects deprecated parameters
|
|
135
|
+
- `get_default_overlap()` - returns window-appropriate default overlap values (GWpy-compatible)
|
|
136
|
+
- **GWpy Compatibility**: All functions now follow GWpy conventions for time-based FFT parameters, improving interoperability and reducing API confusion.
|
|
137
|
+
|
|
138
|
+
### Improved
|
|
139
|
+
|
|
140
|
+
- **Numerical Stability**: Implemented a comprehensive numerical hardening strategy for low-amplitude gravitational-wave data (O(1e-21)).
|
|
141
|
+
- **Adaptive Whitening**: `whiten()` now uses an adaptive `eps` relative to input variance, preventing signal destruction in quiet channels.
|
|
142
|
+
- **Robust ICA**: `ica_fit()` includes internal standardization and relative tolerances to handle high-dynamic-range data.
|
|
143
|
+
- **Safe Logging**: Visualization tools now use dynamic floor calculation to prevent `-inf` or clipped values in dB plots.
|
|
144
|
+
- **Machine Precision**: Numerical constants now adapt to float32/float64 machine precision.
|
|
145
|
+
|
|
146
|
+
### Fixed
|
|
147
|
+
|
|
148
|
+
- **GBD**: Apply amplifier range scaling when reading Graphtec `.gbd` so analog channels are correctly converted from raw counts to volts, and treat `Alarm`/`AlarmOut`/`Pulse*`/`Logic*` as digital status channels (0/1, dimensionless). Digital channel mapping can be overridden via `digital_channels=...`.
|
|
149
|
+
|
|
150
|
+
## [0.1.0b1] - 2026-02-01
|
|
151
|
+
|
|
152
|
+
### Initial Public Release
|
|
153
|
+
|
|
154
|
+
- This is the first public beta release of `gwexpy`. All previous development history (up to internal version 0.4.0) is consolidated here.
|
|
155
|
+
|
|
156
|
+
### Important Notes
|
|
157
|
+
|
|
158
|
+
- **gwpy Compatibility**: This release is compatible with `gwpy>=3.0.0,<4.0.0`. gwpy 4.0.0 introduced breaking API changes that are not yet supported. Users should ensure they have gwpy 3.x installed.
|
|
159
|
+
|
|
160
|
+
### Refactored
|
|
161
|
+
|
|
162
|
+
- **Exception Handling**: Eliminated broad `except Exception` patterns in NDS, GUI, and IO modules. Replaced with specific exception types (`OSError`, `ValueError`, `KeyError`, etc.) for more predictable error handling and better debugging.
|
|
163
|
+
- **GUI Architecture**: Improved separation of concerns between UI and core logic layers in GUI components.
|
|
164
|
+
|
|
165
|
+
### Added
|
|
166
|
+
|
|
167
|
+
- **Core Data Structures**:
|
|
168
|
+
- `TimeSeries`, `FrequencySeries`, `Spectrogram` classes with metadata management.
|
|
169
|
+
- `TimeSeriesMatrix`, `FrequencySeriesMatrix`, `SpectrogramMatrix` for multi-channel data handling.
|
|
170
|
+
- `ScalarField`, `VectorField`, `TensorField` for 4D experimental domain semantics.
|
|
171
|
+
- **Numerical Semantics**:
|
|
172
|
+
- Strict unit propagation for calculus methods.
|
|
173
|
+
- Fixed DC component handling in integration to prevent singularities.
|
|
174
|
+
- **Advanced Signal Processing**:
|
|
175
|
+
- functional Short-Time Laplace Transform (`stlt`).
|
|
176
|
+
- High-performance resampling with various aggregation methods.
|
|
177
|
+
- Whitening and standardization models.
|
|
178
|
+
- **Interoperability**:
|
|
179
|
+
- Support for various file formats: TDMS, GBD, WIN, ATS, SDB/SQLite, WAV.
|
|
180
|
+
- Integration with ML frameworks (Torch/TensorFlow) and ROOT (CERN).
|
|
181
|
+
- MTH5 support for magnetotelluric data.
|
|
182
|
+
- **Fitting & Statistics**:
|
|
183
|
+
- Comprehensive `fitting` module with `iminuit` and `emcee` (MCMC) support.
|
|
184
|
+
- Statistical aggregation and interpolation for matrix structures.
|
|
185
|
+
- **GUI**:
|
|
186
|
+
- Interactive GUI for real-time streaming data visualization and analysis.
|
|
187
|
+
|
|
188
|
+
### Improved
|
|
189
|
+
|
|
190
|
+
- **Type Safety**: Comprehensive type annotation expansion across the codebase:
|
|
191
|
+
- Added strict type hints to GUI (UI layer, NDS modules, streaming, engine).
|
|
192
|
+
- Enhanced `TimeSeriesMatrix` mixin with Protocol-based type-safe `super()` calls.
|
|
193
|
+
- Introduced `TypedDict` definitions for structured data in IO and GUI modules.
|
|
194
|
+
- Expanded MyPy coverage to include `gui/nds/` and `gui/ui/` directories.
|
|
195
|
+
- **CI Stability**:
|
|
196
|
+
- Replaced deprecated `qtbot.waitForWindowShown()` with `qtbot.waitExposed()` in GUI tests.
|
|
197
|
+
- Added warning filters to suppress third-party deprecation warnings (NumPy, pandas) in test configuration.
|
|
198
|
+
- Refined MyPy exclude patterns for better coverage-exclusion balance.
|
|
199
|
+
- Optimized ROOT/NumPy vectorization.
|
|
200
|
+
- Refactored `noise` module for better maintenance.
|
|
201
|
+
|
|
202
|
+
### Fixed
|
|
203
|
+
|
|
204
|
+
- **GUI Tests**: Resolved flaky test issues related to window visibility timing.
|
|
205
|
+
- **Type Errors**: Fixed various MyPy errors including uninitialized attributes and missing return type annotations.
|
|
206
|
+
- Fixed unit propagation in complex matrix operations.
|
|
207
|
+
- Corrected IFFT amplitude scaling for one-sided spectra.
|
|
208
|
+
|
|
209
|
+
[Unreleased]: https://github.com/tatsuki-washimi/gwexpy/compare/v0.1.0b2...HEAD
|
|
210
|
+
[0.1.0b2]: https://github.com/tatsuki-washimi/gwexpy/compare/v0.1.0b1...v0.1.0b2
|
|
211
|
+
[0.1.0b1]: https://github.com/tatsuki-washimi/gwexpy/releases/tag/v0.1.0b1
|
gwexpy-0.1.1/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Tatsuki Washimi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
gwexpy-0.1.1/MANIFEST.in
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
include CHANGELOG.md
|
|
2
|
+
include LICENSE.txt
|
|
3
|
+
include README.md
|
|
4
|
+
include pyproject.toml
|
|
5
|
+
prune docs/_static/samples
|
|
6
|
+
prune gwexpy/gui
|
|
7
|
+
prune gwexpy/utils/sphinx
|
|
8
|
+
prune gwexpy/*/tests
|
|
9
|
+
prune tests
|
|
10
|
+
recursive-exclude gwexpy *.md
|
|
11
|
+
prune .agent
|
|
12
|
+
prune .harness
|
|
13
|
+
prune docs_internal
|
|
14
|
+
prune scratch
|
|
15
|
+
prune temp_logs
|
|
16
|
+
prune tmp
|
|
17
|
+
global-exclude __pycache__ *.py[cod]
|
gwexpy-0.1.1/PKG-INFO
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: gwexpy
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: A comprehensive Python package for Gravitational Wave experimental data analysis, extending GWpy with strict unit handling and advanced spectral methods.
|
|
5
|
+
Author: Tatsuki Washimi
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/tatsuki-washimi/gwexpy
|
|
8
|
+
Project-URL: Repository, https://github.com/tatsuki-washimi/gwexpy
|
|
9
|
+
Project-URL: Documentation, https://tatsuki-washimi.github.io/gwexpy/
|
|
10
|
+
Project-URL: Changelog, https://github.com/tatsuki-washimi/gwexpy/blob/main/CHANGELOG.md
|
|
11
|
+
Keywords: gravitational-waves,gwpy,signal-processing,time-series,spectral-analysis,physics,astronomy
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
19
|
+
Classifier: Topic :: Scientific/Engineering :: Astronomy
|
|
20
|
+
Classifier: Typing :: Typed
|
|
21
|
+
Requires-Python: >=3.11
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE.txt
|
|
24
|
+
Requires-Dist: numpy<2.0.0,>=1.23.2
|
|
25
|
+
Requires-Dist: scipy>=1.10.0
|
|
26
|
+
Requires-Dist: astropy>=5.0
|
|
27
|
+
Requires-Dist: gwpy<5.0.0,>=4.0.0
|
|
28
|
+
Requires-Dist: pandas>=1.5.0
|
|
29
|
+
Requires-Dist: matplotlib>=3.5.0
|
|
30
|
+
Requires-Dist: typing_extensions
|
|
31
|
+
Requires-Dist: bottleneck
|
|
32
|
+
Requires-Dist: h5py
|
|
33
|
+
Requires-Dist: igwn-segments
|
|
34
|
+
Requires-Dist: ligotimegps
|
|
35
|
+
Requires-Dist: gpstime
|
|
36
|
+
Provides-Extra: analysis
|
|
37
|
+
Requires-Dist: scikit-learn; extra == "analysis"
|
|
38
|
+
Requires-Dist: statsmodels; extra == "analysis"
|
|
39
|
+
Requires-Dist: pmdarima; extra == "analysis"
|
|
40
|
+
Requires-Dist: dcor; extra == "analysis"
|
|
41
|
+
Requires-Dist: hurst; extra == "analysis"
|
|
42
|
+
Requires-Dist: hurst-exponent; extra == "analysis"
|
|
43
|
+
Requires-Dist: exp-hurst; extra == "analysis"
|
|
44
|
+
Requires-Dist: EMD-signal; extra == "analysis"
|
|
45
|
+
Requires-Dist: PyWavelets; extra == "analysis"
|
|
46
|
+
Provides-Extra: fitting
|
|
47
|
+
Requires-Dist: iminuit; extra == "fitting"
|
|
48
|
+
Requires-Dist: emcee; extra == "fitting"
|
|
49
|
+
Requires-Dist: corner; extra == "fitting"
|
|
50
|
+
Provides-Extra: control
|
|
51
|
+
Requires-Dist: control; extra == "control"
|
|
52
|
+
Provides-Extra: seismic
|
|
53
|
+
Requires-Dist: obspy; extra == "seismic"
|
|
54
|
+
Requires-Dist: mth5; extra == "seismic"
|
|
55
|
+
Requires-Dist: mtpy; extra == "seismic"
|
|
56
|
+
Requires-Dist: mt_metadata; extra == "seismic"
|
|
57
|
+
Provides-Extra: gw
|
|
58
|
+
Requires-Dist: lalsuite; extra == "gw"
|
|
59
|
+
Requires-Dist: gwdatafind; extra == "gw"
|
|
60
|
+
Requires-Dist: gwosc; extra == "gw"
|
|
61
|
+
Requires-Dist: dqsegdb2; extra == "gw"
|
|
62
|
+
Requires-Dist: dttxml; extra == "gw"
|
|
63
|
+
Requires-Dist: gwinc; extra == "gw"
|
|
64
|
+
Requires-Dist: ligo.skymap; extra == "gw"
|
|
65
|
+
Provides-Extra: io
|
|
66
|
+
Requires-Dist: nptdms; extra == "io"
|
|
67
|
+
Provides-Extra: netcdf4
|
|
68
|
+
Requires-Dist: netCDF4; extra == "netcdf4"
|
|
69
|
+
Requires-Dist: xarray; extra == "netcdf4"
|
|
70
|
+
Provides-Extra: zarr
|
|
71
|
+
Requires-Dist: zarr; extra == "zarr"
|
|
72
|
+
Provides-Extra: plotting
|
|
73
|
+
Requires-Dist: pygmt; extra == "plotting"
|
|
74
|
+
Provides-Extra: audio
|
|
75
|
+
Requires-Dist: pydub; extra == "audio"
|
|
76
|
+
Requires-Dist: tinytag>=1.10; extra == "audio"
|
|
77
|
+
Provides-Extra: dev
|
|
78
|
+
Requires-Dist: build; extra == "dev"
|
|
79
|
+
Requires-Dist: ruff; extra == "dev"
|
|
80
|
+
Requires-Dist: mypy; extra == "dev"
|
|
81
|
+
Requires-Dist: pytest; extra == "dev"
|
|
82
|
+
Requires-Dist: pytest-qt; extra == "dev"
|
|
83
|
+
Requires-Dist: pytest-xvfb; extra == "dev"
|
|
84
|
+
Requires-Dist: pytest-forked; extra == "dev"
|
|
85
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
86
|
+
Requires-Dist: nbmake; extra == "dev"
|
|
87
|
+
Requires-Dist: nbval; extra == "dev"
|
|
88
|
+
Requires-Dist: freezegun; extra == "dev"
|
|
89
|
+
Requires-Dist: requests-mock; extra == "dev"
|
|
90
|
+
Requires-Dist: types-requests; extra == "dev"
|
|
91
|
+
Requires-Dist: types-PyYAML; extra == "dev"
|
|
92
|
+
Provides-Extra: all
|
|
93
|
+
Requires-Dist: scikit-learn; extra == "all"
|
|
94
|
+
Requires-Dist: statsmodels; extra == "all"
|
|
95
|
+
Requires-Dist: pmdarima; extra == "all"
|
|
96
|
+
Requires-Dist: dcor; extra == "all"
|
|
97
|
+
Requires-Dist: hurst; extra == "all"
|
|
98
|
+
Requires-Dist: hurst-exponent; extra == "all"
|
|
99
|
+
Requires-Dist: exp-hurst; extra == "all"
|
|
100
|
+
Requires-Dist: EMD-signal; extra == "all"
|
|
101
|
+
Requires-Dist: PyWavelets; extra == "all"
|
|
102
|
+
Requires-Dist: iminuit; extra == "all"
|
|
103
|
+
Requires-Dist: emcee; extra == "all"
|
|
104
|
+
Requires-Dist: corner; extra == "all"
|
|
105
|
+
Requires-Dist: control; extra == "all"
|
|
106
|
+
Requires-Dist: obspy; extra == "all"
|
|
107
|
+
Requires-Dist: mth5; extra == "all"
|
|
108
|
+
Requires-Dist: mtpy; extra == "all"
|
|
109
|
+
Requires-Dist: mt_metadata; extra == "all"
|
|
110
|
+
Requires-Dist: lalsuite; extra == "all"
|
|
111
|
+
Requires-Dist: gwdatafind; extra == "all"
|
|
112
|
+
Requires-Dist: gwosc; extra == "all"
|
|
113
|
+
Requires-Dist: dqsegdb2; extra == "all"
|
|
114
|
+
Requires-Dist: dttxml; extra == "all"
|
|
115
|
+
Requires-Dist: gwinc; extra == "all"
|
|
116
|
+
Requires-Dist: ligo.skymap; extra == "all"
|
|
117
|
+
Requires-Dist: nptdms; extra == "all"
|
|
118
|
+
Requires-Dist: netCDF4; extra == "all"
|
|
119
|
+
Requires-Dist: xarray; extra == "all"
|
|
120
|
+
Requires-Dist: zarr; extra == "all"
|
|
121
|
+
Requires-Dist: pygmt; extra == "all"
|
|
122
|
+
Requires-Dist: pydub; extra == "all"
|
|
123
|
+
Requires-Dist: tinytag>=1.10; extra == "all"
|
|
124
|
+
Dynamic: license-file
|
|
125
|
+
|
|
126
|
+
<p align="center">
|
|
127
|
+
<a href="https://tatsuki-washimi.github.io/gwexpy/docs/web/en/">
|
|
128
|
+
<img src="docs/_static/branding/logo.svg" alt="gwexpy logo" width="280">
|
|
129
|
+
</a>
|
|
130
|
+
</p>
|
|
131
|
+
|
|
132
|
+
# gwexpy: GWpy Expansions for Experiments
|
|
133
|
+
|
|
134
|
+
[](https://github.com/tatsuki-washimi/gwexpy/actions/workflows/pr-fast.yml)
|
|
135
|
+
[](https://codecov.io/gh/tatsuki-washimi/gwexpy)
|
|
136
|
+
[](https://tatsuki-washimi.github.io/gwexpy/)
|
|
137
|
+
[](https://opensource.org/licenses/MIT)
|
|
138
|
+
[](https://www.python.org/downloads/)
|
|
139
|
+
|
|
140
|
+
**gwexpy** is an extension library for [GWpy](https://gwpy.github.io/) for experimental physics and gravitational-wave data analysis. It adds matrix-aware containers, field operations, fitting workflows, expanded I/O, and interoperability layers while staying close to GWpy-style analysis.
|
|
141
|
+
|
|
142
|
+
## Install
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
git clone https://github.com/tatsuki-washimi/gwexpy.git
|
|
146
|
+
cd gwexpy
|
|
147
|
+
python -m pip install -e .
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
For optional extras, external dependencies, and environment-specific setup, use the official installation guides:
|
|
151
|
+
|
|
152
|
+
- English: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/user_guide/installation.html>
|
|
153
|
+
- 日本語: <https://tatsuki-washimi.github.io/gwexpy/docs/web/ja/user_guide/installation.html>
|
|
154
|
+
|
|
155
|
+
## Documentation
|
|
156
|
+
|
|
157
|
+
The full documentation is maintained in the docs site and is the source of truth for usage details.
|
|
158
|
+
|
|
159
|
+
- Documentation hub: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/>
|
|
160
|
+
- ドキュメントハブ: <https://tatsuki-washimi.github.io/gwexpy/docs/web/ja/>
|
|
161
|
+
- Quick Start: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/user_guide/quickstart.html>
|
|
162
|
+
- Tutorials and case studies: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/user_guide/tutorials/>
|
|
163
|
+
- File formats and I/O: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/user_guide/io_formats.html>
|
|
164
|
+
- API reference: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/reference/>
|
|
165
|
+
- Examples gallery: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/examples/>
|
|
166
|
+
|
|
167
|
+
## Why gwexpy?
|
|
168
|
+
|
|
169
|
+
- **Matrix-native analysis**: `TimeSeriesMatrix`, `FrequencySeriesMatrix`, and `SpectrogramMatrix` support batch processing, transfer functions, and multichannel workflows.
|
|
170
|
+
- **Physics-oriented containers**: `ScalarField`, `VectorField`, and `TensorField` extend analysis beyond simple series into structured field data.
|
|
171
|
+
- **Practical workflows**: fitting, noise hunting, time-frequency analysis, and interoperability are exposed as user-facing workflows rather than isolated utilities.
|
|
172
|
+
- **Broad interoperability and I/O**: gwexpy bridges scientific Python tools and extends format coverage beyond core GWpy workflows.
|
|
173
|
+
|
|
174
|
+
## Quick Start
|
|
175
|
+
|
|
176
|
+
```python
|
|
177
|
+
import numpy as np
|
|
178
|
+
import gwexpy
|
|
179
|
+
from gwexpy.timeseries import TimeSeries, TimeSeriesList
|
|
180
|
+
|
|
181
|
+
gwexpy.register_all()
|
|
182
|
+
|
|
183
|
+
ts1 = TimeSeries(np.arange(8.0), dt=1.0, name="A")
|
|
184
|
+
ts2 = TimeSeries(np.arange(8.0) * 2.0, dt=1.0, name="B")
|
|
185
|
+
matrix = TimeSeriesList([ts1, ts2]).to_matrix()
|
|
186
|
+
asd = matrix.asd(fftlength=2.0)
|
|
187
|
+
print(matrix.shape)
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
For fitting, I/O, interoperability, and notebook-based workflows, start from the docs hub or the tutorial index above.
|
|
191
|
+
|
|
192
|
+
## More Resources
|
|
193
|
+
|
|
194
|
+
- Migration notes for GWpy users: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/user_guide/gwexpy_for_gwpy_users_en.html>
|
|
195
|
+
- Citation: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/user_guide/citation.html>
|
|
196
|
+
- Reproducibility notes: [docs/repro/README.md](docs/repro/README.md)
|
|
197
|
+
- Supported I/O matrix: [SUPPORTED_IO_MATRIX.md](SUPPORTED_IO_MATRIX.md)
|
|
198
|
+
|
|
199
|
+
## Support
|
|
200
|
+
|
|
201
|
+
- Issues: <https://github.com/tatsuki-washimi/gwexpy/issues>
|
|
202
|
+
- Discussions: <https://github.com/tatsuki-washimi/gwexpy/discussions>
|
|
203
|
+
- Contributions: pull requests are welcome on GitHub
|
gwexpy-0.1.1/README.md
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://tatsuki-washimi.github.io/gwexpy/docs/web/en/">
|
|
3
|
+
<img src="docs/_static/branding/logo.svg" alt="gwexpy logo" width="280">
|
|
4
|
+
</a>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
# gwexpy: GWpy Expansions for Experiments
|
|
8
|
+
|
|
9
|
+
[](https://github.com/tatsuki-washimi/gwexpy/actions/workflows/pr-fast.yml)
|
|
10
|
+
[](https://codecov.io/gh/tatsuki-washimi/gwexpy)
|
|
11
|
+
[](https://tatsuki-washimi.github.io/gwexpy/)
|
|
12
|
+
[](https://opensource.org/licenses/MIT)
|
|
13
|
+
[](https://www.python.org/downloads/)
|
|
14
|
+
|
|
15
|
+
**gwexpy** is an extension library for [GWpy](https://gwpy.github.io/) for experimental physics and gravitational-wave data analysis. It adds matrix-aware containers, field operations, fitting workflows, expanded I/O, and interoperability layers while staying close to GWpy-style analysis.
|
|
16
|
+
|
|
17
|
+
## Install
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
git clone https://github.com/tatsuki-washimi/gwexpy.git
|
|
21
|
+
cd gwexpy
|
|
22
|
+
python -m pip install -e .
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
For optional extras, external dependencies, and environment-specific setup, use the official installation guides:
|
|
26
|
+
|
|
27
|
+
- English: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/user_guide/installation.html>
|
|
28
|
+
- 日本語: <https://tatsuki-washimi.github.io/gwexpy/docs/web/ja/user_guide/installation.html>
|
|
29
|
+
|
|
30
|
+
## Documentation
|
|
31
|
+
|
|
32
|
+
The full documentation is maintained in the docs site and is the source of truth for usage details.
|
|
33
|
+
|
|
34
|
+
- Documentation hub: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/>
|
|
35
|
+
- ドキュメントハブ: <https://tatsuki-washimi.github.io/gwexpy/docs/web/ja/>
|
|
36
|
+
- Quick Start: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/user_guide/quickstart.html>
|
|
37
|
+
- Tutorials and case studies: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/user_guide/tutorials/>
|
|
38
|
+
- File formats and I/O: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/user_guide/io_formats.html>
|
|
39
|
+
- API reference: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/reference/>
|
|
40
|
+
- Examples gallery: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/examples/>
|
|
41
|
+
|
|
42
|
+
## Why gwexpy?
|
|
43
|
+
|
|
44
|
+
- **Matrix-native analysis**: `TimeSeriesMatrix`, `FrequencySeriesMatrix`, and `SpectrogramMatrix` support batch processing, transfer functions, and multichannel workflows.
|
|
45
|
+
- **Physics-oriented containers**: `ScalarField`, `VectorField`, and `TensorField` extend analysis beyond simple series into structured field data.
|
|
46
|
+
- **Practical workflows**: fitting, noise hunting, time-frequency analysis, and interoperability are exposed as user-facing workflows rather than isolated utilities.
|
|
47
|
+
- **Broad interoperability and I/O**: gwexpy bridges scientific Python tools and extends format coverage beyond core GWpy workflows.
|
|
48
|
+
|
|
49
|
+
## Quick Start
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
import numpy as np
|
|
53
|
+
import gwexpy
|
|
54
|
+
from gwexpy.timeseries import TimeSeries, TimeSeriesList
|
|
55
|
+
|
|
56
|
+
gwexpy.register_all()
|
|
57
|
+
|
|
58
|
+
ts1 = TimeSeries(np.arange(8.0), dt=1.0, name="A")
|
|
59
|
+
ts2 = TimeSeries(np.arange(8.0) * 2.0, dt=1.0, name="B")
|
|
60
|
+
matrix = TimeSeriesList([ts1, ts2]).to_matrix()
|
|
61
|
+
asd = matrix.asd(fftlength=2.0)
|
|
62
|
+
print(matrix.shape)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
For fitting, I/O, interoperability, and notebook-based workflows, start from the docs hub or the tutorial index above.
|
|
66
|
+
|
|
67
|
+
## More Resources
|
|
68
|
+
|
|
69
|
+
- Migration notes for GWpy users: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/user_guide/gwexpy_for_gwpy_users_en.html>
|
|
70
|
+
- Citation: <https://tatsuki-washimi.github.io/gwexpy/docs/web/en/user_guide/citation.html>
|
|
71
|
+
- Reproducibility notes: [docs/repro/README.md](docs/repro/README.md)
|
|
72
|
+
- Supported I/O matrix: [SUPPORTED_IO_MATRIX.md](SUPPORTED_IO_MATRIX.md)
|
|
73
|
+
|
|
74
|
+
## Support
|
|
75
|
+
|
|
76
|
+
- Issues: <https://github.com/tatsuki-washimi/gwexpy/issues>
|
|
77
|
+
- Discussions: <https://github.com/tatsuki-washimi/gwexpy/discussions>
|
|
78
|
+
- Contributions: pull requests are welcome on GitHub
|