thyra 2.1.0__tar.gz → 2.2.1__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.
Files changed (97) hide show
  1. {thyra-2.1.0 → thyra-2.2.1}/PKG-INFO +1 -1
  2. {thyra-2.1.0 → thyra-2.2.1}/pyproject.toml +1 -1
  3. {thyra-2.1.0 → thyra-2.2.1}/thyra/__init__.py +1 -1
  4. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/imzml/imzml_reader.py +18 -1
  5. {thyra-2.1.0 → thyra-2.2.1}/LICENSE +0 -0
  6. {thyra-2.1.0 → thyra-2.2.1}/README.md +0 -0
  7. {thyra-2.1.0 → thyra-2.2.1}/thyra/__main__.py +0 -0
  8. {thyra-2.1.0 → thyra-2.2.1}/thyra/alignment/__init__.py +0 -0
  9. {thyra-2.1.0 → thyra-2.2.1}/thyra/alignment/affine.py +0 -0
  10. {thyra-2.1.0 → thyra-2.2.1}/thyra/alignment/teaching_points.py +0 -0
  11. {thyra-2.1.0 → thyra-2.2.1}/thyra/config.py +0 -0
  12. {thyra-2.1.0 → thyra-2.2.1}/thyra/convert.py +0 -0
  13. {thyra-2.1.0 → thyra-2.2.1}/thyra/converters/__init__.py +0 -0
  14. {thyra-2.1.0 → thyra-2.2.1}/thyra/converters/spatialdata/__init__.py +0 -0
  15. {thyra-2.1.0 → thyra-2.2.1}/thyra/converters/spatialdata/_chunking.py +0 -0
  16. {thyra-2.1.0 → thyra-2.2.1}/thyra/converters/spatialdata/base_spatialdata_converter.py +0 -0
  17. {thyra-2.1.0 → thyra-2.2.1}/thyra/converters/spatialdata/converter.py +0 -0
  18. {thyra-2.1.0 → thyra-2.2.1}/thyra/converters/spatialdata/spatialdata_2d_converter.py +0 -0
  19. {thyra-2.1.0 → thyra-2.2.1}/thyra/converters/spatialdata/spatialdata_3d_converter.py +0 -0
  20. {thyra-2.1.0 → thyra-2.2.1}/thyra/converters/spatialdata/streaming_converter.py +0 -0
  21. {thyra-2.1.0 → thyra-2.2.1}/thyra/core/__init__.py +0 -0
  22. {thyra-2.1.0 → thyra-2.2.1}/thyra/core/base_converter.py +0 -0
  23. {thyra-2.1.0 → thyra-2.2.1}/thyra/core/base_extractor.py +0 -0
  24. {thyra-2.1.0 → thyra-2.2.1}/thyra/core/base_reader.py +0 -0
  25. {thyra-2.1.0 → thyra-2.2.1}/thyra/core/registry.py +0 -0
  26. {thyra-2.1.0 → thyra-2.2.1}/thyra/metadata/__init__.py +0 -0
  27. {thyra-2.1.0 → thyra-2.2.1}/thyra/metadata/extractors/__init__.py +0 -0
  28. {thyra-2.1.0 → thyra-2.2.1}/thyra/metadata/extractors/bruker_extractor.py +0 -0
  29. {thyra-2.1.0 → thyra-2.2.1}/thyra/metadata/extractors/imzml_extractor.py +0 -0
  30. {thyra-2.1.0 → thyra-2.2.1}/thyra/metadata/extractors/waters_extractor.py +0 -0
  31. {thyra-2.1.0 → thyra-2.2.1}/thyra/metadata/ontology/__init__.py +0 -0
  32. {thyra-2.1.0 → thyra-2.2.1}/thyra/metadata/ontology/_ims.py +0 -0
  33. {thyra-2.1.0 → thyra-2.2.1}/thyra/metadata/ontology/_ms.py +0 -0
  34. {thyra-2.1.0 → thyra-2.2.1}/thyra/metadata/ontology/_uo.py +0 -0
  35. {thyra-2.1.0 → thyra-2.2.1}/thyra/metadata/ontology/cache.py +0 -0
  36. {thyra-2.1.0 → thyra-2.2.1}/thyra/metadata/types.py +0 -0
  37. {thyra-2.1.0 → thyra-2.2.1}/thyra/metadata/validator.py +0 -0
  38. {thyra-2.1.0 → thyra-2.2.1}/thyra/preview.py +0 -0
  39. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/__init__.py +0 -0
  40. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/__init__.py +0 -0
  41. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/base_bruker_reader.py +0 -0
  42. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/folder_structure.py +0 -0
  43. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/mis_parser.py +0 -0
  44. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/rapiflex/__init__.py +0 -0
  45. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/rapiflex/rapiflex_reader.py +0 -0
  46. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/__init__.py +0 -0
  47. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/sdk/__init__.py +0 -0
  48. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/sdk/dll/LICENCE-BRUKER.txt +0 -0
  49. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/sdk/dll/README.md +0 -0
  50. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/sdk/dll/timsdata.dll +0 -0
  51. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/sdk/dll/timsdata.so +0 -0
  52. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/sdk/dll_manager.py +0 -0
  53. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/sdk/platform_detector.py +0 -0
  54. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/sdk/sdk_functions.py +0 -0
  55. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/timstof_reader.py +0 -0
  56. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/utils/__init__.py +0 -0
  57. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/utils/batch_processor.py +0 -0
  58. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/utils/coordinate_cache.py +0 -0
  59. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/utils/mass_axis_builder.py +0 -0
  60. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/bruker/timstof/utils/memory_manager.py +0 -0
  61. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/imzml/__init__.py +0 -0
  62. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/waters/__init__.py +0 -0
  63. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/waters/imaging_grid.py +0 -0
  64. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/waters/lib/MLReader.dll +0 -0
  65. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/waters/lib/MassLynxRaw.dll +0 -0
  66. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/waters/lib/libMLReader.so +0 -0
  67. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/waters/lib/libMassLynxRaw.so +0 -0
  68. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/waters/masslynx_lib.py +0 -0
  69. {thyra-2.1.0 → thyra-2.2.1}/thyra/readers/waters/waters_reader.py +0 -0
  70. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/__init__.py +0 -0
  71. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/common_axis.py +0 -0
  72. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/constants.py +0 -0
  73. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/data_characteristics.py +0 -0
  74. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/decision_tree.py +0 -0
  75. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/gaps.py +0 -0
  76. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/instrument_detectors.py +0 -0
  77. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/mass_axis/__init__.py +0 -0
  78. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/mass_axis/base_generator.py +0 -0
  79. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/mass_axis/fticr_generator.py +0 -0
  80. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/mass_axis/linear_generator.py +0 -0
  81. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/mass_axis/linear_tof_generator.py +0 -0
  82. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/mass_axis/orbitrap_generator.py +0 -0
  83. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/mass_axis/reflector_tof_generator.py +0 -0
  84. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/strategies/__init__.py +0 -0
  85. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/strategies/base.py +0 -0
  86. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/strategies/nearest_neighbor.py +0 -0
  87. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/strategies/tic_preserving.py +0 -0
  88. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/tic.py +0 -0
  89. {thyra-2.1.0 → thyra-2.2.1}/thyra/resampling/types.py +0 -0
  90. {thyra-2.1.0 → thyra-2.2.1}/thyra/tools/__init__.py +0 -0
  91. {thyra-2.1.0 → thyra-2.2.1}/thyra/tools/check_ontology.py +0 -0
  92. {thyra-2.1.0 → thyra-2.2.1}/thyra/tools/make_example_data.py +0 -0
  93. {thyra-2.1.0 → thyra-2.2.1}/thyra/utils/__init__.py +0 -0
  94. {thyra-2.1.0 → thyra-2.2.1}/thyra/utils/bruker_exceptions.py +0 -0
  95. {thyra-2.1.0 → thyra-2.2.1}/thyra/utils/logging_config.py +0 -0
  96. {thyra-2.1.0 → thyra-2.2.1}/thyra/utils/windows_paths.py +0 -0
  97. {thyra-2.1.0 → thyra-2.2.1}/thyra/utils/zarr_atomic_write.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: thyra
