modulo-vki 2.0.7__py3-none-any.whl → 2.1.0__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.
@@ -25,11 +25,11 @@ def Bound_EXT(S, Ex, boundaries):
25
25
  # Ex=int((Nf-1)/2) # Extension on each size
26
26
  size_Ext = 2 * Ex + len(S) # Compute the size of the extended signal
27
27
  S_extend = np.zeros((int(size_Ext))) # Initialize extended signal
28
- S_extend[Ex:int((size_Ext - Ex))] = S; # Assign the Signal on the zeroes
28
+ S_extend[Ex:int((size_Ext - Ex))] = S # Assign the Signal on the zeroes
29
29
 
30
30
  if boundaries == "reflect":
31
31
  LEFT = np.flip(S[0:Ex]) # Prepare the reflection on the left
32
- RIGHT = np.flip(S[len(S) - Ex:len(S)]) # Prepare the reflectino on the right
32
+ RIGHT = np.flip(S[len(S) - Ex:len(S)]) # Prepare the reflection on the right
33
33
  S_extend[0:Ex] = LEFT
34
34
  S_extend[len(S_extend) - Ex:len(S_extend)] = RIGHT
35
35
  elif boundaries == "nearest":
@@ -90,6 +90,23 @@ def conv_m(K, h, Ex, boundaries):
90
90
  # K_F=K_F1+K_F2
91
91
  return K_F2
92
92
 
93
+ def conv_m_2D(K, h, Ex, boundaries):
94
+
95
+ # Extended K
96
+ K_ext = np.pad(K, Ex, mode=boundaries)
97
+
98
+ # Filtering matrix
99
+ h_mat = np.outer(np.atleast_2d(h).T, np.atleast_2d(h))
100
+
101
+ # Filtering
102
+ K_filt = signal.fftconvolve(K_ext, h_mat, mode='valid')
103
+
104
+ # Interior K
105
+ Ex1 = int((len(K_filt) - len(K)) / 2)
106
+ K_F2 = K_filt[Ex1:(len(K_filt) - Ex1), Ex1:(len(K_filt) - Ex1)]
107
+
108
+ return K_F2
109
+
93
110
 
94
111
  def _loop_gemm(a, b, c=None, chunksize=100):
95
112
  size_i = a.shape[0]
@@ -201,7 +201,7 @@ def Plot_2D_CFD_Cyl(Xg,Yg,U,V,k=10,CL=16,Name='', verbose=False):
201
201
  V_g=V[:,k].reshape(n_y,n_x).T
202
202
  # Prepare the plot
203
203
  fig, ax = plt.subplots(figsize=(6, 3)) # This creates the figure
204
- plt.contourf(Xg,Yg,np.sqrt(U_g**2+V_g**2),30)
204
+ contour = plt.contourf(Xg,Yg,np.sqrt(U_g**2+V_g**2),30)
205
205
  # plt.quiver(Xg,Yg,U_g,V_g,scale=10000)
206
206
  ax.set_aspect('equal') # Set equal aspect ratio
207
207
  ax.set_xlabel('$x[mm]$',fontsize=13)
@@ -229,7 +229,7 @@ def Plot_2D_CFD_Cyl(Xg,Yg,U,V,k=10,CL=16,Name='', verbose=False):
229
229
  return
230
230
 
231
231
 
232
- def Animation_2D_CFD_Cyl(Giff_NAME,D,Xg,Yg,In,Fin,Step):
232
+ def Animation_2D_CFD_Cyl(Giff_NAME,D,Xg,Yg,In,Fin,Step,verbose=False):
233
233
  """
234
234
  The gif file is created from the provided data snapshot
235
235
  """
@@ -243,17 +243,22 @@ def Animation_2D_CFD_Cyl(Giff_NAME,D,Xg,Yg,In,Fin,Step):
243
243
  Fol_Out = 'Gif_Images_temporary'
244
244
  if not os.path.exists(Fol_Out):
245
245
  os.mkdir(Fol_Out)
