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.
Files changed (371) hide show
  1. gwexpy-0.1.1/CHANGELOG.md +211 -0
  2. gwexpy-0.1.1/LICENSE.txt +21 -0
  3. gwexpy-0.1.1/MANIFEST.in +17 -0
  4. gwexpy-0.1.1/PKG-INFO +203 -0
  5. gwexpy-0.1.1/README.md +78 -0
  6. gwexpy-0.1.1/gwexpy/__init__.py +224 -0
  7. gwexpy-0.1.1/gwexpy/_bootstrap.py +59 -0
  8. gwexpy-0.1.1/gwexpy/_version.py +3 -0
  9. gwexpy-0.1.1/gwexpy/_warnings.py +50 -0
  10. gwexpy-0.1.1/gwexpy/analysis/__init__.py +39 -0
  11. gwexpy-0.1.1/gwexpy/analysis/bruco.py +1746 -0
  12. gwexpy-0.1.1/gwexpy/analysis/coupling.py +1034 -0
  13. gwexpy-0.1.1/gwexpy/analysis/coupling_result.py +1155 -0
  14. gwexpy-0.1.1/gwexpy/analysis/response.py +999 -0
  15. gwexpy-0.1.1/gwexpy/analysis/stat_info.py +103 -0
  16. gwexpy-0.1.1/gwexpy/analysis/stats.py +52 -0
  17. gwexpy-0.1.1/gwexpy/analysis/threshold.py +409 -0
  18. gwexpy-0.1.1/gwexpy/astro/__init__.py +14 -0
  19. gwexpy-0.1.1/gwexpy/astro/range.py +28 -0
  20. gwexpy-0.1.1/gwexpy/cli/__init__.py +58 -0
  21. gwexpy-0.1.1/gwexpy/cli/__main__.py +6 -0
  22. gwexpy-0.1.1/gwexpy/cli/cliproduct.py +42 -0
  23. gwexpy-0.1.1/gwexpy/cli/coherence.py +12 -0
  24. gwexpy-0.1.1/gwexpy/cli/coherencegram.py +10 -0
  25. gwexpy-0.1.1/gwexpy/cli/gwpy_plot.py +5 -0
  26. gwexpy-0.1.1/gwexpy/cli/qtransform.py +18 -0
  27. gwexpy-0.1.1/gwexpy/cli/spectrogram.py +15 -0
  28. gwexpy-0.1.1/gwexpy/cli/spectrum.py +15 -0
  29. gwexpy-0.1.1/gwexpy/cli/timeseries.py +13 -0
  30. gwexpy-0.1.1/gwexpy/cli/transferfunction.py +15 -0
  31. gwexpy-0.1.1/gwexpy/detector/__init__.py +14 -0
  32. gwexpy-0.1.1/gwexpy/detector/channel.py +23 -0
  33. gwexpy-0.1.1/gwexpy/detector/io/__init__.py +9 -0
  34. gwexpy-0.1.1/gwexpy/detector/io/cis.py +15 -0
  35. gwexpy-0.1.1/gwexpy/detector/io/clf.py +17 -0
  36. gwexpy-0.1.1/gwexpy/detector/io/omega.py +15 -0
  37. gwexpy-0.1.1/gwexpy/detector/units.py +21 -0
  38. gwexpy-0.1.1/gwexpy/fields/__init__.py +46 -0
  39. gwexpy-0.1.1/gwexpy/fields/base.py +540 -0
  40. gwexpy-0.1.1/gwexpy/fields/collections.py +307 -0
  41. gwexpy-0.1.1/gwexpy/fields/demo.py +315 -0
  42. gwexpy-0.1.1/gwexpy/fields/scalar.py +2303 -0
  43. gwexpy-0.1.1/gwexpy/fields/signal.py +1533 -0
  44. gwexpy-0.1.1/gwexpy/fields/tensor.py +464 -0
  45. gwexpy-0.1.1/gwexpy/fields/vector.py +387 -0
  46. gwexpy-0.1.1/gwexpy/fitting/__init__.py +83 -0
  47. gwexpy-0.1.1/gwexpy/fitting/core.py +1245 -0
  48. gwexpy-0.1.1/gwexpy/fitting/gls.py +183 -0
  49. gwexpy-0.1.1/gwexpy/fitting/highlevel.py +363 -0
  50. gwexpy-0.1.1/gwexpy/fitting/mixin.py +59 -0
  51. gwexpy-0.1.1/gwexpy/fitting/models.py +255 -0
  52. gwexpy-0.1.1/gwexpy/frequencyseries/__init__.py +32 -0
  53. gwexpy-0.1.1/gwexpy/frequencyseries/_fdcommon.py +1 -0
  54. gwexpy-0.1.1/gwexpy/frequencyseries/bifrequencymap.py +876 -0
  55. gwexpy-0.1.1/gwexpy/frequencyseries/collections.py +1099 -0
  56. gwexpy-0.1.1/gwexpy/frequencyseries/frequencyseries.py +1686 -0
  57. gwexpy-0.1.1/gwexpy/frequencyseries/hist.py +1 -0
  58. gwexpy-0.1.1/gwexpy/frequencyseries/io/__init__.py +9 -0
  59. gwexpy-0.1.1/gwexpy/frequencyseries/io/ascii.py +6 -0
  60. gwexpy-0.1.1/gwexpy/frequencyseries/io/dttxml.py +258 -0
  61. gwexpy-0.1.1/gwexpy/frequencyseries/io/hdf5.py +6 -0
  62. gwexpy-0.1.1/gwexpy/frequencyseries/io/ligolw.py +1 -0
  63. gwexpy-0.1.1/gwexpy/frequencyseries/io/stubs.py +38 -0
  64. gwexpy-0.1.1/gwexpy/frequencyseries/matrix.py +145 -0
  65. gwexpy-0.1.1/gwexpy/frequencyseries/matrix_analysis.py +197 -0
  66. gwexpy-0.1.1/gwexpy/frequencyseries/matrix_core.py +95 -0
  67. gwexpy-0.1.1/gwexpy/histogram/__init__.py +18 -0
  68. gwexpy-0.1.1/gwexpy/histogram/_core.py +415 -0
  69. gwexpy-0.1.1/gwexpy/histogram/_rebin.py +260 -0
  70. gwexpy-0.1.1/gwexpy/histogram/_typing.py +40 -0
  71. gwexpy-0.1.1/gwexpy/histogram/collections.py +436 -0
  72. gwexpy-0.1.1/gwexpy/histogram/histogram.py +395 -0
  73. gwexpy-0.1.1/gwexpy/histogram/io/__init__.py +1 -0
  74. gwexpy-0.1.1/gwexpy/histogram/io/_hdf5.py +104 -0
  75. gwexpy-0.1.1/gwexpy/interop/__init__.py +305 -0
  76. gwexpy-0.1.1/gwexpy/interop/_modal_helpers.py +215 -0
  77. gwexpy-0.1.1/gwexpy/interop/_optional.py +194 -0
  78. gwexpy-0.1.1/gwexpy/interop/_registry.py +142 -0
  79. gwexpy-0.1.1/gwexpy/interop/_time.py +98 -0
  80. gwexpy-0.1.1/gwexpy/interop/astropy_.py +39 -0
  81. gwexpy-0.1.1/gwexpy/interop/base.py +34 -0
  82. gwexpy-0.1.1/gwexpy/interop/control_.py +227 -0
  83. gwexpy-0.1.1/gwexpy/interop/cupy_.py +42 -0
  84. gwexpy-0.1.1/gwexpy/interop/dask_.py +39 -0
  85. gwexpy-0.1.1/gwexpy/interop/emg3d_.py +494 -0
  86. gwexpy-0.1.1/gwexpy/interop/errors.py +38 -0
  87. gwexpy-0.1.1/gwexpy/interop/exudyn_.py +123 -0
  88. gwexpy-0.1.1/gwexpy/interop/finesse_.py +280 -0
  89. gwexpy-0.1.1/gwexpy/interop/frequency.py +184 -0
  90. gwexpy-0.1.1/gwexpy/interop/gwinc_.py +200 -0
  91. gwexpy-0.1.1/gwexpy/interop/harmonica_.py +93 -0
  92. gwexpy-0.1.1/gwexpy/interop/hdf5_.py +69 -0
  93. gwexpy-0.1.1/gwexpy/interop/jax_.py +24 -0
  94. gwexpy-0.1.1/gwexpy/interop/json_.py +47 -0
  95. gwexpy-0.1.1/gwexpy/interop/lal_.py +221 -0
  96. gwexpy-0.1.1/gwexpy/interop/meep_.py +322 -0
  97. gwexpy-0.1.1/gwexpy/interop/meshio_.py +369 -0
  98. gwexpy-0.1.1/gwexpy/interop/metpy_.py +90 -0
  99. gwexpy-0.1.1/gwexpy/interop/mne_.py +490 -0
  100. gwexpy-0.1.1/gwexpy/interop/mt_.py +274 -0
  101. gwexpy-0.1.1/gwexpy/interop/multitaper_.py +277 -0
  102. gwexpy-0.1.1/gwexpy/interop/neo_.py +107 -0
  103. gwexpy-0.1.1/gwexpy/interop/netcdf4_.py +62 -0
  104. gwexpy-0.1.1/gwexpy/interop/obspy_.py +300 -0
  105. gwexpy-0.1.1/gwexpy/interop/openems_.py +405 -0
  106. gwexpy-0.1.1/gwexpy/interop/opensees_.py +133 -0
  107. gwexpy-0.1.1/gwexpy/interop/pandas_.py +228 -0
  108. gwexpy-0.1.1/gwexpy/interop/polars_.py +232 -0
  109. gwexpy-0.1.1/gwexpy/interop/pycbc_.py +184 -0
  110. gwexpy-0.1.1/gwexpy/interop/pydub_.py +69 -0
  111. gwexpy-0.1.1/gwexpy/interop/pyoma_.py +97 -0
  112. gwexpy-0.1.1/gwexpy/interop/pyroomacoustics_.py +578 -0
  113. gwexpy-0.1.1/gwexpy/interop/pyspeckit_.py +69 -0
  114. gwexpy-0.1.1/gwexpy/interop/pyspice_.py +331 -0
  115. gwexpy-0.1.1/gwexpy/interop/quantities_.py +110 -0
  116. gwexpy-0.1.1/gwexpy/interop/root_.py +544 -0
  117. gwexpy-0.1.1/gwexpy/interop/sdynpy_.py +231 -0
  118. gwexpy-0.1.1/gwexpy/interop/sdypy_.py +141 -0
  119. gwexpy-0.1.1/gwexpy/interop/simpeg_.py +202 -0
  120. gwexpy-0.1.1/gwexpy/interop/skrf_.py +524 -0
  121. gwexpy-0.1.1/gwexpy/interop/specutils_.py +88 -0
  122. gwexpy-0.1.1/gwexpy/interop/sqlite_.py +92 -0
  123. gwexpy-0.1.1/gwexpy/interop/tensorflow_.py +22 -0
  124. gwexpy-0.1.1/gwexpy/interop/torch_.py +100 -0
  125. gwexpy-0.1.1/gwexpy/interop/torch_dataset.py +167 -0
  126. gwexpy-0.1.1/gwexpy/interop/wrf_.py +133 -0
  127. gwexpy-0.1.1/gwexpy/interop/xarray_.py +364 -0
  128. gwexpy-0.1.1/gwexpy/interop/zarr_.py +75 -0
  129. gwexpy-0.1.1/gwexpy/io/__init__.py +20 -0
  130. gwexpy-0.1.1/gwexpy/io/_framecpp.py +12 -0
  131. gwexpy-0.1.1/gwexpy/io/cache.py +14 -0
  132. gwexpy-0.1.1/gwexpy/io/collection_dir.py +165 -0
  133. gwexpy-0.1.1/gwexpy/io/datafind.py +19 -0
  134. gwexpy-0.1.1/gwexpy/io/dttxml_common.py +597 -0
  135. gwexpy-0.1.1/gwexpy/io/ffldatafind.py +22 -0
  136. gwexpy-0.1.1/gwexpy/io/gwf.py +20 -0
  137. gwexpy-0.1.1/gwexpy/io/hdf5.py +10 -0
  138. gwexpy-0.1.1/gwexpy/io/hdf5_collection.py +121 -0
  139. gwexpy-0.1.1/gwexpy/io/kerberos.py +6 -0
  140. gwexpy-0.1.1/gwexpy/io/ligolw.py +35 -0
  141. gwexpy-0.1.1/gwexpy/io/nds2.py +14 -0
  142. gwexpy-0.1.1/gwexpy/io/pickle_compat.py +88 -0
  143. gwexpy-0.1.1/gwexpy/io/registry.py +22 -0
  144. gwexpy-0.1.1/gwexpy/io/utils.py +297 -0
  145. gwexpy-0.1.1/gwexpy/noise/__init__.py +55 -0
  146. gwexpy-0.1.1/gwexpy/noise/asd.py +58 -0
  147. gwexpy-0.1.1/gwexpy/noise/colored.py +171 -0
  148. gwexpy-0.1.1/gwexpy/noise/field.py +202 -0
  149. gwexpy-0.1.1/gwexpy/noise/gwinc_.py +183 -0
  150. gwexpy-0.1.1/gwexpy/noise/line_mask.py +66 -0
  151. gwexpy-0.1.1/gwexpy/noise/magnetic.py +141 -0
  152. gwexpy-0.1.1/gwexpy/noise/non_gaussian.py +238 -0
  153. gwexpy-0.1.1/gwexpy/noise/obspy_.py +261 -0
  154. gwexpy-0.1.1/gwexpy/noise/peaks.py +166 -0
  155. gwexpy-0.1.1/gwexpy/noise/wave.py +956 -0
  156. gwexpy-0.1.1/gwexpy/numerics/__init__.py +38 -0
  157. gwexpy-0.1.1/gwexpy/numerics/constants.py +97 -0
  158. gwexpy-0.1.1/gwexpy/numerics/scaling.py +169 -0
  159. gwexpy-0.1.1/gwexpy/plot/__init__.py +48 -0
  160. gwexpy-0.1.1/gwexpy/plot/_coord.py +261 -0
  161. gwexpy-0.1.1/gwexpy/plot/_init_helpers.py +499 -0
  162. gwexpy-0.1.1/gwexpy/plot/_label_utils.py +50 -0
  163. gwexpy-0.1.1/gwexpy/plot/axes.py +25 -0
  164. gwexpy-0.1.1/gwexpy/plot/bode.py +6 -0
  165. gwexpy-0.1.1/gwexpy/plot/colorbar.py +14 -0
  166. gwexpy-0.1.1/gwexpy/plot/colors.py +17 -0
  167. gwexpy-0.1.1/gwexpy/plot/defaults.py +382 -0
  168. gwexpy-0.1.1/gwexpy/plot/field.py +222 -0
  169. gwexpy-0.1.1/gwexpy/plot/gauch_dashboard.py +121 -0
  170. gwexpy-0.1.1/gwexpy/plot/geomap.py +217 -0
  171. gwexpy-0.1.1/gwexpy/plot/gps.py +31 -0
  172. gwexpy-0.1.1/gwexpy/plot/legend.py +8 -0
  173. gwexpy-0.1.1/gwexpy/plot/log.py +17 -0
  174. gwexpy-0.1.1/gwexpy/plot/pairplot.py +248 -0
  175. gwexpy-0.1.1/gwexpy/plot/plot.py +554 -0
  176. gwexpy-0.1.1/gwexpy/plot/rc.py +20 -0
  177. gwexpy-0.1.1/gwexpy/plot/segments.py +22 -0
  178. gwexpy-0.1.1/gwexpy/plot/skymap.py +188 -0
  179. gwexpy-0.1.1/gwexpy/plot/tex.py +1 -0
  180. gwexpy-0.1.1/gwexpy/plot/text.py +1 -0
  181. gwexpy-0.1.1/gwexpy/plot/units.py +9 -0
  182. gwexpy-0.1.1/gwexpy/plot/utils.py +71 -0
  183. gwexpy-0.1.1/gwexpy/py.typed +0 -0
  184. gwexpy-0.1.1/gwexpy/segments/__init__.py +14 -0
  185. gwexpy-0.1.1/gwexpy/segments/flag.py +6 -0
  186. gwexpy-0.1.1/gwexpy/segments/io/__init__.py +10 -0
  187. gwexpy-0.1.1/gwexpy/segments/io/hdf5.py +6 -0
  188. gwexpy-0.1.1/gwexpy/segments/io/json.py +12 -0
  189. gwexpy-0.1.1/gwexpy/segments/io/ligolw.py +20 -0
  190. gwexpy-0.1.1/gwexpy/segments/io/segwizard.py +17 -0
  191. gwexpy-0.1.1/gwexpy/segments/segments.py +4 -0
  192. gwexpy-0.1.1/gwexpy/signal/__init__.py +49 -0
  193. gwexpy-0.1.1/gwexpy/signal/fft.py +6 -0
  194. gwexpy-0.1.1/gwexpy/signal/filter_design.py +4 -0
  195. gwexpy-0.1.1/gwexpy/signal/normalization.py +153 -0
  196. gwexpy-0.1.1/gwexpy/signal/preprocessing/__init__.py +16 -0
  197. gwexpy-0.1.1/gwexpy/signal/preprocessing/imputation.py +282 -0
  198. gwexpy-0.1.1/gwexpy/signal/preprocessing/ml.py +388 -0
  199. gwexpy-0.1.1/gwexpy/signal/preprocessing/standardization.py +114 -0
  200. gwexpy-0.1.1/gwexpy/signal/preprocessing/whitening.py +174 -0
  201. gwexpy-0.1.1/gwexpy/signal/qtransform.py +10 -0
  202. gwexpy-0.1.1/gwexpy/signal/spectral/__init__.py +18 -0
  203. gwexpy-0.1.1/gwexpy/signal/spectral/_lal.py +27 -0
  204. gwexpy-0.1.1/gwexpy/signal/spectral/_median_mean.py +1 -0
  205. gwexpy-0.1.1/gwexpy/signal/spectral/_pycbc.py +1 -0
  206. gwexpy-0.1.1/gwexpy/signal/spectral/_registry.py +1 -0
  207. gwexpy-0.1.1/gwexpy/signal/spectral/_scipy.py +21 -0
  208. gwexpy-0.1.1/gwexpy/signal/spectral/_ui.py +23 -0
  209. gwexpy-0.1.1/gwexpy/signal/spectral/_utils.py +1 -0
  210. gwexpy-0.1.1/gwexpy/signal/window.py +4 -0
  211. gwexpy-0.1.1/gwexpy/spectral/__init__.py +13 -0
  212. gwexpy-0.1.1/gwexpy/spectral/estimation.py +762 -0
  213. gwexpy-0.1.1/gwexpy/spectrogram/__init__.py +33 -0
  214. gwexpy-0.1.1/gwexpy/spectrogram/cleaning.py +154 -0
  215. gwexpy-0.1.1/gwexpy/spectrogram/coherence.py +11 -0
  216. gwexpy-0.1.1/gwexpy/spectrogram/collections.py +948 -0
  217. gwexpy-0.1.1/gwexpy/spectrogram/io/__init__.py +8 -0
  218. gwexpy-0.1.1/gwexpy/spectrogram/io/hdf5.py +6 -0
  219. gwexpy-0.1.1/gwexpy/spectrogram/matrix.py +849 -0
  220. gwexpy-0.1.1/gwexpy/spectrogram/matrix_analysis.py +131 -0
  221. gwexpy-0.1.1/gwexpy/spectrogram/matrix_core.py +194 -0
  222. gwexpy-0.1.1/gwexpy/spectrogram/spectrogram.py +1029 -0
  223. gwexpy-0.1.1/gwexpy/statistics/__init__.py +15 -0
  224. gwexpy-0.1.1/gwexpy/statistics/dq_flag.py +82 -0
  225. gwexpy-0.1.1/gwexpy/statistics/gauch.py +149 -0
  226. gwexpy-0.1.1/gwexpy/statistics/rayleigh_test.py +95 -0
  227. gwexpy-0.1.1/gwexpy/statistics/roc.py +85 -0
  228. gwexpy-0.1.1/gwexpy/statistics/student_t_indicator.py +124 -0
  229. gwexpy-0.1.1/gwexpy/table/__init__.py +25 -0
  230. gwexpy-0.1.1/gwexpy/table/filter.py +39 -0
  231. gwexpy-0.1.1/gwexpy/table/filters.py +13 -0
  232. gwexpy-0.1.1/gwexpy/table/gravityspy.py +35 -0
  233. gwexpy-0.1.1/gwexpy/table/io/__init__.py +37 -0
  234. gwexpy-0.1.1/gwexpy/table/io/cwb.py +23 -0
  235. gwexpy-0.1.1/gwexpy/table/io/fetch.py +17 -0
  236. gwexpy-0.1.1/gwexpy/table/io/gravityspy.py +11 -0
  237. gwexpy-0.1.1/gwexpy/table/io/gstlal.py +47 -0
  238. gwexpy-0.1.1/gwexpy/table/io/gwf.py +27 -0
  239. gwexpy-0.1.1/gwexpy/table/io/hacr.py +39 -0
  240. gwexpy-0.1.1/gwexpy/table/io/ligolw.py +47 -0
  241. gwexpy-0.1.1/gwexpy/table/io/losc.py +33 -0
  242. gwexpy-0.1.1/gwexpy/table/io/omega.py +21 -0
  243. gwexpy-0.1.1/gwexpy/table/io/omicron.py +13 -0
  244. gwexpy-0.1.1/gwexpy/table/io/pycbc.py +47 -0
  245. gwexpy-0.1.1/gwexpy/table/io/root.py +27 -0
  246. gwexpy-0.1.1/gwexpy/table/io/snax.py +25 -0
  247. gwexpy-0.1.1/gwexpy/table/io/sql.py +17 -0
  248. gwexpy-0.1.1/gwexpy/table/io/utils.py +21 -0
  249. gwexpy-0.1.1/gwexpy/table/segment_cell.py +117 -0
  250. gwexpy-0.1.1/gwexpy/table/segment_plot.py +551 -0
  251. gwexpy-0.1.1/gwexpy/table/segment_table.py +1118 -0
  252. gwexpy-0.1.1/gwexpy/table/table.py +35 -0
  253. gwexpy-0.1.1/gwexpy/time/__init__.py +21 -0
  254. gwexpy-0.1.1/gwexpy/time/__main__.py +19 -0
  255. gwexpy-0.1.1/gwexpy/time/_tconvert.py +29 -0
  256. gwexpy-0.1.1/gwexpy/time/core.py +185 -0
  257. gwexpy-0.1.1/gwexpy/timeseries/__init__.py +57 -0
  258. gwexpy-0.1.1/gwexpy/timeseries/_analysis.py +411 -0
  259. gwexpy-0.1.1/gwexpy/timeseries/_core.py +100 -0
  260. gwexpy-0.1.1/gwexpy/timeseries/_gwf_io.py +243 -0
  261. gwexpy-0.1.1/gwexpy/timeseries/_interop.py +1191 -0
  262. gwexpy-0.1.1/gwexpy/timeseries/_resampling.py +822 -0
  263. gwexpy-0.1.1/gwexpy/timeseries/_signal.py +1573 -0
  264. gwexpy-0.1.1/gwexpy/timeseries/_spectral.py +23 -0
  265. gwexpy-0.1.1/gwexpy/timeseries/_spectral_fourier.py +580 -0
  266. gwexpy-0.1.1/gwexpy/timeseries/_spectral_special.py +1672 -0
  267. gwexpy-0.1.1/gwexpy/timeseries/_statistics.py +732 -0
  268. gwexpy-0.1.1/gwexpy/timeseries/_timeseries_legacy.py +41 -0
  269. gwexpy-0.1.1/gwexpy/timeseries/_typing.py +69 -0
  270. gwexpy-0.1.1/gwexpy/timeseries/arima.py +473 -0
  271. gwexpy-0.1.1/gwexpy/timeseries/collections.py +1981 -0
  272. gwexpy-0.1.1/gwexpy/timeseries/core.py +41 -0
  273. gwexpy-0.1.1/gwexpy/timeseries/decomposition.py +708 -0
  274. gwexpy-0.1.1/gwexpy/timeseries/hurst.py +362 -0
  275. gwexpy-0.1.1/gwexpy/timeseries/io/__init__.py +31 -0
  276. gwexpy-0.1.1/gwexpy/timeseries/io/_registration.py +290 -0
  277. gwexpy-0.1.1/gwexpy/timeseries/io/ascii.py +13 -0
  278. gwexpy-0.1.1/gwexpy/timeseries/io/ats.py +337 -0
  279. gwexpy-0.1.1/gwexpy/timeseries/io/audio.py +267 -0
  280. gwexpy-0.1.1/gwexpy/timeseries/io/cache.py +11 -0
  281. gwexpy-0.1.1/gwexpy/timeseries/io/core.py +13 -0
  282. gwexpy-0.1.1/gwexpy/timeseries/io/csv_config.py +133 -0
  283. gwexpy-0.1.1/gwexpy/timeseries/io/csv_enhanced.py +463 -0
  284. gwexpy-0.1.1/gwexpy/timeseries/io/dttxml.py +133 -0
  285. gwexpy-0.1.1/gwexpy/timeseries/io/gbd.py +441 -0
  286. gwexpy-0.1.1/gwexpy/timeseries/io/gwf/__init__.py +51 -0
  287. gwexpy-0.1.1/gwexpy/timeseries/io/gwf/framecpp.py +11 -0
  288. gwexpy-0.1.1/gwexpy/timeseries/io/gwf/framel.py +25 -0
  289. gwexpy-0.1.1/gwexpy/timeseries/io/gwf/lalframe.py +11 -0
  290. gwexpy-0.1.1/gwexpy/timeseries/io/hdf5.py +45 -0
  291. gwexpy-0.1.1/gwexpy/timeseries/io/losc.py +11 -0
  292. gwexpy-0.1.1/gwexpy/timeseries/io/nds2.py +29 -0
  293. gwexpy-0.1.1/gwexpy/timeseries/io/ndscope_hdf5.py +274 -0
  294. gwexpy-0.1.1/gwexpy/timeseries/io/netcdf4_.py +409 -0
  295. gwexpy-0.1.1/gwexpy/timeseries/io/sdb.py +175 -0
  296. gwexpy-0.1.1/gwexpy/timeseries/io/seismic.py +270 -0
  297. gwexpy-0.1.1/gwexpy/timeseries/io/stubs.py +32 -0
  298. gwexpy-0.1.1/gwexpy/timeseries/io/tdms.py +160 -0
  299. gwexpy-0.1.1/gwexpy/timeseries/io/wav.py +149 -0
  300. gwexpy-0.1.1/gwexpy/timeseries/io/win.py +244 -0
  301. gwexpy-0.1.1/gwexpy/timeseries/io/zarr_.py +256 -0
  302. gwexpy-0.1.1/gwexpy/timeseries/matrix.py +360 -0
  303. gwexpy-0.1.1/gwexpy/timeseries/matrix_analysis.py +919 -0
  304. gwexpy-0.1.1/gwexpy/timeseries/matrix_core.py +495 -0
  305. gwexpy-0.1.1/gwexpy/timeseries/matrix_interop.py +50 -0
  306. gwexpy-0.1.1/gwexpy/timeseries/matrix_spectral.py +415 -0
  307. gwexpy-0.1.1/gwexpy/timeseries/pipeline.py +617 -0
  308. gwexpy-0.1.1/gwexpy/timeseries/preprocess.py +1437 -0
  309. gwexpy-0.1.1/gwexpy/timeseries/rolling.py +362 -0
  310. gwexpy-0.1.1/gwexpy/timeseries/spectral.py +319 -0
  311. gwexpy-0.1.1/gwexpy/timeseries/statevector.py +8 -0
  312. gwexpy-0.1.1/gwexpy/timeseries/timeseries.py +431 -0
  313. gwexpy-0.1.1/gwexpy/timeseries/utils.py +371 -0
  314. gwexpy-0.1.1/gwexpy/types/__init__.py +75 -0
  315. gwexpy-0.1.1/gwexpy/types/_stats.py +269 -0
  316. gwexpy-0.1.1/gwexpy/types/array.py +82 -0
  317. gwexpy-0.1.1/gwexpy/types/array2d.py +137 -0
  318. gwexpy-0.1.1/gwexpy/types/array3d.py +315 -0
  319. gwexpy-0.1.1/gwexpy/types/array4d.py +444 -0
  320. gwexpy-0.1.1/gwexpy/types/axis.py +125 -0
  321. gwexpy-0.1.1/gwexpy/types/axis_api.py +261 -0
  322. gwexpy-0.1.1/gwexpy/types/hht_spectrogram.py +130 -0
  323. gwexpy-0.1.1/gwexpy/types/index.py +13 -0
  324. gwexpy-0.1.1/gwexpy/types/io/__init__.py +13 -0
  325. gwexpy-0.1.1/gwexpy/types/io/ascii.py +25 -0
  326. gwexpy-0.1.1/gwexpy/types/io/hdf5.py +45 -0
  327. gwexpy-0.1.1/gwexpy/types/io/ligolw.py +17 -0
  328. gwexpy-0.1.1/gwexpy/types/metadata.py +939 -0
  329. gwexpy-0.1.1/gwexpy/types/mixin/__init__.py +27 -0
  330. gwexpy-0.1.1/gwexpy/types/mixin/_collection_mixin.py +156 -0
  331. gwexpy-0.1.1/gwexpy/types/mixin/_plot_mixin.py +19 -0
  332. gwexpy-0.1.1/gwexpy/types/mixin/_protocols.py +228 -0
  333. gwexpy-0.1.1/gwexpy/types/mixin/mixin_legacy.py +90 -0
  334. gwexpy-0.1.1/gwexpy/types/mixin/signal_interop.py +326 -0
  335. gwexpy-0.1.1/gwexpy/types/plane2d.py +86 -0
  336. gwexpy-0.1.1/gwexpy/types/series.py +17 -0
  337. gwexpy-0.1.1/gwexpy/types/series_creator.py +156 -0
  338. gwexpy-0.1.1/gwexpy/types/series_matrix_analysis.py +389 -0
  339. gwexpy-0.1.1/gwexpy/types/series_matrix_core.py +328 -0
  340. gwexpy-0.1.1/gwexpy/types/series_matrix_indexing.py +275 -0
  341. gwexpy-0.1.1/gwexpy/types/series_matrix_io.py +387 -0
  342. gwexpy-0.1.1/gwexpy/types/series_matrix_math.py +566 -0
  343. gwexpy-0.1.1/gwexpy/types/series_matrix_structure.py +222 -0
  344. gwexpy-0.1.1/gwexpy/types/series_matrix_validation_mixin.py +186 -0
  345. gwexpy-0.1.1/gwexpy/types/series_matrix_visualization.py +14 -0
  346. gwexpy-0.1.1/gwexpy/types/seriesmatrix.py +29 -0
  347. gwexpy-0.1.1/gwexpy/types/seriesmatrix_base.py +608 -0
  348. gwexpy-0.1.1/gwexpy/types/seriesmatrix_validation.py +943 -0
  349. gwexpy-0.1.1/gwexpy/types/sliceutils.py +17 -0
  350. gwexpy-0.1.1/gwexpy/types/time_plane_transform.py +410 -0
  351. gwexpy-0.1.1/gwexpy/types/typing.py +190 -0
  352. gwexpy-0.1.1/gwexpy/utils/__init__.py +9 -0
  353. gwexpy-0.1.1/gwexpy/utils/decorators.py +17 -0
  354. gwexpy-0.1.1/gwexpy/utils/enum.py +11 -0
  355. gwexpy-0.1.1/gwexpy/utils/env.py +11 -0
  356. gwexpy-0.1.1/gwexpy/utils/fft_args.py +332 -0
  357. gwexpy-0.1.1/gwexpy/utils/lal.py +39 -0
  358. gwexpy-0.1.1/gwexpy/utils/logger.py +18 -0
  359. gwexpy-0.1.1/gwexpy/utils/misc.py +11 -0
  360. gwexpy-0.1.1/gwexpy/utils/mp.py +13 -0
  361. gwexpy-0.1.1/gwexpy/utils/progress.py +13 -0
  362. gwexpy-0.1.1/gwexpy/utils/shell.py +19 -0
  363. gwexpy-0.1.1/gwexpy/utils/units.py +191 -0
  364. gwexpy-0.1.1/gwexpy.egg-info/PKG-INFO +203 -0
  365. gwexpy-0.1.1/gwexpy.egg-info/SOURCES.txt +369 -0
  366. gwexpy-0.1.1/gwexpy.egg-info/dependency_links.txt +1 -0
  367. gwexpy-0.1.1/gwexpy.egg-info/entry_points.txt +2 -0
  368. gwexpy-0.1.1/gwexpy.egg-info/requires.txt +112 -0
  369. gwexpy-0.1.1/gwexpy.egg-info/top_level.txt +1 -0
  370. gwexpy-0.1.1/pyproject.toml +424 -0
  371. 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