3
- Version: 2.1.0
3
+ Version: 2.2.1
4
4
  Summary: A modern Python library for converting Mass Spectrometry Imaging (MSI) data into SpatialData/Zarr format - your portal to spatial omics
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "thyra"
7
- version = "2.1.0"
7
+ version = "2.2.1"
8
8
  description = "A modern Python library for converting Mass Spectrometry Imaging (MSI) data into SpatialData/Zarr format - your portal to spatial omics"
9
9
  authors = ["Theodoros Visvikis <t.visvikis@maastrichtuniversity.nl>"]
10
10
  maintainers = ["Theodoros Visvikis <t.visvikis@maastrichtuniversity.nl>"]
@@ -36,7 +36,7 @@ warnings.filterwarnings(
36
36
  category=FutureWarning,
37
37
  )
38
38
 
39
- __version__ = "2.1.0"
39
+ __version__ = "2.2.1"
40
40
 
41
41
  # Import key components - avoid wildcard imports
42
42
  try:
@@ -415,9 +415,26 @@ class ImzMLReader(BaseMSIReader):
415
415
  # Initialize the parser
416
416
  logger.info(f"Initializing ImzML parser for {imzml_path}")
417
417
  try:
418
+ # ElementTree, NOT lxml. pyimzml prunes each <spectrum> out of the
419
+ # tree (`slist.remove(elem)`) while iterparse is still streaming the
420
+ # document, which invalidates libxml2's text-node coalescing
421
+ # accelerator: ctxt->nodelen/nodemem go on describing a text node
422
+ # inside the subtree that was just removed, so later character data
423
+ # is appended at a stale offset and the buffer is doubled on every
424
+ # miss until xmlRealloc fails. lxml surfaces libxml2's
425
+ # XML_ERR_NO_MEMORY as a *syntax* error, so it reads as a corrupt
426
+ # file when nothing is wrong with it:
427
+ # XMLSyntaxError: xmlSAX2Characters, line 212575, column 1
428
+ # It only bites when the text between </spectrum> and <spectrum> is
429
+ # exactly "\r\n" -- CRLF with no indentation, how IONTOF SurfaceLab
430
+ # writes imzML. Indented or LF-only files coalesce differently and
431
+ # survive, which is why most files never hit it. ElementTree builds
432
+ # the tree in Python, so there is no C parser state to invalidate;
433
+ # it is also pyimzml's own default, parses byte-identically, and is
434
+ # faster here -- 67s vs 118s on a 2.1 GB imzML at the same peak RSS.
418
435
  self.parser = ImzMLParser(
419
436
  filename=str(imzml_path),
420
- parse_lib="lxml",
437
+ parse_lib="ElementTree",
421
438
  ibd_file=self.ibd_file,
422
439
  )
423
440
  except Exception as e:
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