spinlab 0.0.2__tar.gz → 0.0.4__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 (78) hide show
  1. {spinlab-0.0.2/SpinLab.egg-info → spinlab-0.0.4}/PKG-INFO +1 -1
  2. {spinlab-0.0.2 → spinlab-0.0.4/SpinLab.egg-info}/PKG-INFO +1 -1
  3. {spinlab-0.0.2 → spinlab-0.0.4}/pyproject.toml +5 -2
  4. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/specman.py +38 -4
  5. spinlab-0.0.4/spinlab/version.py +1 -0
  6. spinlab-0.0.2/spinlab/version.py +0 -1
  7. {spinlab-0.0.2 → spinlab-0.0.4}/LICENSE.txt +0 -0
  8. {spinlab-0.0.2 → spinlab-0.0.4}/MANIFEST.in +0 -0
  9. {spinlab-0.0.2 → spinlab-0.0.4}/README.md +0 -0
  10. {spinlab-0.0.2 → spinlab-0.0.4}/SpinLab.egg-info/SOURCES.txt +0 -0
  11. {spinlab-0.0.2 → spinlab-0.0.4}/SpinLab.egg-info/dependency_links.txt +0 -0
  12. {spinlab-0.0.2 → spinlab-0.0.4}/SpinLab.egg-info/top_level.txt +0 -0
  13. {spinlab-0.0.2 → spinlab-0.0.4}/setup.cfg +0 -0
  14. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/__init__.py +0 -0
  15. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/analysis/__init__.py +0 -0
  16. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/analysis/hydration.py +0 -0
  17. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/analysis/peaks.py +0 -0
  18. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/analysis/relaxation_fit.py +0 -0
  19. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/analysis/simulate_enhancement_profiles.py +0 -0
  20. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/config/__init__.py +0 -0
  21. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/config/config.py +0 -0
  22. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/config/spinlab.cfg +0 -0
  23. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/constants/__init__.py +0 -0
  24. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/constants/constants.py +0 -0
  25. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/constants/mrProperties.py +0 -0
  26. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/constants/radicalProperties.py +0 -0
  27. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/core/__init__.py +0 -0
  28. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/core/base.py +0 -0
  29. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/core/coord.py +0 -0
  30. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/core/data.py +0 -0
  31. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/core/ufunc.py +0 -0
  32. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/core/util.py +0 -0
  33. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/fitting/__init__.py +0 -0
  34. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/fitting/general.py +0 -0
  35. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/__init__.py +0 -0
  36. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/bes3t.py +0 -0
  37. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/cnsi.py +0 -0
  38. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/delta.py +0 -0
  39. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/h5.py +0 -0
  40. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/load.py +0 -0
  41. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/load_csv.py +0 -0
  42. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/logs.py +0 -0
  43. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/mat.py +0 -0
  44. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/power.py +0 -0
  45. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/prospa.py +0 -0
  46. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/random.py +0 -0
  47. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/rs2d.py +0 -0
  48. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/save.py +0 -0
  49. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/tnmr.py +0 -0
  50. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/topspin.py +0 -0
  51. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/vna.py +0 -0
  52. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/vnmrj.py +0 -0
  53. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/winepr.py +0 -0
  54. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/math/__init__.py +0 -0
  55. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/math/lineshape.py +0 -0
  56. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/math/pulses.py +0 -0
  57. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/math/relaxation.py +0 -0
  58. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/math/window.py +0 -0
  59. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/plotting/__init__.py +0 -0
  60. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/plotting/colors.py +0 -0
  61. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/plotting/general.py +0 -0
  62. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/plotting/image.py +0 -0
  63. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/plotting/stack_plot.py +0 -0
  64. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/__init__.py +0 -0
  65. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/align.py +0 -0
  66. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/apodization.py +0 -0
  67. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/average.py +0 -0
  68. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/conversion.py +0 -0
  69. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/fft.py +0 -0
  70. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/helpers.py +0 -0
  71. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/integration.py +0 -0
  72. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/interpolation.py +0 -0
  73. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/offset.py +0 -0
  74. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/phase.py +0 -0
  75. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/reporting/__init__.py +0 -0
  76. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/widgets/__init__.py +0 -0
  77. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/widgets/align_widget.py +0 -0
  78. {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/widgets/phase_widget.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spinlab
3
- Version: 0.0.2
3
+ Version: 0.0.4
4
4
  Summary: SpinLab - Bringing the Power of Python to NMR-EPR Spectroscopy
5
5
  License-Expression: MIT
6
6
  Keywords: ODNP,DNP,Spin,NMR,EPR
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: spinlab
3
- Version: 0.0.2
3
+ Version: 0.0.4
4
4
  Summary: SpinLab - Bringing the Power of Python to NMR-EPR Spectroscopy
5
5
  License-Expression: MIT
6
6
  Keywords: ODNP,DNP,Spin,NMR,EPR
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "spinlab"
3
- version = "0.0.2"
3
+ dynamic = ["version"]
4
4
  description = "SpinLab - Bringing the Power of Python to NMR-EPR Spectroscopy"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -25,4 +25,7 @@ build-backend = "setuptools.build_meta"
25
25
  include-package-data = true
26
26
 
27
27
  [tool.setuptools.package-data]
28
- mypkg = ["*.cfg"]
28
+ mypkg = ["*.cfg"]
29
+
30
+ [tool.setuptools.dynamic]
31
+ version = {attr = "spinlab.version.__version__"}
@@ -17,7 +17,11 @@ scale_dict = {
17
17
 
18
18
 
19
19
  def import_specman(
20
- path, autodetect_coords: bool = False, autodetect_dims: bool = False
20
+ path,
21
+ autodetect_coords: bool = True,
22
+ autodetect_dims: bool = True,
23
+ make_complex: bool = True,
24
+ complex_dim: str = "x",
21
25
  ):
22
26
  """Import SpecMan data and return SpinData object
23
27
 
@@ -30,6 +34,9 @@ def import_specman(
30
34
  path (str): Path to either .exp file
31
35
  autodetect_coords(bool): Autodetect coords based on attrs
32
36
  autodetect_dims(bool): Autodetect dims based on attrs
37
+ make_complex (bool): If True, will create a complex SpinData object if the data is complex
38
+ complex_dim (str): The dimension to use for complex data (default: 'x')
39
+
33
40
  Returns:
34
41
  data (SpinData): SpinData object containing SpecMan EPR data
35
42
  """
@@ -68,7 +75,9 @@ def import_specman(
68
75
  attrs["experiment_type"] = "epr_spectrum"
69
76
 
70
77
  specman_data = _sl.SpinData(data, dims, coords, attrs)
71
-
78
+ if make_complex:
79
+ if complex_dim in dims and len(specman_data.coords[complex_dim]) == 2:
80
+ specman_data = _sl.create_complex(specman_data, complex_dim)
72
81
  return specman_data
73
82
 
74
83
 
@@ -233,7 +242,6 @@ def analyze_attrs(attrs):
233
242
  unit = None
234
243
  if len(val_list) > 1:
235
244
  unit = val_list[-1] # get unit
236
-
237
245
  val = val_list[0].strip(",")
238
246
  val_unit = val_list[1] if len(val_list) == 5 else None
239
247
  temp[new_key] = int(val) if "." not in val else float(val)
@@ -262,6 +270,12 @@ def analyze_attrs(attrs):
262
270
  stop = float(val_list[stop_index]) * _convert_unit(stop_unit)
263
271
  temp[new_key + "_stop"] = stop
264
272
 
273
+ if "logto" in val_list:
274
+ logto_index = val_list.index("logto") + 1
275
+ logto_unit = val_list[logto_index + 1] if len(val_list) == 5 else None
276
+ logto = float(val_list[logto_index]) * _convert_unit(logto_unit)
277
+ temp[new_key + "_logto"] = logto
278
+
265
279
  if "sweep_" in key:
266
280
  val_list = val.split(",")
267
281
  val = val_list[1] # get value
@@ -336,11 +350,31 @@ def calculate_specman_coords(attrs, old_coords, dims=None):
336
350
  start = attrs[dim]
337
351
  stop = attrs[dim + "_stop"]
338
352
  coord = _np.linspace(start, stop, length)
353
+ elif dim in attrs and dim + "_logto" in attrs:
354
+ start = attrs[dim]
355
+ logto = attrs[dim + "_logto"]
356
+ coord = _np.logspace(
357
+ _np.log10(start), _np.log10(logto), length, endpoint=True
358
+ )
339
359
  elif dim in attrs and dim + "_step" not in attrs and dim + "_stop" not in attrs:
340
360
  val_string = attrs["params_" + dim].split(";")[0]
361
+ val_string = val_string.replace(", ", ",").split(",")
341
362
  coord = _np.array(
342
- [float(f) for f in val_string.split() if f.replace(".", "").isdigit()]
363
+ [
364
+ float(val.split()[0])
365
+ for val in val_string
366
+ if val.split()[0].replace(".", "").isdigit()
367
+ ]
343
368
  )
369
+ units = []
370
+ try:
371
+ units = [x.split()[1] for x in val_string if not x.split()[1].isdigit()]
372
+ except IndexError:
373
+ pass
374
+
375
+ if units:
376
+ for i in range(len(coord)):
377
+ coord[i] *= _convert_unit(units[i])
344
378
  else:
345
379
  coord = _np.arange(0.0, length)
346
380
  coords.append(_np.array(coord))
@@ -0,0 +1 @@
1
+ __version__ = "0.0.4"
@@ -1 +0,0 @@
1
- __version__ = "0.0.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes