setiastrosuitepro 1.6.0__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 setiastrosuitepro might be problematic. Click here for more details.

Files changed (174) hide show
  1. setiastro/__init__.py +2 -0
  2. setiastro/saspro/__init__.py +20 -0
  3. setiastro/saspro/__main__.py +784 -0
  4. setiastro/saspro/_generated/__init__.py +7 -0
  5. setiastro/saspro/_generated/build_info.py +2 -0
  6. setiastro/saspro/abe.py +1295 -0
  7. setiastro/saspro/abe_preset.py +196 -0
  8. setiastro/saspro/aberration_ai.py +694 -0
  9. setiastro/saspro/aberration_ai_preset.py +224 -0
  10. setiastro/saspro/accel_installer.py +218 -0
  11. setiastro/saspro/accel_workers.py +30 -0
  12. setiastro/saspro/add_stars.py +621 -0
  13. setiastro/saspro/astrobin_exporter.py +1007 -0
  14. setiastro/saspro/astrospike.py +153 -0
  15. setiastro/saspro/astrospike_python.py +1839 -0
  16. setiastro/saspro/autostretch.py +196 -0
  17. setiastro/saspro/backgroundneutral.py +560 -0
  18. setiastro/saspro/batch_convert.py +325 -0
  19. setiastro/saspro/batch_renamer.py +519 -0
  20. setiastro/saspro/blemish_blaster.py +488 -0
  21. setiastro/saspro/blink_comparator_pro.py +2923 -0
  22. setiastro/saspro/bundles.py +61 -0
  23. setiastro/saspro/bundles_dock.py +114 -0
  24. setiastro/saspro/cheat_sheet.py +168 -0
  25. setiastro/saspro/clahe.py +342 -0
  26. setiastro/saspro/comet_stacking.py +1377 -0
  27. setiastro/saspro/config.py +38 -0
  28. setiastro/saspro/config_bootstrap.py +40 -0
  29. setiastro/saspro/config_manager.py +316 -0
  30. setiastro/saspro/continuum_subtract.py +1617 -0
  31. setiastro/saspro/convo.py +1397 -0
  32. setiastro/saspro/convo_preset.py +414 -0
  33. setiastro/saspro/copyastro.py +187 -0
  34. setiastro/saspro/cosmicclarity.py +1564 -0
  35. setiastro/saspro/cosmicclarity_preset.py +407 -0
  36. setiastro/saspro/crop_dialog_pro.py +948 -0
  37. setiastro/saspro/crop_preset.py +189 -0
  38. setiastro/saspro/curve_editor_pro.py +2544 -0
  39. setiastro/saspro/curves_preset.py +375 -0
  40. setiastro/saspro/debayer.py +670 -0
  41. setiastro/saspro/debug_utils.py +29 -0
  42. setiastro/saspro/dnd_mime.py +35 -0
  43. setiastro/saspro/doc_manager.py +2634 -0
  44. setiastro/saspro/exoplanet_detector.py +2166 -0
  45. setiastro/saspro/file_utils.py +284 -0
  46. setiastro/saspro/fitsmodifier.py +744 -0
  47. setiastro/saspro/free_torch_memory.py +48 -0
  48. setiastro/saspro/frequency_separation.py +1343 -0
  49. setiastro/saspro/function_bundle.py +1594 -0
  50. setiastro/saspro/ghs_dialog_pro.py +660 -0
  51. setiastro/saspro/ghs_preset.py +284 -0
  52. setiastro/saspro/graxpert.py +634 -0
  53. setiastro/saspro/graxpert_preset.py +287 -0
  54. setiastro/saspro/gui/__init__.py +0 -0
  55. setiastro/saspro/gui/main_window.py +8494 -0
  56. setiastro/saspro/gui/mixins/__init__.py +33 -0
  57. setiastro/saspro/gui/mixins/dock_mixin.py +263 -0
  58. setiastro/saspro/gui/mixins/file_mixin.py +445 -0
  59. setiastro/saspro/gui/mixins/geometry_mixin.py +403 -0
  60. setiastro/saspro/gui/mixins/header_mixin.py +441 -0
  61. setiastro/saspro/gui/mixins/mask_mixin.py +421 -0
  62. setiastro/saspro/gui/mixins/menu_mixin.py +361 -0
  63. setiastro/saspro/gui/mixins/theme_mixin.py +367 -0
  64. setiastro/saspro/gui/mixins/toolbar_mixin.py +1324 -0
  65. setiastro/saspro/gui/mixins/update_mixin.py +309 -0
  66. setiastro/saspro/gui/mixins/view_mixin.py +435 -0
  67. setiastro/saspro/halobgon.py +462 -0
  68. setiastro/saspro/header_viewer.py +445 -0
  69. setiastro/saspro/headless_utils.py +88 -0
  70. setiastro/saspro/histogram.py +753 -0
  71. setiastro/saspro/history_explorer.py +939 -0
  72. setiastro/saspro/image_combine.py +414 -0
  73. setiastro/saspro/image_peeker_pro.py +1596 -0
  74. setiastro/saspro/imageops/__init__.py +37 -0
  75. setiastro/saspro/imageops/mdi_snap.py +292 -0
  76. setiastro/saspro/imageops/scnr.py +36 -0
  77. setiastro/saspro/imageops/starbasedwhitebalance.py +210 -0
  78. setiastro/saspro/imageops/stretch.py +244 -0
  79. setiastro/saspro/isophote.py +1179 -0
  80. setiastro/saspro/layers.py +208 -0
  81. setiastro/saspro/layers_dock.py +714 -0
  82. setiastro/saspro/lazy_imports.py +193 -0
  83. setiastro/saspro/legacy/__init__.py +2 -0
  84. setiastro/saspro/legacy/image_manager.py +2226 -0
  85. setiastro/saspro/legacy/numba_utils.py +3659 -0
  86. setiastro/saspro/legacy/xisf.py +1071 -0
  87. setiastro/saspro/linear_fit.py +534 -0
  88. setiastro/saspro/live_stacking.py +1830 -0
  89. setiastro/saspro/log_bus.py +5 -0
  90. setiastro/saspro/logging_config.py +460 -0
  91. setiastro/saspro/luminancerecombine.py +309 -0
  92. setiastro/saspro/main_helpers.py +201 -0
  93. setiastro/saspro/mask_creation.py +928 -0
  94. setiastro/saspro/masks_core.py +56 -0
  95. setiastro/saspro/mdi_widgets.py +353 -0
  96. setiastro/saspro/memory_utils.py +666 -0
  97. setiastro/saspro/metadata_patcher.py +75 -0
  98. setiastro/saspro/mfdeconv.py +3826 -0
  99. setiastro/saspro/mfdeconv_earlystop.py +71 -0
  100. setiastro/saspro/mfdeconvcudnn.py +3263 -0
  101. setiastro/saspro/mfdeconvsport.py +2382 -0
  102. setiastro/saspro/minorbodycatalog.py +567 -0
  103. setiastro/saspro/morphology.py +382 -0
  104. setiastro/saspro/multiscale_decomp.py +1290 -0
  105. setiastro/saspro/nbtorgb_stars.py +531 -0
  106. setiastro/saspro/numba_utils.py +3044 -0
  107. setiastro/saspro/numba_warmup.py +141 -0
  108. setiastro/saspro/ops/__init__.py +9 -0
  109. setiastro/saspro/ops/command_help_dialog.py +623 -0
  110. setiastro/saspro/ops/command_runner.py +217 -0
  111. setiastro/saspro/ops/commands.py +1594 -0
  112. setiastro/saspro/ops/script_editor.py +1102 -0
  113. setiastro/saspro/ops/scripts.py +1413 -0
  114. setiastro/saspro/ops/settings.py +560 -0
  115. setiastro/saspro/parallel_utils.py +554 -0
  116. setiastro/saspro/pedestal.py +121 -0
  117. setiastro/saspro/perfect_palette_picker.py +1053 -0
  118. setiastro/saspro/pipeline.py +110 -0
  119. setiastro/saspro/pixelmath.py +1600 -0
  120. setiastro/saspro/plate_solver.py +2435 -0
  121. setiastro/saspro/project_io.py +797 -0
  122. setiastro/saspro/psf_utils.py +136 -0
  123. setiastro/saspro/psf_viewer.py +549 -0
  124. setiastro/saspro/pyi_rthook_astroquery.py +95 -0
  125. setiastro/saspro/remove_green.py +314 -0
  126. setiastro/saspro/remove_stars.py +1625 -0
  127. setiastro/saspro/remove_stars_preset.py +404 -0
  128. setiastro/saspro/resources.py +472 -0
  129. setiastro/saspro/rgb_combination.py +207 -0
  130. setiastro/saspro/rgb_extract.py +19 -0
  131. setiastro/saspro/rgbalign.py +723 -0
  132. setiastro/saspro/runtime_imports.py +7 -0
  133. setiastro/saspro/runtime_torch.py +754 -0
  134. setiastro/saspro/save_options.py +72 -0
  135. setiastro/saspro/selective_color.py +1552 -0
  136. setiastro/saspro/sfcc.py +1425 -0
  137. setiastro/saspro/shortcuts.py +2807 -0
  138. setiastro/saspro/signature_insert.py +1099 -0
  139. setiastro/saspro/stacking_suite.py +17712 -0
  140. setiastro/saspro/star_alignment.py +7420 -0
  141. setiastro/saspro/star_alignment_preset.py +329 -0
  142. setiastro/saspro/star_metrics.py +49 -0
  143. setiastro/saspro/star_spikes.py +681 -0
  144. setiastro/saspro/star_stretch.py +470 -0
  145. setiastro/saspro/stat_stretch.py +502 -0
  146. setiastro/saspro/status_log_dock.py +78 -0
  147. setiastro/saspro/subwindow.py +3267 -0
  148. setiastro/saspro/supernovaasteroidhunter.py +1712 -0
  149. setiastro/saspro/swap_manager.py +99 -0
  150. setiastro/saspro/torch_backend.py +89 -0
  151. setiastro/saspro/torch_rejection.py +434 -0
  152. setiastro/saspro/view_bundle.py +1555 -0
  153. setiastro/saspro/wavescale_hdr.py +624 -0
  154. setiastro/saspro/wavescale_hdr_preset.py +100 -0
  155. setiastro/saspro/wavescalede.py +657 -0
  156. setiastro/saspro/wavescalede_preset.py +228 -0
  157. setiastro/saspro/wcs_update.py +374 -0
  158. setiastro/saspro/whitebalance.py +456 -0
  159. setiastro/saspro/widgets/__init__.py +48 -0
  160. setiastro/saspro/widgets/common_utilities.py +305 -0
  161. setiastro/saspro/widgets/graphics_views.py +122 -0
  162. setiastro/saspro/widgets/image_utils.py +518 -0
  163. setiastro/saspro/widgets/preview_dialogs.py +280 -0
  164. setiastro/saspro/widgets/spinboxes.py +275 -0
  165. setiastro/saspro/widgets/themed_buttons.py +13 -0
  166. setiastro/saspro/widgets/wavelet_utils.py +299 -0
  167. setiastro/saspro/window_shelf.py +185 -0
  168. setiastro/saspro/xisf.py +1123 -0
  169. setiastrosuitepro-1.6.0.dist-info/METADATA +266 -0
  170. setiastrosuitepro-1.6.0.dist-info/RECORD +174 -0
  171. setiastrosuitepro-1.6.0.dist-info/WHEEL +4 -0
  172. setiastrosuitepro-1.6.0.dist-info/entry_points.txt +6 -0
  173. setiastrosuitepro-1.6.0.dist-info/licenses/LICENSE +674 -0
  174. setiastrosuitepro-1.6.0.dist-info/licenses/license.txt +2580 -0
