masster 0.4.22__py3-none-any.whl → 0.5.0__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/study/study.py CHANGED
@@ -52,36 +52,26 @@ import sys
52
52
  import polars as pl
53
53
 
54
54
  # Study-specific imports
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.h5 import _load_ms1
55
+ from masster.study.analysis import analyze_umap
59
56
  from masster.study.helpers import _get_consensus_uids
60
- from masster.study.helpers import _get_feature_uids
61
- from masster.study.helpers import _get_sample_uids
62
- from masster.study.helpers import _ensure_features_df_schema_order
57
+ from masster.study.helpers import _get_features_uids
58
+ from masster.study.helpers import _get_samples_uids
63
59
  from masster.study.helpers import compress
64
- from masster.study.helpers import compress_features
65
- from masster.study.helpers import compress_ms2
66
- from masster.study.helpers import compress_chrom
67
- from masster.study.helpers import restore_features
68
- from masster.study.helpers import restore_chrom
69
- from masster.study.helpers import restore_ms2
70
60
  from masster.study.helpers import decompress
71
61
  from masster.study.helpers import fill_reset
72
62
  from masster.study.helpers import get_chrom
73
- from masster.study.helpers import get_sample
63
+ from masster.study.helpers import get_samples
74
64
  from masster.study.helpers import get_consensus
75
65
  from masster.study.helpers import get_consensus_matches
76
66
  from masster.study.helpers import get_consensus_matrix
77
67
  from masster.study.helpers import get_orphans
68
+ from masster.study.helpers import get_sample_stats
78
69
  from masster.study.helpers import get_gaps_matrix
79
70
  from masster.study.helpers import get_gaps_stats
80
71
  from masster.study.helpers import align_reset
81
- from masster.study.helpers import set_folder
82
- from masster.study.helpers import set_source
83
- from masster.study.helpers import sample_color
84
- from masster.study.helpers import sample_color_reset
72
+ from masster.study.helpers import set_study_folder
73
+ from masster.study.helpers import set_samples_source
74
+ from masster.study.helpers import set_samples_color
85
75
  from masster.study.helpers import sample_name_replace
86
76
  from masster.study.helpers import sample_name_reset
87
77
  from masster.study.helpers import samples_select
@@ -94,61 +84,34 @@ from masster.study.helpers import consensus_filter
94
84
  from masster.study.helpers import consensus_delete
95
85
  from masster.study.load import add
96
86
  from masster.study.load import add_sample
97
- from masster.study.load import _add_samples_batch
98
- from masster.study.load import _add_sample_optimized
99
- from masster.study.load import _add_sample_standard
100
- from masster.study.load import _sample_color_reset_optimized
101
- from masster.study.load import fill_single
102
87
  from masster.study.load import fill
103
- from masster.study.load import _process_sample_for_parallel_fill
104
- from masster.study.load import _get_missing_consensus_sample_combinations
105
88
  from masster.study.load import load
106
- from masster.study.load import _load_consensusXML
107
- from masster.study.load import load_features
108
- from masster.study.load import sanitize
89
+ from masster.study.load import _load_features
109
90
  from masster.study.plot import plot_alignment
110
91
  from masster.study.plot import plot_consensus_2d
111
92
  from masster.study.plot import plot_samples_2d
112
93
  from masster.study.plot import plot_consensus_stats
113
94
  from masster.study.plot import plot_chrom
114
- from masster.study.plot import plot_pca
95
+ from masster.study.plot import plot_samples_pca
96
+ from masster.study.plot import plot_samples_umap
115
97
  from masster.study.plot import plot_bpc
116
98
  from masster.study.plot import plot_tic
117
99
  from masster.study.plot import plot_eic
118
100
  from masster.study.plot import plot_rt_correction
119
101
  from masster.study.processing import align
120
102
  from masster.study.merge import merge
121
- from masster.study.merge import _reset_consensus_data
122
- from masster.study.merge import _extract_consensus_features
123
- from masster.study.merge import _perform_adduct_grouping
124
- from masster.study.merge import _consensus_cleanup
125
- from masster.study.merge import _identify_adduct_by_mass_shift
126
- from masster.study.merge import _finalize_merge
127
- from masster.study.merge import _count_tight_clusters
128
103
  from masster.study.processing import integrate
129
104
  from masster.study.processing import find_ms2
130
105
  from masster.study.processing import find_iso
131
106
  from masster.study.processing import reset_iso
