setiastrosuitepro 1.7.0.post2__tar.gz → 1.7.2.post1__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 setiastrosuitepro might be problematic. Click here for more details.

Files changed (415) hide show
  1. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/PKG-INFO +3 -2
  2. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/pyproject.toml +8 -9
  3. setiastrosuitepro-1.7.2.post1/src/setiastro/images/3dplanet.png +0 -0
  4. setiastrosuitepro-1.7.2.post1/src/setiastro/images/TextureClarity.svg +56 -0
  5. setiastrosuitepro-1.7.2.post1/src/setiastro/saspro/_generated/build_info.py +3 -0
  6. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/aberration_ai.py +79 -2
  7. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/astrospike_python.py +45 -3
  8. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/main_window.py +40 -3
  9. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/mixins/menu_mixin.py +3 -0
  10. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/mixins/toolbar_mixin.py +20 -6
  11. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/imageops/serloader.py +612 -155
  12. setiastrosuitepro-1.7.2.post1/src/setiastro/saspro/planetprojection.py +2731 -0
  13. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/resources.py +4 -0
  14. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/rgbalign.py +456 -12
  15. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/ser_stack_config.py +30 -2
  16. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/ser_stacker.py +20 -3
  17. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/ser_stacker_dialog.py +371 -6
  18. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/ser_tracking.py +57 -35
  19. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/serviewer.py +532 -17
  20. setiastrosuitepro-1.7.2.post1/src/setiastro/saspro/texture_clarity.py +593 -0
  21. setiastrosuitepro-1.7.0.post2/src/setiastro/saspro/_generated/build_info.py +0 -3
  22. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/LICENSE +0 -0
  23. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/README.md +0 -0
  24. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/license.txt +0 -0
  25. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/__init__.py +0 -0
  26. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/data/SASP_data.fits +0 -0
  27. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/data/catalogs/List_of_Galaxies_with_Distances_Gly.csv +0 -0
  28. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/data/catalogs/astrobin_filters.csv +0 -0
  29. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/data/catalogs/astrobin_filters_page1_local.csv +0 -0
  30. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/data/catalogs/cali2.csv +0 -0
  31. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/data/catalogs/cali2color.csv +0 -0
  32. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/data/catalogs/celestial_catalog - original.csv +0 -0
  33. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/data/catalogs/celestial_catalog.csv +0 -0
  34. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/data/catalogs/detected_stars.csv +0 -0
  35. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/data/catalogs/fits_header_data.csv +0 -0
  36. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/data/catalogs/test.csv +0 -0
  37. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/data/catalogs/updated_celestial_catalog.csv +0 -0
  38. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/Astro_Spikes.png +0 -0
  39. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/Background_startup.jpg +0 -0
  40. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/HRDiagram.png +0 -0
  41. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/LExtract.png +0 -0
  42. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/LInsert.png +0 -0
  43. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/Oxygenation-atm-2.svg.png +0 -0
  44. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/RGB080604.png +0 -0
  45. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/abeicon.png +0 -0
  46. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/abeicon.svg +0 -0
  47. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/aberration.png +0 -0
  48. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/acv_icon.png +0 -0
  49. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/andromedatry.png +0 -0
  50. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/andromedatry_satellited.png +0 -0
  51. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/annotated.png +0 -0
  52. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/aperture.png +0 -0
  53. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/astrosuite.ico +0 -0
  54. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/astrosuite.png +0 -0
  55. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/astrosuitepro.icns +0 -0
  56. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/astrosuitepro.ico +0 -0
  57. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/astrosuitepro.png +0 -0
  58. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/background.png +0 -0
  59. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/background2.png +0 -0
  60. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/benchmark.png +0 -0
  61. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/big_moon_stabilizer_timeline.png +0 -0
  62. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/big_moon_stabilizer_timeline_clean.png +0 -0
  63. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/blaster.png +0 -0
  64. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/blink.png +0 -0
  65. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/clahe.png +0 -0
  66. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/collage.png +0 -0
  67. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/colorwheel.png +0 -0
  68. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/colorwheel.svg +0 -0
  69. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/contsub.png +0 -0
  70. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/convo.png +0 -0
  71. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/copyslot.png +0 -0
  72. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/cosmic.png +0 -0
  73. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/cosmic.svg +0 -0
  74. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/cosmicsat.png +0 -0
  75. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/cosmicsat.svg +0 -0
  76. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/crop1.png +0 -0
  77. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/cropicon.png +0 -0
  78. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/curves.png +0 -0
  79. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/cvs.png +0 -0
  80. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/debayer.png +0 -0
  81. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/denoise_cnn_custom.png +0 -0
  82. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/denoise_cnn_graph.png +0 -0
  83. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/disk.png +0 -0
  84. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/dse.png +0 -0
  85. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/exoicon.png +0 -0
  86. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/eye.png +0 -0
  87. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/first_quarter.png +0 -0
  88. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/fliphorizontal.png +0 -0
  89. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/flipvertical.png +0 -0
  90. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/font.png +0 -0
  91. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/freqsep.png +0 -0
  92. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/full_moon.png +0 -0
  93. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/functionbundle.png +0 -0
  94. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/graxpert.png +0 -0
  95. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/graxpert.svg +0 -0
  96. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/green.png +0 -0
  97. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/gridicon.png +0 -0
  98. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/halo.png +0 -0
  99. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/hdr.png +0 -0
  100. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/histogram.png +0 -0
  101. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/hubble.png +0 -0
  102. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/imagecombine.png +0 -0
  103. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/invert.png +0 -0
  104. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/isophote.png +0 -0
  105. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/isophote_demo_figure.png +0 -0
  106. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/isophote_demo_image.png +0 -0
  107. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/isophote_demo_model.png +0 -0
  108. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/isophote_demo_residual.png +0 -0
  109. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/jwstpupil.png +0 -0
  110. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/last_quarter.png +0 -0
  111. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/linearfit.png +0 -0
  112. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/linearfit.svg +0 -0
  113. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/livestacking.png +0 -0
  114. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/mask.png +0 -0
  115. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/maskapply.png +0 -0
  116. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/maskcreate.png +0 -0
  117. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/maskremove.png +0 -0
  118. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/morpho.png +0 -0
  119. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/mosaic.png +0 -0
  120. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/multiscale_decomp.png +0 -0
  121. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/narrowbandnormalization.png +0 -0
  122. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/nbtorgb.png +0 -0
  123. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/neutral.png +0 -0
  124. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/new_moon.png +0 -0
  125. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/nuke.png +0 -0
  126. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/openfile.png +0 -0
  127. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/pedestal.png +0 -0
  128. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/pen.png +0 -0
  129. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/pixelmath.png +0 -0
  130. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/pixelmath.svg +0 -0
  131. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/planetarystacker.png +0 -0
  132. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/platesolve.png +0 -0
  133. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/ppp.png +0 -0
  134. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/pro.png +0 -0
  135. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/project.png +0 -0
  136. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/psf.png +0 -0
  137. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/redo.png +0 -0
  138. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/redoicon.png +0 -0
  139. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/rescale.png +0 -0
  140. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/rgbalign.png +0 -0
  141. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/rgbcombo.png +0 -0
  142. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/rgbextract.png +0 -0
  143. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/rotate180.png +0 -0
  144. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/rotatearbitrary.png +0 -0
  145. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/rotateclockwise.png +0 -0
  146. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/rotatecounterclockwise.png +0 -0
  147. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/satellite.png +0 -0
  148. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/script.png +0 -0
  149. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/selectivecolor.png +0 -0
  150. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/simbad.png +0 -0
  151. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/slot0.png +0 -0
  152. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/slot1.png +0 -0
  153. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/slot2.png +0 -0
  154. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/slot3.png +0 -0
  155. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/slot4.png +0 -0
  156. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/slot5.png +0 -0
  157. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/slot6.png +0 -0
  158. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/slot7.png +0 -0
  159. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/slot8.png +0 -0
  160. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/slot9.png +0 -0
  161. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/spcc.png +0 -0
  162. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/spin_precession_vs_lunar_distance.png +0 -0
  163. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/spinner.gif +0 -0
  164. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/stacking.png +0 -0
  165. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/staradd.png +0 -0
  166. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/staralign.png +0 -0
  167. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/starnet.png +0 -0
  168. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/starregistration.png +0 -0
  169. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/starspike.png +0 -0
  170. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/starstretch.png +0 -0
  171. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/statstretch.png +0 -0
  172. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/supernova.png +0 -0
  173. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/uhs.png +0 -0
  174. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/undoicon.png +0 -0
  175. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/upscale.png +0 -0
  176. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/viewbundle.png +0 -0
  177. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waning_crescent_1.png +0 -0
  178. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waning_crescent_2.png +0 -0
  179. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waning_crescent_3.png +0 -0
  180. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waning_crescent_4.png +0 -0
  181. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waning_crescent_5.png +0 -0
  182. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waning_gibbous_1.png +0 -0
  183. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waning_gibbous_2.png +0 -0
  184. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waning_gibbous_3.png +0 -0
  185. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waning_gibbous_4.png +0 -0
  186. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waning_gibbous_5.png +0 -0
  187. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waxing_crescent_1.png +0 -0
  188. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waxing_crescent_2.png +0 -0
  189. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waxing_crescent_3.png +0 -0
  190. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waxing_crescent_4.png +0 -0
  191. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waxing_crescent_5.png +0 -0
  192. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waxing_gibbous_1.png +0 -0
  193. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waxing_gibbous_2.png +0 -0
  194. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waxing_gibbous_3.png +0 -0
  195. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waxing_gibbous_4.png +0 -0
  196. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/waxing_gibbous_5.png +0 -0
  197. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/whitebalance.png +0 -0
  198. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/wimi_icon_256x256.png +0 -0
  199. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/wimilogo.png +0 -0
  200. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/wims.png +0 -0
  201. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/wrench_icon.png +0 -0
  202. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/images/xisfliberator.png +0 -0
  203. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/qml/ResourceMonitor.qml +0 -0
  204. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/__init__.py +0 -0
  205. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/__main__.py +0 -0
  206. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/_generated/__init__.py +0 -0
  207. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/abe.py +0 -0
  208. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/abe_preset.py +0 -0
  209. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/aberration_ai_preset.py +0 -0
  210. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/accel_installer.py +0 -0
  211. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/accel_workers.py +0 -0
  212. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/acv_exporter.py +0 -0
  213. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/add_stars.py +0 -0
  214. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/astrobin_exporter.py +0 -0
  215. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/astrospike.py +0 -0
  216. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/autostretch.py +0 -0
  217. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/backgroundneutral.py +0 -0
  218. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/batch_convert.py +0 -0
  219. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/batch_renamer.py +0 -0
  220. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/blemish_blaster.py +0 -0
  221. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/blink_comparator_pro.py +0 -0
  222. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/bundles.py +0 -0
  223. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/bundles_dock.py +0 -0
  224. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/cheat_sheet.py +0 -0
  225. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/clahe.py +0 -0
  226. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/comet_stacking.py +0 -0
  227. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/common_tr.py +0 -0
  228. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/config.py +0 -0
  229. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/config_bootstrap.py +0 -0
  230. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/config_manager.py +0 -0
  231. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/continuum_subtract.py +0 -0
  232. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/convo.py +0 -0
  233. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/convo_preset.py +0 -0
  234. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/copyastro.py +0 -0
  235. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/cosmicclarity.py +0 -0
  236. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/cosmicclarity_preset.py +0 -0
  237. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/crop_dialog_pro.py +0 -0
  238. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/crop_preset.py +0 -0
  239. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/curve_editor_pro.py +0 -0
  240. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/curves_preset.py +0 -0
  241. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/debayer.py +0 -0
  242. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/debug_utils.py +0 -0
  243. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/dnd_mime.py +0 -0
  244. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/doc_manager.py +0 -0
  245. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/exoplanet_detector.py +0 -0
  246. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/file_utils.py +0 -0
  247. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/fitsmodifier.py +0 -0
  248. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/fix_bom.py +0 -0
  249. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/free_torch_memory.py +0 -0
  250. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/frequency_separation.py +0 -0
  251. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/function_bundle.py +0 -0
  252. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/generate_translations.py +0 -0
  253. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/ghs_dialog_pro.py +0 -0
  254. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/ghs_preset.py +0 -0
  255. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/graxpert.py +0 -0
  256. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/graxpert_preset.py +0 -0
  257. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/__init__.py +0 -0
  258. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/mixins/__init__.py +0 -0
  259. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/mixins/dock_mixin.py +0 -0
  260. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/mixins/file_mixin.py +0 -0
  261. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/mixins/geometry_mixin.py +0 -0
  262. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/mixins/header_mixin.py +0 -0
  263. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/mixins/mask_mixin.py +0 -0
  264. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/mixins/theme_mixin.py +0 -0
  265. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/mixins/update_mixin.py +0 -0
  266. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/mixins/view_mixin.py +0 -0
  267. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/gui/statistics_dialog.py +0 -0
  268. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/halobgon.py +0 -0
  269. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/header_viewer.py +0 -0
  270. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/headless_utils.py +0 -0
  271. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/histogram.py +0 -0
  272. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/history_explorer.py +0 -0
  273. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/i18n.py +0 -0
  274. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/image_combine.py +0 -0
  275. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/image_peeker_pro.py +0 -0
  276. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/imageops/__init__.py +0 -0
  277. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/imageops/mdi_snap.py +0 -0
  278. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/imageops/narrowband_normalization.py +0 -0
  279. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/imageops/scnr.py +0 -0
  280. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/imageops/starbasedwhitebalance.py +0 -0
  281. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/imageops/stretch.py +0 -0
  282. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/isophote.py +0 -0
  283. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/layers.py +0 -0
  284. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/layers_dock.py +0 -0
  285. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/lazy_imports.py +0 -0
  286. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/legacy/__init__.py +0 -0
  287. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/legacy/image_manager.py +0 -0
  288. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/legacy/numba_utils.py +0 -0
  289. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/legacy/xisf.py +0 -0
  290. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/linear_fit.py +0 -0
  291. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/live_stacking.py +0 -0
  292. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/log_bus.py +0 -0
  293. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/logging_config.py +0 -0
  294. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/luminancerecombine.py +0 -0
  295. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/main_helpers.py +0 -0
  296. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/mask_creation.py +0 -0
  297. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/masks_core.py +0 -0
  298. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/mdi_widgets.py +0 -0
  299. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/memory_utils.py +0 -0
  300. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/metadata_patcher.py +0 -0
  301. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/mfdeconv.py +0 -0
  302. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/mfdeconv_earlystop.py +0 -0
  303. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/mfdeconvcudnn.py +0 -0
  304. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/mfdeconvsport.py +0 -0
  305. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/minorbodycatalog.py +0 -0
  306. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/morphology.py +0 -0
  307. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/multiscale_decomp.py +0 -0
  308. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/narrowband_normalization.py +0 -0
  309. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/nbtorgb_stars.py +0 -0
  310. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/numba_utils.py +0 -0
  311. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/numba_warmup.py +0 -0
  312. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/ops/__init__.py +0 -0
  313. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/ops/command_help_dialog.py +0 -0
  314. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/ops/command_runner.py +0 -0
  315. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/ops/commands.py +0 -0
  316. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/ops/script_editor.py +0 -0
  317. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/ops/scripts.py +0 -0
  318. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/ops/settings.py +0 -0
  319. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/parallel_utils.py +0 -0
  320. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/pedestal.py +0 -0
  321. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/perfect_palette_picker.py +0 -0
  322. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/pipeline.py +0 -0
  323. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/pixelmath.py +0 -0
  324. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/plate_solver.py +0 -0
  325. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/project_io.py +0 -0
  326. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/psf_utils.py +0 -0
  327. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/psf_viewer.py +0 -0
  328. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/pyi_rthook_astroquery.py +0 -0
  329. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/remove_green.py +0 -0
  330. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/remove_stars.py +0 -0
  331. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/remove_stars_preset.py +0 -0
  332. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/rgb_combination.py +0 -0
  333. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/rgb_extract.py +0 -0
  334. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/runtime_imports.py +0 -0
  335. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/runtime_torch.py +0 -0
  336. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/save_options.py +0 -0
  337. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/selective_color.py +0 -0
  338. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/sfcc.py +0 -0
  339. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/shortcuts.py +0 -0
  340. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/signature_insert.py +0 -0
  341. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/stacking_suite.py +0 -0
  342. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/star_alignment.py +0 -0
  343. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/star_alignment_preset.py +0 -0
  344. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/star_metrics.py +0 -0
  345. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/star_spikes.py +0 -0
  346. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/star_stretch.py +0 -0
  347. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/stat_stretch.py +0 -0
  348. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/status_log_dock.py +0 -0
  349. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/subwindow.py +0 -0
  350. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/supernovaasteroidhunter.py +0 -0
  351. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/swap_manager.py +0 -0
  352. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/torch_backend.py +0 -0
  353. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/torch_rejection.py +0 -0
  354. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/all_source_strings.json +0 -0
  355. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/ar_translations.py +0 -0
  356. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/de_translations.py +0 -0
  357. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/es_translations.py +0 -0
  358. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/fr_translations.py +0 -0
  359. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/hi_translations.py +0 -0
  360. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/integrate_translations.py +0 -0
  361. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/it_translations.py +0 -0
  362. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/ja_translations.py +0 -0
  363. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/pt_translations.py +0 -0
  364. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/ru_translations.py +0 -0
  365. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_ar.qm +0 -0
  366. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_ar.ts +0 -0
  367. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_de.qm +0 -0
  368. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_de.ts +0 -0
  369. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_es.qm +0 -0
  370. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_es.ts +0 -0
  371. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_fr.qm +0 -0
  372. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_fr.ts +0 -0
  373. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_hi.qm +0 -0
  374. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_hi.ts +0 -0
  375. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_it.qm +0 -0
  376. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_it.ts +0 -0
  377. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_ja.qm +0 -0
  378. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_ja.ts +0 -0
  379. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_pt.qm +0 -0
  380. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_pt.ts +0 -0
  381. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_ru.qm +0 -0
  382. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_ru.ts +0 -0
  383. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_sw.qm +0 -0
  384. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_sw.ts +0 -0
  385. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_uk.qm +0 -0
  386. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_uk.ts +0 -0
  387. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_zh.qm +0 -0
  388. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/saspro_zh.ts +0 -0
  389. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/sw_translations.py +0 -0
  390. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/uk_translations.py +0 -0
  391. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/translations/zh_translations.py +0 -0
  392. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/versioning.py +0 -0
  393. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/view_bundle.py +0 -0
  394. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/wavescale_hdr.py +0 -0
  395. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/wavescale_hdr_preset.py +0 -0
  396. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/wavescalede.py +0 -0
  397. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/wavescalede_preset.py +0 -0
  398. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/wcs_update.py +0 -0
  399. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/whitebalance.py +0 -0
  400. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/widgets/__init__.py +0 -0
  401. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/widgets/common_utilities.py +0 -0
  402. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/widgets/graphics_views.py +0 -0
  403. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/widgets/image_utils.py +0 -0
  404. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/widgets/minigame/game.js +0 -0
  405. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/widgets/minigame/index.html +0 -0
  406. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/widgets/minigame/style.css +0 -0
  407. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/widgets/preview_dialogs.py +0 -0
  408. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/widgets/resource_monitor.py +0 -0
  409. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/widgets/spinboxes.py +0 -0
  410. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/widgets/themed_buttons.py +0 -0
  411. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/widgets/wavelet_utils.py +0 -0
  412. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/wimi.py +0 -0
  413. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/wims.py +0 -0
  414. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/window_shelf.py +0 -0
  415. {setiastrosuitepro-1.7.0.post2 → setiastrosuitepro-1.7.2.post1}/src/setiastro/saspro/xisf.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: setiastrosuitepro
