masster 0.4.5__py3-none-any.whl → 0.4.9__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 +8 -8
- masster/_version.py +1 -1
- masster/chromatogram.py +2 -2
- masster/logger.py +11 -11
- masster/sample/__init__.py +1 -1
- masster/sample/adducts.py +1 -1
- masster/sample/h5.py +7 -7
- masster/sample/lib.py +2 -2
- masster/sample/load.py +8 -8
- masster/sample/parameters.py +1 -1
- masster/sample/plot.py +2 -2
- masster/sample/processing.py +2 -2
- masster/sample/sample.py +86 -86
- masster/sample/save.py +1 -1
- masster/spectrum.py +2 -2
- masster/study/__init__.py +1 -1
- masster/study/export.py +7 -7
- masster/study/h5.py +6 -6
- masster/study/helpers.py +339 -146
- masster/study/id.py +4 -4
- masster/study/load.py +6 -6
- masster/study/plot.py +3 -3
- masster/study/processing.py +3 -3
- masster/study/save.py +1 -1
- masster/study/study.py +98 -98
- masster-0.4.9.dist-info/METADATA +788 -0
- {masster-0.4.5.dist-info → masster-0.4.9.dist-info}/RECORD +30 -36
- {masster-0.4.5.dist-info → masster-0.4.9.dist-info}/WHEEL +1 -2
- masster/data/libs/__pycache__/ccm.cpython-312.pyc +0 -0
- masster/data/libs/__pycache__/urine.cpython-312.pyc +0 -0
- masster/lib/__init__.py +0 -9
- masster/lib/lib.py +0 -598
- masster/study/helpers_optimized.py +0 -359
- masster-0.4.5.dist-info/METADATA +0 -131
- masster-0.4.5.dist-info/top_level.txt +0 -1
- {masster-0.4.5.dist-info → masster-0.4.9.dist-info}/entry_points.txt +0 -0
- {masster-0.4.5.dist-info → masster-0.4.9.dist-info}/licenses/LICENSE +0 -0
masster/study/id.py
CHANGED
|
@@ -36,7 +36,7 @@ def lib_load(
|
|
|
36
36
|
"""
|
|
37
37
|
# Lazy import to avoid circular imports at module import time
|
|
38
38
|
try:
|
|
39
|
-
from
|
|
39
|
+
from masster.lib.lib import Lib
|
|
40
40
|
except Exception:
|
|
41
41
|
Lib = None
|
|
42
42
|
|
|
@@ -58,7 +58,7 @@ def lib_load(
|
|
|
58
58
|
if isinstance(lib_source, str):
|
|
59
59
|
if Lib is None:
|
|
60
60
|
raise ImportError(
|
|
61
|
-
"Could not import
|
|
61
|
+
"Could not import masster.lib.lib.Lib - required for CSV loading",
|
|
62
62
|
)
|
|
63
63
|
|
|
64
64
|
lib_obj = Lib()
|
|
@@ -74,7 +74,7 @@ def lib_load(
|
|
|
74
74
|
|
|
75
75
|
else:
|
|
76
76
|
raise TypeError(
|
|
77
|
-
"lib_source must be a CSV file path (str), a
|
|
77
|
+
"lib_source must be a CSV file path (str), a masster.lib.Lib instance, or have a 'lib_df' attribute",
|
|
78
78
|
)
|
|
79
79
|
|
|
80
80
|
# Ensure lib_df is populated
|
|
@@ -159,7 +159,7 @@ def identify(study, features=None, params=None, **kwargs):
|
|
|
159
159
|
"""
|
|
160
160
|
# Import defaults class
|
|
161
161
|
try:
|
|
162
|
-
from
|
|
162
|
+
from masster.study.defaults.identify_def import identify_defaults
|
|
163
163
|
except ImportError:
|
|
164
164
|
identify_defaults = None
|
|
165
165
|
|
masster/study/load.py
CHANGED
|
@@ -10,10 +10,10 @@ import pyopenms as oms
|
|
|
10
10
|
|
|
11
11
|
from tqdm import tqdm
|
|
12
12
|
|
|
13
|
-
from
|
|
14
|
-
from
|
|
15
|
-
from
|
|
16
|
-
from
|
|
13
|
+
from masster.chromatogram import Chromatogram
|
|
14
|
+
from masster.study.defaults import fill_defaults
|
|
15
|
+
from masster.sample.sample import Sample
|
|
16
|
+
from masster.spectrum import Spectrum
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
# Pre-import heavy modules to avoid repeated loading in add_sample()
|
|
@@ -144,7 +144,7 @@ def add(
|
|
|
144
144
|
)
|
|
145
145
|
else:
|
|
146
146
|
self.logger.debug(f"Successfully added {counter} samples to the study.")
|
|
147
|
-
|
|
147
|
+
|
|
148
148
|
# Return a simple summary to suppress marimo's automatic object display
|
|
149
149
|
return f"Added {counter} samples to study"
|
|
150
150
|
|
|
@@ -533,7 +533,7 @@ def fill_single(self, **kwargs):
|
|
|
533
533
|
min_samples_abs: Absolute minimum sample threshold (default: 2)
|
|
534
534
|
"""
|
|
535
535
|
# parameters initialization
|
|
536
|
-
from
|
|
536
|
+
from masster.study.defaults import fill_defaults
|
|
537
537
|
|
|
538
538
|
params = fill_defaults()
|
|
539
539
|
|
masster/study/plot.py
CHANGED
|
@@ -1132,7 +1132,7 @@ def plot_bpc(
|
|
|
1132
1132
|
from bokeh.plotting import figure, show, output_file
|
|
1133
1133
|
from bokeh.models import ColumnDataSource, HoverTool
|
|
1134
1134
|
from bokeh.io.export import export_png
|
|
1135
|
-
from
|
|
1135
|
+
from masster.study.helpers import get_bpc
|
|
1136
1136
|
|
|
1137
1137
|
sample_uids = self._get_sample_uids(samples)
|
|
1138
1138
|
if not sample_uids:
|
|
@@ -1309,7 +1309,7 @@ def plot_eic(
|
|
|
1309
1309
|
from bokeh.plotting import figure, show, output_file
|
|
1310
1310
|
from bokeh.models import ColumnDataSource, HoverTool
|
|
1311
1311
|
from bokeh.io.export import export_png
|
|
1312
|
-
from
|
|
1312
|
+
from masster.study.helpers import get_eic
|
|
1313
1313
|
|
|
1314
1314
|
# Use study's eic_mz_tol parameter as default if not provided
|
|
1315
1315
|
if mz_tol is None:
|
|
@@ -2325,7 +2325,7 @@ def plot_tic(
|
|
|
2325
2325
|
from bokeh.plotting import figure, show, output_file
|
|
2326
2326
|
from bokeh.models import ColumnDataSource, HoverTool
|
|
2327
2327
|
from bokeh.io.export import export_png
|
|
2328
|
-
from
|
|
2328
|
+
from masster.study.helpers import get_tic
|
|
2329
2329
|
|
|
2330
2330
|
sample_uids = self._get_sample_uids(samples)
|
|
2331
2331
|
if not sample_uids:
|
masster/study/processing.py
CHANGED
|
@@ -8,7 +8,7 @@ import pyopenms as oms
|
|
|
8
8
|
|
|
9
9
|
from tqdm import tqdm
|
|
10
10
|
|
|
11
|
-
from
|
|
11
|
+
from masster.study.defaults import (
|
|
12
12
|
align_defaults,
|
|
13
13
|
find_ms2_defaults,
|
|
14
14
|
integrate_defaults,
|
|
@@ -152,7 +152,7 @@ def align(self, **kwargs):
|
|
|
152
152
|
all_update_rt = []
|
|
153
153
|
all_update_rt_original = []
|
|
154
154
|
|
|
155
|
-
tdqm_disable = self.log_level not in ["TRACE", "DEBUG"
|
|
155
|
+
tdqm_disable = self.log_level not in ["TRACE", "DEBUG"]
|
|
156
156
|
|
|
157
157
|
for index, fm in tqdm(
|
|
158
158
|
list(enumerate(fmaps)),
|
|
@@ -1754,7 +1754,7 @@ def _align_kd_algorithm(study_obj, fmaps, params):
|
|
|
1754
1754
|
study_obj.logger.warning(f"Map {i}: failed applying transformation ({e})")
|
|
1755
1755
|
|
|
1756
1756
|
study_obj.logger.info(
|
|
1757
|
-
f"
|
|
1757
|
+
f"Alignment completed. Reference index {ref_index}.",
|
|
1758
1758
|
)
|
|
1759
1759
|
|
|
1760
1760
|
|
masster/study/save.py
CHANGED
masster/study/study.py
CHANGED
|
@@ -52,111 +52,111 @@ import sys
|
|
|
52
52
|
import polars as pl
|
|
53
53
|
|
|
54
54
|
# Study-specific imports
|
|
55
|
-
from
|
|
56
|
-
from
|
|
57
|
-
from
|
|
58
|
-
from
|
|
59
|
-
from
|
|
60
|
-
from
|
|
61
|
-
from
|
|
62
|
-
from
|
|
63
|
-
from
|
|
64
|
-
from
|
|
65
|
-
from
|
|
66
|
-
from
|
|
67
|
-
from
|
|
68
|
-
from
|
|
69
|
-
from
|
|
70
|
-
from
|
|
71
|
-
from
|
|
72
|
-
from
|
|
73
|
-
from
|
|
74
|
-
from
|
|
75
|
-
from
|
|
76
|
-
from
|
|
77
|
-
from
|
|
78
|
-
from
|
|
79
|
-
from
|
|
80
|
-
from
|
|
81
|
-
from
|
|
82
|
-
from
|
|
83
|
-
from
|
|
84
|
-
from
|
|
85
|
-
from
|
|
86
|
-
from
|
|
87
|
-
from
|
|
88
|
-
from
|
|
89
|
-
from
|
|
90
|
-
from
|
|
91
|
-
from
|
|
92
|
-
from
|
|
93
|
-
from
|
|
94
|
-
from
|
|
95
|
-
from
|
|
96
|
-
from
|
|
97
|
-
from
|
|
98
|
-
from
|
|
99
|
-
from
|
|
100
|
-
from
|
|
101
|
-
from
|
|
102
|
-
from
|
|
103
|
-
from
|
|
104
|
-
from
|
|
105
|
-
from
|
|
106
|
-
from
|
|
107
|
-
from
|
|
108
|
-
from
|
|
109
|
-
from
|
|
110
|
-
from
|
|
111
|
-
from
|
|
112
|
-
from
|
|
113
|
-
from
|
|
114
|
-
from
|
|
115
|
-
from
|
|
116
|
-
from
|
|
117
|
-
from
|
|
118
|
-
from
|
|
119
|
-
from
|
|
120
|
-
from
|
|
121
|
-
from
|
|
122
|
-
from
|
|
123
|
-
from
|
|
124
|
-
from
|
|
125
|
-
from
|
|
126
|
-
from
|
|
127
|
-
from
|
|
128
|
-
from
|
|
55
|
+
from masster.study.h5 import _load_study5
|
|
56
|
+
from masster.study.h5 import _save_study5
|
|
57
|
+
from masster.study.h5 import _save_study5_compressed
|
|
58
|
+
from masster.study.helpers import _get_consensus_uids
|
|
59
|
+
from masster.study.helpers import _get_feature_uids
|
|
60
|
+
from masster.study.helpers import _get_sample_uids
|
|
61
|
+
from masster.study.helpers import _ensure_features_df_schema_order
|
|
62
|
+
from masster.study.helpers import compress
|
|
63
|
+
from masster.study.helpers import compress_features
|
|
64
|
+
from masster.study.helpers import compress_ms2
|
|
65
|
+
from masster.study.helpers import compress_chrom
|
|
66
|
+
from masster.study.helpers import restore_features
|
|
67
|
+
from masster.study.helpers import restore_chrom
|
|
68
|
+
from masster.study.helpers import restore_ms2
|
|
69
|
+
from masster.study.helpers import decompress
|
|
70
|
+
from masster.study.helpers import fill_reset
|
|
71
|
+
from masster.study.helpers import get_chrom
|
|
72
|
+
from masster.study.helpers import get_sample
|
|
73
|
+
from masster.study.helpers import get_consensus
|
|
74
|
+
from masster.study.helpers import get_consensus_matches
|
|
75
|
+
from masster.study.helpers import get_consensus_matrix
|
|
76
|
+
from masster.study.helpers import get_orphans
|
|
77
|
+
from masster.study.helpers import get_gaps_matrix
|
|
78
|
+
from masster.study.helpers import get_gaps_stats
|
|
79
|
+
from masster.study.helpers import align_reset
|
|
80
|
+
from masster.study.helpers import set_folder
|
|
81
|
+
from masster.study.helpers import set_source
|
|
82
|
+
from masster.study.helpers import sample_color
|
|
83
|
+
from masster.study.helpers import sample_color_reset
|
|
84
|
+
from masster.study.helpers import sample_name_replace
|
|
85
|
+
from masster.study.helpers import sample_name_reset
|
|
86
|
+
from masster.study.helpers import samples_select
|
|
87
|
+
from masster.study.helpers import samples_delete
|
|
88
|
+
from masster.study.helpers import features_select
|
|
89
|
+
from masster.study.helpers import features_filter
|
|
90
|
+
from masster.study.helpers import features_delete
|
|
91
|
+
from masster.study.helpers import consensus_select
|
|
92
|
+
from masster.study.helpers import consensus_filter
|
|
93
|
+
from masster.study.helpers import consensus_delete
|
|
94
|
+
from masster.study.load import add
|
|
95
|
+
from masster.study.load import add_sample
|
|
96
|
+
from masster.study.load import _add_samples_batch
|
|
97
|
+
from masster.study.load import _add_sample_optimized
|
|
98
|
+
from masster.study.load import _add_sample_standard
|
|
99
|
+
from masster.study.load import _sample_color_reset_optimized
|
|
100
|
+
from masster.study.load import fill_single
|
|
101
|
+
from masster.study.load import fill
|
|
102
|
+
from masster.study.load import _process_sample_for_parallel_fill
|
|
103
|
+
from masster.study.load import _get_missing_consensus_sample_combinations
|
|
104
|
+
from masster.study.load import load
|
|
105
|
+
from masster.study.load import _load_consensusXML
|
|
106
|
+
from masster.study.load import load_features
|
|
107
|
+
from masster.study.load import sanitize
|
|
108
|
+
from masster.study.plot import plot_alignment
|
|
109
|
+
from masster.study.plot import plot_consensus_2d
|
|
110
|
+
from masster.study.plot import plot_samples_2d
|
|
111
|
+
from masster.study.plot import plot_consensus_stats
|
|
112
|
+
from masster.study.plot import plot_chrom
|
|
113
|
+
from masster.study.plot import plot_pca
|
|
114
|
+
from masster.study.plot import plot_bpc
|
|
115
|
+
from masster.study.plot import plot_tic
|
|
116
|
+
from masster.study.plot import plot_eic
|
|
117
|
+
from masster.study.plot import plot_rt_correction
|
|
118
|
+
from masster.study.processing import align
|
|
119
|
+
from masster.study.processing import merge
|
|
120
|
+
from masster.study.processing import integrate
|
|
121
|
+
from masster.study.processing import find_ms2
|
|
122
|
+
from masster.study.parameters import store_history
|
|
123
|
+
from masster.study.parameters import get_parameters
|
|
124
|
+
from masster.study.parameters import update_parameters
|
|
125
|
+
from masster.study.parameters import get_parameters_property
|
|
126
|
+
from masster.study.parameters import set_parameters_property
|
|
127
|
+
from masster.study.save import save, save_consensus, _save_consensusXML, save_samples
|
|
128
|
+
from masster.study.export import (
|
|
129
129
|
export_mgf,
|
|
130
130
|
export_mztab,
|
|
131
131
|
export_xlsx,
|
|
132
132
|
export_parquet,
|
|
133
133
|
_get_mgf_df,
|
|
134
134
|
)
|
|
135
|
-
from
|
|
136
|
-
from
|
|
135
|
+
from masster.study.id import lib_load, identify, get_id, id_reset, lib_reset
|
|
136
|
+
from masster.study.id import (
|
|
137
137
|
_get_adducts,
|
|
138
138
|
_calculate_formula_mass_shift,
|
|
139
139
|
_format_adduct_name,
|
|
140
140
|
_parse_element_counts,
|
|
141
141
|
)
|
|
142
142
|
|
|
143
|
-
from
|
|
144
|
-
from
|
|
145
|
-
from
|
|
146
|
-
from
|
|
147
|
-
from
|
|
148
|
-
from
|
|
149
|
-
from
|
|
150
|
-
from
|
|
151
|
-
from
|
|
152
|
-
from
|
|
153
|
-
from
|
|
143
|
+
from masster.logger import MassterLogger
|
|
144
|
+
from masster.study.defaults.study_def import study_defaults
|
|
145
|
+
from masster.study.defaults.align_def import align_defaults
|
|
146
|
+
from masster.study.defaults.export_def import export_mgf_defaults
|
|
147
|
+
from masster.study.defaults.fill_chrom_def import fill_chrom_defaults
|
|
148
|
+
from masster.study.defaults.fill_def import fill_defaults
|
|
149
|
+
from masster.study.defaults.find_consensus_def import find_consensus_defaults
|
|
150
|
+
from masster.study.defaults.find_ms2_def import find_ms2_defaults
|
|
151
|
+
from masster.study.defaults.integrate_chrom_def import integrate_chrom_defaults
|
|
152
|
+
from masster.study.defaults.integrate_def import integrate_defaults
|
|
153
|
+
from masster.study.defaults.merge_def import merge_defaults
|
|
154
154
|
|
|
155
155
|
# Import sample defaults
|
|
156
|
-
from
|
|
157
|
-
from
|
|
158
|
-
from
|
|
159
|
-
from
|
|
156
|
+
from masster.sample.defaults.sample_def import sample_defaults
|
|
157
|
+
from masster.sample.defaults.find_features_def import find_features_defaults
|
|
158
|
+
from masster.sample.defaults.find_adducts_def import find_adducts_defaults
|
|
159
|
+
from masster.sample.defaults.get_spectrum_def import get_spectrum_defaults
|
|
160
160
|
|
|
161
161
|
# Warning symbols for info display
|
|
162
162
|
_WARNING_SYMBOL = "⚠️" # Yellow warning triangle
|
|
@@ -188,8 +188,8 @@ class Study:
|
|
|
188
188
|
- `export_consensus()`: Export consensus features for downstream analysis.
|
|
189
189
|
|
|
190
190
|
Example Usage:
|
|
191
|
-
>>> from
|
|
192
|
-
>>> study_obj =
|
|
191
|
+
>>> from masster import Study
|
|
192
|
+
>>> study_obj = Study(folder="./data")
|
|
193
193
|
>>> study_obj.load_folder("./mzml_files")
|
|
194
194
|
>>> study_obj.process_all()
|
|
195
195
|
>>> study_obj.align()
|
|
@@ -342,7 +342,7 @@ class Study:
|
|
|
342
342
|
self.id_df = pl.DataFrame()
|
|
343
343
|
|
|
344
344
|
# Initialize independent logger
|
|
345
|
-
self.logger =
|
|
345
|
+
self.logger = MassterLogger(
|
|
346
346
|
instance_type="study",
|
|
347
347
|
level=self.log_level.upper(),
|
|
348
348
|
label=self.log_label,
|
|
@@ -479,20 +479,20 @@ class Study:
|
|
|
479
479
|
|
|
480
480
|
def _reload(self):
|
|
481
481
|
"""
|
|
482
|
-
Reloads all
|
|
482
|
+
Reloads all masster modules to pick up any changes to their source code,
|
|
483
483
|
and updates the instance's class reference to the newly reloaded class version.
|
|
484
484
|
This ensures that the instance uses the latest implementation without restarting the interpreter.
|
|
485
485
|
"""
|
|
486
486
|
# Reset logger configuration flags to allow proper reconfiguration after reload
|
|
487
487
|
""" try:
|
|
488
|
-
import
|
|
488
|
+
import masster.sample.logger as logger_module
|
|
489
489
|
|
|
490
490
|
if hasattr(logger_module, "_STUDY_LOGGER_CONFIGURED"):
|
|
491
491
|
logger_module._STUDY_LOGGER_CONFIGURED = False
|
|
492
492
|
except Exception:
|
|
493
493
|
pass"""
|
|
494
494
|
|
|
495
|
-
# Get the base module name (
|
|
495
|
+
# Get the base module name (masster)
|
|
496
496
|
base_modname = self.__class__.__module__.split(".")[0]
|
|
497
497
|
current_module = self.__class__.__module__
|
|
498
498
|
|
|
@@ -508,7 +508,7 @@ class Study:
|
|
|
508
508
|
):
|
|
509
509
|
study_modules.append(module_name)
|
|
510
510
|
|
|
511
|
-
# Add core
|
|
511
|
+
# Add core masster modules
|
|
512
512
|
core_modules = [
|
|
513
513
|
f"{base_modname}._version",
|
|
514
514
|
f"{base_modname}.chromatogram",
|