teareduce 0.5.5__tar.gz → 0.5.8__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 (56) hide show
  1. {teareduce-0.5.5/src/teareduce.egg-info → teareduce-0.5.8}/PKG-INFO +2 -1
  2. {teareduce-0.5.5 → teareduce-0.5.8}/pyproject.toml +1 -0
  3. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/__init__.py +3 -1
  4. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/__main__.py +65 -6
  5. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/cosmicraycleanerapp.py +303 -94
  6. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/definitions.py +1 -1
  7. teareduce-0.5.5/src/teareduce/cleanest/cleanest.py → teareduce-0.5.8/src/teareduce/cleanest/interpolate.py +10 -8
  8. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/interpolationeditor.py +1 -0
  9. teareduce-0.5.8/src/teareduce/cleanest/lacosmicpad.py +57 -0
  10. teareduce-0.5.8/src/teareduce/cleanest/mergemasks.py +58 -0
  11. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/modalprogressbar.py +2 -2
  12. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/parametereditor.py +14 -3
  13. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/reviewcosmicray.py +31 -2
  14. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/tests/test_cleanest.py +11 -11
  15. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/version.py +1 -1
  16. {teareduce-0.5.5 → teareduce-0.5.8/src/teareduce.egg-info}/PKG-INFO +2 -1
  17. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce.egg-info/SOURCES.txt +3 -1
  18. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce.egg-info/requires.txt +1 -0
  19. {teareduce-0.5.5 → teareduce-0.5.8}/LICENSE.txt +0 -0
  20. {teareduce-0.5.5 → teareduce-0.5.8}/README.md +0 -0
  21. {teareduce-0.5.5 → teareduce-0.5.8}/setup.cfg +0 -0
  22. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/__init__.py +0 -0
  23. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/avoid_astropy_warnings.py +0 -0
  24. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/centerchildparent.py +0 -0
  25. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/dilatemask.py +0 -0
  26. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/find_closest_true.py +0 -0
  27. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/imagedisplay.py +0 -0
  28. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/interpolation_a.py +0 -0
  29. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/interpolation_x.py +0 -0
  30. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cleanest/interpolation_y.py +0 -0
  31. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cookbook/__init__.py +0 -0
  32. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cookbook/get_cookbook_file.py +0 -0
  33. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/correct_pincushion_distortion.py +0 -0
  34. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/cosmicrays.py +0 -0
  35. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/ctext.py +0 -0
  36. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/draw_rectangle.py +0 -0
  37. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/elapsed_time.py +0 -0
  38. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/histogram1d.py +0 -0
  39. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/imshow.py +0 -0
  40. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/numsplines.py +0 -0
  41. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/peaks_spectrum.py +0 -0
  42. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/polfit.py +0 -0
  43. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/robust_std.py +0 -0
  44. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/sdistortion.py +0 -0
  45. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/simulateccdexposure.py +0 -0
  46. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/sliceregion.py +0 -0
  47. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/statsummary.py +0 -0
  48. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/tests/__init__.py +0 -0
  49. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/tests/test_sliceregion.py +0 -0
  50. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/tests/test_version.py +0 -0
  51. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/wavecal.py +0 -0
  52. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/write_array_to_fits.py +0 -0
  53. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce/zscale.py +0 -0
  54. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce.egg-info/dependency_links.txt +0 -0
  55. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce.egg-info/entry_points.txt +0 -0
  56. {teareduce-0.5.5 → teareduce-0.5.8}/src/teareduce.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: teareduce
3
- Version: 0.5.5
3
+ Version: 0.5.8
4
4
  Summary: Utilities for astronomical data reduction
5
5
  Author-email: Nicolás Cardiel <cardiel@ucm.es>
6
6
  License: GPL-3.0-or-later
@@ -23,6 +23,7 @@ Requires-Dist: astropy
23
23
  Requires-Dist: ccdproc
24
24
  Requires-Dist: lmfit
25
25
  Requires-Dist: matplotlib
26
+ Requires-Dist: maskfill
26
27
  Requires-Dist: numpy>=1.22
27
28
  Requires-Dist: requests
28
29
  Requires-Dist: rich
@@ -33,6 +33,7 @@ dependencies = [
33
33
  "ccdproc",
34
34
  "lmfit",
35
35
  "matplotlib",
36
+ "maskfill",
36
37
  "numpy >= 1.22",
37
38
  "requests",
38
39
  "rich",
@@ -7,4 +7,6 @@
7
7
  # License-Filename: LICENSE.txt
8
8
  #
9
9
 
10
- from .cleanest import cleanest
10
+ from .interpolate import interpolate
11
+ from .lacosmicpad import lacosmicpad
12
+ from .mergemasks import merge_peak_tail_masks
@@ -10,8 +10,12 @@
10
10
  """Interactive Cosmic Ray cleaning tool."""
11
11
 
12
12
  import argparse
13
+ from ast import arg
13
14
  import tkinter as tk
15
+ from tkinter import filedialog
16
+ from tkinter import simpledialog
14
17
  import os
18
+ from pathlib import Path
15
19
  import platform
16
20
  from rich import print
17
21
  from rich_argparse import RichHelpFormatter
@@ -21,6 +25,7 @@ from .definitions import DEFAULT_FONT_SIZE
21
25
  from .definitions import DEFAULT_TK_WINDOW_SIZE_X
22
26
  from .definitions import DEFAULT_TK_WINDOW_SIZE_Y
23
27
  from .cosmicraycleanerapp import CosmicRayCleanerApp
28
+ from ..version import VERSION
24
29
 
25
30
  import matplotlib
26
31
 
@@ -32,13 +37,13 @@ def main():
32
37
  description="Interactive cosmic ray cleaner for FITS images.",
33
38
  formatter_class=RichHelpFormatter,
34
39
  )