3
- Version: 1.7.0.post2
3
+ Version: 1.7.2.post1
4
4
  Summary: Seti Astro Suite Pro - Advanced astrophotography toolkit for image calibration, stacking, registration, photometry, and visualization
5
5
  License: GPL-3.0
6
6
  License-File: LICENSE
@@ -35,8 +35,9 @@ Requires-Dist: numba
35
35
  Requires-Dist: numpy
36
36
  Requires-Dist: oktopus
37
37
  Requires-Dist: onnx
38
- Requires-Dist: onnxruntime ; sys_platform != "win32"
38
+ Requires-Dist: onnxruntime ; sys_platform != "linux" and sys_platform != "win32"
39
39
  Requires-Dist: onnxruntime-directml ; sys_platform == "win32"
40
+ Requires-Dist: onnxruntime-gpu ; sys_platform == "linux"
40
41
  Requires-Dist: opencv-python-headless
41
42
  Requires-Dist: pandas
42
43
  Requires-Dist: photutils
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "setiastrosuitepro"
3
- version = "1.7.0.post2"
3
+ version = "1.7.2.post1"
4
4
  description = "Seti Astro Suite Pro - Advanced astrophotography toolkit for image calibration, stacking, registration, photometry, and visualization"
5
5
  authors = ["Franklin Marek <info@setiastro.com>"]
