screamlab 0.1.0__py3-none-any.whl → 0.3.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.
Binary file
Binary file
Binary file
screamlab/dataset.py CHANGED
@@ -12,6 +12,7 @@ Classes:
12
12
 
13
13
  """
14
14
 
15
+ import sys
15
16
  from datetime import datetime
16
17
  import numpy as np
17
18
  from screamlab import io, utils, settings, functions
@@ -66,6 +67,7 @@ class Dataset:
66
67
  print(
67
68
  f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}: Start buildup fit."
68
69
  )
70
+
69
71
  self._start_buildup_fit()
70
72
  print(
71
73
  f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}: "
@@ -86,6 +88,7 @@ class Dataset:
86
88
  fitting_type="voigt",
87
89
  peak_sign="-",
88
90
  line_broadening=None,
91
+ integration_range=None,
89
92
  ):
90
93
  """
91
94
  Adds a peak to the ds.
@@ -94,7 +97,7 @@ class Dataset:
94
97
  ----------
95
98
  center_of_peak (float): Peak position in ppm (chemical shift).
96
99
  peak_label (str, optional): Custom label. Defaults to "Peak_at_<ppm>_ppm".
97
- fitting_type (str, optional): Peak shape: "gauss", "lorentz", or "voigt" (default).
100
+ fitting_type (str, optional): Peak shape: "gauss", "lorentz", or "voigt" (default).
98
101
  peak_sign (str, optional): "+" for upward, "-" for downward peaks. Defaults to "+".
99
102
  line_broadening (dict, optional): Dict with "sigma" and "gamma" keys for line width.
100
103
  Defaults to {"sigma": {"min": 0, "max": 3}, "gamma": {"min": 0, "max": 3}}.
@@ -109,6 +112,7 @@ class Dataset:
109
112
  peak.fitting_type = fitting_type
110
113
  peak.peak_sign = peak_sign
111
114
  peak.line_broadening = line_broadening
115
+ peak.integration_range = integration_range
112
116
 
113
117
  def _read_in_data_from_topspin(self):
114
118
  """Reads and imports data from TopSpin."""
@@ -132,7 +136,7 @@ class Dataset:
132
136
 
133
137
  def _calculate_peak_intensities(self):
134
138
  """Calculates peak intensities based on fitting methods."""
135
- if self.props.prefit:
139
+ if self.props.prefit and self.props.spectrum_fit_type != "numint":
136
140
  print(
137
141
  f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}: Start prefit."
138
142
  )
@@ -148,7 +152,7 @@ class Dataset:
148
152
  result = self.fitter.fit()
149
153
  self.lmfit_result_handler.global_fit = result
150
154
  self._get_intensities(result)
151
- if "global" == self.props.spectrum_fit_type:
155
+ elif "global" == self.props.spectrum_fit_type:
152
156
  print(
153
157
  f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}: Start global fit."
154
158
  )
@@ -156,6 +160,15 @@ class Dataset:
156
160
  result = self.fitter.fit()
157
161
  self.lmfit_result_handler.global_fit = result
158
162
  self._get_intensities(result)
163
+ elif "numint" == self.props.spectrum_fit_type:
164
+ print(
165
+ f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}: Start integration."
166
+ )
167
+ self._set_integration_calc()
168
+ result = self.fitter.fit()
169
+ self._get_intensities(result)
170
+ else:
171
+ sys.exit()
159
172
 
160
173
  def _start_buildup_fit(self):
161
174
  """Performs buildup fitting using the appropriate fitter classes."""
@@ -187,10 +200,18 @@ class Dataset:
187
200
  """Sets up a global fitter for all spectra."""
188
201
  self.fitter = utils.GlobalFitter(self)
189
202
 
203
+ def _set_integration_calc(self):
204
+ self.fitter = utils.NumericalIntegration(self)
205
+
190
206
  def _get_intensities(self, result):
191
207
  """Extracts intensity values from the fitting results."""
