pywavelet 0.2.4__py3-none-any.whl → 0.2.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. pywavelet/__init__.py +22 -0
  2. pywavelet/_version.py +9 -4
  3. pywavelet/backend.py +49 -27
  4. pywavelet/transforms/__init__.py +10 -4
  5. pywavelet/transforms/cupy/__init__.py +12 -0
  6. pywavelet/transforms/cupy/forward/__init__.py +3 -0
  7. pywavelet/transforms/cupy/forward/from_freq.py +92 -0
  8. pywavelet/transforms/cupy/forward/from_time.py +50 -0
  9. pywavelet/transforms/cupy/forward/main.py +106 -0
  10. pywavelet/transforms/cupy/inverse/__init__.py +3 -0
  11. pywavelet/transforms/cupy/inverse/main.py +67 -0
  12. pywavelet/transforms/cupy/inverse/to_freq.py +62 -0
  13. pywavelet/transforms/jax/forward/from_freq.py +6 -0
  14. pywavelet/transforms/jax/forward/from_time.py +18 -10
  15. pywavelet/transforms/jax/forward/main.py +6 -10
  16. pywavelet/transforms/jax/inverse/main.py +4 -6
  17. pywavelet/transforms/jax/inverse/to_freq.py +52 -34
  18. pywavelet/transforms/numpy/__init__.py +1 -2
  19. pywavelet/transforms/numpy/forward/from_freq.py +77 -19
  20. pywavelet/transforms/numpy/forward/main.py +1 -2
  21. pywavelet/transforms/numpy/inverse/main.py +4 -6
  22. pywavelet/transforms/numpy/inverse/to_freq.py +64 -1
  23. pywavelet/transforms/phi_computer.py +67 -86
  24. pywavelet/types/common.py +4 -3
  25. pywavelet/types/frequencyseries.py +1 -1
  26. pywavelet/types/plotting.py +14 -5
  27. pywavelet/types/timeseries.py +4 -10
  28. pywavelet/types/wavelet.py +6 -6
  29. pywavelet/types/wavelet_bins.py +0 -1
  30. pywavelet/utils.py +2 -0
  31. {pywavelet-0.2.4.dist-info → pywavelet-0.2.6.dist-info}/METADATA +20 -9
  32. pywavelet-0.2.6.dist-info/RECORD +43 -0
  33. {pywavelet-0.2.4.dist-info → pywavelet-0.2.6.dist-info}/WHEEL +1 -1
  34. pywavelet-0.2.4.dist-info/RECORD +0 -35
  35. {pywavelet-0.2.4.dist-info → pywavelet-0.2.6.dist-info}/top_level.txt +0 -0