6
6
  readme = "README.md"
@@ -55,15 +55,14 @@ jplephem = "*"
55
55
  # performance
56
56
  numba = "*"
57
57
 
58
- # neural net
58
+ #neural net
59
59
  onnx = "*"
60
-
61
- # Choose ONE runtime per platform.
62
- # - Windows: DirectML (GPU on NVIDIA/AMD/Intel without CUDA hassles)
63
- onnxruntime-directml = {version="*", markers="sys_platform == 'win32'"}
64
-
65
- # - Non-Windows: CPU runtime
66
- onnxruntime = {version="*", markers="sys_platform != 'win32'"}
60
+ # Use GPU version on Linux, DirectML on Windows, CPU version on macOS/others
61
+ # Note: onnxruntime-gpu includes CUDA support and also provides CPUExecutionProvider as fallback
62
+ # You cannot install both onnxruntime and onnxruntime-gpu simultaneously
63
+ "onnxruntime-gpu" = {version = "*", markers = "sys_platform == 'linux'"}
64
+ "onnxruntime-directml" = {version = "*", markers = "sys_platform == 'win32'"}
65
+ onnxruntime = {version = "*", markers = "sys_platform != 'linux' and sys_platform != 'win32'"}
67
66
 
68
67
  # image formats & camera raw