@@ -0,0 +1,141 @@
1
+ # pro/numba_warmup.py
2
+ """
3
+ Background Numba JIT warmup module.
4
+
5
+ Triggers compilation of frequently-used Numba functions in a background thread
6
+ after the main UI has loaded. This ensures the first actual use of these
7
+ functions is fast, while not blocking the application startup.
8
+ """
9
+ from __future__ import annotations
10
+ import threading
11
+ import numpy as np
12
+ import logging
13
+
14
+ _warmup_thread: threading.Thread | None = None
15
+ _warmup_done = threading.Event()
16
+
17
+ def _do_warmup():
18
+ """
19
+ Compile critical numba functions with small dummy arrays.
20
+ This runs in a background thread after the UI is visible.
21
+
22
+ Expanded to cover 25+ frequently-used functions for:
23
+ - Image blending operations (7 functions)
24
+ - Geometric transforms (6 functions)
25
+ - Image processing (5 functions)
26
+ - Statistical operations (5 functions)
27
+ - Calibration (2+ functions)
28
+ """
29
+ try:
30
+ # Import numba functions - expanded set
31
+ from setiastro.saspro.legacy.numba_utils import (
32
+ # Blending operations (7)
33
+ blend_add_numba,
34
+ blend_subtract_numba,
35
+ blend_multiply_numba,
36
+ blend_divide_numba,
37
+ blend_screen_numba,
38
+ blend_overlay_numba,
39
+ blend_difference_numba,
40
+ # Geometric transforms (6)
41
+ rescale_image_numba,
42
+ flip_horizontal_numba,
43
+ flip_vertical_numba,
44
+ rotate_180_numba,
45
+ bin2x2_numba,
46
+ apply_rotation_numba,
47
+ # Image processing (5)
48
+ invert_image_numba,
49
+ apply_flat_division_numba,
50
+ subtract_dark_numba,
51
+ apply_gain_numba,
52
+ clip_image_numba,
53
+ # Statistical operations (5)
54
+ kappa_sigma_clip_weighted,
55
+ windsorized_sigma_clip_weighted,
56
+ percentile_clip_weighted,
57
+ median_filter_numba,
58
+ apply_color_correction_numba,
59
+ )
60
+
61
+ # Create small dummy arrays for warmup
62
+ dummy_rgb = np.random.rand(32, 32, 3).astype(np.float32)
63
+ dummy_mono = np.random.rand(32, 32).astype(np.float32)
64
+ dummy_3d_mono = np.random.rand(8, 32, 32).astype(np.float32) # Stack of 8 frames
65
+ dummy_3d_rgb = np.random.rand(8, 32, 32, 3).astype(np.float32) # Stack of 8 RGB frames
66
+ dummy_4d = np.random.rand(4, 2, 32, 32).astype(np.float32) # 4 frames, 2 channels
67
+
68
+ # Warm up blending operations
69
+ warmup_funcs = [
70
+ (blend_add_numba, [dummy_rgb, dummy_rgb, 0.5]),
71
+ (blend_subtract_numba, [dummy_rgb, dummy_rgb, 0.5]),
72
+ (blend_multiply_numba, [dummy_rgb, dummy_rgb, 0.5]),
73
+ (blend_divide_numba, [dummy_rgb, dummy_rgb, 0.5]),
74
+ (blend_screen_numba, [dummy_rgb, dummy_rgb, 0.5]),
75
+ (blend_overlay_numba, [dummy_rgb, dummy_rgb, 0.5]),
76
+ (blend_difference_numba, [dummy_rgb, dummy_rgb, 0.5]),
77
+ # Geometric transforms
78
+ (rescale_image_numba, [dummy_rgb, 0.5]),
79
+ (flip_horizontal_numba, [dummy_rgb]),
80
+ (flip_vertical_numba, [dummy_rgb]),
81
+ (rotate_180_numba, [dummy_mono]),
82
+ (bin2x2_numba, [dummy_mono]),
83
+ # Image processing
84
+ (invert_image_numba, [dummy_rgb]),
85
+ (apply_flat_division_numba, [dummy_rgb, dummy_rgb]),
86
+ (subtract_dark_numba, [dummy_mono, dummy_mono]),
87
+ (apply_gain_numba, [dummy_mono, 1.0]),
88
+ (clip_image_numba, [dummy_rgb, 0.0, 1.0]),
89
+ # Statistical operations (with multiple frames)
90
+ (kappa_sigma_clip_weighted, [dummy_3d_mono, np.ones(8)]),
91
+ (windsorized_sigma_clip_weighted, [dummy_3d_mono, np.ones(8)]),
92
+ (percentile_clip_weighted, [dummy_3d_mono, 50.0]),
93
+ (median_filter_numba, [dummy_mono, 3]),
94
+ (apply_color_correction_numba, [dummy_rgb, dummy_rgb]),
95
+ ]
96
+
97
+ for func, args in warmup_funcs:
98
+ try:
99
+ _ = func(*args)
100
+ except Exception:
101
+ # Silently skip functions that may not be available or fail
102
+ pass
103
+
104
+ logging.debug("Numba warmup completed successfully")
105
+
106
+ except Exception as e:
107
+ logging.debug(f"Numba warmup failed (non-critical): {e}")
108
+ finally:
109
+ _warmup_done.set()
110
+
111
+
112
+ def start_background_warmup():
113
+ """
114
+ Start the Numba warmup in a background thread.
115
+ Call this after the main window is visible.
116
+ """
117
+ global _warmup_thread
118
+
119
+ if _warmup_thread is not None and _warmup_thread.is_alive():
120
+ return # Already running
121
+
122
+ _warmup_thread = threading.Thread(target=_do_warmup, daemon=True, name="NumbaWarmup")
123
+ _warmup_thread.start()
124
+
125
+
126
+ def wait_for_warmup(timeout: float = 5.0) -> bool:
127
+ """
128
+ Wait for the warmup to complete.
129
+
130
+ Args:
131
+ timeout: Maximum time to wait in seconds.
132
+
133
+ Returns:
134
+ True if warmup completed, False if timeout.
135
+ """
136
+ return _warmup_done.wait(timeout=timeout)
137
+
138
+
139
+ def is_warmup_done() -> bool:
140
+ """Check if warmup has completed."""
141
+ return _warmup_done.is_set()
@@ -0,0 +1,9 @@
1
+ """
2
+ Seti Astro Suite Pro - Operations and command framework.
3
+
4
+ This package contains:
5
+ - Command execution framework (command_runner, commands)
6
+ - Script management system (scripts, script_editor)
7
+ - Settings and help dialogs (settings, command_help_dialog)
8
+ """
9
+