246
- # Loop to produce the Gifs
246
+ # Loop to produce the Gifs
247
+ if not verbose:
248
+ print('Exporting images...')
247
249
  for k in range(1,n_t,Step):
248
250
  NameOUT = Fol_Out + os.sep + 'Im%03d' % (k) + '.png'
249
- Plot_2D_CFD_Cyl(Xg,Yg,U,V,k=k+In,CL=16,Name=NameOUT)
251
+ Plot_2D_CFD_Cyl(Xg,Yg,U,V,k=k+In,CL=16,Name=NameOUT,verbose=verbose)
250
252
 
251
253
  import imageio # This used for the animation
252
254
  images = []
253
255
 
256
+ if not verbose:
257
+ print('Preparing images...')
254
258
  for k in range(1,n_t,Step):
255
- MEX = 'Preparing Im ' + str(k)
256
- print(MEX)
259
+ if verbose:
260
+ MEX = 'Preparing Im ' + str(k)
261
+ print(MEX)
257
262
  NameOUT = Fol_Out + os.sep + 'Im%03d' % (k) + '.png'
258
263
  images.append(imageio.imread(NameOUT))
259
264
 
@@ -266,7 +271,7 @@ def Animation_2D_CFD_Cyl(Giff_NAME,D,Xg,Yg,In,Fin,Step):
266
271
 
267
272
 
268
273
 
