masster 0.5.24__tar.gz → 0.5.25__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.

Files changed (88) hide show
  1. {masster-0.5.24 → masster-0.5.25}/PKG-INFO +1 -2
  2. {masster-0.5.24 → masster-0.5.25}/pyproject.toml +1 -2
  3. {masster-0.5.24 → masster-0.5.25}/src/masster/_version.py +1 -1
  4. {masster-0.5.24 → masster-0.5.25}/src/masster/study/export.py +26 -2
  5. {masster-0.5.24 → masster-0.5.25}/uv.lock +1 -39
  6. {masster-0.5.24 → masster-0.5.25}/.github/workflows/publish.yml +0 -0
  7. {masster-0.5.24 → masster-0.5.25}/.github/workflows/security.yml +0 -0
  8. {masster-0.5.24 → masster-0.5.25}/.github/workflows/test.yml +0 -0
  9. {masster-0.5.24 → masster-0.5.25}/.gitignore +0 -0
  10. {masster-0.5.24 → masster-0.5.25}/.pre-commit-config.yaml +0 -0
  11. {masster-0.5.24 → masster-0.5.25}/LICENSE +0 -0
  12. {masster-0.5.24 → masster-0.5.25}/Makefile +0 -0
  13. {masster-0.5.24 → masster-0.5.25}/README.md +0 -0
  14. {masster-0.5.24 → masster-0.5.25}/demo/example_batch_process.py +0 -0
  15. {masster-0.5.24 → masster-0.5.25}/demo/example_sample_process.py +0 -0
  16. {masster-0.5.24 → masster-0.5.25}/src/masster/__init__.py +0 -0
  17. {masster-0.5.24 → masster-0.5.25}/src/masster/chromatogram.py +0 -0
  18. {masster-0.5.24 → masster-0.5.25}/src/masster/data/libs/aa.csv +0 -0
  19. {masster-0.5.24 → masster-0.5.25}/src/masster/data/libs/ccm.csv +0 -0
  20. {masster-0.5.24 → masster-0.5.25}/src/masster/data/libs/urine.csv +0 -0
  21. {masster-0.5.24 → masster-0.5.25}/src/masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.timeseries.data +0 -0
  22. {masster-0.5.24 → masster-0.5.25}/src/masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.wiff +0 -0
  23. {masster-0.5.24 → masster-0.5.25}/src/masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.wiff.scan +0 -0
  24. {masster-0.5.24 → masster-0.5.25}/src/masster/data/wiff/2025_01_14_VW_7600_LpMx_DBS_CID_2min_TOP15_030msecMS1_005msecReac_CE35_DBS-ON_3.wiff2 +0 -0
  25. {masster-0.5.24 → masster-0.5.25}/src/masster/lib/__init__.py +0 -0
  26. {masster-0.5.24 → masster-0.5.25}/src/masster/lib/lib.py +0 -0
  27. {masster-0.5.24 → masster-0.5.25}/src/masster/logger.py +0 -0
  28. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/__init__.py +0 -0
  29. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/adducts.py +0 -0
  30. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/defaults/__init__.py +0 -0
  31. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/defaults/find_adducts_def.py +0 -0
  32. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/defaults/find_features_def.py +0 -0
  33. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/defaults/find_ms2_def.py +0 -0
  34. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/defaults/get_spectrum_def.py +0 -0
  35. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/defaults/sample_def.py +0 -0
  36. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/h5.py +0 -0
  37. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/helpers.py +0 -0
  38. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/lib.py +0 -0
  39. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/load.py +0 -0
  40. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/parameters.py +0 -0
  41. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/plot.py +0 -0
  42. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/processing.py +0 -0
  43. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/quant.py +0 -0
  44. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/sample.py +0 -0
  45. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/sample5_schema.json +0 -0
  46. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/save.py +0 -0
  47. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/sciex.py +0 -0
  48. {masster-0.5.24 → masster-0.5.25}/src/masster/sample/thermo.py +0 -0
  49. {masster-0.5.24 → masster-0.5.25}/src/masster/spectrum.py +0 -0
  50. {masster-0.5.24 → masster-0.5.25}/src/masster/study/__init__.py +0 -0
  51. {masster-0.5.24 → masster-0.5.25}/src/masster/study/analysis.py +0 -0
  52. {masster-0.5.24 → masster-0.5.25}/src/masster/study/defaults/__init__.py +0 -0
  53. {masster-0.5.24 → masster-0.5.25}/src/masster/study/defaults/align_def.py +0 -0
  54. {masster-0.5.24 → masster-0.5.25}/src/masster/study/defaults/export_def.py +0 -0
  55. {masster-0.5.24 → masster-0.5.25}/src/masster/study/defaults/fill_def.py +0 -0
  56. {masster-0.5.24 → masster-0.5.25}/src/masster/study/defaults/find_consensus_def.py +0 -0
  57. {masster-0.5.24 → masster-0.5.25}/src/masster/study/defaults/find_ms2_def.py +0 -0
  58. {masster-0.5.24 → masster-0.5.25}/src/masster/study/defaults/identify_def.py +0 -0
  59. {masster-0.5.24 → masster-0.5.25}/src/masster/study/defaults/integrate_chrom_def.py +0 -0
  60. {masster-0.5.24 → masster-0.5.25}/src/masster/study/defaults/integrate_def.py +0 -0
  61. {masster-0.5.24 → masster-0.5.25}/src/masster/study/defaults/merge_def.py +0 -0
  62. {masster-0.5.24 → masster-0.5.25}/src/masster/study/defaults/study_def.py +0 -0
  63. {masster-0.5.24 → masster-0.5.25}/src/masster/study/h5.py +0 -0
  64. {masster-0.5.24 → masster-0.5.25}/src/masster/study/helpers.py +0 -0
  65. {masster-0.5.24 → masster-0.5.25}/src/masster/study/id.py +0 -0
  66. {masster-0.5.24 → masster-0.5.25}/src/masster/study/importers.py +0 -0
  67. {masster-0.5.24 → masster-0.5.25}/src/masster/study/load.py +0 -0
  68. {masster-0.5.24 → masster-0.5.25}/src/masster/study/merge.py +0 -0
  69. {masster-0.5.24 → masster-0.5.25}/src/masster/study/parameters.py +0 -0
  70. {masster-0.5.24 → masster-0.5.25}/src/masster/study/plot.py +0 -0
  71. {masster-0.5.24 → masster-0.5.25}/src/masster/study/processing.py +0 -0
  72. {masster-0.5.24 → masster-0.5.25}/src/masster/study/save.py +0 -0
  73. {masster-0.5.24 → masster-0.5.25}/src/masster/study/study.py +0 -0
  74. {masster-0.5.24 → masster-0.5.25}/src/masster/study/study5_schema.json +0 -0
  75. {masster-0.5.24 → masster-0.5.25}/src/masster/wizard/__init__.py +0 -0
  76. {masster-0.5.24 → masster-0.5.25}/src/masster/wizard/wizard.py +0 -0
  77. {masster-0.5.24 → masster-0.5.25}/tests/conftest.py +0 -0
  78. {masster-0.5.24 → masster-0.5.25}/tests/test_chromatogram.py +0 -0
  79. {masster-0.5.24 → masster-0.5.25}/tests/test_defaults.py +0 -0
  80. {masster-0.5.24 → masster-0.5.25}/tests/test_imports.py +0 -0
  81. {masster-0.5.24 → masster-0.5.25}/tests/test_integration.py +0 -0
  82. {masster-0.5.24 → masster-0.5.25}/tests/test_logger.py +0 -0
  83. {masster-0.5.24 → masster-0.5.25}/tests/test_parameters.py +0 -0
  84. {masster-0.5.24 → masster-0.5.25}/tests/test_sample.py +0 -0
  85. {masster-0.5.24 → masster-0.5.25}/tests/test_spectrum.py +0 -0
  86. {masster-0.5.24 → masster-0.5.25}/tests/test_study.py +0 -0
  87. {masster-0.5.24 → masster-0.5.25}/tests/test_version.py +0 -0
  88. {masster-0.5.24 → masster-0.5.25}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: masster