69
68
  xisf = "*"
@@ -0,0 +1,56 @@
1
+ <svg width="500" height="500" viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
2
+ <defs>
3
+ <linearGradient id="skyGradient" x1="0%" y1="0%" x2="0%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#0d0221;stop-opacity:1" />
5
+ <stop offset="100%" style="stop-color:#2a0e66;stop-opacity:1" />
6
+ </linearGradient>
7
+ <linearGradient id="sunGradient" x1="0%" y1="0%" x2="0%" y2="100%">
8
+ <stop offset="0%" style="stop-color:#ff9a00;stop-opacity:1" />
9
+ <stop offset="40%" style="stop-color:#ff0055;stop-opacity:1" />
10
+ <stop offset="100%" style="stop-color:#9900ff;stop-opacity:1" />
11
+ </linearGradient>
12
+ <linearGradient id="textGradient" x1="0%" y1="0%" x2="100%" y2="100%">
13
+ <stop offset="0%" style="stop-color:#00ffff;stop-opacity:1" />
14
+ <stop offset="100%" style="stop-color:#ff00ff;stop-opacity:1" />
15
+ </linearGradient>
16
+ <filter id="neonGlow" x="-50%" y="-50%" width="200%" height="200%">
17
+ <feGaussianBlur stdDeviation="3.0" result="coloredBlur"/>
18
+ <feMerge>
19
+ <feMergeNode in="coloredBlur"/>
20
+ <feMergeNode in="SourceGraphic"/>
21
+ </feMerge>
22
+ </filter>
23
+ </defs>
24
+ <rect width="500" height="500" fill="url(#skyGradient)" />
25
+ <g transform="translate(250, 220)">
26
+ <circle r="120" fill="url(#sunGradient)" />
27
+ <rect x="-120" y="20" width="240" height="4" fill="#2a0e66" opacity="0.8" />
28
+ <rect x="-120" y="35" width="240" height="6" fill="#2a0e66" opacity="0.8" />
29
+ <rect x="-120" y="52" width="240" height="8" fill="#2a0e66" opacity="0.8" />
30
+ <rect x="-120" y="72" width="240" height="12" fill="#2a0e66" opacity="0.8" />
31
+ <rect x="-120" y="96" width="240" height="16" fill="#2a0e66" opacity="0.8" />
32
+ </g>
33
+ <g stroke="#ff00ff" stroke-width="2" opacity="0.4">
34
+ <line x1="0" y1="350" x2="500" y2="350" />
35
+ <line x1="0" y1="380" x2="500" y2="380" />
36
+ <line x1="0" y1="420" x2="500" y2="420" />
37
+ <line x1="0" y1="470" x2="500" y2="470" />
38
+ <line x1="250" y1="350" x2="250" y2="500" />
39
+ <line x1="250" y1="350" x2="50" y2="500" />
40
+ <line x1="250" y1="350" x2="-150" y2="500" />
41
+ <line x1="250" y1="350" x2="450" y2="500" />
42
+ <line x1="250" y1="350" x2="650" y2="500" />
43
+ </g>
44
+ <g font-family="'Times New Roman', Times, serif" font-weight="bold" font-style="italic" font-size="360" text-anchor="middle">
45
+ <text x="217" y="390" fill="#00ffff" opacity="0.7">TC</text>
46
+ <text x="233" y="390" fill="#ff0055" opacity="0.7">TC</text>
47
+ <text x="225" y="390" fill="url(#textGradient)" stroke="#ffffff" stroke-width="3" filter="url(#neonGlow)">TC</text>
48
+ </g>
49
+ <g fill="#ffffff" opacity="0.8">
50
+ <circle cx="50" cy="50" r="2" />
51
+ <circle cx="450" cy="80" r="2" />
52
+ <circle cx="100" cy="150" r="1.5" />
53
+ <circle cx="400" cy="20" r="1.5" />
54
+ <path d="M420 120 L422 130 L432 132 L422 134 L420 144 L418 134 L408 132 L418 130 Z" fill="#00ffff" />
55
+ </g>
56
+ </svg>
@@ -0,0 +1,3 @@
1
+ # Auto-generated at build time. Do not edit.
2
+ BUILD_TIMESTAMP = "2026-01-18T18:43:19Z"
3
+ APP_VERSION = "1.7.2.post1"
@@ -7,9 +7,33 @@ import numpy as np
7
7
  import sys