@@ -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.
@@ -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
+ [![CI Status](https://github.com/tatsuki-washimi/gwexpy/actions/workflows/pr-fast.yml/badge.svg)](https://github.com/tatsuki-washimi/gwexpy/actions/workflows/pr-fast.yml)
135
+ [![codecov](https://codecov.io/gh/tatsuki-washimi/gwexpy/branch/main/graph/badge.svg)](https://codecov.io/gh/tatsuki-washimi/gwexpy)
136
+ [![Documentation](https://github.com/tatsuki-washimi/gwexpy/actions/workflows/docs-pr.yml/badge.svg)](https://tatsuki-washimi.github.io/gwexpy/)
137
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
138
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](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
+ [![CI Status](https://github.com/tatsuki-washimi/gwexpy/actions/workflows/pr-fast.yml/badge.svg)](https://github.com/tatsuki-washimi/gwexpy/actions/workflows/pr-fast.yml)
10
+ [![codecov](https://codecov.io/gh/tatsuki-washimi/gwexpy/branch/main/graph/badge.svg)](https://codecov.io/gh/tatsuki-washimi/gwexpy)
11
+ [![Documentation](https://github.com/tatsuki-washimi/gwexpy/actions/workflows/docs-pr.yml/badge.svg)](https://tatsuki-washimi.github.io/gwexpy/)
12
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
13
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](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