3
- Version: 0.5.24
3
+ Version: 0.5.25
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
@@ -684,7 +684,6 @@ Requires-Dist: alpharaw>=0.4.8
684
684
  Requires-Dist: bokeh>=3.7.3
685
685
  Requires-Dist: cmap>=0.6.2
686
686
  Requires-Dist: datashader>=0.18.1
687
- Requires-Dist: get-gecko-driver>=1.4
688
687
  Requires-Dist: h5py>=3.14.0
689
688
  Requires-Dist: hdbscan>=0.8.40
690
689
  Requires-Dist: holoviews>=1.21.0
@@ -1,7 +1,7 @@
1
1
 
2
2
  [project]
3
3
  name = "masster"
4
- version = "0.5.24"
4
+ version = "0.5.25"
5
5
  description = "Mass spectrometry data analysis package"
6
6
  authors = [
7
7
  { name = "Zamboni Lab" }
@@ -47,7 +47,6 @@ dependencies = [
47
47
  "scikit-learn>=1.7.1",
48
48
  "umap-learn>=0.5.9.post2",
49
49
  "hdbscan>=0.8.40",
50
- "get-gecko-driver>=1.4",
51
50
  "webdriver-manager>=4.0.2",
52
51
  ]
53
52
 
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
 
4
- __version__ = "0.5.24"
4
+ __version__ = "0.5.25"
5
5
 
6
6
 
7
7
  def get_version():
@@ -1305,10 +1305,34 @@ def export_parquet(self, filename: str | None = None) -> None:
1305
1305
  if self.consensus_df is not None and not self.consensus_df.is_empty():
1306
1306
  consensus_file = f"{filename}_consensus.parquet"
1307
1307
  try:
1308
- self.consensus_df.write_parquet(consensus_file)
1308
+ # Create a copy of consensus_df for parquet export
1309
+ consensus_export_df = self.consensus_df.clone()
1310
+
1311
+ # Handle Object dtype columns that can't be serialized to parquet
1312
+ for col in consensus_export_df.columns:
1313
+ if consensus_export_df[col].dtype == pl.Object:
1314
+ if col == "iso":
1315
+ # Convert numpy arrays to string representation for parquet compatibility
1316
+ # This preserves the data while making it parquet-serializable
1317
+ consensus_export_df = consensus_export_df.with_columns([
1318
+ pl.col("iso").map_elements(
1319
+ lambda x: str(x.tolist()) if x is not None else None,
1320
+ return_dtype=pl.String
1321
+ ).alias("iso")
1322
+ ])
1323
+ else:
1324
+ # For other Object columns, convert to string representation
1325
+ consensus_export_df = consensus_export_df.with_columns([
1326
+ pl.col(col).map_elements(
1327
+ lambda x: str(x) if x is not None else None,
1328
+ return_dtype=pl.String
1329
+ ).alias(col)
1330
+ ])
1331
+
1332
+ consensus_export_df.write_parquet(consensus_file)
1309
1333
  exported_files.append(consensus_file)
1310
1334
  self.logger.debug(
1311
- f"Exported consensus to {consensus_file} ({self.consensus_df.height} rows)",
1335
+ f"Exported consensus to {consensus_file} ({consensus_export_df.height} rows)",
1312
1336
  )
1313
1337
  except Exception as e:
1314
1338
  self.logger.error(f"Error writing consensus parquet file: {e}")
@@ -147,18 +147,6 @@ wheels = [
147
147
  { url = "https://files.pythonhosted.org/packages/48/ca/ba5f909b40ea12ec542d5d7bdd13ee31c4d65f3beed20211ef81c18fa1f3/bandit-1.8.6-py3-none-any.whl", hash = "sha256:3348e934d736fcdb68b6aa4030487097e23a501adf3e7827b63658df464dddd0", size = 133808, upload-time = "2025-07-06T03:10:49.134Z" },
148
148
  ]
149
149
 
150
- [[package]]
151
- name = "beautifulsoup4"
152
- version = "4.12.3"
153
- source = { registry = "https://pypi.org/simple" }
154
- dependencies = [
155
- { name = "soupsieve" },
156
- ]
157
- sdist = { url = "https://files.pythonhosted.org/packages/b3/ca/824b1195773ce6166d388573fc106ce56d4a805bd7427b624e063596ec58/beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051", size = 581181, upload-time = "2024-01-17T16:53:17.902Z" }
158
- wheels = [
159
- { url = "https://files.pythonhosted.org/packages/b1/fe/e8c672695b37eecc5cbf43e1d0638d88d66ba3a44c4d321c796f4e59167f/beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed", size = 147925, upload-time = "2024-01-17T16:53:12.779Z" },
160
- ]
161
-
162
150
  [[package]]
163
151
  name = "biopython"
164
152
  version = "1.85"
@@ -848,21 +836,6 @@ wheels = [
848
836
  { url = "https://files.pythonhosted.org/packages/c7/93/0dd45cd283c32dea1545151d8c3637b4b8c53cdb3a625aeb2885b184d74d/fonttools-4.60.1-py3-none-any.whl", hash = "sha256:906306ac7afe2156fcf0042173d6ebbb05416af70f6b370967b47f8f00103bbb", size = 1143175, upload-time = "2025-09-29T21:13:24.134Z" },
849
837
  ]
850
838
 
851
- [[package]]
852
- name = "get-gecko-driver"
853
- version = "1.4"
854
- source = { registry = "https://pypi.org/simple" }
855
- dependencies = [
856
- { name = "beautifulsoup4" },
857
- { name = "requests" },
858
- { name = "typer" },
859
- { name = "urllib3" },
860
- ]
861
- sdist = { url = "https://files.pythonhosted.org/packages/94/81/79dc8fce839822b53852ef543c529e170593fc42874162dfe2cd9bfb83a9/get_gecko_driver-1.4.tar.gz", hash = "sha256:0a023816dacb363200ae7546e7f75104cae5f22d7f2946cff600b13395c2c5aa", size = 10000, upload-time = "2025-01-24T02:23:28.734Z" }
862
- wheels = [
863
- { url = "https://files.pythonhosted.org/packages/5e/f8/2ffa13fd3c26feeec4caa44829e0ea585b95d5111f03d4523e71b15596bc/get_gecko_driver-1.4-py3-none-any.whl", hash = "sha256:67ee0528e85c842ca92b9a2052a39a8940d4196b82ec4b407dbed2a424674e76", size = 11151, upload-time = "2025-01-24T02:23:27.185Z" },
864
- ]
865
-
866
839
  [[package]]
867
840
  name = "h11"
868
841
  version = "0.16.0"
@@ -1473,14 +1446,13 @@ wheels = [
1473
1446
 
1474
1447
  [[package]]
1475
1448
  name = "masster"
1476
- version = "0.5.24"
1449
+ version = "0.5.25"
1477
1450
  source = { editable = "." }
1478
1451
  dependencies = [
1479
1452
  { name = "alpharaw" },
1480
1453
  { name = "bokeh" },
1481
1454
  { name = "cmap" },
1482
1455
  { name = "datashader" },
1483
- { name = "get-gecko-driver" },
1484
1456
  { name = "h5py" },
1485
1457
  { name = "hdbscan" },
1486
1458
  { name = "holoviews" },
@@ -1538,7 +1510,6 @@ requires-dist = [
1538
1510
  { name = "coverage", marker = "extra == 'test'", specifier = ">=7.0.0" },
1539
1511
  { name = "datashader", specifier = ">=0.18.1" },
1540
1512
  { name = "flake8", marker = "extra == 'dev'", specifier = ">=5.0.0" },
1541
- { name = "get-gecko-driver", specifier = ">=1.4" },
1542
1513
  { name = "h5py", specifier = ">=3.14.0" },
1543
1514
  { name = "hdbscan", specifier = ">=0.8.40" },
1544
1515
  { name = "holoviews", specifier = ">=1.21.0" },
@@ -3149,15 +3120,6 @@ wheels = [
3149
3120
  { url = "https://files.pythonhosted.org/packages/c8/78/3565d011c61f5a43488987ee32b6f3f656e7f107ac2782dd57bdd7d91d9a/snowballstemmer-3.0.1-py3-none-any.whl", hash = "sha256:6cd7b3897da8d6c9ffb968a6781fa6532dce9c3618a4b127d920dab764a19064", size = 103274, upload-time = "2025-05-09T16:34:50.371Z" },
3150
3121
  ]
3151
3122
 
3152
- [[package]]
3153
- name = "soupsieve"
3154
- version = "2.8"
3155
- source = { registry = "https://pypi.org/simple" }
3156
- sdist = { url = "https://files.pythonhosted.org/packages/6d/e6/21ccce3262dd4889aa3332e5a119a3491a95e8f60939870a3a035aabac0d/soupsieve-2.8.tar.gz", hash = "sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f", size = 103472, upload-time = "2025-08-27T15:39:51.78Z" }
3157
- wheels = [
3158
- { url = "https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl", hash = "sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c", size = 36679, upload-time = "2025-08-27T15:39:50.179Z" },
3159
- ]
3160
-
3161
3123
  [[package]]
3162
3124
  name = "sphinx"
3163
3125
  version = "8.2.3"
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