8
8
  import platform # add
9
9
  import time
10
+ import subprocess
10
11
 
11
12
  IS_APPLE_ARM = (sys.platform == "darwin" and platform.machine() == "arm64")
12
13
 
14
+ def _has_nvidia_gpu() -> bool:
15
+ """Check if system has an NVIDIA GPU (Linux/Windows)."""
16
+ try:
17
+ if platform.system() == "Linux":
18
+ r = subprocess.run(["nvidia-smi", "-L"], capture_output=True, timeout=2)
19
+ return "GPU" in (r.stdout.decode("utf-8", errors="ignore") or "")
20
+ elif platform.system() == "Windows":
21
+ try:
22
+ ps = subprocess.run(
23
+ ["powershell", "-NoProfile", "-Command",
24
+ "(Get-CimInstance Win32_VideoController | Select-Object -ExpandProperty Name) -join ';'"],
25
+ capture_output=True, timeout=2
26
+ )
27
+ out = (ps.stdout.decode("utf-8", errors="ignore") or "").lower()
28
+ return "nvidia" in out
29
+ except Exception:
30
+ w = subprocess.run(["wmic", "path", "win32_VideoController", "get", "name"],
31
+ capture_output=True, timeout=2)
32
+ return "nvidia" in (w.stdout.decode("utf-8", errors="ignore") or "").lower()
33
+ except Exception:
34
+ pass
35
+ return False
36
+
13
37
  from PyQt6.QtCore import Qt, QThread, pyqtSignal, QStandardPaths, QSettings
