masster 0.2.5__py3-none-any.whl → 0.3.1__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.
Potentially problematic release.
This version of masster might be problematic. Click here for more details.
- masster/__init__.py +27 -27
- masster/_version.py +17 -17
- masster/chromatogram.py +497 -503
- masster/data/examples/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.featureXML +199787 -0
- masster/data/examples/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.sample5 +0 -0
- masster/logger.py +318 -244
- masster/sample/__init__.py +9 -9
- masster/sample/defaults/__init__.py +15 -15
- masster/sample/defaults/find_adducts_def.py +325 -325
- masster/sample/defaults/find_features_def.py +366 -366
- masster/sample/defaults/find_ms2_def.py +285 -285
- masster/sample/defaults/get_spectrum_def.py +314 -318
- masster/sample/defaults/sample_def.py +374 -378
- masster/sample/h5.py +1321 -1297
- masster/sample/helpers.py +833 -364
- masster/sample/lib.py +762 -0
- masster/sample/load.py +1220 -1187
- masster/sample/parameters.py +131 -131
- masster/sample/plot.py +1685 -1622
- masster/sample/processing.py +1402 -1416
- masster/sample/quant.py +209 -0
- masster/sample/sample.py +393 -387
- masster/sample/sample5_schema.json +181 -181
- masster/sample/save.py +737 -736
- masster/sample/sciex.py +1213 -0
- masster/spectrum.py +1287 -1319
- masster/study/__init__.py +9 -9
- masster/study/defaults/__init__.py +21 -19
- masster/study/defaults/align_def.py +267 -267
- masster/study/defaults/export_def.py +41 -40
- masster/study/defaults/fill_chrom_def.py +264 -264
- masster/study/defaults/fill_def.py +260 -0
- masster/study/defaults/find_consensus_def.py +256 -256
- masster/study/defaults/find_ms2_def.py +163 -163
- masster/study/defaults/integrate_chrom_def.py +225 -225
- masster/study/defaults/integrate_def.py +221 -0
- masster/study/defaults/merge_def.py +256 -0
- masster/study/defaults/study_def.py +272 -269
- masster/study/export.py +674 -287
- masster/study/h5.py +1406 -886
- masster/study/helpers.py +1713 -433
- masster/study/helpers_optimized.py +317 -0
- masster/study/load.py +1231 -1078
- masster/study/parameters.py +99 -99
- masster/study/plot.py +632 -645
- masster/study/processing.py +1057 -1046
- masster/study/save.py +161 -134
- masster/study/study.py +612 -522
- masster/study/study5_schema.json +253 -241
- {masster-0.2.5.dist-info → masster-0.3.1.dist-info}/METADATA +15 -10
- masster-0.3.1.dist-info/RECORD +59 -0
- {masster-0.2.5.dist-info → masster-0.3.1.dist-info}/licenses/LICENSE +661 -661
- masster-0.2.5.dist-info/RECORD +0 -50
- {masster-0.2.5.dist-info → masster-0.3.1.dist-info}/WHEEL +0 -0
- {masster-0.2.5.dist-info → masster-0.3.1.dist-info}/entry_points.txt +0 -0
masster/sample/parameters.py
CHANGED
|
@@ -1,131 +1,131 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Sample Parameters Module for individual sample operations.
|
|
3
|
-
|
|
4
|
-
This module contains parameter management functions for the Sample class.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from __future__ import annotations
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def store_history(self, keys, value):
|
|
11
|
-
"""
|
|
12
|
-
Store parameters in self.history.
|
|
13
|
-
|
|
14
|
-
Parameters:
|
|
15
|
-
keys (list): List of keys to identify the position in nested dicts
|
|
16
|
-
value: The value to store (can be a parameter object, dict, or any other value)
|
|
17
|
-
"""
|
|
18
|
-
if not isinstance(keys, list) or len(keys) == 0:
|
|
19
|
-
raise ValueError("keys must be a non-empty list")
|
|
20
|
-
|
|
21
|
-
# Initialize self.history if it doesn't exist
|
|
22
|
-
if not hasattr(self, "history"):
|
|
23
|
-
self.history = {}
|
|
24
|
-
|
|
25
|
-
# Navigate to the target location, creating nested dicts as needed
|
|
26
|
-
current_dict = self.history
|
|
27
|
-
for key in keys[:-1]:
|
|
28
|
-
if key not in current_dict:
|
|
29
|
-
current_dict[key] = {}
|
|
30
|
-
elif not isinstance(current_dict[key], dict):
|
|
31
|
-
# If the existing value is not a dict, replace it with a dict
|
|
32
|
-
current_dict[key] = {}
|
|
33
|
-
current_dict = current_dict[key]
|
|
34
|
-
|
|
35
|
-
# Store the value at the final key
|
|
36
|
-
current_dict[keys[-1]] = value
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
def get_parameters(self, keys):
|
|
40
|
-
"""
|
|
41
|
-
Retrieve parameters from the sample_defaults object or nested history structure.
|
|
42
|
-
|
|
43
|
-
Parameters:
|
|
44
|
-
keys (list): List of keys to identify the position
|
|
45
|
-
|
|
46
|
-
Returns:
|
|
47
|
-
The value at the specified location, or None if not found
|
|
48
|
-
"""
|
|
49
|
-
if not isinstance(keys, list) or len(keys) == 0:
|
|
50
|
-
raise ValueError("keys must be a non-empty list")
|
|
51
|
-
|
|
52
|
-
# If asking for sample parameters, get from self.parameters (sample_defaults object)
|
|
53
|
-
if keys[0] == "sample":
|
|
54
|
-
if len(keys) == 1:
|
|
55
|
-
# Return the whole sample_defaults object as dict
|
|
56
|
-
return self.parameters.to_dict() if hasattr(self.parameters,
|
|
57
|
-
else:
|
|
58
|
-
# Get specific parameter from sample_defaults object
|
|
59
|
-
param_name = keys[1]
|
|
60
|
-
if hasattr(self.parameters, param_name):
|
|
61
|
-
return getattr(self.parameters, param_name)
|
|
62
|
-
return None
|
|
63
|
-
|
|
64
|
-
# Otherwise, look in history for processing parameters
|
|
65
|
-
if not hasattr(self, "history"):
|
|
66
|
-
return None
|
|
67
|
-
|
|
68
|
-
current_dict = self.history
|
|
69
|
-
for key in keys:
|
|
70
|
-
if isinstance(current_dict, dict) and key in current_dict:
|
|
71
|
-
current_dict = current_dict[key]
|
|
72
|
-
else:
|
|
73
|
-
return None
|
|
74
|
-
|
|
75
|
-
return current_dict
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
def update_parameters(self, **kwargs):
|
|
79
|
-
"""
|
|
80
|
-
Update sample parameters using the new parameter system.
|
|
81
|
-
|
|
82
|
-
Parameters:
|
|
83
|
-
**kwargs: Keyword arguments for parameter updates. Can include:
|
|
84
|
-
- A sample_defaults instance to set all parameters at once
|
|
85
|
-
- Individual parameter names and values (see sample_defaults for details)
|
|
86
|
-
"""
|
|
87
|
-
# Import here to avoid circular imports
|
|
88
|
-
from masster.sample.defaults.sample_def import (
|
|
89
|
-
sample_defaults as SampleDefaults,
|
|
90
|
-
)
|
|
91
|
-
|
|
92
|
-
# Get current sample parameter object (should already be a sample_defaults instance)
|
|
93
|
-
current_params = self.parameters
|
|
94
|
-
|
|
95
|
-
# Handle parameter overrides from kwargs
|
|
96
|
-
for key, value in kwargs.items():
|
|
97
|
-
if isinstance(value, SampleDefaults):
|
|
98
|
-
self.parameters = value
|
|
99
|
-
break
|
|
100
|
-
else:
|
|
101
|
-
if hasattr(current_params, key):
|
|
102
|
-
current_params.set(key, value, validate=True)
|
|
103
|
-
|
|
104
|
-
# No need to store in history - self.parameters is the source of truth for sample params
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
def get_parameters_property(self):
|
|
108
|
-
"""
|
|
109
|
-
Property getter to provide backward compatibility for parameter access.
|
|
110
|
-
Returns a dictionary that provides access to sample parameters and history.
|
|
111
|
-
"""
|
|
112
|
-
# Create a result dict with sample parameters
|
|
113
|
-
result = {}
|
|
114
|
-
|
|
115
|
-
# Add sample parameters from the sample_defaults object
|
|
116
|
-
if hasattr(self.parameters,
|
|
117
|
-
result["sample"] = self.parameters.to_dict()
|
|
118
|
-
|
|
119
|
-
# Add history (processing parameters)
|
|
120
|
-
if hasattr(self,
|
|
121
|
-
result.update(self.history)
|
|
122
|
-
|
|
123
|
-
return result
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
def set_parameters_property(self, value):
|
|
127
|
-
"""Property setter to allow setting parameters for backward compatibility."""
|
|
128
|
-
if isinstance(value, dict):
|
|
129
|
-
self.parameters = value
|
|
130
|
-
else:
|
|
131
|
-
raise ValueError("parameters must be a dictionary")
|
|
1
|
+
"""
|
|
2
|
+
Sample Parameters Module for individual sample operations.
|
|
3
|
+
|
|
4
|
+
This module contains parameter management functions for the Sample class.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def store_history(self, keys, value):
|
|
11
|
+
"""
|
|
12
|
+
Store parameters in self.history.
|
|
13
|
+
|
|
14
|
+
Parameters:
|
|
15
|
+
keys (list): List of keys to identify the position in nested dicts
|
|
16
|
+
value: The value to store (can be a parameter object, dict, or any other value)
|
|
17
|
+
"""
|
|
18
|
+
if not isinstance(keys, list) or len(keys) == 0:
|
|
19
|
+
raise ValueError("keys must be a non-empty list")
|
|
20
|
+
|
|
21
|
+
# Initialize self.history if it doesn't exist
|
|
22
|
+
if not hasattr(self, "history"):
|
|
23
|
+
self.history = {}
|
|
24
|
+
|
|
25
|
+
# Navigate to the target location, creating nested dicts as needed
|
|
26
|
+
current_dict = self.history
|
|
27
|
+
for key in keys[:-1]:
|
|
28
|
+
if key not in current_dict:
|
|
29
|
+
current_dict[key] = {}
|
|
30
|
+
elif not isinstance(current_dict[key], dict):
|
|
31
|
+
# If the existing value is not a dict, replace it with a dict
|
|
32
|
+
current_dict[key] = {}
|
|
33
|
+
current_dict = current_dict[key]
|
|
34
|
+
|
|
35
|
+
# Store the value at the final key
|
|
36
|
+
current_dict[keys[-1]] = value
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def get_parameters(self, keys):
|
|
40
|
+
"""
|
|
41
|
+
Retrieve parameters from the sample_defaults object or nested history structure.
|
|
42
|
+
|
|
43
|
+
Parameters:
|
|
44
|
+
keys (list): List of keys to identify the position
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
The value at the specified location, or None if not found
|
|
48
|
+
"""
|
|
49
|
+
if not isinstance(keys, list) or len(keys) == 0:
|
|
50
|
+
raise ValueError("keys must be a non-empty list")
|
|
51
|
+
|
|
52
|
+
# If asking for sample parameters, get from self.parameters (sample_defaults object)
|
|
53
|
+
if keys[0] == "sample":
|
|
54
|
+
if len(keys) == 1:
|
|
55
|
+
# Return the whole sample_defaults object as dict
|
|
56
|
+
return self.parameters.to_dict() if hasattr(self.parameters, "to_dict") else None
|
|
57
|
+
else:
|
|
58
|
+
# Get specific parameter from sample_defaults object
|
|
59
|
+
param_name = keys[1]
|
|
60
|
+
if hasattr(self.parameters, param_name):
|
|
61
|
+
return getattr(self.parameters, param_name)
|
|
62
|
+
return None
|
|
63
|
+
|
|
64
|
+
# Otherwise, look in history for processing parameters
|
|
65
|
+
if not hasattr(self, "history"):
|
|
66
|
+
return None
|
|
67
|
+
|
|
68
|
+
current_dict = self.history
|
|
69
|
+
for key in keys:
|
|
70
|
+
if isinstance(current_dict, dict) and key in current_dict:
|
|
71
|
+
current_dict = current_dict[key]
|
|
72
|
+
else:
|
|
73
|
+
return None
|
|
74
|
+
|
|
75
|
+
return current_dict
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def update_parameters(self, **kwargs):
|
|
79
|
+
"""
|
|
80
|
+
Update sample parameters using the new parameter system.
|
|
81
|
+
|
|
82
|
+
Parameters:
|
|
83
|
+
**kwargs: Keyword arguments for parameter updates. Can include:
|
|
84
|
+
- A sample_defaults instance to set all parameters at once
|
|
85
|
+
- Individual parameter names and values (see sample_defaults for details)
|
|
86
|
+
"""
|
|
87
|
+
# Import here to avoid circular imports
|
|
88
|
+
from masster.sample.defaults.sample_def import (
|
|
89
|
+
sample_defaults as SampleDefaults,
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
# Get current sample parameter object (should already be a sample_defaults instance)
|
|
93
|
+
current_params = self.parameters
|
|
94
|
+
|
|
95
|
+
# Handle parameter overrides from kwargs
|
|
96
|
+
for key, value in kwargs.items():
|
|
97
|
+
if isinstance(value, SampleDefaults):
|
|
98
|
+
self.parameters = value
|
|
99
|
+
break
|
|
100
|
+
else:
|
|
101
|
+
if hasattr(current_params, key):
|
|
102
|
+
current_params.set(key, value, validate=True)
|
|
103
|
+
|
|
104
|
+
# No need to store in history - self.parameters is the source of truth for sample params
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def get_parameters_property(self):
|
|
108
|
+
"""
|
|
109
|
+
Property getter to provide backward compatibility for parameter access.
|
|
110
|
+
Returns a dictionary that provides access to sample parameters and history.
|
|
111
|
+
"""
|
|
112
|
+
# Create a result dict with sample parameters
|
|
113
|
+
result = {}
|
|
114
|
+
|
|
115
|
+
# Add sample parameters from the sample_defaults object
|
|
116
|
+
if hasattr(self.parameters, "to_dict"):
|
|
117
|
+
result["sample"] = self.parameters.to_dict()
|
|
118
|
+
|
|
119
|
+
# Add history (processing parameters)
|
|
120
|
+
if hasattr(self, "history"):
|
|
121
|
+
result.update(self.history)
|
|
122
|
+
|
|
123
|
+
return result
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def set_parameters_property(self, value):
|
|
127
|
+
"""Property setter to allow setting parameters for backward compatibility."""
|
|
128
|
+
if isinstance(value, dict):
|
|
129
|
+
self.parameters = value
|
|
130
|
+
else:
|
|
131
|
+
raise ValueError("parameters must be a dictionary")
|