takefits 0.2.0__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 (111) hide show
  1. takefits-0.2.0/LICENSE +21 -0
  2. takefits-0.2.0/PKG-INFO +154 -0
  3. takefits-0.2.0/README.md +119 -0
  4. takefits-0.2.0/pyproject.toml +55 -0
  5. takefits-0.2.0/setup.cfg +4 -0
  6. takefits-0.2.0/takefits/__init__.py +3 -0
  7. takefits-0.2.0/takefits/__main__.py +4 -0
  8. takefits-0.2.0/takefits/app_paths.py +21 -0
  9. takefits-0.2.0/takefits/core/__init__.py +0 -0
  10. takefits-0.2.0/takefits/core/action_session.py +319 -0
  11. takefits-0.2.0/takefits/core/actions.py +927 -0
  12. takefits-0.2.0/takefits/core/ai_handler.py +607 -0
  13. takefits-0.2.0/takefits/core/annotation_serialization.py +250 -0
  14. takefits-0.2.0/takefits/core/app_state.py +336 -0
  15. takefits-0.2.0/takefits/core/click_label_layout.py +63 -0
  16. takefits-0.2.0/takefits/core/color.py +21 -0
  17. takefits-0.2.0/takefits/core/colorbar_layout.py +176 -0
  18. takefits-0.2.0/takefits/core/common.py +290 -0
  19. takefits-0.2.0/takefits/core/config.py +175 -0
  20. takefits-0.2.0/takefits/core/contour_manager.py +1860 -0
  21. takefits-0.2.0/takefits/core/coordinate.py +800 -0
  22. takefits-0.2.0/takefits/core/coordinate_state.py +263 -0
  23. takefits-0.2.0/takefits/core/custom_colormap.py +71 -0
  24. takefits-0.2.0/takefits/core/history_provenance.py +154 -0
  25. takefits-0.2.0/takefits/core/io/__init__.py +1 -0
  26. takefits-0.2.0/takefits/core/io/fits.py +547 -0
  27. takefits-0.2.0/takefits/core/io/save_fits.py +37 -0
  28. takefits-0.2.0/takefits/core/marker.py +948 -0
  29. takefits-0.2.0/takefits/core/marker_manager.py +1633 -0
  30. takefits-0.2.0/takefits/core/marker_utils.py +40 -0
  31. takefits-0.2.0/takefits/core/plotting/__init__.py +0 -0
  32. takefits-0.2.0/takefits/core/plotting/display_map.py +441 -0
  33. takefits-0.2.0/takefits/core/region.py +680 -0
  34. takefits-0.2.0/takefits/core/region_manager.py +1384 -0
  35. takefits-0.2.0/takefits/core/save_fits.py +41 -0
  36. takefits-0.2.0/takefits/core/usecases/__init__.py +293 -0
  37. takefits-0.2.0/takefits/core/usecases/annotations.py +140 -0
  38. takefits-0.2.0/takefits/core/usecases/arithmetic.py +186 -0
  39. takefits-0.2.0/takefits/core/usecases/baseline.py +315 -0
  40. takefits-0.2.0/takefits/core/usecases/channel_map.py +307 -0
  41. takefits-0.2.0/takefits/core/usecases/clump.py +378 -0
  42. takefits-0.2.0/takefits/core/usecases/cutout.py +245 -0
  43. takefits-0.2.0/takefits/core/usecases/export.py +85 -0
  44. takefits-0.2.0/takefits/core/usecases/mask.py +660 -0
  45. takefits-0.2.0/takefits/core/usecases/moment.py +748 -0
  46. takefits-0.2.0/takefits/core/usecases/pv.py +398 -0
  47. takefits-0.2.0/takefits/core/usecases/regrid.py +58 -0
  48. takefits-0.2.0/takefits/core/usecases/scaling.py +19 -0
  49. takefits-0.2.0/takefits/core/usecases/smoothing.py +353 -0
  50. takefits-0.2.0/takefits/core/usecases/spectrum.py +808 -0
  51. takefits-0.2.0/takefits/core/usecases/unit_conversion.py +208 -0
  52. takefits-0.2.0/takefits/core/usecases/utils.py +300 -0
  53. takefits-0.2.0/takefits/core/usecases/visualization.py +571 -0
  54. takefits-0.2.0/takefits/core/usecases_contour.py +45 -0
  55. takefits-0.2.0/takefits/core/version.py +2 -0
  56. takefits-0.2.0/takefits/core/viewer_coordinator.py +369 -0
  57. takefits-0.2.0/takefits/core/viewer_state.py +235 -0
  58. takefits-0.2.0/takefits/core/wcs_frames.py +479 -0
  59. takefits-0.2.0/takefits/core/workspace_restore.py +241 -0
  60. takefits-0.2.0/takefits/logic/__init__.py +0 -0
  61. takefits-0.2.0/takefits/logic/add_hpbw.py +105 -0
  62. takefits-0.2.0/takefits/logic/cloud_catalog_utils.py +280 -0
  63. takefits-0.2.0/takefits/logic/clumpfind.py +231 -0
  64. takefits-0.2.0/takefits/logic/data_tools.py +221 -0
  65. takefits-0.2.0/takefits/logic/dendro_handler.py +496 -0
  66. takefits-0.2.0/takefits/logic/fellwalker.py +126 -0
  67. takefits-0.2.0/takefits/logic/fits_loader.py +49 -0
  68. takefits-0.2.0/takefits/logic/freq_to_velocity.py +103 -0
  69. takefits-0.2.0/takefits/logic/regrid_core.py +3331 -0
  70. takefits-0.2.0/takefits/logic/regridder.py +49 -0
  71. takefits-0.2.0/takefits/logic/show_header.py +59 -0
  72. takefits-0.2.0/takefits/main.py +202 -0
  73. takefits-0.2.0/takefits/tools/__init__.py +0 -0
  74. takefits-0.2.0/takefits/tools/arithmetic.py +661 -0
  75. takefits-0.2.0/takefits/tools/base_panel.py +377 -0
  76. takefits-0.2.0/takefits/tools/baseline.py +1747 -0
  77. takefits-0.2.0/takefits/tools/channel_map.py +3968 -0
  78. takefits-0.2.0/takefits/tools/clump_finding_panel.py +1755 -0
  79. takefits-0.2.0/takefits/tools/color_scale.py +1142 -0
  80. takefits-0.2.0/takefits/tools/contour_panel.py +745 -0
  81. takefits-0.2.0/takefits/tools/cutout.py +1725 -0
  82. takefits-0.2.0/takefits/tools/integration.py +4143 -0
  83. takefits-0.2.0/takefits/tools/marker_panel.py +2418 -0
  84. takefits-0.2.0/takefits/tools/masking.py +772 -0
  85. takefits-0.2.0/takefits/tools/pv_diagram.py +2597 -0
  86. takefits-0.2.0/takefits/tools/regrid_panel.py +685 -0
  87. takefits-0.2.0/takefits/tools/scaling_panel.py +289 -0
  88. takefits-0.2.0/takefits/tools/smoothing.py +800 -0
  89. takefits-0.2.0/takefits/tools/spectrum.py +1686 -0
  90. takefits-0.2.0/takefits/tools/unit_conversion_panel.py +1533 -0
  91. takefits-0.2.0/takefits/ui/__init__.py +0 -0
  92. takefits-0.2.0/takefits/ui/config_panel.py +1711 -0
  93. takefits-0.2.0/takefits/ui/control_panel.py +629 -0
  94. takefits-0.2.0/takefits/ui/display_map.py +393 -0
  95. takefits-0.2.0/takefits/ui/main_window.py +6549 -0
  96. takefits-0.2.0/takefits/ui/menu_bar.py +572 -0
  97. takefits-0.2.0/takefits/ui/moment_results_dialog.py +33 -0
  98. takefits-0.2.0/takefits/ui/navigation_toolbar.py +788 -0
  99. takefits-0.2.0/takefits/ui/range_control.py +675 -0
  100. takefits-0.2.0/takefits/ui/region_editor.py +1398 -0
  101. takefits-0.2.0/takefits/ui/save_fits_dialog.py +45 -0
  102. takefits-0.2.0/takefits/ui/subwindow.py +90 -0
  103. takefits-0.2.0/takefits/ui/viewer.py +4965 -0
  104. takefits-0.2.0/takefits/ui/viewer_blit_mixin.py +469 -0
  105. takefits-0.2.0/takefits/ui/viewer_coord_mixin.py +322 -0
  106. takefits-0.2.0/takefits.egg-info/PKG-INFO +154 -0
  107. takefits-0.2.0/takefits.egg-info/SOURCES.txt +109 -0
  108. takefits-0.2.0/takefits.egg-info/dependency_links.txt +1 -0
  109. takefits-0.2.0/takefits.egg-info/entry_points.txt +2 -0
  110. takefits-0.2.0/takefits.egg-info/requires.txt +13 -0
  111. takefits-0.2.0/takefits.egg-info/top_level.txt +1 -0
