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.
- {spinlab-0.0.2/SpinLab.egg-info → spinlab-0.0.4}/PKG-INFO +1 -1
- {spinlab-0.0.2 → spinlab-0.0.4/SpinLab.egg-info}/PKG-INFO +1 -1
- {spinlab-0.0.2 → spinlab-0.0.4}/pyproject.toml +5 -2
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/specman.py +38 -4
- spinlab-0.0.4/spinlab/version.py +1 -0
- spinlab-0.0.2/spinlab/version.py +0 -1
- {spinlab-0.0.2 → spinlab-0.0.4}/LICENSE.txt +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/MANIFEST.in +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/README.md +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/SpinLab.egg-info/SOURCES.txt +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/SpinLab.egg-info/dependency_links.txt +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/SpinLab.egg-info/top_level.txt +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/setup.cfg +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/__init__.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/analysis/__init__.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/analysis/hydration.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/analysis/peaks.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/analysis/relaxation_fit.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/analysis/simulate_enhancement_profiles.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/config/__init__.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/config/config.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/config/spinlab.cfg +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/constants/__init__.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/constants/constants.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/constants/mrProperties.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/constants/radicalProperties.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/core/__init__.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/core/base.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/core/coord.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/core/data.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/core/ufunc.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/core/util.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/fitting/__init__.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/fitting/general.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/__init__.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/bes3t.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/cnsi.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/delta.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/h5.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/load.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/load_csv.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/logs.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/mat.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/power.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/prospa.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/random.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/rs2d.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/save.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/tnmr.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/topspin.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/vna.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/vnmrj.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/io/winepr.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/math/__init__.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/math/lineshape.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/math/pulses.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/math/relaxation.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/math/window.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/plotting/__init__.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/plotting/colors.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/plotting/general.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/plotting/image.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/plotting/stack_plot.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/__init__.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/align.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/apodization.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/average.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/conversion.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/fft.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/helpers.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/integration.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/interpolation.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/offset.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/processing/phase.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/reporting/__init__.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/widgets/__init__.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/widgets/align_widget.py +0 -0
- {spinlab-0.0.2 → spinlab-0.0.4}/spinlab/widgets/phase_widget.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "spinlab"
|
|
3
|
-
|
|
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,
|
|
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
|
-
[
|
|
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"
|
spinlab-0.0.2/spinlab/version.py
DELETED
|
@@ -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
|
|
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
|
|
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
|