@@ -84,6 +84,7 @@ def plot_wavelet_grid(
84
84
  nan_color: Optional[str] = "black",
85
85
  detailed_axes: bool = False,
86
86
  show_gridinfo: bool = True,
87
+ txtbox_kwargs: dict = {},
87
88
  trend_color: Optional[str] = None,
88
89
  whiten_by: Optional[np.ndarray] = None,
89
90
  **kwargs,
@@ -172,12 +173,17 @@ def plot_wavelet_grid(
172
173
  if np.all(np.isnan(z)):
173
174
  raise ValueError("All wavelet data is NaN.")
174
175
  if zscale == "log":
175
- norm = LogNorm(
176
- vmin=np.nanmin(z[z > 0]), vmax=np.nanmax(z[z < np.inf])
177
- )
176
+ vmin = np.nanmin(z[z > 0])
177
+ vmax = np.nanmax(z[z < np.inf])
178
+ if vmin > vmax:
179
+ raise ValueError("vmin > vmax... something wrong")
180
+ norm = LogNorm(vmin=vmin, vmax=vmax)
178
181
  elif not absolute:
179
182
  vmin, vmax = np.nanmin(z), np.nanmax(z)
180
183
  vcenter = 0.0
184
+ if vmin > vmax:
185
+ raise ValueError("vmin > vmax... something wrong")
186
+
181
187
  norm = TwoSlopeNorm(vmin=vmin, vcenter=vcenter, vmax=vmax)
182
188
  else:
183
189
  norm = None # Default linear scaling
@@ -248,6 +254,9 @@ def plot_wavelet_grid(
248
254
  NfNt_label = f"{Nf}x{Nt}" if show_gridinfo else ""
249
255
  txt = f"{label}\n{NfNt_label}" if label else NfNt_label
250
256
  if txt:
257
+ txtbox_kwargs.setdefault("boxstyle", "round")
258
+ txtbox_kwargs.setdefault("facecolor", "white")
259
+ txtbox_kwargs.setdefault("alpha", 0.2)
251
260
  ax.text(
252
261
  0.05,
253
262
  0.95,
@@ -255,7 +264,7 @@ def plot_wavelet_grid(
255
264
  transform=ax.transAxes,
256
265
  fontsize=14,
257
266
  verticalalignment="top",
258
- bbox=dict(boxstyle="round", facecolor=None, alpha=0.2),
267
+ bbox=txtbox_kwargs,
259
268
  )
260
269
 
261
270
  # Adjust layout
@@ -294,7 +303,7 @@ def plot_periodogram(
294
303
  flow = np.min(np.abs(freq))
295
304
  ax.set_xlabel("Frequency [Hz]")
296
305
  ax.set_ylabel("Periodigram")
297
- ax.set_xlim(left=flow, right=nyquist_frequency / 2)
306
+ # ax.set_xlim(left=flow, right=nyquist_frequency / 2)
298
307
  return ax.figure, ax
299
308
 
300
309
 
@@ -4,15 +4,9 @@ import matplotlib.pyplot as plt
4
4
  from scipy.signal import butter, sosfiltfilt
5
5
  from scipy.signal.windows import tukey
6
6
 
7
+ from ..backend import rfft, rfftfreq, xp
7
8
  from ..logger import logger
8
- from .common import (
9
- fmt_pow2,
10
- fmt_time,
11
- fmt_timerange,
12
- is_documented_by,
13
- )
14
- from ..backend import xp, rfftfreq, rfft
15
-
9
+ from .common import fmt_pow2, fmt_time, fmt_timerange, is_documented_by
16
10
  from .plotting import plot_spectrogram, plot_timeseries
17
11
 
18
12
  __all__ = ["TimeSeries"]
@@ -272,9 +266,9 @@ class TimeSeries:
272
266
  sos = butter(
273
267
  bandpass_order, Wn=fmin, btype="highpass", output="sos", fs=self.fs
274
268
  )
275
- window = tukey(self.ND, alpha=tukey_window_alpha)
276
269
  data = self.data.copy()
277
- data = sosfiltfilt(sos, data * window)
270
+ data = sosfiltfilt(sos, data)
271
+ data = data * tukey(self.ND, alpha=tukey_window_alpha)
278
272
  return TimeSeries(data, self.time)
279
273
 
280
274
  def __copy__(self):
@@ -477,13 +477,13 @@ class WaveletMask(Wavelet):
477
477
  A WaveletMask object with the specified restrictions.
478
478
  """
479
479
  self = cls.zeros_from_grid(time_grid, freq_grid)
480
- self.data[
481
- (freq_grid >= frange[0]) & (freq_grid <= frange[1]), :
482
- ] = True
480
+ self.data[(freq_grid >= frange[0]) & (freq_grid <= frange[1]), :] = (
481
+ True
482
+ )
483
483
 
484
484
  for tgap in tgaps:
485
- self.data[
486
- :, (time_grid >= tgap[0]) & (time_grid <= tgap[1])
487
- ] = False
485
+ self.data[:, (time_grid >= tgap[0]) & (time_grid <= tgap[1])] = (
486
+ False
487
+ )
488
488
  self.data = self.data.astype(bool)
489
489
  return self
@@ -1,7 +1,6 @@
1
1
  from typing import Tuple, Union
2
2
 
3
3
  from ..backend import xp
4
-
5
4
  from .frequencyseries import FrequencySeries
6
5
  from .timeseries import TimeSeries
7
6
 
pywavelet/utils.py CHANGED
@@ -71,6 +71,8 @@ def compute_likelihood(
71
71
  p = psd.data
72
72
  if mask is not None:
73
73
  m = mask.mask
74
+ # convert mask to numbers -- 0 for False, 1 for True
75
+ m = m.astype(int)
74
76
  d, h, p = d * m, h * m, p * m
75
77
 
76
78
  return -0.5 * np.nansum((d - h) ** 2 / p)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: pywavelet
3
- Version: 0.2.4
3
+ Version: 0.2.6
4
4
  Summary: WDM wavelet transform your time/freq series!
5
5
  Author-email: Pywavelet Team <avi.vajpeyi@gmail.com>
6
6
  Project-URL: Homepage, https://pywavelet.github.io/pywavelet/
@@ -11,7 +11,7 @@ Classifier: Intended Audience :: Science/Research
11
11
  Classifier: License :: OSI Approved :: MIT License
12
12
  Classifier: Operating System :: OS Independent
13
13
  Classifier: Programming Language :: Python :: 3.8
14
- Requires-Python: >=3.8
14
+ Requires-Python: >=3.10
15
15
  Description-Content-Type: text/x-rst
16
16
  Requires-Dist: numpy
17
17
  Requires-Dist: numba
@@ -21,6 +21,12 @@ Requires-Dist: tqdm
21
21
  Requires-Dist: rich
22
22
  Requires-Dist: rocket-fft
23
23
  Requires-Dist: astropy>=5.2.1
24
+ Requires-Dist: jaxtyping
25
+ Requires-Dist: beartype
26
+ Provides-Extra: jax
27
+ Requires-Dist: jax; extra == "jax"
28
+ Provides-Extra: cupy
29
+ Requires-Dist: cupy; extra == "cupy"
24
30
  Provides-Extra: dev
25
31
  Requires-Dist: pytest>=6.0; extra == "dev"
26
32
  Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
@@ -32,8 +38,7 @@ Requires-Dist: isort; extra == "dev"
32
38
  Requires-Dist: mypy; extra == "dev"
33
39
  Requires-Dist: jupyter-book; extra == "dev"
34
40
  Requires-Dist: GitPython; extra == "dev"
35
- Provides-Extra: jax
36
- Requires-Dist: jax; extra == "jax"
41
+ Requires-Dist: nbconvert; extra == "dev"
37
42
 
38
43
  pywavelet
39
44
  #########
@@ -59,27 +64,33 @@ pywavelet is available on PyPI and can be installed with `pip <https://pip.pypa.
59
64
 
60
65
  $ pip install pywavelet
61
66
 
67
+
68
+ Note: We have transforms availible in numpy, JAX and Cupy.
69
+
70
+
62
71
  For developers
63
72
  --------------
64
73
 
65
- First set up a conda environment with the latest version of python.
74
+ First set up a conda environment with python 3.10
66
75
 
67
76
  .. code-block::
68
77
 
69
- $ conda create -n pywavelet -c conda-forge python=3.12
78
+ $ mamba create -n pywavelet python=3.10
70
79
 
71
80
  .. code-block::
72
81
 
82
+ $ CONDA_OVERRIDE_CUDA=12.4 mamba install "jaxlib=*=*cuda*" jax -c conda-forge
83
+ $ CONDA_OVERRIDE_CUDA=12.4 conda install -c conda-forge cupy-core
73
84
  $ pip install -e ".[dev]"
74
85
  $ pre-commit install
75
86
 
76
87
  Test code
77
88
  ---------
78
89
 
79
- Locate directory /tests from root directory. run
90
+ Locate directory /tests from root directory. run
80
91
 
81
92
  .. code-block::
82
93
 
83
94
  $ pytest .
84
95
 
85
- Hopefully everything should run fine.
96
+ Hopefully everything should run fine.
@@ -0,0 +1,43 @@
1
+ pywavelet/__init__.py,sha256=K7pQ8W2w9d5qwI4KzPdTpRn5-YaUfMpjnJmg7oQnYSM,508
2
+ pywavelet/_version.py,sha256=nObnONsicQ3YX6SG5MVBxmIp5dmRacXDauSqZijWQbY,511
3
+ pywavelet/backend.py,sha256=1AjwqoIlan6vNFZcon_LIVsiPH8HrWQwU3RON7dnjUE,1585
4
+ pywavelet/logger.py,sha256=DyKC-pJ_N9GlVeXL00E1D8hUd8GceBg-pnn7g1YPKcM,391
5
+ pywavelet/utils.py,sha256=FqQ6V41WGHMbLC4wv_1xnwHjOPDVSWnG78sAeqbYtYU,1994
6
+ pywavelet/transforms/__init__.py,sha256=t4cHI8Rd5UnLwqCunr4sCQRmsKhHOnZ5VqkDphhi-VM,784
7
+ pywavelet/transforms/phi_computer.py,sha256=jVxeWtfx5P1H-_HdMsK7xHuINZAjH9bj7cA8CJ98isw,3667
8
+ pywavelet/transforms/cupy/__init__.py,sha256=8BBE6msB071WdstA860a7g64C0aHT2PZsqfEgP6nmkA,336
9
+ pywavelet/transforms/cupy/forward/__init__.py,sha256=E_A8plyfTSKDRXlAAvdiRMTe9f3Y6MbK3pXMHFg8mr0,121
10
+ pywavelet/transforms/cupy/forward/from_freq.py,sha256=GoKpg019o0Ld5QqkHOt8bpzV_w74Nii__y4tIhNcuV4,3513
11
+ pywavelet/transforms/cupy/forward/from_time.py,sha256=Og9l0KurMUdbBPyvZcP1znGimMcKBgzywF0nPLTNBes,1524
12
+ pywavelet/transforms/cupy/forward/main.py,sha256=g2Pl-j4LBg7GLlzzCSoCGuEd6NNCckJ4UvC-Pppky2w,3071
13
+ pywavelet/transforms/cupy/inverse/__init__.py,sha256=J4KIzPzbHNg_8fV_c1MpPq3slSqHQV0j3VFrjfd1Nog,121
14
+ pywavelet/transforms/cupy/inverse/main.py,sha256=5pTtGNNdwlSGDQV4sqGyzUPnmqFUgFOFUFfpqjZx07Q,1608
15
+ pywavelet/transforms/cupy/inverse/to_freq.py,sha256=gpqu5Y65ZvuET5jANp6UAuAamg2PRkpAlaAjWPh7uBk,1835
16
+ pywavelet/transforms/jax/__init__.py,sha256=D_f-JgFAzOIJ-EuQZhTMziD4MT6lVWS3XV9s51Cu7Kg,335
17
+ pywavelet/transforms/jax/forward/__init__.py,sha256=E_A8plyfTSKDRXlAAvdiRMTe9f3Y6MbK3pXMHFg8mr0,121
18
+ pywavelet/transforms/jax/forward/from_freq.py,sha256=XYtRziPD7MCbeKf4HAucQrMzko4T0zmNV7jg5bziVwA,3910
19
+ pywavelet/transforms/jax/forward/from_time.py,sha256=4RZ8-ah0qOMP20i3-xThVWddxa1QTCvZKnGpNAJbb0g,1765
20
+ pywavelet/transforms/jax/forward/main.py,sha256=7gpHUycEclDwlb6KpLqUZoIkhJjPH0sBITBGVqepYAI,3061
21
+ pywavelet/transforms/jax/inverse/__init__.py,sha256=J4KIzPzbHNg_8fV_c1MpPq3slSqHQV0j3VFrjfd1Nog,121
22
+ pywavelet/transforms/jax/inverse/main.py,sha256=_NAoEAjjEzbIcUOEEfriycZW6_a6yhGiKdtpU52H8i8,1568
23
+ pywavelet/transforms/jax/inverse/to_freq.py,sha256=x_Apiob0ZSg7UAhDSyKPxFAZXijWABJxzla526kuD8Y,3184
24
+ pywavelet/transforms/numpy/__init__.py,sha256=1Ibsup9UwMajeZ9NCQ4BN15qZTeJ_EHkgGu8XNFdA18,255
25
+ pywavelet/transforms/numpy/forward/__init__.py,sha256=E_A8plyfTSKDRXlAAvdiRMTe9f3Y6MbK3pXMHFg8mr0,121
26
+ pywavelet/transforms/numpy/forward/from_freq.py,sha256=UNf0mLdaN9XrrHPYIiLEzdAwElReZJHzZtuykSZE9iU,4556
27
+ pywavelet/transforms/numpy/forward/from_time.py,sha256=-Y6VEKwDCYBAHAjLdO46vT-6alpM5fXTgTZ_xkYxqA8,2381
28
+ pywavelet/transforms/numpy/forward/main.py,sha256=M4ELrzDone4XVO54Yf3_khTEFjVaeykES31kwhLubyU,3949
29
+ pywavelet/transforms/numpy/inverse/__init__.py,sha256=J4KIzPzbHNg_8fV_c1MpPq3slSqHQV0j3VFrjfd1Nog,121
30
+ pywavelet/transforms/numpy/inverse/main.py,sha256=3Lxxhh9VnElToaTJHgpWE-BFzKQrGEQFupnoSgJzKfk,2972
31
+ pywavelet/transforms/numpy/inverse/to_freq.py,sha256=lgb0p0M9wuhsB1mjvzqKZXuorhMickvkqO4T0A5bE_E,4914
32
+ pywavelet/transforms/numpy/inverse/to_time.py,sha256=w5vmImdsb_4YeInZtXh0llsThLTxS0tmYDlNGJ-IUew,5080
33
+ pywavelet/types/__init__.py,sha256=5YptzQvYBnRfC8N5lpOBf9I1lzpJ0pw0QMnvIcwP3YI,122
34
+ pywavelet/types/common.py,sha256=_SMmXLrRO0Nw_A7Oa6C10kZAbj8jq9agXx7tMDjnYJg,1277
35
+ pywavelet/types/frequencyseries.py,sha256=tAbZr0vEBCe0MwH7ZjaK00UVupjRNxvjoW9LCMsiiMo,7531
36
+ pywavelet/types/plotting.py,sha256=qjv5IeuSEc9WWkfJYvz1eQRgTKTspWxj4lwB5N69SbU,11002
37
+ pywavelet/types/timeseries.py,sha256=sataMW4BPFqi23h_NBZ_U9-Svuo9pLXVRmUJI6KTXG0,9430
38
+ pywavelet/types/wavelet.py,sha256=lDhpy9bEb_I-YDQbI3elaWuU8l9E2P6wDcuAQONv8lA,13591
39
+ pywavelet/types/wavelet_bins.py,sha256=gBjhWwfjcbbSnbGZVMNUeFFVUo2DVxJS4abDUVCL7ts,1458
40
+ pywavelet-0.2.6.dist-info/METADATA,sha256=WScrhO_gC_5wKwY39T0aI81YBj71xn9O6-MI0GBRucQ,2571
41
+ pywavelet-0.2.6.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
42
+ pywavelet-0.2.6.dist-info/top_level.txt,sha256=g0Ezt0Rg0X-nrd-a0pAXKVRkuWNsF2M9Ynsjb9b2UYQ,10
43
+ pywavelet-0.2.6.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.3.0)
2
+ Generator: setuptools (77.0.3)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,35 +0,0 @@
1
- pywavelet/__init__.py,sha256=zcK3Qj4wTrGZF1rU3aT6yA9LvliAOD4DVOY7gNfHhCI,53
2
- pywavelet/_version.py,sha256=4gL0W4-u58XR5lRLpeoIPrGhcewTk0-527de6uTNmkg,411
3
- pywavelet/backend.py,sha256=SmpgIBHvTO1rtIAQQN_zpVB8i6R-x23FNKJG6_JlrNs,666
4
- pywavelet/logger.py,sha256=DyKC-pJ_N9GlVeXL00E1D8hUd8GceBg-pnn7g1YPKcM,391
5
- pywavelet/utils.py,sha256=l47C643nGlV9q4a0G7wtKzuas0Ou4En2e1FTATCgwlw,1907
6
- pywavelet/transforms/__init__.py,sha256=EYX8glRWojYbrjtbgrjS4vigYTRi7FOtIV3D1UwI5fY,604
7
- pywavelet/transforms/phi_computer.py,sha256=ppFSGJwtNnO2flaiok9ms3WXlAxGQikvA7eNfLgriNQ,4461
8
- pywavelet/transforms/jax/__init__.py,sha256=D_f-JgFAzOIJ-EuQZhTMziD4MT6lVWS3XV9s51Cu7Kg,335
9
- pywavelet/transforms/jax/forward/__init__.py,sha256=E_A8plyfTSKDRXlAAvdiRMTe9f3Y6MbK3pXMHFg8mr0,121
10
- pywavelet/transforms/jax/forward/from_freq.py,sha256=tKEdqPyEvX8ZKVQf16wGxN3d6gkcjm_RtAHQuWHUzy4,3764
11
- pywavelet/transforms/jax/forward/from_time.py,sha256=xNeoZq54B6Gi3TdTTYLr_euaFeJcwpms-lSyCG53AdI,1726
12
- pywavelet/transforms/jax/forward/main.py,sha256=mm0R4m0pXcnzZB0jCckAc4ynG8STH5mldCmHyyU_PGo,3091
13
- pywavelet/transforms/jax/inverse/__init__.py,sha256=J4KIzPzbHNg_8fV_c1MpPq3slSqHQV0j3VFrjfd1Nog,121
14
- pywavelet/transforms/jax/inverse/main.py,sha256=-HVOOBsYo3GJvGNCsQLbNPnt9s14JvbB2bGAd9LOr3A,1647
15
- pywavelet/transforms/jax/inverse/to_freq.py,sha256=ASNARcDBJQr4EizAP_77e5ai36iPwP6hzfvwGbZQ6BM,2295
16
- pywavelet/transforms/numpy/__init__.py,sha256=qFLpGpW3VJSbDp2JpD0Gx7PdwDjH-wrW_aO84ASkIgA,255
17
- pywavelet/transforms/numpy/forward/__init__.py,sha256=E_A8plyfTSKDRXlAAvdiRMTe9f3Y6MbK3pXMHFg8mr0,121
18
- pywavelet/transforms/numpy/forward/from_freq.py,sha256=JmJyjrNSb64WnpP50VZRt0BICP64iZJP5QAZTZoexkw,2675
19
- pywavelet/transforms/numpy/forward/from_time.py,sha256=-Y6VEKwDCYBAHAjLdO46vT-6alpM5fXTgTZ_xkYxqA8,2381
20
- pywavelet/transforms/numpy/forward/main.py,sha256=3y-YCnhpvN7M4N7xy3CVts7n3QQPwDcJ6mkklX1QbFM,3973
21
- pywavelet/transforms/numpy/inverse/__init__.py,sha256=J4KIzPzbHNg_8fV_c1MpPq3slSqHQV0j3VFrjfd1Nog,121
22
- pywavelet/transforms/numpy/inverse/main.py,sha256=-11U5tnDizIssHk824rpYrzbJRl6WFpH6K2KKpVpDnU,2989
23
- pywavelet/transforms/numpy/inverse/to_freq.py,sha256=so_TDbwdS1N8sd1QcpeAEkI10XFDtoFJGohtD4YulZM,2809
24
- pywavelet/transforms/numpy/inverse/to_time.py,sha256=w5vmImdsb_4YeInZtXh0llsThLTxS0tmYDlNGJ-IUew,5080
25
- pywavelet/types/__init__.py,sha256=5YptzQvYBnRfC8N5lpOBf9I1lzpJ0pw0QMnvIcwP3YI,122
26
- pywavelet/types/common.py,sha256=aIcYq-0KOLHnPQjrVbVmw_TQ3Xm5a7xA30rSgwt3rk4,1275
27
- pywavelet/types/frequencyseries.py,sha256=hrtLaIUaRrqXw8l00yFe2tPJwpksDa_4n1z6R8XSPPQ,7531
28
- pywavelet/types/plotting.py,sha256=JNDxeP-fB8U09E90J-rVT-h5yCGA_tGRHtctbgINiRo,10625
29
- pywavelet/types/timeseries.py,sha256=u35bIqFo3QdlQRBEu6maeWA7DePS11LQ6WMiLjZPcWo,9456
30
- pywavelet/types/wavelet.py,sha256=uHJzTS2ZXTRr7I7NHWv3qNjknSBhQUpcED3jM6ti7UM,13587
31
- pywavelet/types/wavelet_bins.py,sha256=GoQGKeZlPc-KbYY7LoxAhB-HI4diHpPcTABBXRfUTLA,1459
32
- pywavelet-0.2.4.dist-info/METADATA,sha256=Thhhz8I2XTKr0mVuf09UpcvjeEGKUnVUX0jxENu6gEQ,2241
33
- pywavelet-0.2.4.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
34
- pywavelet-0.2.4.dist-info/top_level.txt,sha256=g0Ezt0Rg0X-nrd-a0pAXKVRkuWNsF2M9Ynsjb9b2UYQ,10
35
- pywavelet-0.2.4.dist-info/RECORD,,