masster 0.5.5__py3-none-any.whl → 0.5.7__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/_version.py +1 -1
- masster/data/libs/hilic.csv +4812 -0
- masster/sample/adducts.py +1 -1
- masster/sample/helpers.py +17 -1
- masster/sample/plot.py +115 -25
- masster/sample/sample.py +6 -3
- masster/sample/save.py +56 -2
- masster/spectrum.py +5 -2
- masster/study/defaults/merge_def.py +1 -1
- {masster-0.5.5.dist-info → masster-0.5.7.dist-info}/METADATA +1 -1
- {masster-0.5.5.dist-info → masster-0.5.7.dist-info}/RECORD +14 -13
- {masster-0.5.5.dist-info → masster-0.5.7.dist-info}/WHEEL +0 -0
- {masster-0.5.5.dist-info → masster-0.5.7.dist-info}/entry_points.txt +0 -0
- {masster-0.5.5.dist-info → masster-0.5.7.dist-info}/licenses/LICENSE +0 -0
masster/sample/adducts.py
CHANGED
|
@@ -473,7 +473,7 @@ def find_adducts(self, **kwargs):
|
|
|
473
473
|
self.logger.debug(f"Min probability threshold: {min_probability}")
|
|
474
474
|
|
|
475
475
|
# Generate comprehensive adduct specifications using the Sample method
|
|
476
|
-
adducts_df = _get_adducts(
|
|
476
|
+
adducts_df = self._get_adducts(
|
|
477
477
|
adducts_list=adducts_list,
|
|
478
478
|
charge_min=charge_min,
|
|
479
479
|
charge_max=charge_max,
|
masster/sample/helpers.py
CHANGED
|
@@ -358,7 +358,7 @@ def get_eic(self, mz, mz_tol=None):
|
|
|
358
358
|
return None
|
|
359
359
|
|
|
360
360
|
|
|
361
|
-
def
|
|
361
|
+
def features_select(
|
|
362
362
|
self,
|
|
363
363
|
mz=None,
|
|
364
364
|
rt=None,
|
|
@@ -372,6 +372,7 @@ def select(
|
|
|
372
372
|
height_scaled=None,
|
|
373
373
|
prominence=None,
|
|
374
374
|
height=None,
|
|
375
|
+
uids=None,
|
|
375
376
|
):
|
|
376
377
|
"""
|
|
377
378
|
Select features based on specified criteria and return the filtered DataFrame.
|
|
@@ -389,6 +390,7 @@ def select(
|
|
|
389
390
|
height_scaled: scaled height filter (tuple for range, single value for minimum)
|
|
390
391
|
prominence: prominence filter (tuple for range, single value for minimum)
|
|
391
392
|
height: height filter (tuple for range, single value for minimum)
|
|
393
|
+
uids: feature UID filter (list of feature UIDs, polars/pandas DataFrame with feature_uid/feature_id column, or None for all features)
|
|
392
394
|
|
|
393
395
|
Returns:
|
|
394
396
|
polars.DataFrame: Filtered features DataFrame
|
|
@@ -398,6 +400,20 @@ def select(
|
|
|
398
400
|
# self.logger.info("No features found. R")
|
|
399
401
|
return
|
|
400
402
|
feats = self.features_df.clone()
|
|
403
|
+
|
|
404
|
+
# Filter by feature UIDs if provided
|
|
405
|
+
if uids is not None:
|
|
406
|
+
feature_uids_to_keep = self._get_feature_uids(features=uids, verbose=True)
|
|
407
|
+
if not feature_uids_to_keep:
|
|
408
|
+
self.logger.warning("No valid feature UIDs provided.")
|
|
409
|
+
return feats.limit(0) # Return empty DataFrame with same structure
|
|
410
|
+
|
|
411
|
+
feats_len_before_filter = len(feats)
|
|
412
|
+
feats = feats.filter(pl.col("feature_uid").is_in(feature_uids_to_keep))
|
|
413
|
+
self.logger.debug(
|
|
414
|
+
f"Selected features by UIDs. Features removed: {feats_len_before_filter - len(feats)}",
|
|
415
|
+
)
|
|
416
|
+
|
|
401
417
|
if coherence is not None:
|
|
402
418
|
has_coherence = "chrom_coherence" in self.features_df.columns
|
|
403
419
|
if not has_coherence:
|
masster/sample/plot.py
CHANGED
|
@@ -57,12 +57,76 @@ from holoviews import dim
|
|
|
57
57
|
from holoviews.plotting.util import process_cmap
|
|
58
58
|
from matplotlib.colors import rgb2hex
|
|
59
59
|
|
|
60
|
+
# Import cmap for colormap handling
|
|
61
|
+
try:
|
|
62
|
+
from cmap import Colormap
|
|
63
|
+
except ImportError:
|
|
64
|
+
Colormap = None
|
|
65
|
+
|
|
60
66
|
# Parameters removed - using hardcoded defaults
|
|
61
67
|
|
|
62
68
|
|
|
63
69
|
hv.extension("bokeh")
|
|
64
70
|
|
|
65
71
|
|
|
72
|
+
def _process_cmap(cmap, fallback="viridis", logger=None):
|
|
73
|
+
"""
|
|
74
|
+
Process colormap using the cmap package, similar to study's implementation.
|
|
75
|
+
|
|
76
|
+
Parameters:
|
|
77
|
+
cmap: Colormap specification (string name, cmap.Colormap object, or None)
|
|
78
|
+
fallback: Fallback colormap name if cmap processing fails
|
|
79
|
+
logger: Logger for warnings (optional)
|
|
80
|
+
|
|
81
|
+
Returns:
|
|
82
|
+
list: List of hex color strings for the colormap
|
|
83
|
+
"""
|
|
84
|
+
# Handle None case
|
|
85
|
+
if cmap is None:
|
|
86
|
+
cmap = "viridis"
|
|
87
|
+
elif cmap == "grey":
|
|
88
|
+
cmap = "Greys256"
|
|
89
|
+
|
|
90
|
+
# If cmap package is not available, fall back to process_cmap
|
|
91
|
+
if Colormap is None:
|
|
92
|
+
if logger:
|
|
93
|
+
logger.warning("cmap package not available, using holoviews process_cmap")
|
|
94
|
+
return process_cmap(cmap, provider="bokeh")
|
|
95
|
+
|
|
96
|
+
try:
|
|
97
|
+
# Handle colormap using cmap.Colormap
|
|
98
|
+
if isinstance(cmap, str):
|
|
99
|
+
colormap = Colormap(cmap)
|
|
100
|
+
# Generate 256 colors and convert to hex
|
|
101
|
+
import matplotlib.colors as mcolors
|
|
102
|
+
colors = colormap(np.linspace(0, 1, 256))
|
|
103
|
+
palette = [mcolors.rgb2hex(color) for color in colors]
|
|
104
|
+
else:
|
|
105
|
+
colormap = cmap
|
|
106
|
+
# Try to use to_bokeh() method first
|
|
107
|
+
try:
|
|
108
|
+
palette = colormap.to_bokeh()
|
|
109
|
+
# Ensure we got a color palette, not another mapper
|
|
110
|
+
if not isinstance(palette, (list, tuple)):
|
|
111
|
+
# Fall back to generating colors manually
|
|
112
|
+
import matplotlib.colors as mcolors
|
|
113
|
+
colors = colormap(np.linspace(0, 1, 256))
|
|
114
|
+
palette = [mcolors.rgb2hex(color) for color in colors]
|
|
115
|
+
except AttributeError:
|
|
116
|
+
# Fall back to generating colors manually
|
|
117
|
+
import matplotlib.colors as mcolors
|
|
118
|
+
colors = colormap(np.linspace(0, 1, 256))
|
|
119
|
+
palette = [mcolors.rgb2hex(color) for color in colors]
|
|
120
|
+
|
|
121
|
+
return palette
|
|
122
|
+
|
|
123
|
+
except (AttributeError, ValueError, TypeError) as e:
|
|
124
|
+
# Fallback to process_cmap if cmap interpretation fails
|
|
125
|
+
if logger:
|
|
126
|
+
logger.warning(f"Could not interpret colormap '{cmap}': {e}, falling back to {fallback}")
|
|
127
|
+
return process_cmap(fallback, provider="bokeh")
|
|
128
|
+
|
|
129
|
+
|
|
66
130
|
def _is_notebook_environment():
|
|
67
131
|
"""
|
|
68
132
|
Detect if code is running in a notebook environment (Jupyter, JupyterLab, or Marimo).
|
|
@@ -389,15 +453,15 @@ def plot_2d(
|
|
|
389
453
|
show_ms2=False,
|
|
390
454
|
show_in_browser=False,
|
|
391
455
|
title=None,
|
|
392
|
-
cmap=
|
|
456
|
+
cmap='iridescent',
|
|
393
457
|
marker="circle",
|
|
394
|
-
markersize=
|
|
458
|
+
markersize=5,
|
|
395
459
|
size="static",
|
|
396
460
|
raster_dynamic=True,
|
|
397
461
|
raster_max_px=8,
|
|
398
462
|
raster_threshold=0.8,
|
|
399
463
|
height=600,
|
|
400
|
-
width=
|
|
464
|
+
width=750,
|
|
401
465
|
mz_range=None,
|
|
402
466
|
rt_range=None
|
|
403
467
|
):
|
|
@@ -462,10 +526,8 @@ def plot_2d(
|
|
|
462
526
|
self.logger.error("No MS1 data available.")
|
|
463
527
|
return
|
|
464
528
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
elif cmap == "grey":
|
|
468
|
-
cmap = "Greys256"
|
|
529
|
+
# Process colormap using the cmap package
|
|
530
|
+
cmap_palette = _process_cmap(cmap, fallback="iridescent", logger=self.logger)
|
|
469
531
|
|
|
470
532
|
# get columns rt, mz, inty from self.ms1_df, It's polars DataFrame
|
|
471
533
|
spectradf = self.ms1_df.select(["rt", "mz", "inty"])
|
|
@@ -585,7 +647,7 @@ def plot_2d(
|
|
|
585
647
|
dynamic=dyn, # alpha=10, min_alpha=0,
|
|
586
648
|
).opts(
|
|
587
649
|
active_tools=["box_zoom"],
|
|
588
|
-
cmap=
|
|
650
|
+
cmap=cmap_palette,
|
|
589
651
|
tools=["hover"],
|
|
590
652
|
hooks=[new_bounds_hook],
|
|
591
653
|
width=width,
|
|
@@ -1003,10 +1065,8 @@ def plot_2d_oracle(
|
|
|
1003
1065
|
print("Please load a file first.")
|
|
1004
1066
|
return
|
|
1005
1067
|
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
elif cmap == "iridescent":
|
|
1009
|
-
cmap = "iridescent_r"
|
|
1068
|
+
# Process colormap using the cmap package
|
|
1069
|
+
cmap_palette = _process_cmap(cmap, fallback="Greys256", logger=self.logger)
|
|
1010
1070
|
|
|
1011
1071
|
# get columns rt, mz, inty from self.ms1_df, It's polars DataFrame
|
|
1012
1072
|
spectradf = self.ms1_df.to_pandas()
|
|
@@ -1057,7 +1117,7 @@ def plot_2d_oracle(
|
|
|
1057
1117
|
dynamic=dyn, # alpha=10, min_alpha=0,
|
|
1058
1118
|
).opts(
|
|
1059
1119
|
active_tools=["box_zoom"],
|
|
1060
|
-
cmap=
|
|
1120
|
+
cmap=cmap_palette,
|
|
1061
1121
|
tools=["hover"],
|
|
1062
1122
|
hooks=[new_bounds_hook],
|
|
1063
1123
|
width=1000,
|
|
@@ -1183,13 +1243,45 @@ def plot_2d_oracle(
|
|
|
1183
1243
|
|
|
1184
1244
|
if cvalues is not None:
|
|
1185
1245
|
num_colors = len(cvalues)
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1246
|
+
|
|
1247
|
+
# Use cmap package for categorical colormap
|
|
1248
|
+
try:
|
|
1249
|
+
if Colormap is not None:
|
|
1250
|
+
# Use rainbow colormap for categorical data
|
|
1251
|
+
colormap = Colormap("rainbow")
|
|
1252
|
+
colors = []
|
|
1253
|
+
for i in range(num_colors):
|
|
1254
|
+
# Generate evenly spaced colors across the colormap
|
|
1255
|
+
t = i / (num_colors - 1) if num_colors > 1 else 0.5
|
|
1256
|
+
color = colormap(t)
|
|
1257
|
+
# Convert to hex
|
|
1258
|
+
import matplotlib.colors as mcolors
|
|
1259
|
+
# Convert color to hex - handle different color formats
|
|
1260
|
+
if hasattr(color, '__len__') and len(color) >= 3:
|
|
1261
|
+
# It's an array-like color (RGB or RGBA)
|
|
1262
|
+
colors.append(mcolors.rgb2hex(color[:3]))
|
|
1263
|
+
else:
|
|
1264
|
+
# It's a single value, convert to RGB
|
|
1265
|
+
colors.append(mcolors.rgb2hex([color, color, color]))
|
|
1266
|
+
else:
|
|
1267
|
+
# Fallback to original method
|
|
1268
|
+
cmap = "rainbow"
|
|
1269
|
+
cmap_provider = "colorcet"
|
|
1270
|
+
cm = process_cmap(cmap, ncolors=num_colors, provider=cmap_provider)
|
|
1271
|
+
colors = [
|
|
1272
|
+
rgb2hex(cm[int(i * (len(cm) - 1) / (num_colors - 1))]) if num_colors > 1 else rgb2hex(cm[0])
|
|
1273
|
+
for i in range(num_colors)
|
|
1274
|
+
]
|
|
1275
|
+
except Exception:
|
|
1276
|
+
# Final fallback to original method
|
|
1277
|
+
cmap = "rainbow"
|
|
1278
|
+
cmap_provider = "colorcet"
|
|
1279
|
+
cm = process_cmap(cmap, ncolors=num_colors, provider=cmap_provider)
|
|
1280
|
+
colors = [
|
|
1281
|
+
rgb2hex(cm[int(i * (len(cm) - 1) / (num_colors - 1))]) if num_colors > 1 else rgb2hex(cm[0])
|
|
1282
|
+
for i in range(num_colors)
|
|
1283
|
+
]
|
|
1284
|
+
|
|
1193
1285
|
# assign color to each row based on id_class. If id_class is null, assign 'black'
|
|
1194
1286
|
feats["color"] = "black"
|
|
1195
1287
|
|
|
@@ -1577,10 +1669,8 @@ def plot_ms2_cycle(
|
|
|
1577
1669
|
print("Cycle number not found in scans_df.")
|
|
1578
1670
|
return
|
|
1579
1671
|
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
elif cmap == "grey":
|
|
1583
|
-
cmap = "Greys256"
|
|
1672
|
+
# Process colormap using the cmap package
|
|
1673
|
+
cmap_palette = _process_cmap(cmap, fallback="iridescent_r", logger=self.logger)
|
|
1584
1674
|
|
|
1585
1675
|
# find all scans in cycle
|
|
1586
1676
|
scans = self.scans_df.filter(pl.col("cycle") == cycle)
|
|
@@ -1645,7 +1735,7 @@ def plot_ms2_cycle(
|
|
|
1645
1735
|
dynamic=raster_dynamic, # alpha=10, min_alpha=0,
|
|
1646
1736
|
).opts(
|
|
1647
1737
|
active_tools=["box_zoom"],
|
|
1648
|
-
cmap=
|
|
1738
|
+
cmap=cmap_palette,
|
|
1649
1739
|
tools=["hover"],
|
|
1650
1740
|
hooks=[new_bounds_hook],
|
|
1651
1741
|
width=1000,
|
masster/sample/sample.py
CHANGED
|
@@ -57,10 +57,11 @@ from masster.sample.helpers import _get_scan_uids
|
|
|
57
57
|
from masster.sample.helpers import _get_feature_uids
|
|
58
58
|
# from masster.sample.helpers import _features_sync - made internal only
|
|
59
59
|
from masster.sample.adducts import find_adducts
|
|
60
|
+
from masster.sample.adducts import _get_adducts
|
|
60
61
|
# Removed _get_adducts - only used in study modules
|
|
61
62
|
from masster.sample.helpers import features_delete
|
|
62
63
|
from masster.sample.helpers import features_filter
|
|
63
|
-
from masster.sample.helpers import
|
|
64
|
+
from masster.sample.helpers import features_select
|
|
64
65
|
from masster.sample.helpers import select_closest_scan
|
|
65
66
|
from masster.sample.helpers import get_dda_stats
|
|
66
67
|
from masster.sample.helpers import get_feature
|
|
@@ -110,6 +111,7 @@ from masster.sample.save import export_chrom
|
|
|
110
111
|
from masster.sample.save import export_dda_stats
|
|
111
112
|
from masster.sample.save import export_features
|
|
112
113
|
from masster.sample.save import export_mgf
|
|
114
|
+
from masster.sample.save import export_xlsx
|
|
113
115
|
from masster.sample.save import save
|
|
114
116
|
# Removed internal-only import: _save_featureXML
|
|
115
117
|
|
|
@@ -139,7 +141,6 @@ class Sample:
|
|
|
139
141
|
|
|
140
142
|
Core initialization parameters:
|
|
141
143
|
- file (str, optional): The file path or file object to be loaded
|
|
142
|
-
- ondisk (bool): Whether to keep data on disk or load into memory. Default is False
|
|
143
144
|
- label (str, optional): An optional label to identify the file or dataset
|
|
144
145
|
- log_level (str): The logging level to be set for the logger. Defaults to 'INFO'
|
|
145
146
|
- log_label (str, optional): Optional label for the logger
|
|
@@ -221,11 +222,12 @@ class Sample:
|
|
|
221
222
|
save = save
|
|
222
223
|
find_features = find_features
|
|
223
224
|
find_adducts = find_adducts
|
|
225
|
+
_get_adducts= _get_adducts
|
|
224
226
|
find_iso = find_iso
|
|
225
227
|
find_ms2 = find_ms2
|
|
226
228
|
get_spectrum = get_spectrum
|
|
227
229
|
filter = features_filter
|
|
228
|
-
select =
|
|
230
|
+
select = features_select
|
|
229
231
|
features_filter = filter # New function that keeps only specified features
|
|
230
232
|
filter_features = filter
|
|
231
233
|
features_select = select
|
|
@@ -238,6 +240,7 @@ class Sample:
|
|
|
238
240
|
get_parameters_property = get_parameters_property
|
|
239
241
|
set_parameters_property = set_parameters_property
|
|
240
242
|
export_features = export_features
|
|
243
|
+
export_xlsx = export_xlsx
|
|
241
244
|
export_mgf = export_mgf
|
|
242
245
|
export_chrom = export_chrom
|
|
243
246
|
export_dda_stats = export_dda_stats
|
masster/sample/save.py
CHANGED
|
@@ -105,7 +105,7 @@ def save(self, filename=None):
|
|
|
105
105
|
self._save_sample5(filename=filename)
|
|
106
106
|
self.file_path = filename
|
|
107
107
|
|
|
108
|
-
|
|
108
|
+
'''
|
|
109
109
|
def _save_featureXML(self, filename="features.featureXML"):
|
|
110
110
|
if self._oms_features_map is None:
|
|
111
111
|
self.logger.warning("No features found.")
|
|
@@ -114,7 +114,7 @@ def _save_featureXML(self, filename="features.featureXML"):
|
|
|
114
114
|
fh.store(filename, self._oms_features_map)
|
|
115
115
|
self.logger.debug(f"Features Map saved to {filename}")
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
'''
|
|
118
118
|
def export_features(self, filename="features.csv"):
|
|
119
119
|
"""
|
|
120
120
|
Export the features DataFrame to a CSV or Excel file.
|
|
@@ -827,6 +827,60 @@ def export_dda_stats(self, filename="stats.csv"):
|
|
|
827
827
|
self.logger.info(f"DDA statistics exported to {filename}")
|
|
828
828
|
|
|
829
829
|
|
|
830
|
+
def export_xlsx(self, filename="features.xlsx"):
|
|
831
|
+
"""
|
|
832
|
+
Export the features DataFrame to an Excel file.
|
|
833
|
+
|
|
834
|
+
This method exports the features DataFrame (features_df) to an Excel (.xlsx) file.
|
|
835
|
+
Columns with data types 'List' or 'Object' are excluded from the export to ensure
|
|
836
|
+
compatibility with Excel format. A boolean column 'has_ms2' is added to indicate
|
|
837
|
+
whether MS2 data is available for each feature.
|
|
838
|
+
|
|
839
|
+
Parameters:
|
|
840
|
+
filename (str): The path to the output Excel file. Must end with '.xlsx' or '.xls'.
|
|
841
|
+
Defaults to 'features.xlsx'.
|
|
842
|
+
|
|
843
|
+
Raises:
|
|
844
|
+
ValueError: If filename doesn't end with '.xlsx' or '.xls'
|
|
845
|
+
|
|
846
|
+
Side Effects:
|
|
847
|
+
Writes the exported data to the specified Excel file and logs the export operation.
|
|
848
|
+
"""
|
|
849
|
+
if self.features_df is None:
|
|
850
|
+
self.logger.warning("No features found. Cannot export to Excel.")
|
|
851
|
+
return
|
|
852
|
+
|
|
853
|
+
# Validate filename extension
|
|
854
|
+
if not filename.lower().endswith(('.xlsx', '.xls')):
|
|
855
|
+
raise ValueError("Filename must end with '.xlsx' or '.xls' for Excel export")
|
|
856
|
+
|
|
857
|
+
filename = os.path.abspath(filename)
|
|
858
|
+
|
|
859
|
+
# Clone the DataFrame to avoid modifying the original
|
|
860
|
+
clean_df = self.features_df.clone()
|
|
861
|
+
|
|
862
|
+
# Add a column has_ms2=True if column ms2_scans is not None
|
|
863
|
+
if "ms2_scans" in clean_df.columns:
|
|
864
|
+
clean_df = clean_df.with_columns(
|
|
865
|
+
(pl.col("ms2_scans").is_not_null()).alias("has_ms2")
|
|
866
|
+
)
|
|
867
|
+
|
|
868
|
+
# Filter out columns with List or Object data types that can't be exported to Excel
|
|
869
|
+
exportable_columns = [
|
|
870
|
+
col for col in clean_df.columns
|
|
871
|
+
if clean_df[col].dtype not in (pl.List, pl.Object)
|
|
872
|
+
]
|
|
873
|
+
|
|
874
|
+
clean_df = clean_df.select(exportable_columns)
|
|
875
|
+
|
|
876
|
+
# Convert to pandas and export to Excel
|
|
877
|
+
pandas_df = clean_df.to_pandas()
|
|
878
|
+
pandas_df.to_excel(filename, index=False)
|
|
879
|
+
|
|
880
|
+
self.logger.info(f"Features exported to {filename} (Excel format)")
|
|
881
|
+
self.logger.debug(f"Exported {len(clean_df)} features with {len(exportable_columns)} columns")
|
|
882
|
+
|
|
883
|
+
|
|
830
884
|
def export_chrom(self, filename="chrom.csv"):
|
|
831
885
|
# saves self.chrom_df to a csv file. Remove the scan_uid and chrom columns if the file already exists
|
|
832
886
|
if self.chrom_df is None:
|
masster/spectrum.py
CHANGED
|
@@ -827,8 +827,11 @@ class Spectrum:
|
|
|
827
827
|
inty = inty[idx]
|
|
828
828
|
p.line(mz, inty, line_color="black", legend_label=label)
|
|
829
829
|
else:
|
|
830
|
-
data
|
|
831
|
-
data = {
|
|
830
|
+
# Build data dictionary from spectrum attributes (numpy arrays)
|
|
831
|
+
data = {}
|
|
832
|
+
for key, val in self.__dict__.items():
|
|
833
|
+
if isinstance(val, np.ndarray) and val.size == mz.size:
|
|
834
|
+
data[key] = val
|
|
832
835
|
if ylog:
|
|
833
836
|
data["zeros"] = np.ones_like(mz)
|
|
834
837
|
else:
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
masster/__init__.py,sha256=ueZ224WPNRRjQEYTaQUol818nwQgJwB93HbEfmtPRmg,1041
|
|
2
|
-
masster/_version.py,sha256=
|
|
2
|
+
masster/_version.py,sha256=ioQa4W_2pWdKSoU7hw7Pn6WMBm3nMuuLKfSR4f8171A,256
|
|
3
3
|
masster/chromatogram.py,sha256=iYpdv8C17zVnlWvOFgAn9ns2uFGiF-GgoYf5QVVAbHs,19319
|
|
4
4
|
masster/logger.py,sha256=tR65N23zfrNpcZNbZm2ot_Aual9XrGB1MWjLrovZkMs,16749
|
|
5
|
-
masster/spectrum.py,sha256=
|
|
5
|
+
masster/spectrum.py,sha256=TWIgDcl0lveG40cLVZTWGp8-FxMolu-P8EjZyRBtXL4,49850
|
|
6
6
|
masster/data/dda/20250530_VH_IQX_KW_RP_HSST3_100mm_12min_pos_v4_DDA_OT_C-MiLUT_QC_dil2_01_20250602151849.sample5,sha256=LdJMF8uLoDm9ixZNHBoOzBH6hX7NGY7vTvqa2Pzetb8,6539174
|
|
7
7
|
masster/data/dda/20250530_VH_IQX_KW_RP_HSST3_100mm_12min_pos_v4_DDA_OT_C-MiLUT_QC_dil3_01_20250602150634.sample5,sha256=hWUfslGoOTiQw59jENSBXP4sa6DdkbOi40FJ68ep61Q,6956773
|
|
8
8
|
masster/data/dda/20250530_VH_IQX_KW_RP_HSST3_100mm_12min_pos_v4_MS1_C-MiLUT_C008_v6_r38_01.sample5,sha256=dSd2cIgYYdRcNSzkhqlZCeWKi3x8Hhhcx8BFMuiVG4c,11382948
|
|
@@ -10,6 +10,7 @@ masster/data/dda/20250530_VH_IQX_KW_RP_HSST3_100mm_12min_pos_v4_MS1_C-MiLUT_C008
|
|
|
10
10
|
masster/data/dda/20250530_VH_IQX_KW_RP_HSST3_100mm_12min_pos_v4_MS1_C-MiLUT_C017_v5_r99_01.sample5,sha256=h2OOAWWTwKXzTNewhiYeL-cMYdp_JYLPya8Q9Nv9Lvw,12389587
|
|
11
11
|
masster/data/libs/aa.csv,sha256=Sja1DyMsiaM2NfLcct4kAAcXYwPCukJJW8sDkup9w_c,1924
|
|
12
12
|
masster/data/libs/ccm.csv,sha256=Q6nylV1152uTpX-ydqWeGrc6L9kgv45xN_fBZ4f7Tvo,12754
|
|
13
|
+
masster/data/libs/hilic.csv,sha256=Ao2IN9t7GiFWEBJg21TmNJZjTbyHC3e0dJcfftAKsM4,671265
|
|
13
14
|
masster/data/libs/urine.csv,sha256=iRrR4N8Wzb8KDhHJA4LqoQC35pp93FSaOKvXPrgFHis,653736
|
|
14
15
|
masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.timeseries.data,sha256=01vC6m__Qqm2rLvlTMZoeKIKowFvovBTUnrNl8Uav3E,24576
|
|
15
16
|
masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.wiff,sha256=go5N9gAM1rn4PZAVaoCmdteY9f7YGEM9gyPdSmkQ8PE,1447936
|
|
@@ -18,18 +19,18 @@ masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecR
|
|
|
18
19
|
masster/lib/__init__.py,sha256=TcePNx3SYZHz6763TL9Sg4gUNXaRWjlrOtyS6vsu-hg,178
|
|
19
20
|
masster/lib/lib.py,sha256=SSN06UtiM-hIdjS3eCiIHsJ_8S4YHRGOLGmdPIh-efo,27481
|
|
20
21
|
masster/sample/__init__.py,sha256=HL0m1ept0PMAYUCQtDDnkdOS12IFl6oLAq4TZQz83uY,170
|
|
21
|
-
masster/sample/adducts.py,sha256=
|
|
22
|
+
masster/sample/adducts.py,sha256=nl5KEuat0hvktgar6Ca4PbY8JXt9SD05EeTn0HOKt64,32592
|
|
22
23
|
masster/sample/h5.py,sha256=tlTPGrT9AMUhduvY_YPDzk6dZF5dI-9NRc1xeiuze5c,115442
|
|
23
|
-
masster/sample/helpers.py,sha256=
|
|
24
|
+
masster/sample/helpers.py,sha256=27eZFFidr02-DlSi4-eF4bpSk_y-qU3eoFCAOshRO20,42138
|
|
24
25
|
masster/sample/lib.py,sha256=E-j9c3Wd8f9a-H8xj7CAOwlA8KcyXPoFyYm3c8r7LtI,33755
|
|
25
26
|
masster/sample/load.py,sha256=swjRBCoFGni9iPztHIKPVB5ru_xDMVryB_inPXdujTw,51819
|
|
26
27
|
masster/sample/parameters.py,sha256=Gg2KcuNbV_wZ_Wwv93QlM5J19ji0oSIvZLPV1NoBmq0,4456
|
|
27
|
-
masster/sample/plot.py,sha256
|
|
28
|
+
masster/sample/plot.py,sha256=-rHqdi6q7jqjS8ENpTlxjwJBMZAwo-6OsNmE_d1JVQk,86617
|
|
28
29
|
masster/sample/processing.py,sha256=CjaLCElDKECeCvYWqzT5EH_-rPQ0Y4A30zKjZfqmS5s,55915
|
|
29
30
|
masster/sample/quant.py,sha256=tHNjvUFTdehKR31BXBZnVsBxMD9XJHgaltITOjr71uE,7562
|
|
30
|
-
masster/sample/sample.py,sha256=
|
|
31
|
+
masster/sample/sample.py,sha256=VhQik_ev1liRqGUtbZvV1NOjfFzgfZI1orfQT87gai4,20643
|
|
31
32
|
masster/sample/sample5_schema.json,sha256=H5e2T6rHIDzul2kp_yP-ILUUWUpW08wP2pEQjMR0nSk,3977
|
|
32
|
-
masster/sample/save.py,sha256=
|
|
33
|
+
masster/sample/save.py,sha256=IwWfcsmWLWM-2ASdhHXWAiPyrZBv5JUynvciNPppDUs,38643
|
|
33
34
|
masster/sample/sciex.py,sha256=vnbxsq_qnAQVuzcpziP1o3IC4kM5amGBcPmC2TAuDLw,46319
|
|
34
35
|
masster/sample/defaults/__init__.py,sha256=A09AOP44cxD_oYohyt7XFUho0zndRcrzVD4DUaGnKH4,447
|
|
35
36
|
masster/sample/defaults/find_adducts_def.py,sha256=Bu2KiBJRxD0SAnOPNMm_Nk-6fx6QYoRXjFNGzz-0_o0,13570
|
|
@@ -60,14 +61,14 @@ masster/study/defaults/find_ms2_def.py,sha256=RL0DFG41wQ05U8UQKUGr3vzSl3mU0m0knQ
|
|
|
60
61
|
masster/study/defaults/identify_def.py,sha256=96rxoCAPQj_yX-3mRoD2LTkTLJgG27eJQqwarLv5jL0,10580
|
|
61
62
|
masster/study/defaults/integrate_chrom_def.py,sha256=0MNIWGTjty-Zu-NTQsIweuj3UVqEY3x1x8pK0mPwYak,7264
|
|
62
63
|
masster/study/defaults/integrate_def.py,sha256=Vf4SAzdBfnsSZ3IRaF0qZvWu3gMDPHdgPfMYoPKeWv8,7246
|
|
63
|
-
masster/study/defaults/merge_def.py,sha256=
|
|
64
|
+
masster/study/defaults/merge_def.py,sha256=krR099IkENLlJVxpSjdje3E6h-_qtlc3Ep6Hpy6inrU,12978
|
|
64
65
|
masster/study/defaults/study_def.py,sha256=h8dYbi9xv0sesCSQik49Z53IkskMmNtW6ixl7it5pL0,16033
|
|
65
66
|
masster/wizard/README.md,sha256=mL1A3YWJZOefpJ6D0-HqGLkVRmUlOpwyVFdvJBeeoZM,14149
|
|
66
67
|
masster/wizard/__init__.py,sha256=a2hcZnHASjfuw1lqZhZnvTR58rc33rRnoGAY_JfvGhI,683
|
|
67
68
|
masster/wizard/example.py,sha256=xEZFTH9UZ8HKOm6s3JL8Js0Uw5ChnISWBHSZCL32vsM,7983
|
|
68
69
|
masster/wizard/wizard.py,sha256=UobIGFZtp1s_9WJlpl6DQ2-pp7flPQ6dlYZJqYE92OM,38131
|
|
69
|
-
masster-0.5.
|
|
70
|
-
masster-0.5.
|
|
71
|
-
masster-0.5.
|
|
72
|
-
masster-0.5.
|
|
73
|
-
masster-0.5.
|
|
70
|
+
masster-0.5.7.dist-info/METADATA,sha256=DpCKFnXCQ5SXZnw95QXJM1yEpZETz882BwJp5scuvqc,45113
|
|
71
|
+
masster-0.5.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
72
|
+
masster-0.5.7.dist-info/entry_points.txt,sha256=ZHguQ_vPmdbpqq2uGtmEOLJfgP-DQ1T0c07Lxh30wc8,58
|
|
73
|
+
masster-0.5.7.dist-info/licenses/LICENSE,sha256=bx5iLIKjgAdYQ7sISn7DsfHRKkoCUm1154sJJKhgqnU,35184
|
|
74
|
+
masster-0.5.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|