132
- from masster.study.parameters import store_history
107
+ from masster.study.parameters import update_history
133
108
  from masster.study.parameters import get_parameters
134
109
  from masster.study.parameters import update_parameters
135
110
  from masster.study.parameters import get_parameters_property
136
111
  from masster.study.parameters import set_parameters_property
137
- from masster.study.save import save, save_consensus, _save_consensusXML, save_samples
138
- from masster.study.export import (
139
- export_mgf,
140
- export_mztab,
141
- export_xlsx,
142
- export_parquet,
143
- _get_mgf_df,
144
- )
112
+ from masster.study.save import save, save_consensus, save_samples
113
+ from masster.study.export import export_mgf, export_mztab, export_xlsx, export_parquet
145
114
  from masster.study.id import lib_load, identify, get_id, id_reset, lib_reset
146
- from masster.study.id import (
147
- _get_adducts,
148
- _calculate_formula_mass_shift,
149
- _format_adduct_name,
150
- _parse_element_counts,
151
- )
152
115
 
153
116
  from masster.logger import MassterLogger
154
117
  from masster.study.defaults.study_def import study_defaults
@@ -253,8 +216,24 @@ class Study:
253
216
  For backward compatibility, original signature is supported:
254
217
  Study(folder=..., label=..., log_level=..., log_label=..., log_sink=...)
