masster 0.5.5__py3-none-any.whl → 0.5.6__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 +114 -22
- masster/sample/sample.py +6 -3
- masster/sample/save.py +56 -2
- masster/spectrum.py +5 -2
- {masster-0.5.5.dist-info → masster-0.5.6.dist-info}/METADATA +1 -1
- {masster-0.5.5.dist-info → masster-0.5.6.dist-info}/RECORD +13 -12
- {masster-0.5.5.dist-info → masster-0.5.6.dist-info}/WHEEL +0 -0
- {masster-0.5.5.dist-info → masster-0.5.6.dist-info}/entry_points.txt +0 -0
- {masster-0.5.5.dist-info → masster-0.5.6.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,78 @@ 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
|
+
elif cmap == "iridescent":
|
|
90
|
+
cmap = "iridescent_r"
|
|
91
|
+
|
|
92
|
+
# If cmap package is not available, fall back to process_cmap
|
|
93
|
+
if Colormap is None:
|
|
94
|
+
if logger:
|
|
95
|
+
logger.warning("cmap package not available, using holoviews process_cmap")
|
|
96
|
+
return process_cmap(cmap, provider="bokeh")
|
|
97
|
+
|
|
98
|
+
try:
|
|
99
|
+
# Handle colormap using cmap.Colormap
|
|
100
|
+
if isinstance(cmap, str):
|
|
101
|
+
colormap = Colormap(cmap)
|
|
102
|
+
# Generate 256 colors and convert to hex
|
|
103
|
+
import matplotlib.colors as mcolors
|
|
104
|
+
colors = colormap(np.linspace(0, 1, 256))
|
|
105
|
+
palette = [mcolors.rgb2hex(color) for color in colors]
|
|
106
|
+
else:
|
|
107
|
+
colormap = cmap
|
|
108
|
+
# Try to use to_bokeh() method first
|
|
109
|
+
try:
|
|
110
|
+
palette = colormap.to_bokeh()
|
|
111
|
+
# Ensure we got a color palette, not another mapper
|
|
112
|
+
if not isinstance(palette, (list, tuple)):
|
|
113
|
+
# Fall back to generating colors manually
|
|
114
|
+
import matplotlib.colors as mcolors
|
|
115
|
+
colors = colormap(np.linspace(0, 1, 256))
|
|
116
|
+
palette = [mcolors.rgb2hex(color) for color in colors]
|
|
117
|
+
except AttributeError:
|
|
118
|
+
# Fall back to generating colors manually
|
|
119
|
+
import matplotlib.colors as mcolors
|
|
120
|
+
colors = colormap(np.linspace(0, 1, 256))
|
|
121
|
+
palette = [mcolors.rgb2hex(color) for color in colors]
|
|
122
|
+
|
|
123
|
+
return palette
|
|
124
|
+
|
|
125
|
+
except (AttributeError, ValueError, TypeError) as e:
|
|
126
|
+
# Fallback to process_cmap if cmap interpretation fails
|
|
127
|
+
if logger:
|
|
128
|
+
logger.warning(f"Could not interpret colormap '{cmap}': {e}, falling back to {fallback}")
|
|
129
|
+
return process_cmap(fallback, provider="bokeh")
|
|
130
|
+
|
|
131
|
+
|
|
66
132
|
def _is_notebook_environment():
|
|
67
133
|
"""
|
|
68
134
|
Detect if code is running in a notebook environment (Jupyter, JupyterLab, or Marimo).
|
|
@@ -462,10 +528,8 @@ def plot_2d(
|
|
|
462
528
|
self.logger.error("No MS1 data available.")
|
|
463
529
|
return
|
|
464
530
|
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
elif cmap == "grey":
|
|
468
|
-
cmap = "Greys256"
|
|
531
|
+
# Process colormap using the cmap package
|
|
532
|
+
cmap_palette = _process_cmap(cmap, fallback="iridescent_r", logger=self.logger)
|
|
469
533
|
|
|
470
534
|
# get columns rt, mz, inty from self.ms1_df, It's polars DataFrame
|
|
471
535
|
spectradf = self.ms1_df.select(["rt", "mz", "inty"])
|
|
@@ -585,7 +649,7 @@ def plot_2d(
|
|
|
585
649
|
dynamic=dyn, # alpha=10, min_alpha=0,
|
|
586
650
|
).opts(
|
|
587
651
|
active_tools=["box_zoom"],
|
|
588
|
-
cmap=
|
|
652
|
+
cmap=cmap_palette,
|
|
589
653
|
tools=["hover"],
|
|
590
654
|
hooks=[new_bounds_hook],
|
|
591
655
|
width=width,
|
|
@@ -1003,10 +1067,8 @@ def plot_2d_oracle(
|
|
|
1003
1067
|
print("Please load a file first.")
|
|
1004
1068
|
return
|
|
1005
1069
|
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
elif cmap == "iridescent":
|
|
1009
|
-
cmap = "iridescent_r"
|
|
1070
|
+
# Process colormap using the cmap package
|
|
1071
|
+
cmap_palette = _process_cmap(cmap, fallback="Greys256", logger=self.logger)
|
|
1010
1072
|
|
|
1011
1073
|
# get columns rt, mz, inty from self.ms1_df, It's polars DataFrame
|
|
1012
1074
|
spectradf = self.ms1_df.to_pandas()
|
|
@@ -1057,7 +1119,7 @@ def plot_2d_oracle(
|
|
|
1057
1119
|
dynamic=dyn, # alpha=10, min_alpha=0,
|
|
1058
1120
|
).opts(
|
|
1059
1121
|
active_tools=["box_zoom"],
|
|
1060
|
-
cmap=
|
|
1122
|
+
cmap=cmap_palette,
|
|
1061
1123
|
tools=["hover"],
|
|
1062
1124
|
hooks=[new_bounds_hook],
|
|
1063
1125
|
width=1000,
|
|
@@ -1183,13 +1245,45 @@ def plot_2d_oracle(
|
|
|
1183
1245
|
|
|
1184
1246
|
if cvalues is not None:
|
|
1185
1247
|
num_colors = len(cvalues)
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1248
|
+
|
|
1249
|
+
# Use cmap package for categorical colormap
|
|
1250
|
+
try:
|
|
1251
|
+
if Colormap is not None:
|
|
1252
|
+
# Use rainbow colormap for categorical data
|
|
1253
|
+
colormap = Colormap("rainbow")
|
|
1254
|
+
colors = []
|
|
1255
|
+
for i in range(num_colors):
|
|
1256
|
+
# Generate evenly spaced colors across the colormap
|
|
1257
|
+
t = i / (num_colors - 1) if num_colors > 1 else 0.5
|
|
1258
|
+
color = colormap(t)
|
|
1259
|
+
# Convert to hex
|
|
1260
|
+
import matplotlib.colors as mcolors
|
|
1261
|
+
# Convert color to hex - handle different color formats
|
|
1262
|
+
if hasattr(color, '__len__') and len(color) >= 3:
|
|
1263
|
+
# It's an array-like color (RGB or RGBA)
|
|
1264
|
+
colors.append(mcolors.rgb2hex(color[:3]))
|
|
1265
|
+
else:
|
|
1266
|
+
# It's a single value, convert to RGB
|
|
1267
|
+
colors.append(mcolors.rgb2hex([color, color, color]))
|
|
1268
|
+
else:
|
|
1269
|
+
# Fallback to original method
|
|
1270
|
+
cmap = "rainbow"
|
|
1271
|
+
cmap_provider = "colorcet"
|
|
1272
|
+
cm = process_cmap(cmap, ncolors=num_colors, provider=cmap_provider)
|
|
1273
|
+
colors = [
|
|
1274
|
+
rgb2hex(cm[int(i * (len(cm) - 1) / (num_colors - 1))]) if num_colors > 1 else rgb2hex(cm[0])
|
|
1275
|
+
for i in range(num_colors)
|
|
1276
|
+
]
|
|
1277
|
+
except Exception:
|
|
1278
|
+
# Final fallback to original method
|
|
1279
|
+
cmap = "rainbow"
|
|
1280
|
+
cmap_provider = "colorcet"
|
|
1281
|
+
cm = process_cmap(cmap, ncolors=num_colors, provider=cmap_provider)
|
|
1282
|
+
colors = [
|
|
1283
|
+
rgb2hex(cm[int(i * (len(cm) - 1) / (num_colors - 1))]) if num_colors > 1 else rgb2hex(cm[0])
|
|
1284
|
+
for i in range(num_colors)
|
|
1285
|
+
]
|
|
1286
|
+
|
|
1193
1287
|
# assign color to each row based on id_class. If id_class is null, assign 'black'
|
|
1194
1288
|
feats["color"] = "black"
|
|
1195
1289
|
|
|
@@ -1577,10 +1671,8 @@ def plot_ms2_cycle(
|
|
|
1577
1671
|
print("Cycle number not found in scans_df.")
|
|
1578
1672
|
return
|
|
1579
1673
|
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
elif cmap == "grey":
|
|
1583
|
-
cmap = "Greys256"
|
|
1674
|
+
# Process colormap using the cmap package
|
|
1675
|
+
cmap_palette = _process_cmap(cmap, fallback="iridescent_r", logger=self.logger)
|
|
1584
1676
|
|
|
1585
1677
|
# find all scans in cycle
|
|
1586
1678
|
scans = self.scans_df.filter(pl.col("cycle") == cycle)
|
|
@@ -1645,7 +1737,7 @@ def plot_ms2_cycle(
|
|
|
1645
1737
|
dynamic=raster_dynamic, # alpha=10, min_alpha=0,
|
|
1646
1738
|
).opts(
|
|
1647
1739
|
active_tools=["box_zoom"],
|
|
1648
|
-
cmap=
|
|
1740
|
+
cmap=cmap_palette,
|
|
1649
1741
|
tools=["hover"],
|
|
1650
1742
|
hooks=[new_bounds_hook],
|
|
1651
1743
|
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=rLineW-O0OSBF7JBd31acdcshluNBFss77bXVJCx5BY,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=vA37dwmpeymVW8xobrsLhsD7X8x7EQIOw50Csiica84,86675
|
|
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
|
|
@@ -66,8 +67,8 @@ masster/wizard/README.md,sha256=mL1A3YWJZOefpJ6D0-HqGLkVRmUlOpwyVFdvJBeeoZM,1414
|
|
|
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.6.dist-info/METADATA,sha256=Vbsgbvaxv5TP83vvlXhTlG7vdrkUaN8fvdkSwVil3HY,45113
|
|
71
|
+
masster-0.5.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
72
|
+
masster-0.5.6.dist-info/entry_points.txt,sha256=ZHguQ_vPmdbpqq2uGtmEOLJfgP-DQ1T0c07Lxh30wc8,58
|
|
73
|
+
masster-0.5.6.dist-info/licenses/LICENSE,sha256=bx5iLIKjgAdYQ7sISn7DsfHRKkoCUm1154sJJKhgqnU,35184
|
|
74
|
+
masster-0.5.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|