takefits-0.2.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Shunya Takekawa
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,154 @@
1
+ Metadata-Version: 2.4
2
+ Name: takefits
3
+ Version: 0.2.0
4
+ Summary: GUI-based astronomical FITS viewer and analysis tool
5
+ Author: Shunya Takekawa
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/s-takekawa/takefits
8
+ Project-URL: Repository, https://github.com/s-takekawa/takefits
9
+ Project-URL: Issues, https://github.com/s-takekawa/takefits/issues
10
+ Project-URL: Documentation, https://github.com/s-takekawa/takefits#readme
11
+ Keywords: astronomy,fits,radio astronomy,visualization,gui
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Topic :: Scientific/Engineering :: Astronomy
18
+ Classifier: Topic :: Scientific/Engineering :: Visualization
19
+ Requires-Python: >=3.12
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: PySide6==6.10.2
23
+ Requires-Dist: numpy==2.1.3
24
+ Requires-Dist: scipy==1.14.1
25
+ Requires-Dist: matplotlib==3.8.4
26
+ Requires-Dist: astropy==6.1.0
27
+ Requires-Dist: reproject==0.17.0
28
+ Requires-Dist: PyYAML==6.0.2
29
+ Requires-Dist: astrodendro==0.3.1
30
+ Requires-Dist: scikit-image==0.26.0
31
+ Provides-Extra: publish
32
+ Requires-Dist: build>=1.2.2; extra == "publish"
33
+ Requires-Dist: twine>=6.1.0; extra == "publish"
34
+ Dynamic: license-file
35
+
36
+ # Takefits
37
+
38
+ Takefits is a GUI-based astronomical FITS viewer and analysis tool developed by Shunya Takekawa. [ORCID: 0000-0001-8147-6817](https://orcid.org/0000-0001-8147-6817)
39
+
40
+ ## Requirements
41
+
42
+ - Python 3.12 or later
43
+
44
+ ## Setup
45
+
46
+ From PyPI:
47
+
48
+ ```bash
49
+ pip install takefits
50
+ ```
51
+
52
+ For a local checkout:
53
+
54
+ ```bash
55
+ python -m venv venv
56
+ source venv/bin/activate # On Windows: venv\Scripts\activate
57
+ pip install .
58
+ ```
59
+
60
+ ## Usage
61
+
62
+ ```bash
63
+ takefits [path/to/fitsfile]
64
+ ```
65
+
66
+ You can also launch it with:
67
+
68
+ ```bash
69
+ python -m takefits [path/to/fitsfile]
70
+ ```
71
+
72
+ Takefits can also save your current work using workspace files, so you can resume it anytime.
73
+ To restore a saved workspace, launch Takefits with the workspace file path.
74
+
75
+ ```bash
76
+ takefits /path/to/yourfile.workspace.json
77
+ ```
78
+
79
+ ## Features
80
+
81
+ Takefits provides a comprehensive set of tools for radio astronomy data analysis.
82
+
83
+ ### 1. Multi-View Cube Visualization
84
+
85
+ Visualize 3D FITS data cubes with synchronized XY, XZ, and ZY planes.
86
+
87
+ ![Main Window](https://raw.githubusercontent.com/s-takekawa/takefits/main/docs/images/main_window.png)
88
+
89
+ ### 2. Moment Maps & Channel Maps
90
+
91
+ Calculate moment maps (Integrated Intensity, Velocity Field, Velocity Dispersion) and create tiled channel maps.
92
+
93
+ ![Channel Map](https://raw.githubusercontent.com/s-takekawa/takefits/main/docs/images/channel_map.png)
94
+
95
+ ### 3. Interactive P-V Diagram
96
+
97
+ Interactively draw slice lines on the map to generate Position-Velocity (P-V) diagrams instantly.
98
+
99
+ ![PV Diagram](https://raw.githubusercontent.com/s-takekawa/takefits/main/docs/images/pv_diagram.png)
100
+
101
+ ### 4. Spectrum Analysis
102
+
103
+ Extract spectra from a single pixel or calculate the average spectrum within selected regions (Circle, Rectangle, Ellipse, Cube).
104
+
105
+ ![Spectrum](https://raw.githubusercontent.com/s-takekawa/takefits/main/docs/images/spectrum.png)
106
+
107
+ ### 5. Publication-Quality Figures
108
+
109
+ Generate publication-quality figures directly from the GUI.
110
+
111
+ - **Contours**: Overlay customizable contours with adjustable levels.
112
+ - **Markers**: Annotate images with symbols, lines, and text.
113
+ - **Beam Size**: Visualize the HPBW ellipse.
114
+ - **Vector Export**: Save plots in PDF, EPS, or SVG formats.
115
+
116
+ ![Contour Plot](https://raw.githubusercontent.com/s-takekawa/takefits/main/docs/images/contour_example.png)
117
+
118
+ ### Other Tools
119
+
120
+ - **Regridding**: Resample data to a new grid, different coordinate system, or a FITS template.
121
+ - **Smoothing**: Apply Gaussian/Boxcar spatial smoothing and Hanning smoothing along the velocity axis.
122
+ - **Masking**: Apply threshold-based or external masks to data.
123
+ - **Cutout**: Crop data cubes based on regions or coordinate ranges.
124
+ - **Image Arithmetic**: Perform mathematical operations between FITS cubes or with constants using numpy-like expressions.
125
+ - **Unit Conversion**: Convert spectral or intensity units for analysis.
126
+ - **Baseline Subtraction**: Fit and subtract spectral baselines from data cubes.
127
+ - **Clump Finding**: Identify structures using ClumpFind, FellWalker, and Dendrogram algorithms.
128
+
129
+ ## Research use
130
+
131
+ If you use this software in scientific publications, please cite the Zenodo DOI:
132
+
133
+ https://doi.org/10.5281/zenodo.18328843
134
+
135
+ For a specific release, cite the version DOI listed on Zenodo.
136
+
137
+ ## Algorithm Citations
138
+
139
+ The tools below implement established analysis algorithms. If you use them for your analysis, please cite the original papers:
140
+
141
+ ### Clump Finding
142
+
143
+ - Williams, J. P., de Geus, E. J., & Blitz, L. (1994). Determining structure in molecular clouds. *The Astrophysical Journal*, 428, 693-712. [doi:10.1086/174279](https://doi.org/10.1086/174279)
144
+ - Berry, D. S. (2015). FellWalker-A clump identification algorithm. *Astronomy and Computing*, 10, 22-31. [doi:10.1016/j.ascom.2014.11.004](https://doi.org/10.1016/j.ascom.2014.11.004)
145
+ - Rosolowsky, E. W., Pineda, J. E., Kauffmann, J., & Goodman, A. A. (2008). Structural Analysis of Molecular Clouds: Dendrograms. *The Astrophysical Journal*, 679(2), 1338-1351. [doi:10.1086/587685](https://doi.org/10.1086/587685)
146
+
147
+ ### Masking / Moment Analysis
148
+
149
+ - Rosolowsky, E., & Leroy, A. (2006). Bias-free Measurement of Giant Molecular Cloud Properties. *Publications of the Astronomical Society of the Pacific*, 118(842), 590-610. [doi:10.1086/502982](https://doi.org/10.1086/502982)
150
+ - Dame, T. M. (2011). The Technique of Velocity-Resolved Moment Masking. *arXiv e-prints*, arXiv:1101.1499. [arXiv:1101.1499](https://arxiv.org/abs/1101.1499)
151
+
152
+ ## Contact
153
+
154
+ shunya_at_kanagawa-u.ac.jp
@@ -0,0 +1,119 @@
1
+ # Takefits
2
+
3
+ Takefits is a GUI-based astronomical FITS viewer and analysis tool developed by Shunya Takekawa. [ORCID: 0000-0001-8147-6817](https://orcid.org/0000-0001-8147-6817)
4
+
5
+ ## Requirements
6
+
7
+ - Python 3.12 or later
8
+
9
+ ## Setup
10
+
11
+ From PyPI:
12
+
13
+ ```bash
14
+ pip install takefits
15
+ ```
16
+
17
+ For a local checkout:
18
+
19
+ ```bash
20
+ python -m venv venv
21
+ source venv/bin/activate # On Windows: venv\Scripts\activate
22
+ pip install .
23
+ ```
24
+
25
+ ## Usage
26
+
27
+ ```bash
28
+ takefits [path/to/fitsfile]
29
+ ```
30
+
31
+ You can also launch it with:
32
+
33
+ ```bash
34
+ python -m takefits [path/to/fitsfile]
35
+ ```
36
+
37
+ Takefits can also save your current work using workspace files, so you can resume it anytime.
38
+ To restore a saved workspace, launch Takefits with the workspace file path.
39
+
40
+ ```bash
41
+ takefits /path/to/yourfile.workspace.json
42
+ ```
43
+
44
+ ## Features
45
+
46
+ Takefits provides a comprehensive set of tools for radio astronomy data analysis.
47
+
48
+ ### 1. Multi-View Cube Visualization
49
+
50
+ Visualize 3D FITS data cubes with synchronized XY, XZ, and ZY planes.
51
+
52
+ ![Main Window](https://raw.githubusercontent.com/s-takekawa/takefits/main/docs/images/main_window.png)
53
+
54
+ ### 2. Moment Maps & Channel Maps
55
+
56
+ Calculate moment maps (Integrated Intensity, Velocity Field, Velocity Dispersion) and create tiled channel maps.
57
+
58
+ ![Channel Map](https://raw.githubusercontent.com/s-takekawa/takefits/main/docs/images/channel_map.png)
59
+
60
+ ### 3. Interactive P-V Diagram
61
+
62
+ Interactively draw slice lines on the map to generate Position-Velocity (P-V) diagrams instantly.
63
+
64
+ ![PV Diagram](https://raw.githubusercontent.com/s-takekawa/takefits/main/docs/images/pv_diagram.png)
65
+
66
+ ### 4. Spectrum Analysis
67
+
68
+ Extract spectra from a single pixel or calculate the average spectrum within selected regions (Circle, Rectangle, Ellipse, Cube).
69
+
70
+ ![Spectrum](https://raw.githubusercontent.com/s-takekawa/takefits/main/docs/images/spectrum.png)
71
+
72
+ ### 5. Publication-Quality Figures
73
+
74
+ Generate publication-quality figures directly from the GUI.
75
+
76
+ - **Contours**: Overlay customizable contours with adjustable levels.
77
+ - **Markers**: Annotate images with symbols, lines, and text.
78
+ - **Beam Size**: Visualize the HPBW ellipse.
79
+ - **Vector Export**: Save plots in PDF, EPS, or SVG formats.
80
+
81
+ ![Contour Plot](https://raw.githubusercontent.com/s-takekawa/takefits/main/docs/images/contour_example.png)
82
+
83
+ ### Other Tools
84
+
85
+ - **Regridding**: Resample data to a new grid, different coordinate system, or a FITS template.
86
+ - **Smoothing**: Apply Gaussian/Boxcar spatial smoothing and Hanning smoothing along the velocity axis.
87
+ - **Masking**: Apply threshold-based or external masks to data.
88
+ - **Cutout**: Crop data cubes based on regions or coordinate ranges.
89
+ - **Image Arithmetic**: Perform mathematical operations between FITS cubes or with constants using numpy-like expressions.
90
+ - **Unit Conversion**: Convert spectral or intensity units for analysis.
91
+ - **Baseline Subtraction**: Fit and subtract spectral baselines from data cubes.
92
+ - **Clump Finding**: Identify structures using ClumpFind, FellWalker, and Dendrogram algorithms.
93
+
94
+ ## Research use
95
+
96
+ If you use this software in scientific publications, please cite the Zenodo DOI:
97
+
98
+ https://doi.org/10.5281/zenodo.18328843
99
+
100
+ For a specific release, cite the version DOI listed on Zenodo.
101
+
102
+ ## Algorithm Citations
103
+
104
+ The tools below implement established analysis algorithms. If you use them for your analysis, please cite the original papers:
105
+
106
+ ### Clump Finding
107
+
108
+ - Williams, J. P., de Geus, E. J., & Blitz, L. (1994). Determining structure in molecular clouds. *The Astrophysical Journal*, 428, 693-712. [doi:10.1086/174279](https://doi.org/10.1086/174279)
109
+ - Berry, D. S. (2015). FellWalker-A clump identification algorithm. *Astronomy and Computing*, 10, 22-31. [doi:10.1016/j.ascom.2014.11.004](https://doi.org/10.1016/j.ascom.2014.11.004)
110
+ - Rosolowsky, E. W., Pineda, J. E., Kauffmann, J., & Goodman, A. A. (2008). Structural Analysis of Molecular Clouds: Dendrograms. *The Astrophysical Journal*, 679(2), 1338-1351. [doi:10.1086/587685](https://doi.org/10.1086/587685)
111
+
112
+ ### Masking / Moment Analysis
113
+
114
+ - Rosolowsky, E., & Leroy, A. (2006). Bias-free Measurement of Giant Molecular Cloud Properties. *Publications of the Astronomical Society of the Pacific*, 118(842), 590-610. [doi:10.1086/502982](https://doi.org/10.1086/502982)
115
+ - Dame, T. M. (2011). The Technique of Velocity-Resolved Moment Masking. *arXiv e-prints*, arXiv:1101.1499. [arXiv:1101.1499](https://arxiv.org/abs/1101.1499)
116
+
117
+ ## Contact
118
+
119
+ shunya_at_kanagawa-u.ac.jp
@@ -0,0 +1,55 @@
1
+ [build-system]
2
+ requires = ["setuptools>=77.0.3", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "takefits"
7
+ dynamic = ["version"]
8
+ description = "GUI-based astronomical FITS viewer and analysis tool"
9
+ readme = { file = "README.md", content-type = "text/markdown" }
10
+ requires-python = ">=3.12"
11
+ license = "MIT"
12
+ license-files = ["LICENSE"]
13
+ authors = [{ name = "Shunya Takekawa" }]
14
+ keywords = ["astronomy", "fits", "radio astronomy", "visualization", "gui"]
15
+ classifiers = [
16
+ "Development Status :: 4 - Beta",
17
+ "Intended Audience :: Science/Research",
18
+ "Operating System :: OS Independent",
19
+ "Programming Language :: Python :: 3",
20
+ "Programming Language :: Python :: 3.12",
21
+ "Topic :: Scientific/Engineering :: Astronomy",
22
+ "Topic :: Scientific/Engineering :: Visualization",
23
+ ]
24
+ dependencies = [
25
+ "PySide6==6.10.2",
26
+ "numpy==2.1.3",
27
+ "scipy==1.14.1",
28
+ "matplotlib==3.8.4",
29
+ "astropy==6.1.0",
30
+ "reproject==0.17.0",
31
+ "PyYAML==6.0.2",
32
+ "astrodendro==0.3.1",
33
+ "scikit-image==0.26.0",
34
+ ]
35
+
36
+ [project.urls]
37
+ Homepage = "https://github.com/s-takekawa/takefits"
38
+ Repository = "https://github.com/s-takekawa/takefits"
39
+ Issues = "https://github.com/s-takekawa/takefits/issues"
40
+ Documentation = "https://github.com/s-takekawa/takefits#readme"
41
+
42
+ [project.optional-dependencies]
43
+ publish = [
44
+ "build>=1.2.2",
45
+ "twine>=6.1.0",
46
+ ]
47
+
48
+ [project.scripts]
49
+ takefits = "takefits.main:main"
50
+
51
+ [tool.setuptools.dynamic]
52
+ version = { attr = "takefits.core.version.APP_VERSION" }
53
+
54
+ [tool.setuptools.packages.find]
55
+ include = ["takefits*"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ from .core.version import APP_VERSION as __version__
2
+
3
+ __all__ = ["__version__"]
@@ -0,0 +1,4 @@
1
+ from .main import main
2
+
3
+ if __name__ == '__main__':
4
+ main()
@@ -0,0 +1,21 @@
1
+ from __future__ import annotations
2
+
3
+ from pathlib import Path
4
+
5
+ from PySide6.QtCore import QStandardPaths
6
+
7
+ FALLBACK_APP_DIR_NAME = 'takefits'
8
+
9
+ def get_app_config_dir() -> Path:
10
+ path = QStandardPaths.writableLocation(QStandardPaths.StandardLocation.AppConfigLocation)
11
+ if path:
12
+ return Path(path)
13
+ return Path.home() / '.config' / FALLBACK_APP_DIR_NAME
14
+
15
+ def ensure_app_config_dir() -> Path:
16
+ path = get_app_config_dir()
17
+ path.mkdir(parents=True, exist_ok=True)
18
+ return path
19
+
20
+ def app_config_path(filename: str) -> str:
21
+ return str(ensure_app_config_dir() / filename)
File without changes