masster 0.4.3__py3-none-any.whl → 0.4.4__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.

Files changed (23) hide show
  1. masster/_version.py +1 -1
  2. masster/data/dda/20250530_VH_IQX_KW_RP_HSST3_100mm_12min_pos_v4_DDA_OT_C-MiLUT_QC_dil2_01_20250602151849.sample5 +0 -0
  3. masster/data/dda/20250530_VH_IQX_KW_RP_HSST3_100mm_12min_pos_v4_DDA_OT_C-MiLUT_QC_dil3_01_20250602150634.sample5 +0 -0
  4. masster/data/dda/20250530_VH_IQX_KW_RP_HSST3_100mm_12min_pos_v4_MS1_C-MiLUT_C008_v6_r38_01.sample5 +0 -0
  5. masster/data/dda/20250530_VH_IQX_KW_RP_HSST3_100mm_12min_pos_v4_MS1_C-MiLUT_C008_v7_r37_01.sample5 +0 -0
  6. masster/data/dda/20250530_VH_IQX_KW_RP_HSST3_100mm_12min_pos_v4_MS1_C-MiLUT_C017_v5_r99_01.sample5 +0 -0
  7. masster/data/libs/__pycache__/ccm.cpython-312.pyc +0 -0
  8. masster/data/libs/__pycache__/urine.cpython-312.pyc +0 -0
  9. masster/data/libs/ccm.csv +120 -0
  10. masster/data/libs/urine.csv +4693 -0
  11. masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.timeseries.data +0 -0
  12. masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.wiff +0 -0
  13. masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.wiff.scan +0 -0
  14. masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.wiff2 +0 -0
  15. masster/sample/sample5_schema.json +196 -0
  16. masster/study/study5_schema.json +360 -0
  17. masster-0.4.4.dist-info/METADATA +129 -0
  18. {masster-0.4.3.dist-info → masster-0.4.4.dist-info}/RECORD +22 -7
  19. masster-0.4.3.dist-info/METADATA +0 -791
  20. {masster-0.4.3.dist-info → masster-0.4.4.dist-info}/WHEEL +0 -0
  21. {masster-0.4.3.dist-info → masster-0.4.4.dist-info}/entry_points.txt +0 -0
  22. {masster-0.4.3.dist-info → masster-0.4.4.dist-info}/licenses/LICENSE +0 -0
  23. {masster-0.4.3.dist-info → masster-0.4.4.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,196 @@
1
+ {
2
+ "features_df": {
3
+ "columns": {
4
+ "feature_uid": {
5
+ "dtype": "pl.Int64"
6
+ },
7
+ "feature_id": {
8
+ "dtype": "pl.Utf8"
9
+ },
10
+ "sample_uid": {
11
+ "dtype": "pl.Int32"
12
+ },
13
+ "mz": {
14
+ "dtype": "pl.Float64"
15
+ },
16
+ "rt": {
17
+ "dtype": "pl.Float64"
18
+ },
19
+ "rt_original": {
20
+ "dtype": "pl.Float64"
21
+ },
22
+ "rt_start": {
23
+ "dtype": "pl.Float64"
24
+ },
25
+ "rt_end": {
26
+ "dtype": "pl.Float64"
27
+ },
28
+ "rt_delta": {
29
+ "dtype": "pl.Float64"
30
+ },
31
+ "mz_start": {
32
+ "dtype": "pl.Float64"
33
+ },
34
+ "mz_end": {
35
+ "dtype": "pl.Float64"
36
+ },
37
+ "inty": {
38
+ "dtype": "pl.Float64"
39
+ },
40
+ "quality": {
41
+ "dtype": "pl.Float64"
42
+ },
43
+ "charge": {
44
+ "dtype": "pl.Int32"
45
+ },
46
+ "iso": {
47
+ "dtype": "pl.Int64"
48
+ },
49
+ "iso_of": {
50
+ "dtype": "pl.Int64"
51
+ },
52
+ "adduct": {
53
+ "dtype": "pl.Utf8"
54
+ },
55
+ "adduct_charge": {
56
+ "dtype": "pl.Int64"
57
+ },
58
+ "adduct_mass_shift": {
59
+ "dtype": "pl.Float64"
60
+ },
61
+ "adduct_mass_neutral": {
62
+ "dtype": "pl.Float64"
63
+ },
64
+ "adduct_group": {
65
+ "dtype": "pl.Int64"
66
+ },
67
+ "chrom": {
68
+ "dtype": "pl.Object"
69
+ },
70
+ "filled": {
71
+ "dtype": "pl.Boolean"
72
+ },
73
+ "chrom_area": {
74
+ "dtype": "pl.Float64"
75
+ },
76
+ "chrom_coherence": {
77
+ "dtype": "pl.Float64"
78
+ },
79
+ "chrom_prominence": {
80
+ "dtype": "pl.Float64"
81
+ },
82
+ "chrom_prominence_scaled": {
83
+ "dtype": "pl.Float64"
84
+ },
85
+ "chrom_height_scaled": {
86
+ "dtype": "pl.Float64"
87
+ },
88
+ "ms2_scans": {
89
+ "dtype": "pl.Object"
90
+ },
91
+ "ms2_specs": {
92
+ "dtype": "pl.Object"
93
+ }
94
+ }
95
+ },
96
+ "generated_date": "2025-08-03",
97
+ "ms1_df": {
98
+ "columns": {
99
+ "cycle": {
100
+ "dtype": "pl.Int32"
101
+ },
102
+ "inty": {
103
+ "dtype": "pl.Float64"
104
+ },
105
+ "mz": {
106
+ "dtype": "pl.Float64"
107
+ },
108
+ "rt": {
109
+ "dtype": "pl.Float64"
110
+ },
111
+ "scan_uid": {
112
+ "dtype": "pl.Int64"
113
+ }
114
+ }
115
+ },
116
+ "scans_df": {
117
+ "columns": {
118
+ "bl": {
119
+ "dtype": "pl.Float64"
120
+ },
121
+ "comment": {
122
+ "dtype": "pl.Utf8"
123
+ },
124
+ "cycle": {
125
+ "dtype": "pl.Int64"
126
+ },
127
+ "energy": {
128
+ "dtype": "pl.Float64"
129
+ },
130
+ "feature_uid": {
131
+ "dtype": "pl.Int64"
132
+ },
133
+ "id": {
134
+ "dtype": "pl.Utf8"
135
+ },
136
+ "inty_max": {
137
+ "dtype": "pl.Float64"
138
+ },
139
+ "inty_min": {
140
+ "dtype": "pl.Float64"
141
+ },
142
+ "inty_tot": {
143
+ "dtype": "pl.Float64"
144
+ },
145
+ "ms2_n": {
146
+ "dtype": "pl.Int64"
147
+ },
148
+ "ms_level": {
149
+ "dtype": "pl.Int64"
150
+ },
151
+ "mz_max": {
152
+ "dtype": "pl.Float64"
153
+ },
154
+ "mz_min": {
155
+ "dtype": "pl.Float64"
156
+ },
157
+ "name": {
158
+ "dtype": "pl.Utf8"
159
+ },
160
+ "prec_inty": {
161
+ "dtype": "pl.Float64"
162
+ },
163
+ "prec_mz": {
164
+ "dtype": "pl.Float64"
165
+ },
166
+ "prec_mz_max": {
167
+ "dtype": "pl.Float64"
168
+ },
169
+ "prec_mz_min": {
170
+ "dtype": "pl.Float64"
171
+ },
172
+ "rt": {
173
+ "dtype": "pl.Float64"
174
+ },
175
+ "scan_uid": {
176
+ "dtype": "pl.Int64"
177
+ },
178
+ "time_cycle": {
179
+ "dtype": "pl.Float64"
180
+ },
181
+ "time_ms1_to_ms1": {
182
+ "dtype": "pl.Float64"
183
+ },
184
+ "time_ms1_to_ms2": {
185
+ "dtype": "pl.Float64"
186
+ },
187
+ "time_ms2_to_ms1": {
188
+ "dtype": "pl.Float64"
189
+ },
190
+ "time_ms2_to_ms2": {
191
+ "dtype": "pl.Float64"
192
+ }
193
+ }
194
+ },
195
+ "schema_version": "1.0"
196
+ }
@@ -0,0 +1,360 @@
1
+ {
2
+ "consensus_df": {
3
+ "columns": {
4
+ "consensus_uid": {
5
+ "dtype": "pl.Int64"
6
+ },
7
+ "consensus_id": {
8
+ "dtype": "pl.Utf8"
9
+ },
10
+ "quality": {
11
+ "dtype": "pl.Float64"
12
+ },
13
+ "number_samples": {
14
+ "dtype": "pl.Int64"
15
+ },
16
+ "rt": {
17
+ "dtype": "pl.Float64"
18
+ },
19
+ "mz": {
20
+ "dtype": "pl.Float64"
21
+ },
22
+ "rt_min": {
23
+ "dtype": "pl.Float64"
24
+ },
25
+ "rt_max": {
26
+ "dtype": "pl.Float64"
27
+ },
28
+ "rt_mean": {
29
+ "dtype": "pl.Float64"
30
+ },
31
+ "rt_start_mean": {
32
+ "dtype": "pl.Float64"
33
+ },
34
+ "rt_end_mean": {
35
+ "dtype": "pl.Float64"
36
+ },
37
+ "rt_delta_mean": {
38
+ "dtype": "pl.Float64"
39
+ },
40
+ "mz_min": {
41
+ "dtype": "pl.Float64"
42
+ },
43
+ "mz_max": {
44
+ "dtype": "pl.Float64"
45
+ },
46
+ "mz_mean": {
47
+ "dtype": "pl.Float64"
48
+ },
49
+ "mz_start_mean": {
50
+ "dtype": "pl.Float64"
51
+ },
52
+ "mz_end_mean": {
53
+ "dtype": "pl.Float64"
54
+ },
55
+ "inty_mean": {
56
+ "dtype": "pl.Float64"
57
+ },
58
+ "bl": {
59
+ "dtype": "pl.Float64"
60
+ },
61
+ "chrom_coherence_mean": {
62
+ "dtype": "pl.Float64"
63
+ },
64
+ "chrom_prominence_mean": {
65
+ "dtype": "pl.Float64"
66
+ },
67
+ "chrom_prominence_scaled_mean": {
68
+ "dtype": "pl.Float64"
69
+ },
70
+ "chrom_height_scaled_mean": {
71
+ "dtype": "pl.Float64"
72
+ },
73
+ "iso_mean": {
74
+ "dtype": "pl.Float64"
75
+ },
76
+ "charge_mean": {
77
+ "dtype": "pl.Float64"
78
+ },
79
+ "number_ms2": {
80
+ "dtype": "pl.Int64"
81
+ },
82
+ "adducts": {
83
+ "dtype": "pl.Object"
84
+ },
85
+ "adduct_charge_top": {
86
+ "dtype": "pl.Int64"
87
+ },
88
+ "adduct_group": {
89
+ "dtype": "pl.Int64"
90
+ },
91
+ "adduct_mass_neutral_top": {
92
+ "dtype": "pl.Float64"
93
+ },
94
+ "adduct_mass_shift_top": {
95
+ "dtype": "pl.Float64"
96
+ },
97
+ "adduct_of": {
98
+ "dtype": "pl.Int64"
99
+ },
100
+ "adduct_top": {
101
+ "dtype": "pl.Utf8"
102
+ }
103
+ }
104
+ },
105
+ "consensus_mapping_df": {
106
+ "columns": {
107
+ "consensus_uid": {
108
+ "dtype": "pl.Int64"
109
+ },
110
+ "feature_uid": {
111
+ "dtype": "pl.Int64"
112
+ },
113
+ "sample_uid": {
114
+ "dtype": "pl.Int64"
115
+ }
116
+ }
117
+ },
118
+ "consensus_ms2": {
119
+ "columns": {
120
+ "consensus_uid": {
121
+ "dtype": "pl.Int64"
122
+ },
123
+ "energy": {
124
+ "dtype": "pl.Float64"
125
+ },
126
+ "feature_uid": {
127
+ "dtype": "pl.Int64"
128
+ },
129
+ "number_frags": {
130
+ "dtype": "pl.Int64"
131
+ },
132
+ "prec_coherence": {
133
+ "dtype": "pl.Float64"
134
+ },
135
+ "prec_inty": {
136
+ "dtype": "pl.Float64"
137
+ },
138
+ "prec_prominence_scaled": {
139
+ "dtype": "pl.Float64"
140
+ },
141
+ "sample_uid": {
142
+ "dtype": "pl.Int64"
143
+ },
144
+ "scan_id": {
145
+ "dtype": "pl.Int64"
146
+ },
147
+ "spec": {
148
+ "dtype": "pl.Object"
149
+ }
150
+ }
151
+ },
152
+ "features_df": {
153
+ "columns": {
154
+ "feature_uid": {
155
+ "dtype": "pl.Int64"
156
+ },
157
+ "feature_id": {
158
+ "dtype": "pl.Utf8"
159
+ },
160
+ "sample_uid": {
161
+ "dtype": "pl.Int32"
162
+ },
163
+ "mz": {
164
+ "dtype": "pl.Float64"
165
+ },
166
+ "rt": {
167
+ "dtype": "pl.Float64"
168
+ },
169
+ "rt_original": {
170
+ "dtype": "pl.Float64"
171
+ },
172
+ "rt_start": {
173
+ "dtype": "pl.Float64"
174
+ },
175
+ "rt_end": {
176
+ "dtype": "pl.Float64"
177
+ },
178
+ "rt_delta": {
179
+ "dtype": "pl.Float64"
180
+ },
181
+ "mz_start": {
182
+ "dtype": "pl.Float64"
183
+ },
184
+ "mz_end": {
185
+ "dtype": "pl.Float64"
186
+ },
187
+ "inty": {
188
+ "dtype": "pl.Float64"
189
+ },
190
+ "quality": {
191
+ "dtype": "pl.Float64"
192
+ },
193
+ "charge": {
194
+ "dtype": "pl.Int32"
195
+ },
196
+ "iso": {
197
+ "dtype": "pl.Int64"
198
+ },
199
+ "iso_of": {
200
+ "dtype": "pl.Int64"
201
+ },
202
+ "adduct": {
203
+ "dtype": "pl.Utf8"
204
+ },
205
+ "adduct_charge": {
206
+ "dtype": "pl.Int64"
207
+ },
208
+ "adduct_mass_shift": {
209
+ "dtype": "pl.Float64"
210
+ },
211
+ "adduct_mass_neutral": {
212
+ "dtype": "pl.Float64"
213
+ },
214
+ "adduct_group": {
215
+ "dtype": "pl.Int64"
216
+ },
217
+ "chrom": {
218
+ "dtype": "pl.Object"
219
+ },
220
+ "filled": {
221
+ "dtype": "pl.Boolean"
222
+ },
223
+ "chrom_area": {
224
+ "dtype": "pl.Float64"
225
+ },
226
+ "chrom_coherence": {
227
+ "dtype": "pl.Float64"
228
+ },
229
+ "chrom_prominence": {
230
+ "dtype": "pl.Float64"
231
+ },
232
+ "chrom_prominence_scaled": {
233
+ "dtype": "pl.Float64"
234
+ },
235
+ "chrom_height_scaled": {
236
+ "dtype": "pl.Float64"
237
+ },
238
+ "ms2_scans": {
239
+ "dtype": "pl.Object"
240
+ },
241
+ "ms2_specs": {
242
+ "dtype": "pl.Object"
243
+ }
244
+ }
245
+ },
246
+ "samples_df": {
247
+ "columns": {
248
+ "sample_uid": {
249
+ "dtype": "pl.Int64"
250
+ },
251
+ "map_id": {
252
+ "dtype": "pl.Int64"
253
+ },
254
+ "sample_source": {
255
+ "dtype": "pl.Utf8"
256
+ },
257
+ "sample_name": {
258
+ "dtype": "pl.Utf8"
259
+ },
260
+ "sample_path": {
261
+ "dtype": "pl.Utf8"
262
+ },
263
+ "sample_type": {
264
+ "dtype": "pl.Utf8"
265
+ },
266
+ "sample_group": {
267
+ "dtype": "pl.Utf8"
268
+ },
269
+ "sample_batch": {
270
+ "dtype": "pl.Int64"
271
+ },
272
+ "sample_sequence": {
273
+ "dtype": "pl.Int64"
274
+ },
275
+ "sample_color": {
276
+ "dtype": "pl.Utf8"
277
+ },
278
+ "num_features": {
279
+ "dtype": "pl.Int64"
280
+ },
281
+ "num_ms1": {
282
+ "dtype": "pl.Int64"
283
+ },
284
+ "num_ms2": {
285
+ "dtype": "pl.Int64"
286
+ }
287
+ }
288
+ },
289
+ "lib_df": {
290
+ "columns": {
291
+ "lib_uid": {
292
+ "dtype": "pl.Int64"
293
+ },
294
+ "cmpd_uid": {
295
+ "dtype": "pl.Int64"
296
+ },
297
+ "source_id": {
298
+ "dtype": "pl.Null"
299
+ },
300
+ "name": {
301
+ "dtype": "pl.String"
302
+ },
303
+ "smiles": {
304
+ "dtype": "pl.String"
305
+ },
306
+ "inchi": {
307
+ "dtype": "pl.String"
308
+ },
309
+ "inchikey": {
310
+ "dtype": "pl.String"
311
+ },
312
+ "formula": {
313
+ "dtype": "pl.String"
314
+ },
315
+ "adduct": {
316
+ "dtype": "pl.String"
317
+ },
318
+ "m": {
319
+ "dtype": "pl.Float64"
320
+ },
321
+ "z": {
322
+ "dtype": "pl.Int64"
323
+ },
324
+ "mz": {
325
+ "dtype": "pl.Float64"
326
+ },
327
+ "rt": {
328
+ "dtype": "pl.Null"
329
+ },
330
+ "db_id": {
331
+ "dtype": "pl.String"
332
+ },
333
+ "db": {
334
+ "dtype": "pl.String"
335
+ }
336
+ }
337
+ },
338
+ "id_df": {
339
+ "columns": {
340
+ "consensus_uid": {
341
+ "dtype": "pl.Int64"
342
+ },
343
+ "lib_uid": {
344
+ "dtype": "pl.Int64"
345
+ },
346
+ "mz_delta": {
347
+ "dtype": "pl.Float64"
348
+ },
349
+ "rt_delta": {
350
+ "dtype": "pl.Null"
351
+ },
352
+ "matcher": {
353
+ "dtype": "pl.String"
354
+ },
355
+ "score": {
356
+ "dtype": "pl.Float64"
357
+ }
358
+ }
359
+ }
360
+ }
@@ -0,0 +1,129 @@
1
+ Metadata-Version: 2.4
2
+ Name: masster
3
+ Version: 0.4.4
4
+ Summary: Mass spectrometry data analysis package
5
+ Author: Zamboni Lab
6
+ License-Expression: AGPL-3.0-only
7
+ Project-URL: homepage, https://github.com/zamboni-lab/masster
8
+ Project-URL: repository, https://github.com/zamboni-lab/masster
9
+ Project-URL: documentation, https://github.com/zamboni-lab/masster#readme
10
+ Keywords: mass spectrometry,metabolomics,lc-ms,chromatography
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
19
+ Classifier: Topic :: Scientific/Engineering :: Chemistry
20
+ Requires-Python: >=3.11
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: alpharaw>=0.4.8
24
+ Requires-Dist: bokeh>=3.7.3
25
+ Requires-Dist: datashader>=0.18.1
26
+ Requires-Dist: holoviews>=1.21.0
27
+ Requires-Dist: h5py>=3.14.0
28
+ Requires-Dist: hvplot>=0.11.3
29
+ Requires-Dist: loguru>=0.7.3
30
+ Requires-Dist: numpy>=2.0.0
31
+ Requires-Dist: marimo>=0.14.16
32
+ Requires-Dist: matplotlib>=3.8.0
33
+ Requires-Dist: pandas>=2.2.0
34
+ Requires-Dist: panel>=1.7.0
35
+ Requires-Dist: polars>=1.0.0
36
+ Requires-Dist: pyopenms>=3.3.0
37
+ Requires-Dist: pyteomics>=4.7.0
38
+ Requires-Dist: pythonnet>=3.0.0
39
+ Requires-Dist: scipy>=1.12.0
40
+ Requires-Dist: tqdm>=4.65.0
41
+ Requires-Dist: openpyxl>=3.1.5
42
+ Requires-Dist: cmap>=0.6.2
43
+ Requires-Dist: altair>=5.5.0
44
+ Provides-Extra: dev
45
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
46
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
47
+ Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
48
+ Requires-Dist: black>=23.0.0; extra == "dev"
49
+ Requires-Dist: flake8>=5.0.0; extra == "dev"
50
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
51
+ Requires-Dist: pre-commit>=3.0.0; extra == "dev"
52
+ Requires-Dist: twine>=4.0.0; extra == "dev"
53
+ Requires-Dist: build>=0.10.0; extra == "dev"
54
+ Requires-Dist: safety>=2.0.0; extra == "dev"
55
+ Requires-Dist: bandit>=1.7.0; extra == "dev"
56
+ Requires-Dist: pyyaml>=6.0; extra == "dev"
57
+ Provides-Extra: docs
58
+ Requires-Dist: sphinx>=5.0.0; extra == "docs"
59
+ Requires-Dist: sphinx-rtd-theme>=1.2.0; extra == "docs"
60
+ Requires-Dist: sphinxcontrib-napoleon>=0.7; extra == "docs"
61
+ Provides-Extra: test
62
+ Requires-Dist: pytest>=7.0.0; extra == "test"
63
+ Requires-Dist: pytest-cov>=4.0.0; extra == "test"
64
+ Requires-Dist: pytest-mock>=3.10.0; extra == "test"
65
+ Requires-Dist: coverage>=7.0.0; extra == "test"
66
+ Dynamic: license-file
67
+
68
+ # MASSter
69
+
70
+ **MASSter** is a comprehensive Python package for mass spectrometry data analysis, designed for metabolomics and LC-MS data processing. It provides tools for feature detection, alignment, consensus building, and interactive visualization of mass spectrometry datasets. It is designed to deal with DDA, and hides functionalities for DIA and ZTScan DIA data.
71
+
72
+ This is a poorly documented, stable branch of the development codebase in use in the Zamboni lab.
73
+
74
+ Some of the core processing functions are derived from OpenMS. We use the same nomenclature and refer to their documentation for an explanation of the parameters. To a large extent, however, you should be able to use the defaults (=no parameters) when calling processing steps.
75
+
76
+
77
+ ## Installation
78
+
79
+ ```bash
80
+ pip install master
81
+ ```
82
+
83
+ ### Basic Workflow for analyzing LC-MS study with 2-... samples
84
+
85
+ ```python
86
+ import master
87
+
88
+ # Initialize the Study object with the default folder
89
+ study = master.Study(default_folder=r'D:\...\mylcms')
90
+
91
+ # Load data from folder with raw data, here: WIFF
92
+ study.add(r'D:\...\...\...\*.wiff')
93
+
94
+ # Perform retention time correction
95
+ study.align(rt_max_diff=2.0)
96
+ study.plot_alignment()
97
+
98
+ # Find consensus features
99
+ study.merge(min_samples=3)
100
+ study.plot_consensus_2d()
101
+
102
+ # Retrieve missing data for quantification
103
+ study.fill()
104
+
105
+ # Integrate according to consensus metadata
106
+ study.integrate()
107
+
108
+ # export results
109
+ study.export_mgf()
110
+ study.export_mztab()
111
+ study.export_consensus()
112
+
113
+ # Save the study to .study5
114
+ study.save()
115
+ ```
116
+
117
+ ## Requirements
118
+
119
+ - Python ≥ 3.11
120
+ - Key dependencies: pandas, polars, numpy, scipy, matplotlib, bokeh, holoviews, panel
121
+ - See `pyproject.toml` for complete dependency list
122
+
123
+ ## License
124
+
125
+ GNU Affero General Public License v3
126
+
127
+ ## Citation
128
+
129
+ If you use Master in your research, please cite this repository.