14
38
  from PyQt6.QtWidgets import (
15
39
  QDialog, QVBoxLayout, QHBoxLayout, QLabel, QPushButton, QFileDialog,
@@ -258,6 +282,7 @@ class _ONNXWorker(QThread):
258
282
  failed = pyqtSignal(str)
259
283
  finished_ok = pyqtSignal(np.ndarray)
260
284
  canceled = pyqtSignal()
285
+ log_message = pyqtSignal(str) # for console logging
261
286
 
262
287
  def __init__(self, model_path: str, image: np.ndarray, patch: int, overlap: int, providers: list[str]):
263
288
  super().__init__()
@@ -287,16 +312,67 @@ class _ONNXWorker(QThread):
287
312
  self.canceled.emit()
288
313
  return
289
314
 
315
+ # Log available providers for debugging
316
+ avail_providers = ort.get_available_providers()
317
+ gpu_providers = [p for p in self.providers if p != "CPUExecutionProvider"]
318
+ has_nvidia = _has_nvidia_gpu()
319
+
320
+ self.log_message.emit(f"🔍 Available ONNX providers: {', '.join(avail_providers)}")
321
+ self.log_message.emit(f"🔍 Attempting providers: {', '.join(self.providers)}")
322
+ print(f"🔍 Available ONNX providers: {', '.join(avail_providers)}")
323
+ print(f"🔍 Attempting providers: {', '.join(self.providers)}")
324
+
325
+ # Check if NVIDIA GPU is present but CUDA provider is missing
326
+ if has_nvidia and "CUDAExecutionProvider" not in avail_providers:
327
+ msg = ("⚠️ GPU NVIDIA détecté mais CUDAExecutionProvider n'est pas disponible.\n"
328
+ " Vous devez installer 'onnxruntime-gpu' au lieu de 'onnxruntime'.\n"
329
+ " Commande: pip uninstall onnxruntime && pip install onnxruntime-gpu")
330
+ self.log_message.emit(msg)
331
+ print(msg)
332
+
290
333
  try:
291
334
  sess = ort.InferenceSession(self.model_path, providers=self.providers)
292
335
  self.used_provider = (sess.get_providers()[0] if sess.get_providers() else None)
293
- except Exception:
336
+ # Log successful GPU usage
337
+ if self.used_provider != "CPUExecutionProvider" and gpu_providers:
338
+ msg = f"✅ Aberration AI: Using GPU provider {self.used_provider}"
339
+ self.log_message.emit(msg)
340
+ print(msg)
341
+ elif has_nvidia and self.used_provider == "CPUExecutionProvider":
342
+ msg = ("⚠️ GPU NVIDIA détecté mais utilisation du CPU.\n"
343
+ " Installez 'onnxruntime-gpu' pour utiliser le GPU.")
344
+ self.log_message.emit(msg)
345
+ print(msg)
346
+ except Exception as e:
347
+ # Log the actual error for debugging
348
+ error_msg = str(e)
349
+ msg = f"⚠️ Aberration AI: GPU provider failed: {error_msg}"
350
+ self.log_message.emit(msg)
351
+ print(msg)
352
+ self.log_message.emit(f"Available providers: {', '.join(avail_providers)}")
353
+ print(f"Available providers: {', '.join(avail_providers)}")
354
+ self.log_message.emit(f"Attempted providers: {', '.join(self.providers)}")
355
+ print(f"Attempted providers: {', '.join(self.providers)}")
356
+
357
+ # Check if onnxruntime-gpu is installed (CUDA provider should be available if it is)
358
+ if "CUDAExecutionProvider" in self.providers and "CUDAExecutionProvider" not in avail_providers:
359
+ if has_nvidia:
360
+ msg = ("❌ CUDAExecutionProvider non disponible alors qu'un GPU NVIDIA est présent.\n"
361
+ " Installez 'onnxruntime-gpu': pip uninstall onnxruntime && pip install onnxruntime-gpu")
362
+ else:
363
+ msg = "⚠️ CUDAExecutionProvider not available. You may need to install onnxruntime-gpu instead of onnxruntime."
364
+ self.log_message.emit(msg)
365
+ print(msg)
366
+
294
367
  # fallback CPU if GPU fails
295
368
  try:
296
369
  sess = ort.InferenceSession(self.model_path, providers=["CPUExecutionProvider"])
297
370
  self.used_provider = "CPUExecutionProvider"
371
+ msg = f"⚠️ Aberration AI: Falling back to CPU (GPU initialization failed: {error_msg})"
372
+ self.log_message.emit(msg)
373
+ print(msg)
298
374
  except Exception as e2:
299
- self.failed.emit(f"Failed to init ONNX session:\n{e2}")
375
+ self.failed.emit(f"Failed to init ONNX session:\nGPU error: {error_msg}\nCPU error: {e2}")
300
376
  return
301
377
 
302
378
  def cb(frac):
@@ -796,6 +872,7 @@ class AberrationAIDialog(QDialog):
796
872
  self._worker.failed.connect(self._on_failed)
797
873
  self._worker.finished_ok.connect(self._on_ok)
798
874
  self._worker.finished.connect(self._on_worker_finished)
875
+ self._worker.log_message.connect(self._log) # Connect log messages to console
799
876
  self._worker.start()
800
877
 
801
878
 
@@ -685,9 +685,51 @@ def render_spikes(output: np.ndarray, stars: List[Star], config: SpikeConfig, ct
685
685
 
686
686
  # Main spikes
687
687
  if config.intensity > 0:
688
- for i in range(qty):
689
- theta = main_angle_rad + (i * (math.pi * 2) / float(qty))
690
- ...
688
+ rainbow_str = config.rainbow_spike_intensity if (config.enable_rainbow and config.rainbow_spikes) else 0
689
+ for i in range(int(config.quantity)):
690
+ theta = main_angle_rad + (i * (math.pi * 2) / float(config.quantity))
691
+ cos_t = math.cos(theta)
692
+ sin_t = math.sin(theta)
693
+
694
+ start_x = star.x + cos_t * 0.5
695
+ start_y = star.y + sin_t * 0.5
696
+ end_x = star.x + cos_t * base_length
697
+ end_y = star.y + sin_t * base_length
698
+
699
+ # Standard Spike
700
+ # Base star color, fading to zero alpha
701
+ c_end = (star.color.r/255.0, star.color.g/255.0, star.color.b/255.0, 0.0)
702
+
703
+ # If rainbow enabled, standard spike is dimmed (matches preview logic)
704
+ opacity_mult = 0.4 if rainbow_str > 0 else 1.0
705
+ c_start = (color[0], color[1], color[2], color[3] * opacity_mult)
706
+
707
+ draw_line_gradient(output, start_x, start_y, end_x, end_y,
708
+ c_start, c_end, thickness, config.sharpness)
709
+
710
+ # Rainbow Overlay
711
+ if rainbow_str > 0:
712
+ stops = 10
713
+ for s in range(stops):
714
+ p1 = s / stops
715
+ p2 = (s + 1) / stops
716
+ if p1 > config.rainbow_spike_length:
717
+ break
718
+
719
+ hue = (p1 * 360.0 * config.rainbow_spike_frequency) % 360.0
720
+ a_rainbow = min(1.0, config.intensity * rainbow_str * 2.0) * (1.0 - p1)
721
+ r_seg, g_seg, b_seg = hsl_to_rgb(hue / 360.0, 0.8, 0.6)
722
+ c_seg = (r_seg, g_seg, b_seg, a_rainbow)
723
+
724
+ # Calculate segment positions
725
+ sx = start_x + (end_x - start_x) * p1
726
+ sy = start_y + (end_y - start_y) * p1
727
+ ex = start_x + (end_x - start_x) * p2
728
+ ey = start_y + (end_y - start_y) * p2
729
+
730
+ # Draw rainbow segment with constant color
731
+ draw_line_gradient(output, sx, sy, ex, ey,
732
+ c_seg, c_seg, thickness, 1.0)
691
733
 
692
734
  # Secondary spikes
693
735
  if config.secondary_intensity > 0:
@@ -196,7 +196,7 @@ from setiastro.saspro.resources import (
196
196
  colorwheel_path, font_path, csv_icon_path, spinner_path, wims_path, narrowbandnormalization_path,
197
197
  wimi_path, linearfit_path, debayer_path, aberration_path, acv_icon_path,
198
198
  functionbundles_path, viewbundles_path, selectivecolor_path, rgbalign_path, planetarystacker_path,
199
- background_path, script_icon_path
199
+ background_path, script_icon_path, planetprojection_path,
200
200
  )
201
201
 
202
202
  import faulthandler
@@ -4280,6 +4280,29 @@ class AstroSuiteProMainWindow(
4280
4280
  dlg.setWindowIcon(QIcon(planetarystacker_path))
4281
4281
  dlg.show()
4282
4282
 
4283
+ def _open_planet_projection(self):
4284
+ from setiastro.saspro.planetprojection import PlanetProjectionDialog
4285
+ sw = self.mdi.activeSubWindow()
4286
+ if not sw:
4287
+ QMessageBox.information(self, "No image", "Open an image first.")
4288
+ return
4289
+
4290
+ view = sw.widget()
4291
+ doc = self.doc_manager.get_document_for_view(view)
4292
+
4293
+ dlg = PlanetProjectionDialog(self, doc)
4294
+ try:
4295
+ # dlg.setWindowIcon(QIcon(planetprojection_path))
4296
+ pass
4297
+ except Exception:
4298
+ pass
4299
+ dlg.resize(980, 720)
4300
+ dlg.setWindowFlag(Qt.WindowType.Window, True)
4301
+ dlg.setWindowIcon(QIcon(planetprojection_path))
4302
+ dlg.show()
4303
+ self._log("Functions: opened Planet Projection.")
4304
+
4305
+
4283
4306
  def _open_stacking_suite(self):
4284
4307
  # Reuse if we already have one
4285
4308
  dlg = getattr(self, "_stacking_suite", None)
@@ -4619,9 +4642,16 @@ class AstroSuiteProMainWindow(
4619
4642
  # Create a callback to set the image back to the document
4620
4643
  def set_image_callback(image_data, step_name):
4621
4644
  """Apply the result image back to the active document."""
4622
- if active_doc and hasattr(active_doc, "set_image"):
4645
+ if active_doc and hasattr(active_doc, "apply_edit"):
4623
4646
  print(f"[AstroSpike] Setting image back to document, shape: {image_data.shape}")
4624
- # Pass metadata as empty dict and step_name separately
4647
+ # Use apply_edit for proper undo/redo integration
4648
+ meta = {
4649
+ "step_name": step_name,
4650
+ "astrospike": True
4651
+ }
4652
+ active_doc.apply_edit(image_data.astype(np.float32, copy=False), metadata=meta, step_name=step_name)
4653
+ elif active_doc and hasattr(active_doc, "set_image"):
4654
+ print(f"[AstroSpike] Setting image via set_image, shape: {image_data.shape}")
4625
4655
  active_doc.set_image(image_data, metadata={}, step_name=step_name)
4626
4656
  elif active_doc and hasattr(active_doc, "image"):
4627
4657
  print(f"[AstroSpike] Setting image directly, shape: {image_data.shape}")
@@ -9114,6 +9144,13 @@ class AstroSuiteProMainWindow(
9114
9144
 
9115
9145
  super().keyPressEvent(event)
9116
9146
 
9147
+ def _open_texture_clarity(self):
9148
+ try:
9149
+ from setiastro.saspro.texture_clarity import open_texture_clarity_dialog
9150
+ open_texture_clarity_dialog(self)
9151
+ except Exception as e:
9152
+ print(f"Error opening Texture & Clarity: {e}")
9153
+
9117
9154
  def _update_usage_stats(self):
9118
9155
  try:
9119
9156
  now = time.time()
@@ -155,6 +155,7 @@ class MenuMixin:
155
155
  m_fn.addAction(self.act_signature)
156
156
  m_fn.addAction(self.act_star_stretch)
157
157
  m_fn.addAction(self.act_stat_stretch)
158
+ m_fn.addAction(self.act_texture_clarity)
158
159
  m_fn.addAction(self.act_wavescale_de)
159
160
  m_fn.addAction(self.act_wavescale_hdr)
160
161
  m_fn.addAction(self.act_white_balance)
@@ -177,6 +178,7 @@ class MenuMixin:
177
178
  m_tools.addAction(self.act_narrowband_normalization)
178
179
  m_tools.addAction(self.act_nbtorgb)
179
180
  m_tools.addAction(self.act_ppp)
181
+
180
182
  m_tools.addAction(self.act_selective_color)
181
183
  m_tools.addSeparator()
182
184
  m_tools.addAction(self.act_view_bundles)
@@ -205,6 +207,7 @@ class MenuMixin:
205
207
  m_star.addAction(self.act_isophote)
206
208
  m_star.addAction(self.act_live_stacking)
207
209
  m_star.addAction(self.act_mosaic_master)
210
+ m_star.addAction(self.act_planet_projection)
208
211
  m_star.addAction(self.act_planetary_stacker)
209
212
  m_star.addAction(self.act_plate_solve)
210
213
  m_star.addAction(self.act_psf_viewer)
@@ -13,13 +13,14 @@ from PyQt6.QtWidgets import QMenu, QToolButton
13
13
  from PyQt6.QtCore import QElapsedTimer
14
14
 
15
15
  import sys
16
+ import os
16
17
 
17
18
  if TYPE_CHECKING:
18
19
  pass
19
20
 
20
21
  # Import icon paths - these are needed at runtime
21
22
  from setiastro.saspro.resources import (
22
- icon_path, green_path, neutral_path, whitebalance_path,
23
+ icon_path, green_path, neutral_path, whitebalance_path, texture_clarity_path,
23
24
  morpho_path, clahe_path, starnet_path, staradd_path, LExtract_path,
24
25
  LInsert_path, rgbcombo_path, rgbextract_path, graxperticon_path,
25
26
  cropicon_path, openfile_path, abeicon_path, undoicon_path, redoicon_path,
@@ -35,7 +36,7 @@ from setiastro.saspro.resources import (
35
36
  nbtorgb_path, freqsep_path, multiscale_decomp_path, contsub_path, halo_path, cosmic_path,
36
37
  satellite_path, imagecombine_path, wims_path, wimi_path, linearfit_path,
37
38
  debayer_path, aberration_path, functionbundles_path, viewbundles_path, planetarystacker_path,
38
- selectivecolor_path, rgbalign_path,
39
+ selectivecolor_path, rgbalign_path, planetprojection_path,
39
40
  )
40
41
 
41
42
  # Import shortcuts module
@@ -222,6 +223,7 @@ class ToolbarMixin:
222
223
  tb_fn.addAction(self.act_wavescale_hdr)
223
224
  tb_fn.addAction(self.act_wavescale_de)
224
225
  tb_fn.addAction(self.act_clahe)
226
+ tb_fn.addAction(self.act_texture_clarity)
225
227
  tb_fn.addAction(self.act_morphology)
226
228
  tb_fn.addAction(self.act_pixelmath)
227
229
  tb_fn.addAction(self.act_signature)
@@ -257,6 +259,7 @@ class ToolbarMixin:
257
259
  tb_tl.addAction(self.act_ppp) # Perfect Palette Picker
258
260
  tb_tl.addAction(self.act_nbtorgb)
259
261
  tb_tl.addAction(self.act_narrowband_normalization)
262
+
260
263
  tb_tl.addAction(self.act_selective_color)
261
264
  tb_tl.addAction(self.act_freqsep)
262
265
  tb_tl.addAction(self.act_multiscale_decomp)
@@ -304,6 +307,7 @@ class ToolbarMixin:
304
307
  tb_star.addAction(self.act_stacking_suite)
305
308
  tb_star.addAction(self.act_live_stacking)
306
309
  tb_star.addAction(self.act_planetary_stacker)
310
+ tb_star.addAction(self.act_planet_projection)
307
311
  tb_star.addAction(self.act_plate_solve)
308
312
  tb_star.addAction(self.act_star_align)
309
313
  tb_star.addAction(self.act_star_register)
@@ -907,6 +911,12 @@ class ToolbarMixin:
907
911
  self.act_remove_green.setIconVisibleInMenu(True)
908
912
  self.act_remove_green.triggered.connect(self._open_remove_green)
909
913
 
914
+ # Texture and Clarity
915
+ self.act_texture_clarity = QAction(QIcon(texture_clarity_path), self.tr("Texture and Clarity..."), self)
916
+ self.act_texture_clarity.setToolTip(self.tr("Enhance texture and clarity using Unsharp Masking"))
917
+ self.act_texture_clarity.setIconVisibleInMenu(True)
918
+ self.act_texture_clarity.triggered.connect(self._open_texture_clarity)
919
+
910
920
  self.act_background_neutral = QAction(QIcon(neutral_path), self.tr("Background Neutralization..."), self)
911
921
  self.act_background_neutral.setStatusTip(self.tr("Neutralize background color balance using a sampled region"))
912
922
  self.act_background_neutral.setIconVisibleInMenu(True)
@@ -1131,10 +1141,7 @@ class ToolbarMixin:
1131
1141
  self.act_narrowband_normalization.setStatusTip(
1132
1142
  self.tr("Normalize HOO/SHO/HSO/HOS (PixelMath port by Bill Blanshan and Mike Cranfield)")
1133
1143
  )
1134
- self.act_narrowband_normalization.setIconVisibleInMenu(False)
1135
- self.act_narrowband_normalization.setShortcut(QKeySequence("Ctrl+Alt+Shift+N"))
1136
- self.act_narrowband_normalization.setShortcutContext(Qt.ShortcutContext.ApplicationShortcut)
1137
- self.addAction(self.act_narrowband_normalization)
1144
+
1138
1145
  self.act_narrowband_normalization.triggered.connect(self._open_narrowband_normalization_tool)
1139
1146
 
1140
1147
  self.act_nbtorgb = QAction(QIcon(nbtorgb_path), self.tr("NB->RGB Stars..."), self)
@@ -1189,6 +1196,11 @@ class ToolbarMixin:
1189
1196
  self.act_planetary_stacker.setStatusTip(self.tr("Stack SER videos (planetary/solar/lunar)"))
1190
1197
  self.act_planetary_stacker.triggered.connect(self._open_planetary_stacker)
1191
1198
 
1199
+ self.act_planet_projection = QAction(QIcon(planetprojection_path), self.tr("Planetary Projection..."), self)
1200
+ self.act_planet_projection.setIconVisibleInMenu(True)
1201
+ self.act_planet_projection.setStatusTip(self.tr("View your planets with stereographic projection"))
1202
+ self.act_planet_projection.triggered.connect(self._open_planet_projection)
1203
+
1192
1204
  self.act_plate_solve = QAction(QIcon(platesolve_path), self.tr("Plate Solver..."), self)
1193
1205
  self.act_plate_solve.setIconVisibleInMenu(True)
1194
1206
  self.act_plate_solve.setStatusTip(self.tr("Solve WCS/SIP for the active image or a file"))
@@ -1394,6 +1406,7 @@ class ToolbarMixin:
1394
1406
  reg("add_stars", self.act_add_stars)
1395
1407
  reg("pedestal", self.act_pedestal)
1396
1408
  reg("remove_green", self.act_remove_green)
1409
+ reg("texture_clarity", self.act_texture_clarity)
1397
1410
  reg("background_neutral", self.act_background_neutral)
1398
1411
  reg("white_balance", self.act_white_balance)
1399
1412
  reg("sfcc", self.act_sfcc)
@@ -1432,6 +1445,7 @@ class ToolbarMixin:
1432
1445
  reg("image_peeker", self.act_image_peeker)
1433
1446
  reg("live_stacking", self.act_live_stacking)
1434
1447
  reg("stacking_suite", self.act_stacking_suite)
1448
+ reg("planet_projection", self.act_planet_projection)
1435
1449
  reg("supernova_hunter", self.act_supernova_hunter)
1436
1450
  reg("star_spikes", self.act_star_spikes)
1437
1451
  reg("astrospike", self.act_astrospike)