masster 0.5.23__tar.gz → 0.5.24__tar.gz
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-0.5.23 → masster-0.5.24}/PKG-INFO +1 -1
- {masster-0.5.23 → masster-0.5.24}/pyproject.toml +1 -1
- {masster-0.5.23 → masster-0.5.24}/src/masster/_version.py +1 -1
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/h5.py +35 -8
- {masster-0.5.23 → masster-0.5.24}/src/masster/wizard/wizard.py +2 -2
- {masster-0.5.23 → masster-0.5.24}/uv.lock +1 -1
- {masster-0.5.23 → masster-0.5.24}/.github/workflows/publish.yml +0 -0
- {masster-0.5.23 → masster-0.5.24}/.github/workflows/security.yml +0 -0
- {masster-0.5.23 → masster-0.5.24}/.github/workflows/test.yml +0 -0
- {masster-0.5.23 → masster-0.5.24}/.gitignore +0 -0
- {masster-0.5.23 → masster-0.5.24}/.pre-commit-config.yaml +0 -0
- {masster-0.5.23 → masster-0.5.24}/LICENSE +0 -0
- {masster-0.5.23 → masster-0.5.24}/Makefile +0 -0
- {masster-0.5.23 → masster-0.5.24}/README.md +0 -0
- {masster-0.5.23 → masster-0.5.24}/demo/example_batch_process.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/demo/example_sample_process.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/__init__.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/chromatogram.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/data/libs/aa.csv +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/data/libs/ccm.csv +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/data/libs/urine.csv +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.timeseries.data +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.wiff +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.wiff.scan +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.wiff2 +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/lib/__init__.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/lib/lib.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/logger.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/__init__.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/adducts.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/defaults/__init__.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/defaults/find_adducts_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/defaults/find_features_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/defaults/find_ms2_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/defaults/get_spectrum_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/defaults/sample_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/h5.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/helpers.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/lib.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/load.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/parameters.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/plot.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/processing.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/quant.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/sample.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/sample5_schema.json +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/save.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/sciex.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/sample/thermo.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/spectrum.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/__init__.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/analysis.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/defaults/__init__.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/defaults/align_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/defaults/export_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/defaults/fill_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/defaults/find_consensus_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/defaults/find_ms2_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/defaults/identify_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/defaults/integrate_chrom_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/defaults/integrate_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/defaults/merge_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/defaults/study_def.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/export.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/helpers.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/id.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/importers.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/load.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/merge.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/parameters.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/plot.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/processing.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/save.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/study.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/study/study5_schema.json +0 -0
- {masster-0.5.23 → masster-0.5.24}/src/masster/wizard/__init__.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/tests/conftest.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/tests/test_chromatogram.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/tests/test_defaults.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/tests/test_imports.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/tests/test_integration.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/tests/test_logger.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/tests/test_parameters.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/tests/test_sample.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/tests/test_spectrum.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/tests/test_study.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/tests/test_version.py +0 -0
- {masster-0.5.23 → masster-0.5.24}/tox.ini +0 -0
|
@@ -717,11 +717,33 @@ def _reconstruct_object_column(data_col, col_name: str):
|
|
|
717
717
|
# Handle isotope patterns (numpy arrays with [mz, intensity] data)
|
|
718
718
|
try:
|
|
719
719
|
import numpy as np
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
720
|
+
|
|
721
|
+
# Try JSON parsing first (new format)
|
|
722
|
+
try:
|
|
723
|
+
iso_data = json.loads(item)
|
|
724
|
+
# Convert back to numpy array
|
|
725
|
+
reconstructed_data.append(np.array(iso_data) if iso_data else None)
|
|
726
|
+
except json.JSONDecodeError:
|
|
727
|
+
# Handle numpy array string representation (old format)
|
|
728
|
+
# This handles strings like "[[ 875.7865 447675. ]\n [ 876.7902 168819. ]]"
|
|
729
|
+
try:
|
|
730
|
+
# Use numpy's string representation parser
|
|
731
|
+
iso_array = np.fromstring(item.replace('[', '').replace(']', '').replace('\n', ' '), sep=' ')
|
|
732
|
+
# Reshape to 2D array (pairs of mz, intensity)
|
|
733
|
+
if len(iso_array) % 2 == 0:
|
|
734
|
+
iso_array = iso_array.reshape(-1, 2)
|
|
735
|
+
reconstructed_data.append(iso_array)
|
|
736
|
+
else:
|
|
737
|
+
reconstructed_data.append(None)
|
|
738
|
+
except (ValueError, AttributeError):
|
|
739
|
+
# If all else fails, try to evaluate the string as a literal
|
|
740
|
+
try:
|
|
741
|
+
import ast
|
|
742
|
+
iso_data = ast.literal_eval(item)
|
|
743
|
+
reconstructed_data.append(np.array(iso_data) if iso_data else None)
|
|
744
|
+
except (ValueError, SyntaxError):
|
|
745
|
+
reconstructed_data.append(None)
|
|
746
|
+
except (ValueError, ImportError):
|
|
725
747
|
reconstructed_data.append(None)
|
|
726
748
|
elif col_name == "ms1_spec":
|
|
727
749
|
# Handle MS1 spectra patterns (numpy arrays with [mz, intensity] data)
|
|
@@ -1952,10 +1974,15 @@ def _load_study5(self, filename=None):
|
|
|
1952
1974
|
f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]} | INFO | {self.log_label}Loading consensus",
|
|
1953
1975
|
)
|
|
1954
1976
|
if "consensus" in f and len(f["consensus"].keys()) > 0:
|
|
1955
|
-
# Only include
|
|
1977
|
+
# Only include object columns if they actually exist in the file
|
|
1956
1978
|
object_columns = []
|
|
1957
|
-
|
|
1958
|
-
|
|
1979
|
+
try:
|
|
1980
|
+
if "adducts" in f["consensus"]:
|
|
1981
|
+
object_columns.append("adducts")
|
|
1982
|
+
if "iso" in f["consensus"]:
|
|
1983
|
+
object_columns.append("iso")
|
|
1984
|
+
except (KeyError, TypeError):
|
|
1985
|
+
pass
|
|
1959
1986
|
|
|
1960
1987
|
self.consensus_df = _load_dataframe_from_group(
|
|
1961
1988
|
f["consensus"],
|
|
@@ -526,7 +526,7 @@ class Wizard:
|
|
|
526
526
|
" # === Processing Parameters ===",
|
|
527
527
|
f' "adducts": {self.params.adducts!r}, # Adduct specifications for feature detection and annotation',
|
|
528
528
|
f' "noise": {noise}, # Noise threshold for feature detection',
|
|
529
|
-
f' "chrom_fwhm": {
|
|
529
|
+
f' "chrom_fwhm": {chrom_fwhm}, # Chromatographic peak full width at half maximum (seconds)',
|
|
530
530
|
f' "chrom_peak_snr": {self.params.chrom_peak_snr}, # Minimum signal-to-noise ratio for chromatographic peaks',
|
|
531
531
|
"",
|
|
532
532
|
" # === Alignment & Merging ===",
|
|
@@ -1267,7 +1267,7 @@ class Wizard:
|
|
|
1267
1267
|
" )",
|
|
1268
1268
|
" sample.find_adducts(adducts=PARAMS['adducts'])",
|
|
1269
1269
|
" sample.find_ms2()",
|
|
1270
|
-
"
|
|
1270
|
+
" sample.find_iso()",
|
|
1271
1271
|
" # sample.export_mgf()",
|
|
1272
1272
|
" # sample.export_mztab()",
|
|
1273
1273
|
' # sample.plot_2d(filename="{sample_name}.html")',
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|