192
208
  if isinstance(
193
- self.fitter, (utils.IndependentFitter, utils.GlobalFitter)
209
+ self.fitter,
210
+ (
211
+ utils.IndependentFitter,
212
+ utils.GlobalFitter,
213
+ utils.NumericalIntegration,
214
+ ),
194
215
  ):
195
216
  for peak in self.peak_list:
196
217
  peak.buildup_vals = (result, self.spectra)
@@ -257,6 +278,7 @@ class Peak:
257
278
  self._line_broadening = None
258
279
  self._line_broadening_init = None
259
280
  self._buildup_vals = None
281
+ self._integration_range = None
260
282
 
261
283
  def __str__(self):
262
284
  """
@@ -264,6 +286,7 @@ class Peak:
264
286
 
265
287
  :return: A string describing the peak's attributes.
266
288
  """
289
+
267
290
  return (
268
291
  f"Peak center: {self.peak_center}\n"
269
292
  f"Peak label: {self.peak_label}\n"
@@ -277,6 +300,17 @@ class Peak:
277
300
  f" {self._format_fitting_range('')}"
278
301
  )
279
302
 
303
+ def to_string(self, spectrum_fit_type):
304
+ if spectrum_fit_type == "numint":
305
+ return (
306
+ f"Peak center: {self.peak_center} ppm\n"
307
+ f"Peak label: {self.peak_label}\n"
308
+ f"Peak sign: {self.peak_sign}\n"
309
+ f"Numerical integration range: {self.integration_range} ppm\n"
310
+ )
311
+ else:
312
+ return str(self)
313
+
280
314
  def _format_fitting_range(self, fit_type):
281
315
  a_max = "0 and inf" if self.peak_sign == "+" else "-inf and 0"
282
316
  lb = ""
@@ -297,6 +331,34 @@ class Peak:
297
331
  f"{lb}"
298
332
  )
299
333
 
334
+ @property
335
+ def integration_range(self) -> list:
336
+ """
337
+ Gets the integration range.
338
+
339
+ :return:
340
+ """
341
+ return self._integration_range
342
+
343
+ @integration_range.setter
344
+ def integration_range(self, args):
345
+ """
346
+ Sets the integration range.
347
+
348
+ :param args: List containing the integration range for numerical integragtion.
349
+ """
350
+ if args is not None:
351
+ if (
352
+ not isinstance(args, list)
353
+ or len(args) != 2
354
+ or not all(isinstance(e, (int, float)) for e in args)
355
+ ):
356
+ raise TypeError(
357
+ "Integration range must be a list of two numbers or None."
358
+ )
359
+
360
+ self._integration_range = args
361
+
300
362
  @property
301
363
  def buildup_vals(self) -> list:
302
364
  """
@@ -314,8 +376,14 @@ class Peak:
314
376
  :param args: Tuple containing result and spectra.
315
377
  """
316
378
  result, spectra = args
379
+
317
380
  self._buildup_vals = BuildupList()
318
- self._buildup_vals.set_vals(result, spectra, self.peak_label)
381
+ if isinstance(result, dict):
382
+ self._buildup_vals.set_num_int_vals(
383
+ result[self], spectra, self.peak_label
384
+ )
385
+ else:
386
+ self._buildup_vals.set_vals(result, spectra, self.peak_label)
319
387
 
320
388
  @property
321
389
  def line_broadening(self) -> str:
@@ -600,6 +668,21 @@ class BuildupList:
600
668
  self._set_intensity(result, label, spectra)
601
669
  self._sort_lists()
602
670
 
671
+ def set_num_int_vals(self, result, spectra, label):
672
+ """
673
+ Sets buildup values from numerical integration.
674
+
675
+ Attributes
676
+ ----------
677
+ result (list): Intensity values
678
+ spectra (list): Spectrum objects used with result to compute buildup.
679
+ label (str): Peak label used to filter relevant parameters in result.
680
+
681
+ """
682
+ self._set_tpol(spectra)
683
+ self.intensity = result
684
+ self._sort_lists()
685
+
603
686
  def _set_tpol(self, spectra):