269
- def Plot_Field_TEXT_Cylinder(File,Name_Mesh,Name_FIG):
274
+ def Plot_Field_TEXT_Cylinder(File,Name_Mesh,Name_FIG, show=False):
270
275
  """
271
276
  This function plots the vector field from the TR-PIV in Exercise 4.
272
277
 
@@ -314,8 +319,12 @@ def Plot_Field_TEXT_Cylinder(File,Name_Mesh,Name_FIG):
314
319
  circle = plt.Circle((0,0),2.5,fill=True,color='r',edgecolor='k',alpha=0.5)
315
320
  plt.gcf().gca().add_artist(circle)
316
321
  plt.tight_layout()
317
- plt.savefig(Name_FIG, dpi=200)
318
- plt.show()
322
+ plt.savefig(Name_FIG, dpi=200)
323
+
324
+ if show:
325
+ plt.show()
326
+
327
+ plt.close()
319
328
  print(Name_FIG+' printed')
320
329
  return n_s, Xg, Yg, Vxg, Vyg, X_S, Y_S
321
330
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: modulo_vki
3
- Version: 2.0.7
3
+ Version: 2.1.0
4
4
  Summary: MODULO (MODal mULtiscale pOd) is a software developed at the von Karman Institute to perform Multiscale Modal Analysis of numerical and experimental data.
5
5
  Home-page: https://github.com/mendezVKI/MODULO/tree/master/modulo_python_package/
6
6
  Author: ['R. Poletti', 'L. Schena', 'D. Ninni', 'M. A. Mendez']
@@ -21,6 +21,17 @@ Requires-Dist: ipython
21
21
  Requires-Dist: ipython-genutils
22
22
  Requires-Dist: ipywidgets
23
23
  Requires-Dist: matplotlib
24
+ Dynamic: author
25
+ Dynamic: author-email
26
+ Dynamic: classifier
27
+ Dynamic: description
28
+ Dynamic: description-content-type
29
+ Dynamic: home-page
30
+ Dynamic: license
31
+ Dynamic: license-file
32
+ Dynamic: requires-dist
33
+ Dynamic: requires-python
34
+ Dynamic: summary
24
35
 
25
36
 
26
37
 
@@ -31,17 +42,22 @@ MODULO: a python toolbox for data-driven modal decomposition
31
42
  :target: https://modulo.readthedocs.io/en/latest/?badge=latest
32
43
  :alt: Documentation Status
33
44
 
45
+ |DOI| |PyPI|
46
+
47
+ .. |DOI| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.13939519.svg
48
+ :target: https://doi.org/10.5281/zenodo.13939519
49
+
50
+ .. |PyPI| image:: https://img.shields.io/pypi/v/modulo_vki
51
+ :target: https://pypi.org/project/modulo_vki/
52
+
34
53
  .. raw:: html
35
54
 
36
55
  <div style="text-align: center;">
37
56
  <img src="https://modulo.readthedocs.io/en/latest/_images/modulo_logo.png" alt="Modulo Logo" width="500"/>
38
57
  </div>
39
58
 
40
- **MODULO** is a modal decomposition package developed at the von Karman Institute for Fluid Dynamics (VKI).
41
- It offers a wide range of decomposition techniques, enabling users to select the most suitable method based
42
- on the specific physics of their problem and their desired outcomes. MODULO can natively handle large
43
- datasets efficiently, featuring a memory-saving option that partitions the data and computes the decomposition in
44
- chunks (ninni2020modulo). Additionally, it supports non-uniform meshes through its weighted inner product formulation.
59
+
60
+ **MODULO** is a modal decomposition package developed at the von Karman Institute for Fluid Dynamics (VKI). It offers a wide range of decomposition techniques, allowing users to choose the most appropriate method for their specific problem. MODULO can efficiently handle large datasets natively, thanks to a memory-saving feature that partitions the data and processes the decomposition in chunks (ninni2020modulo). Moreover, it supports non-uniform meshes through a weighted inner product formulation. Currently, MODULO heavily relies on NumPy routines and does not offer additional parallel computing capabilities beyond those naturally provided by NumPy.
45
61
 
46
62
  While the discontinued MATLAB version of MODULO (ninni2020modulo) is accessible in the “Old_Matlab_Implementation” branch,
47
63
  it is no longer maintained. The latest decomposition techniques are exclusively available in the current Python version.
@@ -49,7 +65,6 @@ it is no longer maintained. The latest decomposition techniques are exclusively
49
65
  As a part of the MODULO project, we provide a series of lectures on data-driven modal decomposition, and its applications.
50
66
  These are available at the `MODULO YouTube channel <https://www.youtube.com/@modulompod5682>`_.
51
67
 
52
-
53
68
  .. contents:: Table of contents
54
69
 
55
70
  Modal decompositions
@@ -61,19 +76,20 @@ coordinates, respectively, the modal decomposition can be written as:
61
76
  $D(x_i, t_k) = \\phi(x_i) \\Sigma \\psi(t_k)^T$
62
77
 
63
78
  where $\\phi(x_i)$ is the spatial basis, $\\psi(t_k)$ is the temporal basis, and $\\Sigma$ is the modal coefficients.
64
- Different decompositions employ different basis, such as prescribed Fourier basis ($\\psi_\\mathcal{F}$) for
79
+ Different decompositions employ different bases, such as prescribed Fourier basis ($\\psi_\\mathcal{F}$) for
65
80
  the Discrete Fourier Transform (DFT), or data-driven basis, i.e. tailored on the dataset at hand,
66
81
  for the Proper Orthogonal Decomposition (POD).
67
82
 
68
83
  We refer to (mendez2022statistical, mendez2022generalizedmultiscalemodalanalysis, Mendez_2023) for an introduction to the topic.
69
84
 
70
85
  MODULO currently features the following decompositions:
86
+
71
87
  - Discrete Fourier Transform (DFT) (briggs1995dft)
72
88
  - Proper Orthogonal Decomposition (POD) (sirovich1987turbulence, berkooz1993proper)
73
89
  - Multi-Scale Proper Orthogonal Decomposition (mPOD) (mendez2019multi)
74
90
  - Dynamic Mode Decomposition (DMD) (schmid2010dynamic)
75
- - Spectral Proper Orthogonal Decomposition (SPOD) (csieber2016spectral, towne2018spectral), note that the two are
76
- different formulations, and both are available in MODULO.
91
+ - Spectral Proper Orthogonal Decomposition (SPOD) (csieber2016spectral, towne2018spectral),
92
+ note that the two are different formulations, and both are available in MODULO.
77
93
  - Kernel Proper Orthogonal Decomposition (KPOD) (mika1998kernel)
78
94
 
79
95
  We remind the curious reader to the respective references for a detailed description of each decomposition, and to the
@@ -85,7 +101,7 @@ Release Notes
85
101
  The latest version of MODULO (v2.0) includes the following updates:
86
102
 
87
103
  1. **Faster EIG/SVD algorithms**, using powerful randomized svd solvers from scikit_learn
88
- (see `here<https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html>`_
104
+ (see `here <https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html>`_
89
105
  and `here <https://scikit-learn.org/stable/modules/generated/sklearn.utils.extmath.randomized_svd.html>`_.)
90
106
  It is now possible to select various options as "eig_solver" and "svd_solver",
91
107
  offering different trade-offs in terms of accuracy vs computational time.
@@ -93,29 +109,24 @@ The latest version of MODULO (v2.0) includes the following updates:
93
109
  2. **Computation the POD directly via SVD**, using any of the four "svd_solver" options.
94
110
  This is generally faster but requires more memory.
95
111
 
96
- 1. **Faster subscale estimators for the mPOD:** the previous version used the rank of the correlation matrix in each scale to define
97
- the number of modes to be computed in each portion of the splitting vector before assembling the full basis.
98
- This is computationally very demanding. This estimation has been replaced by a
112
+ 3. **Faster subscale estimators for the mPOD:** the previous version used the rank of the correlation matrix in each scale to define the number of modes to be computed in each portion of the splitting vector before assembling the full basis. This is computationally very demanding. This estimation has been replaced by a
99
113
  frequency-based threshold (i.e. based on the frequency bins within each portion) since one can show that the
100
114
  frequency-based estimator is always more "conservative" than the rank-based estimator.
101
115
 
102
- 1. **Major improvement on the memory saving option**: the previous version of modulo always required in input the matrix D.
116
+ 4. **Major improvement on the memory saving option** : the previous version of modulo always required in input the matrix D.
103
117
  Then, if the memory saving option was active, the matrix was partitioned and stored locally to free the RAM before computing the
104
- correlation matrix (see [this tutorial by D. Ninni](https://www.youtube.com/watch?v=LclxO1WTuao)).
118
+ correlation matrix (see `this tutorial by D. Ninni <https://www.youtube.com/watch?v=LclxO1WTuao>`_).
105
119
  In the new version, it is possible to initialize a modulo object *without* the matrix D (see exercise 5 in the examples).
106
120
  Instead, one can create the partitions without loading the matrix D.
107
121
 
108
- 1. **Implementation of Dynamic Mode Decomposition (DMD)** from (Schmid, P.J 2010)
122
+ 5. **Implementation of Dynamic Mode Decomposition (DMD)** from (Schmid, P.J 2010)
109
123
 
110
- 2. **Implementation of the two Spectral POD formulations**, namely the one from (Sieber et al 2016),
124
+ 6. **Implementation of the two Spectral POD formulations**, namely the one from (Sieber et al 2016),
111
125
  and the one from (Towne et al 2018).
112
126
 
113
- 3. **Implementation of a kernel version of the POD**, in which the correlation matrix is replaced by a kernel matrix.
114
- This is described in Lecture 15 of the course `Hands on Machine Learning for Fluid dynamics 2023 <https://www.vki.ac.be/index.php/events-ls/events/eventdetail/552/-/online-on-site-hands-on-machine-learning-for-fluid-dynamics-2023>`_.
115
- We refer also to: `https://arxiv.org/abs/2208.07746`.
127
+ 7. **Implementation of a kernel version of the POD**, in which the correlation matrix is replaced by a kernel matrix. This is described in Lecture 15 of the course `Hands on Machine Learning for Fluid dynamics 2023 <https://www.vki.ac.be/index.php/events-ls/events/eventdetail/552/-/online-on-site-hands-on-machine-learning-for-fluid-dynamics-2023>`_. We refer also to: `Mendez, 2022 <https://arxiv.org/abs/2208.07746>`_.
116
128
 
117
- 1. **Implementation of a formulation for non-uniform meshes**, using a weighted matrix for all the relevant inner products.
118
- This is currently available only for POD and mPOD but allows for handling data produced from CFD simulation without resampling on a uniform grid (see exercise 4).
129
+ 8. **Implementation of a formulation for non-uniform meshes**, using a weighted matrix for all the relevant inner products. This is currently available only for POD and mPOD but allows for handling data produced from CFD simulation without resampling on a uniform grid (see exercise 4).
119
130
  It can be used both with and without the memory-saving option.
120
131
 
121
132
 
@@ -156,7 +167,7 @@ Documentation
156
167
 
157
168
  The documentation of MODULO is available `here <https://modulo.readthedocs.io/en/latest/intro.html>`_. It
158
169
  contains a comprehensive guide on how to install and use the package, as well as a detailed description of the
159
- decompositions required inputs and outputs. A `list of YouTube videos<https://www.youtube.com/@modulompod5682>`_
170
+ decompositions required inputs and outputs. A `list of YouTube videos <https://www.youtube.com/@modulompod5682>`_
160
171
  is also available to guide the introduce the user to modal decomposition and MODULO.
161
172
 
162
173
  Example
@@ -179,7 +190,7 @@ The following example illustrates how to decompose a data set (D) using the POD
179
190
  m = ModuloVKI(D)
180
191
 
181
192
  # Compute the POD decomposition
182
- phi_POD, Sigma_POD, psi_POD = m.Compute_POD_K()
193
+ phi_POD, Sigma_POD, psi_POD = m.POD()
183
194
 
184
195
  which returns the spatial basis ($\phi$), the temporal basis ($\psi$), and the modal
185
196
  amplitudes ($\Sigma$) of the POD decomposition.
@@ -202,7 +213,7 @@ by the user (refer to `examples/ex_04_Memory_Saving.py`).
202
213
  m = ModuloVKI(D, N_PARTITIONS=10)
203
214
 
204
215
  # Compute the POD decomposition
205
- phi_POD, Sigma_POD, psi_POD = m.Compute_POD_K()
216
+ phi_POD, Sigma_POD, psi_POD = m.POD()
206
217
 
207
218
  Example 3: non-uniform grid
208
219
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -230,7 +241,58 @@ you can use the weighted inner product formulation (refer to `examples/ex_05_non
230
241
  m = ModuloVKI(D, weights=weights)
231
242
 
232
243
  # Compute the POD decomposition
233
- phi_POD, Sigma_POD, psi_POD = m.Compute_POD_K()
244
+ phi_POD, Sigma_POD, psi_POD = m.POD()
245
+
246
+ Computational Cost Estimates
247
+ ----------------------------
248
+ We here provide a rough estimate of the amoung of RAM required to decompose a test case with and without the memory saving option.
249
+ This option reduces the memory usage at the cost of increasing the computational time (see https://www.youtube.com/watch?v=LclxO1WTuao)
250
+
251
+ Given a dataset $D \\in \\mathbb{R}^{n_s \\times n_t}$, we consider the computation of $n_r$ modes. When using the memory saving option, we refer to
252
+ $n_t' = n_t / n_p$ as the number of time steps in each partition, and to $n_s' = n_s / n_p$ as the number of spatial points in each partition.
253
+
254
+ .. list-table::
255
+ :header-rows: 1
256
+
257
+ * -
258
+ - Phase 1: $D$
259
+ - Phase 2: $K$
260
+ - Phase 3: $\\Psi$
261
+ - Phase 4: $\\Phi$
262
+ * - No Memory Saving
263
+ - $n_s \\times n_t$
264
+ - $n_t^2$
265
+ - $n_t^2 + n_t \\times n_r$
266
+ - $n_s \\times n_t + n_t \\times n_r + n_s \\times n_r$
267
+ * - Memory Saving
268
+ - /
269
+ - $n_s \\times n_t' + n_t' \\times n_t'$
270
+ - $n_t^2 + n_t \\times n_r$
271
+ - $n_s \\times n_t' + n_s' \\times n_t + n_s \\times n_r$
272
+
273
+ If the memory saving option is active, the memory requirements are mostly linked to the storage of the correlation matrix $K$ in Phase 2.
274
+ This table can be used to estimate if a dataset is too large for the available RAM, recalling that data in single precision requires 4 bytes (or 32 bits).
275
+
276
+ For example, for a dataset with n_s=1 000 000 and n_t = 5000 the following table estimates the RAM required in the two cases, considering n_b=10 partitions in the case of memory saving:
277
+
278
+ .. list-table::
279
+ :header-rows: 1
280
+
281
+ * -
282
+ - Phase 1: $D$
283
+ - Phase 2: $K$
284
+ - Phase 3: $\\Psi$
285
+ - Phase 4: $\\Phi$
286
+ * - No Memory Saving
287
+ - 18.6 GB
288
+ - 0.093 GB
289
+ - ≈0.112 GB
290
+ - ≈22.39 GB
291
+ * - Memory Saving
292
+ - /
293
+ - ≈1.86 GB
294
+ - ≈ 0.0026 GB
295
+ - ≈ 4.20 GB
234
296
 
235
297
 
236
298
 
@@ -239,7 +301,18 @@ Community guidelines
239
301
 
240
302
  Contributing to MODULO
241
303
  ^^^^^^^^^^^^^^^^^^^^^^^
242
- We welcome contributions to MODULO. To create a new feature, please submit a pull request, specifying the proposed changes and
304
+ We welcome contributions to MODULO.
305
+
306
+ It is recommended to perform a shallow clone of the repository to avoid downloading the entire history of the project:
307
+
308
+ .. code-block:: bash
309
+
310
+ $ git clone --depth 1 https://github.com/mendezVKI/MODULO.git
311
+
312
+ This will download only the latest version of the repository, which is sufficient for contributing to the project, and will save
313
+ you time and disk space.
314
+
315
+ To create a new feature, please submit a pull request, specifying the proposed changes and
243
316
  providing an example of how to use the new feature (that will be included in the `examples/` folder).
244
317
 
245
318
  The pull request will be reviewed by the MODULO team before being merged into the main branch, and your contribution duly acknowledged.
@@ -250,11 +323,31 @@ If you find a bug, or you encounter unexpected behaviour, please open an issue o
250
323
 
251
324
  Ask for help
252
325
  ^^^^^^^^^^^^
326
+ If you have troubles using MODULO, or you need help with a specific decomposition, please open an issue on the MODULO GitHub repository.
253
327
 
254
328
  Citation
255
329
  ---------
256
330
  If you use MODULO in your research, please cite it as follows:
257
331
 
332
+ ``Poletti, R., Schena, L., Ninni, D. Mendez, M. A. (2024). MODULO: A Python toolbox for data-driven modal decomposition. Journal of Open Source Software, 9(102), 6753, https://doi.org/10.21105/joss.06753
333
+
334
+
335
+ .. code-block:: text
336
+
337
+ @article{Poletti2024,
338
+ doi = {10.21105/joss.06753},
339
+ url = {https://doi.org/10.21105/joss.06753},
340
+ year = {2024},
341
+ publisher = {The Open Journal},
342
+ volume = {9},
343
+ number = {102},
344
+ pages = {6753},
345
+ author = {R. Poletti and L. Schena and D. Ninni and M. A. Mendez},
346
+ title = {MODULO: A Python toolbox for data-driven modal decomposition},
347
+ journal = {Journal of Open Source Software} }
348
+
349
+ and
350
+
258
351
  ``Ninni, D., & Mendez, M. A. (2020). MODULO: A software for Multiscale Proper Orthogonal Decomposition of data. SoftwareX, 12, 100622.``
259
352
 
260
353
  .. code-block:: text
@@ -269,7 +362,7 @@ If you use MODULO in your research, please cite it as follows:
269
362
  publisher={Elsevier}
270
363
  }
271
364
 
272
- We are currently working on a Journal of Open Source article that will be available soon.
365
+
273
366
 
274
367
  References
275
368
  ----------
@@ -0,0 +1,26 @@
1
+ modulo_vki/__init__.py,sha256=AOjmeFjHj69m45iZzfTHM6-SLUelgKdGeu3VdSg9hIo,39
2
+ modulo_vki/modulo.py,sha256=OYMLteELmAHyhfByCoy2Vqg4h7bUMsgbmIDF7jUXf3A,38261
3
+ modulo_vki/modulo_old.py,sha256=3r_BBYQfbmZWGDyPukyJTVYVVcAVuEE0CmREEJkzsxU,59413
4
+ modulo_vki/core/__init__.py,sha256=y9mIqtmSg3o8TXMqFxoiMCoMSle6mK0LBrvNJCVM1Zg,226
5
+ modulo_vki/core/_dft.py,sha256=W98vC4HR1fivZjYRQXrFKV7RBa-O3RSRwq-nCKoxqjQ,4374
6
+ modulo_vki/core/_dmd_s.py,sha256=f3DKFlWdUS33-MrCFuL93nvI3VDVwD9DrEiDpCrNKwI,2934
7
+ modulo_vki/core/_k_matrix.py,sha256=ECDau3hh80gmSTCvp7-GXtLn0QBThYz5b-A3dgHHZiY,7004
8
+ modulo_vki/core/_mpod_space.py,sha256=0Om-kMQV5n5oI67Ef5ZuXtvBDaRePMVBQYfhJ-_hK0E,7327
9
+ modulo_vki/core/_mpod_time.py,sha256=-QhLyOEAKW-E8JPhPgQETfd153Xzc-TASiJyfH-VdG0,9848
10
+ modulo_vki/core/_pod_space.py,sha256=A3dfv4Nzs9fx3qwOdlJR5HwyyfI-QcVer8P83xqa_C4,6983
11
+ modulo_vki/core/_pod_time.py,sha256=JtiFGYFV-tBKTWHWHW8zynMoLt2q8bD1bd1LP9pyvjo,2169
12
+ modulo_vki/core/_spod_s.py,sha256=rxXSsNdSTLv3sjvlUErw3xjHk0eF8H7IkSJr5nMQ8Vo,4149
13
+ modulo_vki/core/_spod_t.py,sha256=csftCPRSqs-OghQa8l0mRDL7cy5eXXSCnW8O4pnXTCY,3866
14
+ modulo_vki/core/spatial_structures.py,sha256=65xh3zD3ekjRYUeRd2KcOYzPurpua7qDf0AysY-X8hE,14712
15
+ modulo_vki/core/temporal_structures.py,sha256=0DQEdE9ssTnnfIC86VZPsNlym6fsjRAboPHHnv-9CI4,10645
16
+ modulo_vki/core/utils.py,sha256=Ac9Im9knlbZRByP6Qgv-LCDt5zEC8PbyidqXzVdeYtQ,17889
17
+ modulo_vki/utils/__init__.py,sha256=F5yy5R19dONK9oaBEpKzylorVJNcjT2kiJ5Og-ZX1ek,94
18
+ modulo_vki/utils/_plots.py,sha256=m43t08cVq-TY0BW0YPqT71hN-54hBphIYKZEn8Kw16E,1453
19
+ modulo_vki/utils/_utils.py,sha256=WFD7nwjSzVHpevVwTEvMdjAmcbeqwoXT9M48tIIniJw,14355
20
+ modulo_vki/utils/others.py,sha256=26ES5EmsLhwkvcXTwNhDMkblGrxoWepX5c9TXeLTRWg,17336
21
+ modulo_vki/utils/read_db.py,sha256=lJFauxJxS0_mYoxrbn-43UqZjOkr-qb9f6RTUq4IxZU,15149
22
+ modulo_vki-2.1.0.dist-info/licenses/LICENSE,sha256=5TivriXFErrYrJgBq3M72kHNHqtSiCft3xESM1zHc0k,1091
23
+ modulo_vki-2.1.0.dist-info/METADATA,sha256=DwFf-uEygrIts5jdauD3tnjELaecgAKLsDr4uPO_haM,18201
24
+ modulo_vki-2.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
25
+ modulo_vki-2.1.0.dist-info/top_level.txt,sha256=4PA4AmafKU6M7us7gvt_Q976Khx3qjNUEThRRM5zxeA,11
26
+ modulo_vki-2.1.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.3.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,22 +0,0 @@
1
- modulo_vki/__init__.py,sha256=wKu93pAmJcEzH5iKpXZ6rguM43RdI9C-4W4r8frvpc0,594
2
- modulo_vki/modulo.py,sha256=j6cdcDcHR8omT9i-FSKzRSwh_dT4PbKM1RN35NnVmU0,37654
3
- modulo_vki/core/__init__.py,sha256=y9mIqtmSg3o8TXMqFxoiMCoMSle6mK0LBrvNJCVM1Zg,226
4
- modulo_vki/core/_dft.py,sha256=Sq-vH8DlypAjHEGfWBAzBZp7DqKMCQ9G82QwdbYo-vs,2285
5
- modulo_vki/core/_dmd_s.py,sha256=lD7COE1Zinxyjd4IZl0MxT4XtqKM9JtXLL4U26MbtFc,2678
6
- modulo_vki/core/_k_matrix.py,sha256=SxS5esKl8ifMtTYWWeX437UWADKB3fW4ozKGryxVHpM,3687
7
- modulo_vki/core/_mpod_space.py,sha256=0Om-kMQV5n5oI67Ef5ZuXtvBDaRePMVBQYfhJ-_hK0E,7327
8
- modulo_vki/core/_mpod_time.py,sha256=ItlFTEl-uhj76aIpHpq8U2-vokTnPiE3PL60RKHUYlM,8498
9
- modulo_vki/core/_pod_space.py,sha256=l-Fbcg0JdnOMb_jyKwFyM8YeanXxWa8EvwEdOs5QV6U,6960
10
- modulo_vki/core/_pod_time.py,sha256=xWEOX6pO7Cpx1Vm7vF7X4YSORMNuAOpJyfpJiG-foTI,2144
11
- modulo_vki/core/_spod_s.py,sha256=rxXSsNdSTLv3sjvlUErw3xjHk0eF8H7IkSJr5nMQ8Vo,4149
12
- modulo_vki/core/_spod_t.py,sha256=csftCPRSqs-OghQa8l0mRDL7cy5eXXSCnW8O4pnXTCY,3866
13
- modulo_vki/utils/__init__.py,sha256=F5yy5R19dONK9oaBEpKzylorVJNcjT2kiJ5Og-ZX1ek,94
14
- modulo_vki/utils/_plots.py,sha256=m43t08cVq-TY0BW0YPqT71hN-54hBphIYKZEn8Kw16E,1453
15
- modulo_vki/utils/_utils.py,sha256=5-keBtdW6Z-QmUvgX2ITWOIddsdn0svHudynUXkc3ag,13935
16
- modulo_vki/utils/others.py,sha256=4VOfB5Xf-lYYdh2qFDXK3Oy7u4xgvjzTgidNTlg2qg0,17101
17
- modulo_vki/utils/read_db.py,sha256=lJFauxJxS0_mYoxrbn-43UqZjOkr-qb9f6RTUq4IxZU,15149
18
- modulo_vki-2.0.7.dist-info/LICENSE,sha256=5TivriXFErrYrJgBq3M72kHNHqtSiCft3xESM1zHc0k,1091
19
- modulo_vki-2.0.7.dist-info/METADATA,sha256=6CuUQwoompNn5fy8b2dfI7xRN31xtfItgYGo9HbMqQo,14572
20
- modulo_vki-2.0.7.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
21
- modulo_vki-2.0.7.dist-info/top_level.txt,sha256=4PA4AmafKU6M7us7gvt_Q976Khx3qjNUEThRRM5zxeA,11
22
- modulo_vki-2.0.7.dist-info/RECORD,,