teareduce 0.5.8__tar.gz → 0.5.9__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.
- {teareduce-0.5.8/src/teareduce.egg-info → teareduce-0.5.9}/PKG-INFO +17 -5
- {teareduce-0.5.8 → teareduce-0.5.9}/README.md +12 -1
- {teareduce-0.5.8 → teareduce-0.5.9}/pyproject.toml +9 -4
- teareduce-0.5.9/src/teareduce/cleanest/__init__.py +19 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/__main__.py +0 -1
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/cosmicraycleanerapp.py +8 -1
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/lacosmicpad.py +8 -1
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/reviewcosmicray.py +42 -55
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/version.py +1 -1
- {teareduce-0.5.8 → teareduce-0.5.9/src/teareduce.egg-info}/PKG-INFO +17 -5
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce.egg-info/requires.txt +5 -3
- teareduce-0.5.8/src/teareduce/cleanest/__init__.py +0 -12
- {teareduce-0.5.8 → teareduce-0.5.9}/LICENSE.txt +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/setup.cfg +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/__init__.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/avoid_astropy_warnings.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/centerchildparent.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/definitions.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/dilatemask.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/find_closest_true.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/imagedisplay.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/interpolate.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/interpolation_a.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/interpolation_x.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/interpolation_y.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/interpolationeditor.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/mergemasks.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/modalprogressbar.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cleanest/parametereditor.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cookbook/__init__.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cookbook/get_cookbook_file.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/correct_pincushion_distortion.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/cosmicrays.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/ctext.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/draw_rectangle.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/elapsed_time.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/histogram1d.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/imshow.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/numsplines.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/peaks_spectrum.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/polfit.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/robust_std.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/sdistortion.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/simulateccdexposure.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/sliceregion.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/statsummary.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/tests/__init__.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/tests/test_cleanest.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/tests/test_sliceregion.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/tests/test_version.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/wavecal.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/write_array_to_fits.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce/zscale.py +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce.egg-info/SOURCES.txt +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce.egg-info/dependency_links.txt +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/src/teareduce.egg-info/entry_points.txt +0 -0
- {teareduce-0.5.8 → teareduce-0.5.9}/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.
|
|
3
|
+
Version: 0.5.9
|
|
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
|
|
@@ -20,16 +20,17 @@ Requires-Python: >=3.10
|
|
|
20
20
|
Description-Content-Type: text/markdown
|
|
21
21
|
License-File: LICENSE.txt
|
|
22
22
|
Requires-Dist: astropy
|
|
23
|
-
Requires-Dist: ccdproc
|
|
24
23
|
Requires-Dist: lmfit
|
|
25
24
|
Requires-Dist: matplotlib
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist: numpy>=1.22
|
|
25
|
+
Requires-Dist: numpy>=2
|
|
28
26
|
Requires-Dist: requests
|
|
29
27
|
Requires-Dist: rich
|
|
30
28
|
Requires-Dist: rich-argparse
|
|
31
29
|
Requires-Dist: scipy
|
|
32
30
|
Requires-Dist: tqdm
|
|
31
|
+
Provides-Extra: cleanest
|
|
32
|
+
Requires-Dist: ccdproc; extra == "cleanest"
|
|
33
|
+
Requires-Dist: maskfill; extra == "cleanest"
|
|
33
34
|
Provides-Extra: test
|
|
34
35
|
Requires-Dist: pytest; extra == "test"
|
|
35
36
|
Dynamic: license-file
|
|
@@ -67,6 +68,13 @@ $ . venv_teareduce/bin/activate
|
|
|
67
68
|
(venv_teareduce) $
|
|
68
69
|
```
|
|
69
70
|
|
|
71
|
+
If you are planning to use **tea-cleanest**, you need to install this package
|
|
72
|
+
with extra dependencies. In this case employ:
|
|
73
|
+
|
|
74
|
+
```shell
|
|
75
|
+
(venv_teareduce) $ pip install 'teareduce[cleanest]'
|
|
76
|
+
```
|
|
77
|
+
|
|
70
78
|
### Installing the package
|
|
71
79
|
|
|
72
80
|
The latest stable version is available via de [PyPI repository](https://pypi.org/project/teareduce/):
|
|
@@ -94,6 +102,10 @@ The latest development version is available through [GitHub](https://github.com/
|
|
|
94
102
|
(venv_teareduce) $ ipython
|
|
95
103
|
In [1]: import teareduce as tea
|
|
96
104
|
In [2]: print(tea.__version__)
|
|
97
|
-
0.
|
|
105
|
+
0.5.9
|
|
98
106
|
```
|
|
99
107
|
|
|
108
|
+
Note that in PyPI there is a package called **tea** that provides utilities
|
|
109
|
+
unrelated to **teareduce**. However, throughout the examples described
|
|
110
|
+
in the documentation we are making use of ``import teareduce as tea``
|
|
111
|
+
to define a convenient alias.
|
|
@@ -31,6 +31,13 @@ $ . venv_teareduce/bin/activate
|
|
|
31
31
|
(venv_teareduce) $
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
+
If you are planning to use **tea-cleanest**, you need to install this package
|
|
35
|
+
with extra dependencies. In this case employ:
|
|
36
|
+
|
|
37
|
+
```shell
|
|
38
|
+
(venv_teareduce) $ pip install 'teareduce[cleanest]'
|
|
39
|
+
```
|
|
40
|
+
|
|
34
41
|
### Installing the package
|
|
35
42
|
|
|
36
43
|
The latest stable version is available via de [PyPI repository](https://pypi.org/project/teareduce/):
|
|
@@ -58,6 +65,10 @@ The latest development version is available through [GitHub](https://github.com/
|
|
|
58
65
|
(venv_teareduce) $ ipython
|
|
59
66
|
In [1]: import teareduce as tea
|
|
60
67
|
In [2]: print(tea.__version__)
|
|
61
|
-
0.
|
|
68
|
+
0.5.9
|
|
62
69
|
```
|
|
63
70
|
|
|
71
|
+
Note that in PyPI there is a package called **tea** that provides utilities
|
|
72
|
+
unrelated to **teareduce**. However, throughout the examples described
|
|
73
|
+
in the documentation we are making use of ``import teareduce as tea``
|
|
74
|
+
to define a convenient alias.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Minimum requirements for the build system to execute.
|
|
3
3
|
# (include packages imported in the different modules; otherwise
|
|
4
4
|
# a ModuleNotFoundError is raised when using $ pip install -e .)
|
|
5
|
-
requires = ["setuptools >= 61.0.0"]
|
|
5
|
+
requires = ["setuptools >= 61.0.0", "wheel"]
|
|
6
6
|
build-backend = "setuptools.build_meta"
|
|
7
7
|
|
|
8
8
|
[project]
|
|
@@ -28,13 +28,12 @@ classifiers = [
|
|
|
28
28
|
"Topic :: Scientific/Engineering :: Astronomy",
|
|
29
29
|
]
|
|
30
30
|
|
|
31
|
+
# Core dependencies (always installed)
|
|
31
32
|
dependencies = [
|
|
32
33
|
"astropy",
|
|
33
|
-
"ccdproc",
|
|
34
34
|
"lmfit",
|
|
35
35
|
"matplotlib",
|
|
36
|
-
"
|
|
37
|
-
"numpy >= 1.22",
|
|
36
|
+
"numpy >= 2",
|
|
38
37
|
"requests",
|
|
39
38
|
"rich",
|
|
40
39
|
"rich-argparse",
|
|
@@ -43,6 +42,12 @@ dependencies = [
|
|
|
43
42
|
]
|
|
44
43
|
|
|
45
44
|
[project.optional-dependencies]
|
|
45
|
+
# Version with dependencies needed to run the tea-cleanest script
|
|
46
|
+
cleanest = [
|
|
47
|
+
"ccdproc",
|
|
48
|
+
"maskfill",
|
|
49
|
+
]
|
|
50
|
+
|
|
46
51
|
test = [
|
|
47
52
|
"pytest",
|
|
48
53
|
]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright 2023-2025 Universidad Complutense de Madrid
|
|
3
|
+
#
|
|
4
|
+
# This file is part of teareduce
|
|
5
|
+
#
|
|
6
|
+
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
7
|
+
# License-Filename: LICENSE.txt
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
"""Module providing functions for cleaning astronomical images.
|
|
11
|
+
Includes functions for interpolating over bad pixels,
|
|
12
|
+
applying the L.A.Cosmic algorithm to detect cosmic ray pixels.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from .interpolate import interpolate
|
|
16
|
+
from .lacosmicpad import lacosmicpad
|
|
17
|
+
from .mergemasks import merge_peak_tail_masks
|
|
18
|
+
|
|
19
|
+
__all__ = ['interpolate', 'lacosmicpad', 'merge_peak_tail_masks']
|
|
@@ -17,7 +17,14 @@ from tkinter import simpledialog
|
|
|
17
17
|
import sys
|
|
18
18
|
|
|
19
19
|
from astropy.io import fits
|
|
20
|
-
|
|
20
|
+
try:
|
|
21
|
+
from maskfill import maskfill
|
|
22
|
+
except ModuleNotFoundError as e:
|
|
23
|
+
raise ModuleNotFoundError(
|
|
24
|
+
"The 'teareduce.cleanest' module requires the 'ccdproc' and 'maskfill' packages. "
|
|
25
|
+
"Please install teareduce with the 'cleanest' extra dependencies: "
|
|
26
|
+
"`pip install teareduce[cleanest]`."
|
|
27
|
+
) from e
|
|
21
28
|
import matplotlib.pyplot as plt
|
|
22
29
|
from matplotlib.backend_bases import key_press_handler
|
|
23
30
|
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
|
|
@@ -9,7 +9,14 @@
|
|
|
9
9
|
|
|
10
10
|
"""Execute LACosmic algorithm on a padded image."""
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
try:
|
|
13
|
+
from ccdproc import cosmicray_lacosmic
|
|
14
|
+
except ModuleNotFoundError as e:
|
|
15
|
+
raise ModuleNotFoundError(
|
|
16
|
+
"The 'teareduce.cleanest' module requires the 'ccdproc' and 'maskfill' packages. "
|
|
17
|
+
"Please install teareduce with the 'cleanest' extra dependencies: "
|
|
18
|
+
"`pip install teareduce[cleanest]`."
|
|
19
|
+
) from e
|
|
13
20
|
import numpy as np
|
|
14
21
|
|
|
15
22
|
|
|
@@ -13,7 +13,14 @@ import tkinter as tk
|
|
|
13
13
|
from tkinter import messagebox
|
|
14
14
|
from tkinter import simpledialog
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
try:
|
|
17
|
+
from maskfill import maskfill
|
|
18
|
+
except ModuleNotFoundError as e:
|
|
19
|
+
raise ModuleNotFoundError(
|
|
20
|
+
"The 'teareduce.cleanest' module requires the 'ccdproc' and 'maskfill' packages. "
|
|
21
|
+
"Please install teareduce with the 'cleanest' extra dependencies: "
|
|
22
|
+
"`pip install teareduce[cleanest]`."
|
|
23
|
+
) from e
|
|
17
24
|
import matplotlib.pyplot as plt
|
|
18
25
|
from matplotlib.backend_bases import key_press_handler
|
|
19
26
|
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
|
|
@@ -371,16 +378,9 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
371
378
|
|
|
372
379
|
def set_buttons_after_cleaning_cr(self):
|
|
373
380
|
"""Set the state of buttons after cleaning a cosmic ray."""
|
|
381
|
+
self.disable_interpolation_buttons()
|
|
374
382
|
self.restore_cr_button.config(state=tk.NORMAL)
|
|
375
383
|
self.remove_crosses_button.config(state=tk.DISABLED)
|
|
376
|
-
self.interp_x_button.config(state=tk.DISABLED)
|
|
377
|
-
self.interp_y_button.config(state=tk.DISABLED)
|
|
378
|
-
self.interp_s_button.config(state=tk.DISABLED)
|
|
379
|
-
self.interp_d_button.config(state=tk.DISABLED)
|
|
380
|
-
self.interp_m_button.config(state=tk.DISABLED)
|
|
381
|
-
self.interp_l_button.config(state=tk.DISABLED)
|
|
382
|
-
self.interp_maskfill_button.config(state=tk.DISABLED)
|
|
383
|
-
self.interp_aux_button.config(state=tk.DISABLED)
|
|
384
384
|
|
|
385
385
|
def interp_x(self):
|
|
386
386
|
"""Perform x-direction interpolation to clean a cosmic ray."""
|
|
@@ -506,35 +506,21 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
506
506
|
for iy, ix in zip(ycr_list, xcr_list):
|
|
507
507
|
self.cr_labels[iy, ix] = 0
|
|
508
508
|
print(f"Removed all pixels of cosmic ray {self.cr_index}")
|
|
509
|
-
self.
|
|
510
|
-
self.interp_x_button.config(state=tk.DISABLED)
|
|
511
|
-
self.interp_y_button.config(state=tk.DISABLED)
|
|
512
|
-
self.interp_s_button.config(state=tk.DISABLED)
|
|
513
|
-
self.interp_d_button.config(state=tk.DISABLED)
|
|
514
|
-
self.interp_m_button.config(state=tk.DISABLED)
|
|
515
|
-
self.interp_l_button.config(state=tk.DISABLED)
|
|
516
|
-
self.interp_aux_button.config(state=tk.DISABLED)
|
|
509
|
+
self.disable_interpolation_buttons()
|
|
517
510
|
self.update_display()
|
|
518
511
|
|
|
519
512
|
def restore_cr(self):
|
|
520
513
|
"""Restore all pixels of the current cosmic ray to their original values."""
|
|
521
514
|
ycr_list, xcr_list = np.where(self.cr_labels == self.cr_index)
|
|
515
|
+
if len(xcr_list) == 0:
|
|
516
|
+
print(f"No pixels to restore for cosmic ray {self.cr_index}")
|
|
517
|
+
return
|
|
522
518
|
for iy, ix in zip(ycr_list, xcr_list):
|
|
523
519
|
self.data[iy, ix] = self.data_original[iy, ix]
|
|
524
520
|
self.mask_fixed[iy, ix] = False
|
|
525
|
-
self.interp_x_button.config(state=tk.NORMAL)
|
|
526
|
-
self.interp_y_button.config(state=tk.NORMAL)
|
|
527
|
-
self.interp_s_button.config(state=tk.NORMAL)
|
|
528
|
-
self.interp_d_button.config(state=tk.NORMAL)
|
|
529
|
-
self.interp_m_button.config(state=tk.NORMAL)
|
|
530
|
-
if self.cleandata_lacosmic is not None:
|
|
531
|
-
if self.last_dilation is None or self.last_dilation == 0:
|
|
532
|
-
self.interp_l_button.config(state=tk.NORMAL)
|
|
533
|
-
self.interp_maskfill_button.config(state=tk.NORMAL)
|
|
534
|
-
if self.auxdata is not None:
|
|
535
|
-
self.interp_aux_button.config(state=tk.NORMAL)
|
|
536
521
|
print(f"Restored all pixels of cosmic ray {self.cr_index}")
|
|
537
522
|
self.num_cr_cleaned -= 1
|
|
523
|
+
self.enable_interpolation_buttons()
|
|
538
524
|
self.remove_crosses_button.config(state=tk.NORMAL)
|
|
539
525
|
self.restore_cr_button.config(state=tk.DISABLED)
|
|
540
526
|
self.update_display()
|
|
@@ -550,16 +536,7 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
550
536
|
return # important: do not remove (to avoid errors)
|
|
551
537
|
self.first_plot = True
|
|
552
538
|
self.restore_cr_button.config(state=tk.DISABLED)
|
|
553
|
-
self.
|
|
554
|
-
self.interp_y_button.config(state=tk.NORMAL)
|
|
555
|
-
self.interp_s_button.config(state=tk.NORMAL)
|
|
556
|
-
self.interp_d_button.config(state=tk.NORMAL)
|
|
557
|
-
self.interp_m_button.config(state=tk.NORMAL)
|
|
558
|
-
if self.cleandata_lacosmic is not None:
|
|
559
|
-
if self.last_dilation is None or self.last_dilation == 0:
|
|
560
|
-
self.interp_l_button.config(state=tk.NORMAL)
|
|
561
|
-
if self.auxdata is not None:
|
|
562
|
-
self.interp_aux_button.config(state=tk.NORMAL)
|
|
539
|
+
self.enable_interpolation_buttons()
|
|
563
540
|
self.remove_crosses_button.config(state=tk.NORMAL)
|
|
564
541
|
self.update_display()
|
|
565
542
|
|
|
@@ -624,25 +601,35 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
624
601
|
print(f"Pixel ({ix+1}, {iy+1}), with signal {self.data[iy, ix]}, marked as cosmic ray.")
|
|
625
602
|
xcr_list, ycr_list = np.where(self.cr_labels == self.cr_index)
|
|
626
603
|
if len(xcr_list) == 0:
|
|
627
|
-
self.
|
|
628
|
-
self.interp_y_button.config(state=tk.DISABLED)
|
|
629
|
-
self.interp_s_button.config(state=tk.DISABLED)
|
|
630
|
-
self.interp_d_button.config(state=tk.DISABLED)
|
|
631
|
-
self.interp_m_button.config(state=tk.DISABLED)
|
|
632
|
-
self.interp_l_button.config(state=tk.DISABLED)
|
|
633
|
-
self.interp_aux_button.config(state=tk.DISABLED)
|
|
604
|
+
self.disable_interpolation_buttons()
|
|
634
605
|
self.remove_crosses_button.config(state=tk.DISABLED)
|
|
635
606
|
else:
|
|
636
|
-
self.
|
|
637
|
-
self.interp_y_button.config(state=tk.NORMAL)
|
|
638
|
-
self.interp_s_button.config(state=tk.NORMAL)
|
|
639
|
-
self.interp_d_button.config(state=tk.NORMAL)
|
|
640
|
-
self.interp_m_button.config(state=tk.NORMAL)
|
|
641
|
-
if self.cleandata_lacosmic is not None:
|
|
642
|
-
if self.last_dilation is None or self.last_dilation == 0:
|
|
643
|
-
self.interp_l_button.config(state=tk.NORMAL)
|
|
644
|
-
if self.auxdata is not None:
|
|
645
|
-
self.interp_aux_button.config(state=tk.NORMAL)
|
|
607
|
+
self.enable_interpolation_buttons()
|
|
646
608
|
self.remove_crosses_button.config(state=tk.NORMAL)
|
|
647
609
|
# Update the display to reflect the change
|
|
648
610
|
self.update_display()
|
|
611
|
+
|
|
612
|
+
def disable_interpolation_buttons(self):
|
|
613
|
+
"""Disable all interpolation buttons."""
|
|
614
|
+
self.interp_x_button.config(state=tk.DISABLED)
|
|
615
|
+
self.interp_y_button.config(state=tk.DISABLED)
|
|
616
|
+
self.interp_s_button.config(state=tk.DISABLED)
|
|
617
|
+
self.interp_d_button.config(state=tk.DISABLED)
|
|
618
|
+
self.interp_m_button.config(state=tk.DISABLED)
|
|
619
|
+
self.interp_l_button.config(state=tk.DISABLED)
|
|
620
|
+
self.interp_maskfill_button.config(state=tk.DISABLED)
|
|
621
|
+
self.interp_aux_button.config(state=tk.DISABLED)
|
|
622
|
+
|
|
623
|
+
def enable_interpolation_buttons(self):
|
|
624
|
+
"""Enable all interpolation buttons."""
|
|
625
|
+
self.interp_x_button.config(state=tk.NORMAL)
|
|
626
|
+
self.interp_y_button.config(state=tk.NORMAL)
|
|
627
|
+
self.interp_s_button.config(state=tk.NORMAL)
|
|
628
|
+
self.interp_d_button.config(state=tk.NORMAL)
|
|
629
|
+
self.interp_m_button.config(state=tk.NORMAL)
|
|
630
|
+
if self.cleandata_lacosmic is not None:
|
|
631
|
+
if self.last_dilation is None or self.last_dilation == 0:
|
|
632
|
+
self.interp_l_button.config(state=tk.NORMAL)
|
|
633
|
+
self.interp_maskfill_button.config(state=tk.NORMAL)
|
|
634
|
+
if self.auxdata is not None:
|
|
635
|
+
self.interp_aux_button.config(state=tk.NORMAL)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: teareduce
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.9
|
|
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
|
|
@@ -20,16 +20,17 @@ Requires-Python: >=3.10
|
|
|
20
20
|
Description-Content-Type: text/markdown
|
|
21
21
|
License-File: LICENSE.txt
|
|
22
22
|
Requires-Dist: astropy
|
|
23
|
-
Requires-Dist: ccdproc
|
|
24
23
|
Requires-Dist: lmfit
|
|
25
24
|
Requires-Dist: matplotlib
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist: numpy>=1.22
|
|
25
|
+
Requires-Dist: numpy>=2
|
|
28
26
|
Requires-Dist: requests
|
|
29
27
|
Requires-Dist: rich
|
|
30
28
|
Requires-Dist: rich-argparse
|
|
31
29
|
Requires-Dist: scipy
|
|
32
30
|
Requires-Dist: tqdm
|
|
31
|
+
Provides-Extra: cleanest
|
|
32
|
+
Requires-Dist: ccdproc; extra == "cleanest"
|
|
33
|
+
Requires-Dist: maskfill; extra == "cleanest"
|
|
33
34
|
Provides-Extra: test
|
|
34
35
|
Requires-Dist: pytest; extra == "test"
|
|
35
36
|
Dynamic: license-file
|
|
@@ -67,6 +68,13 @@ $ . venv_teareduce/bin/activate
|
|
|
67
68
|
(venv_teareduce) $
|
|
68
69
|
```
|
|
69
70
|
|
|
71
|
+
If you are planning to use **tea-cleanest**, you need to install this package
|
|
72
|
+
with extra dependencies. In this case employ:
|
|
73
|
+
|
|
74
|
+
```shell
|
|
75
|
+
(venv_teareduce) $ pip install 'teareduce[cleanest]'
|
|
76
|
+
```
|
|
77
|
+
|
|
70
78
|
### Installing the package
|
|
71
79
|
|
|
72
80
|
The latest stable version is available via de [PyPI repository](https://pypi.org/project/teareduce/):
|
|
@@ -94,6 +102,10 @@ The latest development version is available through [GitHub](https://github.com/
|
|
|
94
102
|
(venv_teareduce) $ ipython
|
|
95
103
|
In [1]: import teareduce as tea
|
|
96
104
|
In [2]: print(tea.__version__)
|
|
97
|
-
0.
|
|
105
|
+
0.5.9
|
|
98
106
|
```
|
|
99
107
|
|
|
108
|
+
Note that in PyPI there is a package called **tea** that provides utilities
|
|
109
|
+
unrelated to **teareduce**. However, throughout the examples described
|
|
110
|
+
in the documentation we are making use of ``import teareduce as tea``
|
|
111
|
+
to define a convenient alias.
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Copyright 2023-2025 Universidad Complutense de Madrid
|
|
3
|
-
#
|
|
4
|
-
# This file is part of teareduce
|
|
5
|
-
#
|
|
6
|
-
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
7
|
-
# License-Filename: LICENSE.txt
|
|
8
|
-
#
|
|
9
|
-
|
|
10
|
-
from .interpolate import interpolate
|
|
11
|
-
from .lacosmicpad import lacosmicpad
|
|
12
|
-
from .mergemasks import merge_peak_tail_masks
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|