255
218
  """
256
- # Initialize default parameters
219
+ # ===== PARAMETER INITIALIZATION =====
220
+ auto_load_filename = self._init_parameters(filename, kwargs)
221
+
222
+ # ===== DATA STRUCTURES INITIALIZATION =====
223
+ self._init_data_structures()
224
+
225
+ # ===== LOGGER INITIALIZATION =====
226
+ self._init_logger()
227
+
228
+ # ===== AUTO-LOAD FILE IF PROVIDED =====
229
+ if auto_load_filename is not None:
230
+ self.load(filename=auto_load_filename)
231
+
232
+ # ===== SAMPLE CACHE =====
233
+ self._samples_cache = {}
257
234
 
235
+ def _init_parameters(self, filename, kwargs):
236
+ """Initialize parameters and handle filename for auto-loading."""
258
237
  # Handle filename parameter for automatic loading
259
238
  auto_load_filename = None
260
239
  if filename is not None:
@@ -281,13 +260,11 @@ class Study:
281
260
  if hasattr(params, key):
282
261
  params.set(key, value, validate=True)
283
262
 
284
- # Keeps a pointer to study5 whenever it's saved or loaded
285
- self.filename = None
286
-
287
- # Store parameter instance for method access
263
+ # Store parameter instance and initialize history
264
+ self.filename = None # Keeps a pointer to study5 whenever it's saved or loaded
288
265
  self.parameters = params
289
266
  self.history = {}
290
- self.store_history(["study"], params.to_dict())
267
+ self.update_history(["study"], params.to_dict())
291
268
 
292
269
  # Set instance attributes (ensure proper string values for logger)
293
270
  self.folder = params.folder
@@ -301,10 +278,15 @@ class Study:
301
278
  self.log_label = params.log_label + " | " if params.log_label else ""
302
279
  self.log_sink = params.log_sink
303
280
 
281
+ # Create folder if it doesn't exist
304
282
  if self.folder is not None and not os.path.exists(self.folder):
305
- # create the folder if it does not exist
306
283
  os.makedirs(self.folder)
284
+
285
+ return auto_load_filename
307
286
 
287
+ def _init_data_structures(self):
288
+ """Initialize all data structures used by the Study."""
289
+ # Sample information DataFrame
308
290
  self.samples_df = pl.DataFrame(
309
291
  {
310
292
  "sample_uid": [],
@@ -337,21 +319,24 @@ class Study:
337
319
  "num_ms2": pl.Int64,
338
320
  },
339
321
  )
322
+
323
+ # Feature-related data structures
340
324
  self.features_maps = []
341
325
  self.features_df = pl.DataFrame()
326
+
327
+ # Consensus-related data structures
342
328
  self.consensus_ms2 = pl.DataFrame()
343
329
  self.consensus_df = pl.DataFrame()
344
330
  self.consensus_map = None
345
331
  self.consensus_mapping_df = pl.DataFrame()
346
332
  self.alignment_ref_index = None
347
333
 
348
- # Library DataFrame (populated by lib_load)
349
- self.lib_df = pl.DataFrame()
334
+ # Library and identification data structures
335
+ self.lib_df = pl.DataFrame() # populated by lib_load
336
+ self.id_df = pl.DataFrame() # populated by identify
350
337
 
351
- # Identification results DataFrame (populated by identify)
352
- self.id_df = pl.DataFrame()
353
-
354
- # Initialize independent logger
338
+ def _init_logger(self):
339
+ """Initialize the logger for this Study instance."""
355
340
  self.logger = MassterLogger(
356
341
  instance_type="study",
357
342
  level=self.log_level.upper(),
@@ -361,85 +346,68 @@ class Study:
361
346
  self.logger.debug(f"Study folder: {self.folder}")
362
347
  self.logger.debug(f"Polarity: {self.polarity}")
363
348
 
364
- # Auto-load study file if filename was provided
365
- if auto_load_filename is not None:
366
- self.load(filename=auto_load_filename)
367
-
368
- # cache for Sample instances created/loaded by this Study
369
- self._samples_cache = {}
370
-
371
- # ===== ATTACH MODULE FUNCTIONS AS CLASS METHODS =====
372
-
373
349
  # === File I/O Operations ===
374
350
  load = load
375
351
  save = save
376
352
  save_consensus = save_consensus
377
353
  save_samples = save_samples
378
- sanitize = sanitize
379
- set_folder = set_folder
354
+ set_study_folder = set_study_folder
380
355
 
381
356
  # === Sample Management ===
382
357
  add = add
383
- add_folder = add # backward compatibility alias
384
358
  add_sample = add_sample
385
359
 
386
360
  # === Core Processing Operations ===
387
361
  align = align
388
- merge = merge
389
- find_consensus = merge # Backward compatibility alias
362
+ merge = merge
363
+
390
364
  find_ms2 = find_ms2
391
365
  find_iso = find_iso
392
366
  reset_iso = reset_iso
393
367
  iso_reset = reset_iso
394
368
  integrate = integrate
395
- integrate_chrom = integrate # Backward compatibility alias
369
+
396
370
  fill = fill
397
- fill_chrom = fill # Backward compatibility alias
398
- fill_single = fill_single
399
- fill_chrom_single = fill_single # Backward compatibility alias
371
+
400
372
  # === Data Retrieval and Access ===
401
373
  get_consensus = get_consensus
402
374
  get_chrom = get_chrom
403
- get_sample = get_sample
375
+ get_samples = get_samples
404
376
  get_consensus_matches = get_consensus_matches
405
377
  get_consensus_matrix = get_consensus_matrix
406
378
  get_gaps_matrix = get_gaps_matrix
407
379
  get_gaps_stats = get_gaps_stats
408
380
  get_orphans = get_orphans
381
+ get_sample_stats = get_sample_stats
409
382
 
410
383
  # === Data Selection and Filtering ===
411
384
  samples_select = samples_select
412
385
  samples_delete = samples_delete
386
+
413
387
  features_select = features_select
414
388
  features_filter = features_filter
415
389
  features_delete = features_delete
416
390
  consensus_select = consensus_select
417
391
  consensus_filter = consensus_filter
418
392
  consensus_delete = consensus_delete
419
- # Backward compatibility aliases
420
- filter_consensus = consensus_filter
421
- select_consensus = consensus_select
422
- filter_features = features_filter
423
- select_features = features_select
424
- consensus_find = merge
425
-
426
- # === Sample Metadata and Styling ===
427
- set_source = set_source
428
- sample_color = sample_color
429
- sample_color_reset = sample_color_reset
430
- reset_sample_color = sample_color_reset
431
- name_replace = sample_name_replace
432
- name_reset = sample_name_reset
433
- reset_name = sample_name_reset
434
393
 
394
+ # === Sample Metadata and Styling ===
395
+ set_samples_source = set_samples_source
396
+ set_samples_color = set_samples_color
397
+
398
+ samples_name_replace = sample_name_replace
399
+ samples_name_reset = sample_name_reset
400
+
401
+ # Backward compatibility aliases for renamed methods
402
+ set_folder = set_study_folder
403
+ set_source = set_samples_source
404
+ #sample_color = set_samples_color
405
+ #get_sample = get_samples
406
+ #load_features = _load_features
407
+ store_history = update_history
408
+
435
409
  # === Data Compression and Storage ===
436
410
  compress = compress
437
- compress_features = compress_features
438
- compress_ms2 = compress_ms2
439
- compress_chrom = compress_chrom
440
- restore_features = restore_features
441
- restore_chrom = restore_chrom
442
- restore_ms2 = restore_ms2
443
411
  decompress = decompress
444
412
 
445
413
  # === Reset Operations ===
@@ -453,12 +421,16 @@ class Study:
453
421
  plot_chrom = plot_chrom
454
422
  plot_consensus_2d = plot_consensus_2d
455
423
  plot_consensus_stats = plot_consensus_stats
456
- plot_pca = plot_pca
424
+ plot_samples_pca = plot_samples_pca
425
+ plot_samples_umap = plot_samples_umap
457
426
  plot_samples_2d = plot_samples_2d
458
427
  plot_bpc = plot_bpc
459
428
  plot_rt_correction = plot_rt_correction
460
429
  plot_tic = plot_tic
461
430
  plot_eic = plot_eic
431
+
432
+ # === Analysis Operations ===
433
+ analyze_umap = analyze_umap
462
434
 
463
435
  # === Export Operations ===
464
436
  export_mgf = export_mgf
@@ -476,45 +448,23 @@ class Study:
476
448
  reset_lib = lib_reset
477
449
 
478
450
  # === Parameter Management ===
479
- store_history = store_history
451
+ update_history = update_history
480
452
  get_parameters = get_parameters
481
453
  update_parameters = update_parameters
482
454
  get_parameters_property = get_parameters_property
483
455
  set_parameters_property = set_parameters_property
484
456
 
485
457
  # === Private/Internal Methods ===
486
- _add_samples_batch = _add_samples_batch
487
- _add_sample_optimized = _add_sample_optimized
488
- _add_sample_standard = _add_sample_standard
489
- _sample_color_reset_optimized = _sample_color_reset_optimized
490
- _load_study5 = _load_study5
491
- _save_study5 = _save_study5
492
- _save_study5_compressed = _save_study5_compressed
493
- _load_ms1 = _load_ms1
494
458
  _get_consensus_uids = _get_consensus_uids
495
- _get_feature_uids = _get_feature_uids
496
- _get_sample_uids = _get_sample_uids
497
- _ensure_features_df_schema_order = _ensure_features_df_schema_order
498
- _process_sample_for_parallel_fill = _process_sample_for_parallel_fill
499
- _get_missing_consensus_sample_combinations = (
500
- _get_missing_consensus_sample_combinations
501
- )
502
- _load_consensusXML = _load_consensusXML
503
- load_features = load_features
504
- _save_consensusXML = _save_consensusXML
505
- _get_mgf_df = _get_mgf_df
506
- _get_adducts = _get_adducts
507
- _calculate_formula_mass_shift = _calculate_formula_mass_shift
508
- _format_adduct_name = _format_adduct_name
509
- _parse_element_counts = _parse_element_counts
459
+ _get_features_uids = _get_features_uids
460
+ _get_samples_uids = _get_samples_uids
461
+ _load_features = _load_features
462
+
463
+ # Note: _load_study5 and _save_study5 are not exposed as class methods
464
+ # They are used internally by load() and save() methods only
510
465
 
511
466
  # === Merge Helper Methods ===
512
- _reset_consensus_data = _reset_consensus_data
513
- _extract_consensus_features = _extract_consensus_features
514
- _perform_adduct_grouping = _perform_adduct_grouping
515
- _consensus_cleanup = _consensus_cleanup
516
- _identify_adduct_by_mass_shift = _identify_adduct_by_mass_shift
517
- _finalize_merge = _finalize_merge
467
+ # (All merge helper methods are now internal to the merge module)
518
468
 
519
469
  # === Default Parameters ===
520
470
  study_defaults = study_defaults
@@ -627,16 +577,24 @@ class Study:
627
577
  'find_consensus', # alias for merge
628
578
  'integrate_chrom', # alias for integrate
629
579
  'fill_chrom', # alias for fill
630
- 'fill_chrom_single', # alias for fill_single
631
580
  'filter_consensus', # alias for consensus_filter
632
581
  'select_consensus', # alias for consensus_select
633
582
  'filter_features', # alias for features_filter
634
583
  'select_features', # alias for features_select
635
584
  'consensus_find', # alias for merge
585
+ # Backward compatibility for renamed methods
586
+ 'set_folder', # alias for set_study_folder
587
+ 'set_source', # alias for set_samples_source
588
+ 'sample_color', # alias for set_samples_color
589
+ 'get_sample', # alias for get_samples
590
+ 'load_features', # alias for _load_features
591
+ 'store_history', # alias for update_history
592
+ 'sample_color_reset', # alias for set_samples_color(by=None)
593
+ 'reset_sample_color', # alias for sample_color_reset
636
594
  }
637
595
 
638
596
  # Get all attributes from the class
639
- all_attrs = set()
597
+ all_attrs: set[str] = set()
640
598
 
641
599
  # Add attributes from the class and all its bases
642
600
  for cls in self.__class__.__mro__:
@@ -895,8 +853,9 @@ class Study:
895
853
  tight_clusters_count = 0
896
854
  if consensus_df_len > 0:
897
855
  try:
856
+ from masster.study.merge import _count_tight_clusters
898
857
  tight_clusters_count = _count_tight_clusters(self, mz_tol=0.04, rt_tol=0.3)
899
- except Exception as e:
858
+ except Exception:
900
859
  # If tight clusters calculation fails, just use 0
901
860
  tight_clusters_count = 0
902
861
 
@@ -952,7 +911,6 @@ class Study:
952
911
 
953
912
  print(summary)
954
913
 
955
-
956
914
  if __name__ == "__main__":
957
915
  # This block is executed when the script is run directly
958
916
  pass
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: masster
3
- Version: 0.4.22
3
+ Version: 0.5.0
4
4
  Summary: Mass spectrometry data analysis package
5
5
  Project-URL: homepage, https://github.com/zamboni-lab/masster
6
6
  Project-URL: repository, https://github.com/zamboni-lab/masster
@@ -686,6 +686,7 @@ Requires-Dist: bokeh>=3.7.3
686
686
  Requires-Dist: cmap>=0.6.2
687
687
  Requires-Dist: datashader>=0.18.1
688
688
  Requires-Dist: h5py>=3.14.0
689
+ Requires-Dist: hdbscan>=0.8.40
689
690
  Requires-Dist: holoviews>=1.21.0
690
691
  Requires-Dist: hvplot>=0.11.3
691
692
  Requires-Dist: loguru>=0.7.3
@@ -701,6 +702,7 @@ Requires-Dist: pythonnet>=3.0.0
701
702
  Requires-Dist: scikit-learn>=1.7.1
702
703
  Requires-Dist: scipy>=1.12.0
703
704
  Requires-Dist: tqdm>=4.65.0
705
+ Requires-Dist: umap-learn>=0.5.9.post2
704
706
  Provides-Extra: dev
705
707
  Requires-Dist: bandit>=1.7.0; extra == 'dev'
706
708
  Requires-Dist: black>=23.0.0; extra == 'dev'
@@ -726,12 +728,13 @@ Description-Content-Type: text/markdown
726
728
 
727
729
  # MASSter
728
730
 
729
- **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.
731
+ **MASSter** is a Python package for the analysis of mass spectrometry data, tailored for the purpose of metabolomics and LC-MS data processing. It is designed to deal with DDA, and hides functionalities for DIA and ZTScan DIA data. The sample-centric feature detection uses OpenMS. All other functionalities for e.g. centroiding, RT alignment, adduct and isotopomer detection, merging of multiple samples, gap-filling, quantification, etc. were redesigned and engineered to maximize scalability (tested with 3000 LC-MS), speed, quality, and results.
730
732
 
731
733
  This is a poorly documented, stable branch of the development codebase in use in the Zamboni lab.
732
734
 
733
- 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.
735
+ ## Prerequisites
734
736
 
737
+ **MASSter** reads raw (Thermo), wiff (SCIEX), or mzML data. It's recommended to provide raw, profile data.
735
738
 
736
739
  ## Installation
737
740
 
@@ -739,20 +742,60 @@ Some of the core processing functions are derived from OpenMS. We use the same n
739
742
  pip install masster
740
743
  ```
741
744
 
742
- ### Basic Workflow for analyzing LC-MS study with 2-... samples
745
+ ## Basic usage
746
+ ### Quick start: use the wizard
747
+
748
+ ```python
749
+ import masster
750
+ masster.wizard.execute(
751
+ source=r'..\..\folder_with_raw_data',
752
+ folder=r'..\..folder_to_store_results'
753
+ )
754
+ ```
743
755
 
756
+ This will run a wizard that should perform all key steps and save the results to the `folder`.
757
+
758
+ ### Basic workflow for analyzing a single sample
744
759
  ```python
745
760
  import masster
761
+ sample = masster.Sample(filename='...') # full path to a *.raw, *.wiff, or *.mzML file
762
+ # process
763
+ sample.find_features(chrom_fwhm=0.5, noise=50) # for orbitrap data, set noise to 1e5
764
+ sample.find_adducts()
765
+ sample.find_ms2()
766
+
767
+ # access data
768
+ sample.features_df
769
+
770
+ # save results
771
+ sample.save() # stores to *.sample5, our custom hdf5 format
772
+ sample.export_mgf()
773
+
774
+ # some plots
775
+ sample.plot_bpc()
776
+ sample.plot_tic()
777
+ sample.plot_2d()
778
+ sample.plot_features_stats()
779
+
780
+ # explore methods
781
+ dir(study)
782
+ ```
783
+
784
+ ### Basic Workflow for analyzing LC-MS study with 2-... samples
746
785
 
786
+ ```python
787
+ import masster
747
788
  # Initialize the Study object with the default folder
748
- study = masster.Study(default_folder=r'D:\...\mylcms')
789
+ study = masster.Study(folder=r'D:\...\mylcms')
749
790
 
750
791
  # Load data from folder with raw data, here: WIFF
751
792
  study.add(r'D:\...\...\...\*.wiff')
752
793
 
753
794
  # Perform retention time correction
754
- study.align(rt_max_diff=2.0)
795
+ study.align(rt_tol=2.0)
755
796
  study.plot_alignment()
797
+ study.plot_bpc()
798
+ study.plot_rt_correction()
756
799
 
757
800
  # Find consensus features
758
801
  study.merge(min_samples=3)
@@ -772,18 +815,15 @@ study.export_parquet()
772
815
 
773
816
  # Save the study to .study5
774
817
  study.save()
775
- ```
776
-
777
- ## Requirements
778
818
 
779
- - Python 3.11
780
- - Key dependencies: pandas, polars, numpy, scipy, matplotlib, bokeh, holoviews, panel
781
- - See `pyproject.toml` for complete dependency list
819
+ # Some of the plots...
820
+ study.plot_samples_pca()
821
+ study.plot_samples_umap()
822
+ study.plot_samples_2d()
823
+ ```
782
824
 
783
825
  ## License
784
-
785
826
  GNU Affero General Public License v3
786
827
 
787
828
  ## Citation
788
-
789
829
  If you use Masster in your research, please cite this repository.
@@ -1,5 +1,5 @@
1
1
  masster/__init__.py,sha256=ueZ224WPNRRjQEYTaQUol818nwQgJwB93HbEfmtPRmg,1041
2
- masster/_version.py,sha256=vQFUBi9UR5DFflCbwobRTLg-jW9TsSQB1GlM1tfxYuc,257
2
+ masster/_version.py,sha256=P5MV1QkrG88uczENqaXQiyOnJWkFQaZ4FsWNCqYySbg,256
3
3
  masster/chromatogram.py,sha256=iYpdv8C17zVnlWvOFgAn9ns2uFGiF-GgoYf5QVVAbHs,19319
4
4
  masster/logger.py,sha256=tR65N23zfrNpcZNbZm2ot_Aual9XrGB1MWjLrovZkMs,16749
5
5
  masster/spectrum.py,sha256=XJSUrqXZSzfpWnD8v5IMClXMRZLKLYIk014qaMOS9_k,49738
@@ -17,16 +17,16 @@ masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecR
17
17
  masster/lib/__init__.py,sha256=TcePNx3SYZHz6763TL9Sg4gUNXaRWjlrOtyS6vsu-hg,178
18
18
  masster/lib/lib.py,sha256=mxUYBCBmkSBZB82557smSHCS25BAusuCewvW8zwsLGg,27130
19
19
  masster/sample/__init__.py,sha256=HL0m1ept0PMAYUCQtDDnkdOS12IFl6oLAq4TZQz83uY,170
20
- masster/sample/adducts.py,sha256=jdtkkiMFeObRv3myluUx--IfpRsEq3-hPgkCb2VUxy4,32590
20
+ masster/sample/adducts.py,sha256=S7meba3L1tSdjoDhkSiTI71H2NJLu4i1dtJwfDKWI1M,32591
21
21
  masster/sample/h5.py,sha256=B0gAmhrnoFoybotqsqiT8s-PkeZWUdIQfI-4cnM52Zc,115430
22
22
  masster/sample/helpers.py,sha256=JhzFpNh7j7YVUibIMuPQ50hBcGDEBCaBbmwA3Z5OhgM,41336
23
23
  masster/sample/lib.py,sha256=E-j9c3Wd8f9a-H8xj7CAOwlA8KcyXPoFyYm3c8r7LtI,33755
24
- masster/sample/load.py,sha256=TqBuDPrNgIotR-mL475AfDZntsW0JjYcy5AovVKRZxY,51560
24
+ masster/sample/load.py,sha256=CSJnNfJ6EpWEIbDj92mJK0qFao0ycxuGf_w9DzWhlnY,51721
25
25
  masster/sample/parameters.py,sha256=Gg2KcuNbV_wZ_Wwv93QlM5J19ji0oSIvZLPV1NoBmq0,4456
26
- masster/sample/plot.py,sha256=bQlEXCLQQWpUV88vGtftW9WAVwDKZ4k7TBirV9cO54w,82573
27
- masster/sample/processing.py,sha256=A1u5u7lGG0HR_ciUhJFmmwgugher7_AZQopNnbu65Bs,55910
26
+ masster/sample/plot.py,sha256=0v4FzO_yzpUdATjdHZU4YO7UoW73Xlf51vVQByQ33X0,82574
27
+ masster/sample/processing.py,sha256=Sh6IFxuFcmCspyizUPghd4Qqqk1mTPCNtvdxmyy0eKQ,55914
28
28
  masster/sample/quant.py,sha256=tHNjvUFTdehKR31BXBZnVsBxMD9XJHgaltITOjr71uE,7562
29
- masster/sample/sample.py,sha256=uQP5DLdsRSC2YwZZvspsL9rgl_HefB-oxrL2dpgg_fc,19788
29
+ masster/sample/sample.py,sha256=_IUvUIlW2F4NRxsOdtBb1NePJJX_9FDcT5ZgM4O7ZRs,20534
30
30
  masster/sample/sample5_schema.json,sha256=H5e2T6rHIDzul2kp_yP-ILUUWUpW08wP2pEQjMR0nSk,3977
31
31
  masster/sample/save.py,sha256=2yQtcQcRJjgAKPImTydj7LpyyMop_Q9JKRlNEK4yU6k,36339
32
32
  masster/sample/sciex.py,sha256=vnbxsq_qnAQVuzcpziP1o3IC4kM5amGBcPmC2TAuDLw,46319
@@ -37,17 +37,18 @@ masster/sample/defaults/find_ms2_def.py,sha256=KTELMAnioGLYbhzAwOgK14TZqboPEvzeB
37
37
  masster/sample/defaults/get_spectrum_def.py,sha256=o62p31PhGd-LiIkTOzKQhwPtnO2AtQDHcPu-O-YoQPs,11460
38
38
  masster/sample/defaults/sample_def.py,sha256=keoXyMyrm_iLgbYqfIbqCpJ3XHBVlNwCNmb5iMQL0iY,14579
39
39
  masster/study/__init__.py,sha256=55axdFuqRX4aXtJ8ocnhcLB32fNtmmJpCi58moO0r4g,237
40
- masster/study/export.py,sha256=c-UQPYRwNBde8E1cYOB-0ZZz2tBDTwglRMlPfSKYB0w,59291
40
+ masster/study/analysis.py,sha256=L-wXBnGZCLB5UUDrjIdOiMG9zdej3Tw_SftcEmmTukM,84264
41
+ masster/study/export.py,sha256=Rp1vc5iDl-XFWo_RBVCJDGBNSKakq9f8aC2FeUCP9GA,59398
41
42
  masster/study/h5.py,sha256=eINlVmcJuntwbkkZHwzm10c63Kg7zib49vkzLDj1PyU,84790
42
- masster/study/helpers.py,sha256=6nDTNlsZbZWf9L6D5qzK2TUO2y7UBq51Ftj8N4bkIAk,160260
43
- masster/study/id.py,sha256=6NUBBKZCFOU1wlDKM0eXQeOIStSZCRNJ_3x7ZaIHzmM,55263
44
- masster/study/load.py,sha256=mI6UyErlj3vIzSuG93fOjsxA7IIDCaiKfcuAcc2538o,72425
45
- masster/study/merge.py,sha256=3R_Dg6l2mnJUu3gFVAgrAN5hFSQyfHbqYPmc2cUfJqQ,159232
46
- masster/study/parameters.py,sha256=0elaF7YspTsB7qyajWAbRNL2VfKlGz5GJLifmO8IGkk,3276
47
- masster/study/plot.py,sha256=OGUa_dDTD2QydbLg-4APRZc7Jx1kk9eXC9-GOLLgI1I,87666
48
- masster/study/processing.py,sha256=p0d-DyxA0YI6K9OPQZYTEs00DC6obr6-kLHPVWljEO0,56437
49
- masster/study/save.py,sha256=BANh9F1s-q7MclO1Mq_-v4xQyHeloEgmoPgRDVc-9aE,9037
50
- masster/study/study.py,sha256=rk-pJNg80N6xbROa9fqPfwVxFgzL_FLoSUNOTYeD5E0,40116
43
+ masster/study/helpers.py,sha256=dU2YxAGPmu1w55mpcgNoHPpg2fNW-vK944aJy3YwLsU,163555
44
+ masster/study/id.py,sha256=L5S0etAeEmtkzE06M32PNo3rp-WE01sLU6M5_TdNC3w,55266
45
+ masster/study/load.py,sha256=x0OvfOoSY-6lQ8_B9KeDUh_E99eYRm1WGLnCY3CGqF8,71222
46
+ masster/study/merge.py,sha256=MvvEwS2_UCWIrxROtuYTkJOu3pk8EasorbrfWug2e68,159736
47
+ masster/study/parameters.py,sha256=bTvmcwX9INxzcrEAmTiFH8qeWVhwkvMTZjuP394pz5o,3279
48
+ masster/study/plot.py,sha256=pAN5uQKYPUpupQVtKBloWjKOKpM_C9o2e3VWkJ-aZN8,102041
49
+ masster/study/processing.py,sha256=hf8FEPONXz4x6G1fke6SEUnCJCv47cGeo--6h1c1Sis,56441
50
+ masster/study/save.py,sha256=47AP518epJJ9TjaGGyrLKsMsyjIk8_J4ka7bmsnRtFQ,9268
51
+ masster/study/study.py,sha256=YLt6tqCPkWvmKGBvhiyh1LeZgr165f9eqgiIV5OLomY,38393
51
52
  masster/study/study5_schema.json,sha256=ghBeAXFS4a4Uavdn6TUVs9GaR1QOTnADCjQTOkN0tjU,7563
52
53
  masster/study/defaults/__init__.py,sha256=m3Z5KXGqsTdh7GjYzZoENERt39yRg0ceVRV1DeCt1P0,610
53
54
  masster/study/defaults/align_def.py,sha256=hHQbGgsOqMRHHr0Wn8Onr8XeaRz3-fFE0qGE-OMst80,20324
@@ -65,8 +66,8 @@ masster/wizard/README.md,sha256=mL1A3YWJZOefpJ6D0-HqGLkVRmUlOpwyVFdvJBeeoZM,1414
65
66
  masster/wizard/__init__.py,sha256=a2hcZnHASjfuw1lqZhZnvTR58rc33rRnoGAY_JfvGhI,683
66
67
  masster/wizard/example.py,sha256=xEZFTH9UZ8HKOm6s3JL8Js0Uw5ChnISWBHSZCL32vsM,7983
67
68
  masster/wizard/wizard.py,sha256=esgaifLRyaGxytif9qOkTy-21VxlUQxrvl47K-l-BpE,37666
68
- masster-0.4.22.dist-info/METADATA,sha256=CXrrzzCC5cZ_G9plLZyCtiNpTXevD0wPuUNm0mIy-a4,44207
69
- masster-0.4.22.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
70
- masster-0.4.22.dist-info/entry_points.txt,sha256=ZHguQ_vPmdbpqq2uGtmEOLJfgP-DQ1T0c07Lxh30wc8,58
71
- masster-0.4.22.dist-info/licenses/LICENSE,sha256=bx5iLIKjgAdYQ7sISn7DsfHRKkoCUm1154sJJKhgqnU,35184
72
- masster-0.4.22.dist-info/RECORD,,
69
+ masster-0.5.0.dist-info/METADATA,sha256=HSAp3U_YG6chyHAIJ6YAzyQbN0OQ1L2dxs_S0p_CGns,45113
70
+ masster-0.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
71
+ masster-0.5.0.dist-info/entry_points.txt,sha256=ZHguQ_vPmdbpqq2uGtmEOLJfgP-DQ1T0c07Lxh30wc8,58
72
+ masster-0.5.0.dist-info/licenses/LICENSE,sha256=bx5iLIKjgAdYQ7sISn7DsfHRKkoCUm1154sJJKhgqnU,35184
73
+ masster-0.5.0.dist-info/RECORD,,