604
687
  self.tpol = [s.tpol for s in spectra]
605
688
 
screamlab/io.py CHANGED
@@ -126,7 +126,7 @@ class ScreamImporter(TopspinImporter):
126
126
 
127
127
  def _set_number_of_scans(self):
128
128
  """Set the number of scans for the last spectrum in the ds."""
129
- with open(rf"{self.file}/acqu", "r", encoding="utf-8") as acqu_file:
129
+ with open(rf"{self.file}/acqus", "r", encoding="utf-8") as acqu_file:
130
130
  for acqu_line in acqu_file:
131
131
  if "##$NS=" in acqu_line:
132
132
  self._dataset.spectra[-1].number_of_scans = int(
@@ -258,18 +258,29 @@ class Exporter:
258
258
  """
259
259
  self._print_report()
260
260
  self._plot_topspin_data()
261
- self._plot_global_all_together()
262
- if self.dataset.props.prefit:
261
+ if self.dataset.props.spectrum_fit_type != "numint":
262
+ self._plot_global_all_together()
263
+ if (
264
+ self.dataset.props.prefit
265
+ and self.dataset.props.spectrum_fit_type != "numint"
266
+ ):
263
267
  self._plot_prefit()
264
268
  self._print_lmfit_prefit_report()
265
- if "global" in self.dataset.props.spectrum_fit_type:
269
+ if (
270
+ "global" in self.dataset.props.spectrum_fit_type
271
+ and self.dataset.props.spectrum_fit_type != "numint"
272
+ ):
266
273
  self._plot_global_each_individual()
267
- if "individual" in self.dataset.props.spectrum_fit_type:
274
+ if (
275
+ "individual" in self.dataset.props.spectrum_fit_type
276
+ and self.dataset.props.spectrum_fit_type != "numint"
277
+ ):
268
278
  self._plot_global_each_individual()
269
279
  for buildup_type in self.dataset.props.buildup_types:
270
280
  self._plot_buildup(buildup_type)
271
- self._write_global_fit_results_to_semicolon_separated_file()
272
- self._write_buildup_fit_to_semicolon_separated_file()
281
+ if self.dataset.props.spectrum_fit_type != "numint":
282
+ self._write_global_fit_results_to_semicolon_separated_file()
283
+ self._write_buildup_fit_to_semicolon_separated_file()
273
284
  self._csv_output()
274
285
 
275
286
  def _plot_topspin_data(self):
@@ -572,15 +583,22 @@ class Exporter:
572
583
  f.write("[[Peaks]]\n")
573
584
  for peak_nr, peak in enumerate(self.dataset.peak_list):
574
585
  f.write(f"[Peak {peak_nr + 1}]\n")
575
- f.write(str(peak))
586
+ f.write(peak.to_string(self.dataset.props.spectrum_fit_type))
576
587
  f.write("[[Prefit]]\n")
577
- if self.dataset.props.prefit:
588
+ if (
589
+ self.dataset.props.prefit
590
+ and self.dataset.props.spectrum_fit_type != "numint"
591
+ ):
578
592
  self._get_prefit_string(f)
579
593
  else:
580
594
  f.write("No prefit performed.\n")
581
595
 
582
- f.write("[[Global fit results]]\n")
583
- self._print_global_fit_results(f)
596
+ if self.dataset.props.spectrum_fit_type != "numint":
597
+ f.write("[[Spectral deconvolution results]]\n")
598
+ self._print_global_fit_results(f)
599
+ else:
600
+ f.write("[[Numerical integration results]]\n")
601
+ self._print_global_fit_results_numint(f)
584
602
  f.write("[[Buildup fit results]]\n")
585
603
  self._print_buildup(f)
586
604
 
@@ -614,6 +632,28 @@ class Exporter:
614
632
  + "\n"
615
633
  )
616
634
 
635
+ def _print_global_fit_results_numint(self, f):
636
+ header = ["Label", "Time", "Integral"]
637
+ column_widths = [25, 12, 10]
638
+ f.write(
639
+ "".join(f"{h:<{w}}" for h, w in zip(header, column_widths)) + "\n"
640
+ )
641
+ for peak_nr, peak in enumerate(self.dataset.peak_list):
642
+ for integral_nr, integral in enumerate(
643
+ peak.buildup_vals.intensity
644
+ ):
645
+ line = []
646
+ if integral_nr == 0:
647
+ line.append(peak.peak_label)
648
+ else:
649
+ line.append(" ")
650
+ line.append(peak.buildup_vals.tpol[integral_nr])
651
+ line.append(round(integral, 4))
652
+ f.write(
653
+ "".join(f"{h:<{w}}" for h, w in zip(line, column_widths))
654
+ + "\n"
655
+ )
656
+
617
657
  def _print_global_fit_results(self, f):
618
658
  valdict = screamlab.functions.generate_spectra_param_dict(
619
659
  self.dataset.lmfit_result_handler.global_fit.params
screamlab/settings.py CHANGED
@@ -83,6 +83,8 @@ class Properties:
83
83
  def subspec(self, value: Any):
84
84
  """Sets list for subspectrum"""
85
85
  if value is not None:
86
+ if len(value) != 2:
87
+ sys.exit("Error: subspec requires two floats")
86
88
  self._subspec = value
87
89
  else:
88
90
  self._subspec = []
@@ -181,7 +183,7 @@ class Properties:
181
183
  """
182
184
  str, optional: A list specifying the spectrum fit type
183
185
 
184
- Options supporded: "global","independent".
186
+ Options supporded: "global","independent, "numint".
185
187
 
186
188
  """
187
189
  return self._spectrum_fit_type
@@ -189,10 +191,7 @@ class Properties:
189
191
  @spectrum_fit_type.setter
190
192
  def spectrum_fit_type(self, value: Any):
191
193
  """Sets the spectrum fit type"""
192
- allowed_values = {
193
- "global",
194
- "individual",
195
- }
194
+ allowed_values = {"global", "individual", "numint"}
196
195
  if not isinstance(value, str):
197
196
  raise TypeError(
198
197
  f"Expected 'spectrum_fit_type' to be of type 'str', got"
screamlab/utils.py CHANGED
@@ -33,7 +33,7 @@ class Fitter:
33
33
  """
34
34
  Base class for spectral fitting using `lmfit`.
35
35
 
36
- This class handles parameter initialization and spectral fitting for a ds.
36
+ This class handles parameter initialization and spectral fitting for a dataset.
37
37
 
38
38
  Attributes
39
39
  ----------
@@ -44,7 +44,7 @@ class Fitter:
44
44
 
45
45
  def __init__(self, dataset):
46
46
  """
47
- Initializes the Fitter with a ds.
47
+ Initializes the Fitter with a dataset.
48
48
 
49
49
  Args
50
50
  ----
@@ -194,8 +194,8 @@ class Fitter:
194
194
  return {
195
195
  "name": f"{peak.peak_label}_cen_{nr}",
196
196
  "value": peak.peak_center,
197
- "min": peak.peak_center - 20,
198
- "max": peak.peak_center + 20,
197
+ "min": peak.peak_center - 1,
198
+ "max": peak.peak_center + 1,
199
199
  }
200
200
 
201
201
  def _get_lw_dict(self, peak, nr, lw):
@@ -281,6 +281,36 @@ class Prefitter(Fitter):
281
281
  return result
282
282
 
283
283
 
284
+ class NumericalIntegration(Fitter):
285
+
286
+ def fit(self):
287
+ integrals = dict()
288
+ for spectrum in self.dataset.spectra:
289
+ for peak in self.dataset.peak_list:
290
+ if peak not in integrals:
291
+ integrals[peak] = []
292
+ self._check_integration_range_in_spectra(spectrum, peak)
293
+ subspec_x_axis, subspec_y_axis = functions.generate_subspec(
294
+ spectrum, peak.integration_range
295
+ )
296
+ integrals[peak].append(
297
+ np.trapz(subspec_y_axis[::-1], subspec_x_axis[::-1])
298
+ )
299
+ return integrals
300
+
301
+ def _check_integration_range_in_spectra(self, spectrum, peak):
302
+ for integration_boundary in peak.integration_range:
303
+ if not (
304
+ min(spectrum.x_axis)
305
+ <= integration_boundary
306
+ <= max(spectrum.x_axis)
307
+ ):
308
+ raise ValueError(
309
+ f"Integration boundary {integration_boundary} is outside the spectrum "
310
+ f"range ({min(spectrum.x_axis)} – {max(spectrum.x_axis)})."
311
+ )
312
+
313
+
284
314
  class GlobalFitter(Fitter):
285
315
  """
286
316
  Global fit over all spectra at different polarization times.
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: screamlab
3
- Version: 0.1.0
3
+ Version: 0.3.0
4
4
  Summary: Package for reproducible evaluation of SCREAM-DNP data.
5
5
  Home-page: https://github.com/FlorianTaube/screamlab
6
6
  Author: Florian Taube
7
7
  Author-email: florian.taube@uni-rostock.de
8
8
  License: BSD
9
- Project-URL: Documentation, https://github.com/FlorianTaube/screamlab/docs
9
+ Project-URL: Documentation, https://screamlab.readthedocs.io
10
10
  Project-URL: Source, https://github.com/FlorianTaube/screamlab/screamlab
11
11
  Keywords: Buildup Time Calculator,NMR,DNP,SCREAM_DNP,TopspinExport
12
12
  Classifier: Programming Language :: Python :: 3
@@ -0,0 +1,30 @@
1
+ screamlab/__init__.py,sha256=M2vfzk7vI3qvlxE2uIHyGYmPSrFYNUacFjkjiLX00wc,63
2
+ screamlab/dataset.py,sha256=HtWGXm8-M5WFpp_MXHzgKC4lA3G6IUMbGtKgYIMPRzU,25153
3
+ screamlab/functions.py,sha256=vq6YseAt6L0YlduI6LV3_WBcLhFaOqDRGDIIDaZ3kfc,11398
4
+ screamlab/io.py,sha256=Kz-aYxDO9NlADyloxOIFCCmmi0q-jUhFVTMgf9e6L4k,39675
5
+ screamlab/settings.py,sha256=tWcddGbyxXsqvpIc8t9XqGm7XIJXF0QomcG-pIfcfGE,9208
6
+ screamlab/utils.py,sha256=7ndgebGlySfSpCV_M3i3zBNXt_c98XzAWBpO6fmJVfI,26687
7
+ screamlab/__pycache__/__init__.cpython-310.pyc,sha256=nGadfOt1WUjQxMQAWhkaJ8HQIBoFYgJOXOcou6xtrJ4,245
8
+ screamlab/__pycache__/__init__.cpython-312.pyc,sha256=Vo2caaR8VoJ8_NleXq-XOrPKFsFfwxsYJtyJjRxMaAQ,253
9
+ screamlab/__pycache__/__init__.cpython-313.pyc,sha256=yQf9pPv0AH2e55exkKjAhkP7dXZn17lnMgudh9XDnxo,249
10
+ screamlab/__pycache__/__init__.cpython-38.pyc,sha256=M5eZ95kmsA8r__ZH_prnNqi--MGl8WclL9g0yUXGTAo,176
11
+ screamlab/__pycache__/dataset.cpython-310.pyc,sha256=eO_iBA8T-xSwzrnGmDXy4fLz1zj6lnOs3rwjYaIOd8s,23655
12
+ screamlab/__pycache__/dataset.cpython-312.pyc,sha256=6I6pajXpcAGzgMMWz8Uz8RBFvHhamr8ldh4LYvgmVHY,29658
13
+ screamlab/__pycache__/dataset.cpython-313.pyc,sha256=Mp6CDUEaUCr0CA9KXkLy5kaGP9KI223IU8Q2-pDgd_w,32121
14
+ screamlab/__pycache__/functions.cpython-310.pyc,sha256=hp35_6sD8KhcrFmPTdbKfWozvlb88jryauqU_-kofP4,10218
15
+ screamlab/__pycache__/functions.cpython-312.pyc,sha256=3XGaxzxxkM11879B0tD2igT9kx-_s3lk1fhABYwIPec,13136
16
+ screamlab/__pycache__/functions.cpython-313.pyc,sha256=ozCyYcTb6HU6BBgz0Byag3-EYVdqTTNHmU1VqAFnVNU,12631
17
+ screamlab/__pycache__/io.cpython-310.pyc,sha256=F0sFxZMdFs18xV9I6r05egDKbHxbilYe1OcM2fpncDw,31740
18
+ screamlab/__pycache__/io.cpython-312.pyc,sha256=MMoeXwNuzsekbKxuU151oMMqJ_Hn-gQ-GmwSHULdVOA,53564
19
+ screamlab/__pycache__/io.cpython-313.pyc,sha256=FqolkwTPOY7ViOsfEGFzf5pYfif4ikfFPDlXoG-tdlA,51707
20
+ screamlab/__pycache__/settings.cpython-310.pyc,sha256=5RWA2m0E_nZKWLzUGYBZ5ehfj0X0aPtR1doM-lPLD5I,8366
21
+ screamlab/__pycache__/settings.cpython-312.pyc,sha256=C_E_orj-EgVwor9s8eqF0hBs-vejOFEglWI7DN1U6Yo,11907
22
+ screamlab/__pycache__/settings.cpython-313.pyc,sha256=TzqwYY9LSvfqZ0KbBJlhjSdYQSv7FOsHKf2YCPujxnM,11967
23
+ screamlab/__pycache__/utils.cpython-310.pyc,sha256=j4JgFDNVQ0isjPWIsxOX4cOs7JwL0o5so-kNT_UmaTQ,26443
24
+ screamlab/__pycache__/utils.cpython-312.pyc,sha256=NkdFr8Yr-ywDfFqTJK3QUro_YMGyezhQ04YF5Va4yGo,30799
25
+ screamlab/__pycache__/utils.cpython-313.pyc,sha256=6nj3DrKpIb11HUDjo1ubnP4ymMBE8S2vuacY3zGjhNk,29120
26
+ screamlab-0.3.0.dist-info/licenses/LICENSE,sha256=Ic_N1IFIdReR7m-W6XtN_4k6B8IgJ33dQFLc6Xi5C2E,1291
27
+ screamlab-0.3.0.dist-info/METADATA,sha256=s_6uhY99C89XRTfLSB5CNgoBRnoOSjSN3fkWz_tu56Q,2942
28
+ screamlab-0.3.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
29
+ screamlab-0.3.0.dist-info/top_level.txt,sha256=XjErA4-PG_phESo1eWs-bMzdnBWu4gNxB-RX78zZqqw,10
30
+ screamlab-0.3.0.dist-info/RECORD,,
@@ -1,27 +0,0 @@
1
- screamlab/__init__.py,sha256=M2vfzk7vI3qvlxE2uIHyGYmPSrFYNUacFjkjiLX00wc,63
2
- screamlab/dataset.py,sha256=QZSGwm3au08ZEBLdH-pmkyXaeatwBVMZQKs-37j3IQ4,22537
3
- screamlab/functions.py,sha256=vq6YseAt6L0YlduI6LV3_WBcLhFaOqDRGDIIDaZ3kfc,11398
4
- screamlab/io.py,sha256=B5I9oxQ4uH2dExnoDlO7Glbk3KcrXSVJcWTEl05eLOk,38017
5
- screamlab/settings.py,sha256=XBlzWjsdcAO3Fq_d9UyxYViirT9qmpw5_UVrYd-lt0o,9130
6
- screamlab/utils.py,sha256=VbHaH_QWfcj2WM-TrraPCdjMr7qJ5ybkc2Vgguqhvxg,25503
7
- screamlab/__pycache__/__init__.cpython-310.pyc,sha256=nGadfOt1WUjQxMQAWhkaJ8HQIBoFYgJOXOcou6xtrJ4,245
8
- screamlab/__pycache__/__init__.cpython-312.pyc,sha256=Vo2caaR8VoJ8_NleXq-XOrPKFsFfwxsYJtyJjRxMaAQ,253
9
- screamlab/__pycache__/__init__.cpython-313.pyc,sha256=yQf9pPv0AH2e55exkKjAhkP7dXZn17lnMgudh9XDnxo,249
10
- screamlab/__pycache__/__init__.cpython-38.pyc,sha256=M5eZ95kmsA8r__ZH_prnNqi--MGl8WclL9g0yUXGTAo,176
11
- screamlab/__pycache__/dataset.cpython-310.pyc,sha256=_faFHwzFWVQ12RQn_JEmVacRbG3kfRjiq2oZMFC0lKU,21615
12
- screamlab/__pycache__/dataset.cpython-312.pyc,sha256=6I6pajXpcAGzgMMWz8Uz8RBFvHhamr8ldh4LYvgmVHY,29658
13
- screamlab/__pycache__/dataset.cpython-313.pyc,sha256=hUv5iLuEbc1ZvsghDsBs5fMJX8P2c9LVODugU9AUq6Q,28966
14
- screamlab/__pycache__/functions.cpython-310.pyc,sha256=NCAC7EjK1gJCi5sdEcferiMHbFVOhTL6jme0-0-5xKg,10221
15
- screamlab/__pycache__/functions.cpython-312.pyc,sha256=3XGaxzxxkM11879B0tD2igT9kx-_s3lk1fhABYwIPec,13136
16
- screamlab/__pycache__/io.cpython-310.pyc,sha256=5l2qLRHXu0_xQIeBtpRf4on_aX8z9M8Y-pvPWRNNxMM,30699
17
- screamlab/__pycache__/io.cpython-312.pyc,sha256=MMoeXwNuzsekbKxuU151oMMqJ_Hn-gQ-GmwSHULdVOA,53564
18
- screamlab/__pycache__/settings.cpython-310.pyc,sha256=NEb0GFRJNxnFdCyQSv5WPBp6yPT15dwC8_IHQVpB0Us,8263
19
- screamlab/__pycache__/settings.cpython-312.pyc,sha256=C_E_orj-EgVwor9s8eqF0hBs-vejOFEglWI7DN1U6Yo,11907
20
- screamlab/__pycache__/settings.cpython-313.pyc,sha256=bkB5KCTnxR8rKtrYezCt753f-cnjwhTfXZL2LsVTiaE,11800
21
- screamlab/__pycache__/utils.cpython-310.pyc,sha256=1ADymFGnozfp-gqDCH8PMxPKGDAutepRqsPheXKcuQ0,25452
22
- screamlab/__pycache__/utils.cpython-312.pyc,sha256=NkdFr8Yr-ywDfFqTJK3QUro_YMGyezhQ04YF5Va4yGo,30799
23
- screamlab-0.1.0.dist-info/licenses/LICENSE,sha256=Ic_N1IFIdReR7m-W6XtN_4k6B8IgJ33dQFLc6Xi5C2E,1291
24
- screamlab-0.1.0.dist-info/METADATA,sha256=rJ7ubHx5d35-l0izBb6ax6N4Sosrjb6kqlVZwaCLnEU,2956
25
- screamlab-0.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
26
- screamlab-0.1.0.dist-info/top_level.txt,sha256=XjErA4-PG_phESo1eWs-bMzdnBWu4gNxB-RX78zZqqw,10
27
- screamlab-0.1.0.dist-info/RECORD,,