35
- parser.add_argument("input_fits", help="Path to the FITS file to be cleaned.")
36
- parser.add_argument("--extension", type=int, default=0, help="FITS extension to use (default: 0).")
40
+ parser.add_argument("input_fits", nargs="?", default=None, help="Path to the FITS file to be cleaned.")
41
+ parser.add_argument("--extension", type=str, default="0", help="FITS extension to use (default: 0).")
37
42
  parser.add_argument("--auxfile", type=str, default=None, help="Auxiliary FITS file")
38
43
  parser.add_argument(
39
44
  "--extension_auxfile",
40
- type=int,
41
- default=0,
45
+ type=str,
46
+ default="0",
42
47
  help="FITS extension for auxiliary file (default: 0).",
43
48
  )
44
49
  parser.add_argument(
@@ -65,14 +70,67 @@ def main():
65
70
  default=DEFAULT_TK_WINDOW_SIZE_Y,
66
71
  help=f"Height of the GUI window in pixels (default: {DEFAULT_TK_WINDOW_SIZE_Y}).",
67
72
  )
73
+ parser.add_argument("--version", action="version", version=f"%(prog)s {VERSION}")
74
+ parser.add_argument("--verbose", "-v", action="store_true", help="Enable verbose output.")
68
75
  args = parser.parse_args()
69
76
 
77
+ # Welcome message
78
+ print("[bold green]Cosmic Ray Cleaner[/bold green]")
79
+ print("Interactive tool to clean cosmic rays from FITS images.")
80
+ print("teareduce version: " + VERSION)
81
+ print(f"https://nicocardiel.github.io/teareduce-cookbook/docs/cleanest/cleanest.html\n")
82
+
83
+ # If input_file is not provided, ask for it using a file dialog
84
+ if args.input_fits is None:
85
+ root = tk.Tk()
86
+ root.withdraw() # Hide the root window
87
+ args.input_fits = filedialog.askopenfilename(
88
+ title="Select FITS file to be cleaned",
89
+ filetypes=[("FITS files", "*.fits *.fit *.fts"), ("All files", "*.*")],
90
+ )
91
+ if not args.input_fits:
92
+ print("No input FITS file selected. Exiting.")
93
+ exit(1)
94
+ print(f"Selected input FITS file: {args.input_fits}")
95
+ args.extension = simpledialog.askstring(
96
+ "Select Extension",
97
+ f"\nEnter extension number or name for file:\n{Path(args.input_fits).name}",
98
+ initialvalue=args.extension,
99
+ )
100
+ # Ask for auxiliary file if not provided
101
+ if args.auxfile is None:
102
+ use_auxfile = tk.messagebox.askyesno(
103
+ "Auxiliary File",
104
+ "Do you want to use an auxiliary FITS file?",
105
+ default=tk.messagebox.NO,
106
+ )
107
+ if use_auxfile:
108
+ args.auxfile = filedialog.askopenfilename(
109
+ title="Select Auxiliary FITS file",
110
+ filetypes=[("FITS files", "*.fits *.fit *.fts"), ("All files", "*.*")],
111
+ initialfile=args.auxfile,
112
+ )
113
+ if not args.auxfile:
114
+ print("No auxiliary FITS file selected. Exiting.")
115
+ exit(1)
116
+ else:
117
+ use_auxfile = True
118
+ if use_auxfile:
119
+ print(f"Selected auxiliary FITS file: {args.auxfile}")
120
+ args.extension_auxfile = simpledialog.askstring(
121
+ "Select Extension for Auxiliary File",
122
+ f"\nEnter extension number or name for auxiliary file:\n{Path(args.auxfile).name}",
123
+ initialvalue=args.extension_auxfile,
124
+ )
125
+ root.destroy()
126
+
127
+ # Check that input files, and the corresponding extensions, exist
70
128
  if not os.path.isfile(args.input_fits):
71
129
  print(f"Error: File '{args.input_fits}' does not exist.")
72
- return
130
+ exit(1)
73
131
  if args.auxfile is not None and not os.path.isfile(args.auxfile):
74
132
  print(f"Error: Auxiliary file '{args.auxfile}' does not exist.")
75
- return
133
+ exit(1)
76
134
 
77
135
  # Initialize Tkinter root
78
136
  root = tk.Tk()
@@ -100,6 +158,7 @@ def main():
100
158
  fontsize=args.fontsize,
101
159
  width=args.width,
102
160
  height=args.height,
161
+ verbose=args.verbose,
103
162
  )
104
163
 
105
164
  # Execute