teareduce 0.6.6__py3-none-any.whl → 0.6.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- teareduce/cleanest/cosmicraycleanerapp.py +20 -19
- teareduce/cleanest/definitions.py +3 -3
- teareduce/cleanest/interpolationeditor.py +7 -7
- teareduce/cleanest/reviewcosmicray.py +29 -17
- teareduce/version.py +1 -1
- {teareduce-0.6.6.dist-info → teareduce-0.6.8.dist-info}/METADATA +17 -10
- {teareduce-0.6.6.dist-info → teareduce-0.6.8.dist-info}/RECORD +11 -11
- {teareduce-0.6.6.dist-info → teareduce-0.6.8.dist-info}/WHEEL +0 -0
- {teareduce-0.6.6.dist-info → teareduce-0.6.8.dist-info}/entry_points.txt +0 -0
- {teareduce-0.6.6.dist-info → teareduce-0.6.8.dist-info}/licenses/LICENSE.txt +0 -0
- {teareduce-0.6.6.dist-info → teareduce-0.6.8.dist-info}/top_level.txt +0 -0
|
@@ -20,11 +20,13 @@ from astropy.io import fits
|
|
|
20
20
|
|
|
21
21
|
try:
|
|
22
22
|
import PyCosmic
|
|
23
|
+
|
|
23
24
|
PYCOSMIC_AVAILABLE = True
|
|
24
25
|
except ModuleNotFoundError as e:
|
|
25
|
-
print(
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
print(
|
|
27
|
+
"The 'teareduce.cleanest' module requires the 'PyCosmic' package.\n"
|
|
28
|
+
"Please install this module using:\n"
|
|
29
|
+
"`pip install git+https://github.com/nicocardiel/PyCosmic.git@test`"
|
|
28
30
|
)
|
|
29
31
|
PYCOSMIC_AVAILABLE = False
|
|
30
32
|
|
|
@@ -372,9 +374,9 @@ class CosmicRayCleanerApp(ImageDisplay):
|
|
|
372
374
|
# --- DeepCR button
|
|
373
375
|
self.run_deepcr_button = tkbutton.new(
|
|
374
376
|
self.button_frame1,
|
|
375
|
-
text="Run
|
|
377
|
+
text="Run deepCR",
|
|
376
378
|
command=self.run_deepcr,
|
|
377
|
-
help_text="Run the
|
|
379
|
+
help_text="Run the deepCR algorithm to detect cosmic rays in the image.",
|
|
378
380
|
)
|
|
379
381
|
self.run_deepcr_button.pack(side=tk.LEFT, padx=5)
|
|
380
382
|
# --- Cosmic-CoNN button
|
|
@@ -391,7 +393,6 @@ class CosmicRayCleanerApp(ImageDisplay):
|
|
|
391
393
|
)
|
|
392
394
|
self.stop_button.pack(side=tk.LEFT, padx=5)
|
|
393
395
|
|
|
394
|
-
|
|
395
396
|
# Row 2 of buttons
|
|
396
397
|
self.button_frame2 = tk.Frame(self.root)
|
|
397
398
|
self.button_frame2.pack(pady=5)
|
|
@@ -677,7 +678,7 @@ class CosmicRayCleanerApp(ImageDisplay):
|
|
|
677
678
|
"Dilation", "Enter Dilation (min=0):", initialvalue=0, minvalue=0
|
|
678
679
|
)
|
|
679
680
|
self.process_detected_cr(dilation=dilation)
|
|
680
|
-
self.cleandata_deepcr = None # Invalidate previous
|
|
681
|
+
self.cleandata_deepcr = None # Invalidate previous deepCR cleaned data
|
|
681
682
|
self.cleandata_lacosmic = None # Invalidate previous L.A.Cosmic cleaned data
|
|
682
683
|
self.cleandata_pycosmic = None # Invalidate previous PyCosmic cleaned data
|
|
683
684
|
except Exception as e:
|
|
@@ -850,8 +851,8 @@ class CosmicRayCleanerApp(ImageDisplay):
|
|
|
850
851
|
hdu.writeto(output_fits, overwrite=True)
|
|
851
852
|
print(f"Last mask saved to {output_fits}")
|
|
852
853
|
except Exception as e:
|
|
853
|
-
print(f"Error saving mask into a FITS file: {e}")
|
|
854
|
-
|
|
854
|
+
print(f"Error saving mask into a FITS file: {e}")
|
|
855
|
+
|
|
855
856
|
def set_cursor_onoff(self):
|
|
856
857
|
"""Toggle cursor selection mode on or off."""
|
|
857
858
|
if not self.use_cursor:
|
|
@@ -1189,7 +1190,7 @@ class CosmicRayCleanerApp(ImageDisplay):
|
|
|
1189
1190
|
self.save_crmask_button.config(state=tk.NORMAL)
|
|
1190
1191
|
|
|
1191
1192
|
def run_deepcr(self):
|
|
1192
|
-
"""Run
|
|
1193
|
+
"""Run deepCR to detect cosmic rays."""
|
|
1193
1194
|
if np.any(self.mask_crfound):
|
|
1194
1195
|
overwrite = messagebox.askyesno(
|
|
1195
1196
|
"Overwrite Cosmic Ray Mask",
|
|
@@ -1198,23 +1199,23 @@ class CosmicRayCleanerApp(ImageDisplay):
|
|
|
1198
1199
|
if not overwrite:
|
|
1199
1200
|
return
|
|
1200
1201
|
self.run_deepcr_button.config(state=tk.DISABLED)
|
|
1201
|
-
print("[bold green]Executing
|
|
1202
|
-
# Initialize the
|
|
1202
|
+
print("[bold green]Executing deepCR...[/bold green]")
|
|
1203
|
+
# Initialize the deepCR model
|
|
1203
1204
|
mdl = deepCR.deepCR(mask=self.deepcr_params["mask"]["value"])
|
|
1204
1205
|
# Ask for threshold value and update parameter
|
|
1205
1206
|
threshold = simpledialog.askfloat(
|
|
1206
1207
|
"Threshold",
|
|
1207
|
-
"Enter
|
|
1208
|
+
"Enter deepCR probability threshold (0.0 - 1.0):",
|
|
1208
1209
|
initialvalue=self.deepcr_params["threshold"]["value"],
|
|
1209
1210
|
minvalue=0.0,
|
|
1210
1211
|
maxvalue=1.0,
|
|
1211
1212
|
)
|
|
1212
1213
|
if threshold is None:
|
|
1213
|
-
print("Threshold input cancelled.
|
|
1214
|
+
print("Threshold input cancelled. deepCR detection skipped!")
|
|
1214
1215
|
self.run_deepcr_button.config(state=tk.NORMAL)
|
|
1215
1216
|
return
|
|
1216
1217
|
self.deepcr_params["threshold"]["value"] = threshold
|
|
1217
|
-
print(f"Running
|
|
1218
|
+
print(f"Running deepCR version: {deepCR.__version__} (please wait...)", end="")
|
|
1218
1219
|
self.mask_crfound, self.cleandata_deepcr = mdl.clean(
|
|
1219
1220
|
self.data,
|
|
1220
1221
|
threshold=self.deepcr_params["threshold"]["value"],
|
|
@@ -1224,16 +1225,16 @@ class CosmicRayCleanerApp(ImageDisplay):
|
|
|
1224
1225
|
# Process the mask: dilation and labeling
|
|
1225
1226
|
dilation = simpledialog.askinteger(
|
|
1226
1227
|
"Dilation",
|
|
1227
|
-
"Note: Applying dilation will prevent the use of the
|
|
1228
|
+
"Note: Applying dilation will prevent the use of the deepCR cleaned data.\n\n" "Enter Dilation (min=0):",
|
|
1228
1229
|
initialvalue=self.deepcr_params["dilation"]["value"],
|
|
1229
1230
|
minvalue=0,
|
|
1230
1231
|
)
|
|
1231
1232
|
if dilation is None:
|
|
1232
|
-
print("Dilation input cancelled.
|
|
1233
|
+
print("Dilation input cancelled. deepCR detection skipped!")
|
|
1233
1234
|
self.run_deepcr_button.config(state=tk.NORMAL)
|
|
1234
1235
|
return
|
|
1235
1236
|
if dilation > 0:
|
|
1236
|
-
self.cleandata_deepcr = None # Invalidate
|
|
1237
|
+
self.cleandata_deepcr = None # Invalidate deepCR cleaned data if dilation applied
|
|
1237
1238
|
self.deepcr_params["dilation"]["value"] = dilation
|
|
1238
1239
|
self.process_detected_cr(dilation=self.deepcr_params["dilation"]["value"])
|
|
1239
1240
|
# Invalidate previous cleaned data from other methods
|
|
@@ -1539,7 +1540,7 @@ class CosmicRayCleanerApp(ImageDisplay):
|
|
|
1539
1540
|
cleandata_deepcr=self.cleandata_deepcr,
|
|
1540
1541
|
cr_labels=tmp_cr_labels,
|
|
1541
1542
|
num_features=1,
|
|
1542
|
-
first_cr_index=
|
|
1543
|
+
first_cr_index=first_cr_index,
|
|
1543
1544
|
single_cr=True,
|
|
1544
1545
|
last_dilation=self.lacosmic_params["dilation"]["value"],
|
|
1545
1546
|
last_npoints=self.last_npoints,
|
|
@@ -135,9 +135,9 @@ VALID_CLEANING_METHODS = {
|
|
|
135
135
|
"surface interp.": "a-plane",
|
|
136
136
|
"median": "a-median",
|
|
137
137
|
"mean": "a-mean",
|
|
138
|
-
"
|
|
139
|
-
"
|
|
140
|
-
"
|
|
138
|
+
"L.A.Cosmic": "lacosmic",
|
|
139
|
+
"PyCosmic": "pycosmic",
|
|
140
|
+
"deepCR": "deepcr",
|
|
141
141
|
"maskfill": "maskfill",
|
|
142
142
|
"auxdata": "auxdata",
|
|
143
143
|
}
|
|
@@ -70,7 +70,7 @@ class InterpolationEditor:
|
|
|
70
70
|
cleandata_pycosmic : array-like or None
|
|
71
71
|
Cleaned data from PyCosmic, if available.
|
|
72
72
|
cleandata_deepcr : array-like or None
|
|
73
|
-
Cleaned data from
|
|
73
|
+
Cleaned data from deepCR, if available.
|
|
74
74
|
xmin : float
|
|
75
75
|
Minimum x value of the data. From 1 to NAXIS1.
|
|
76
76
|
xmax : float
|
|
@@ -106,7 +106,7 @@ class InterpolationEditor:
|
|
|
106
106
|
cleandata_pycosmic : array-like or None
|
|
107
107
|
Cleaned data from PyCosmic, if available.
|
|
108
108
|
cleandata_deepcr : array-like or None
|
|
109
|
-
Cleaned data from
|
|
109
|
+
Cleaned data from deepCR, if available.
|
|
110
110
|
dict_interp_methods : dict
|
|
111
111
|
Mapping of interpolation method names to their codes.
|
|
112
112
|
cleaning_method : str or None
|
|
@@ -182,17 +182,17 @@ class InterpolationEditor:
|
|
|
182
182
|
state = "normal"
|
|
183
183
|
# Skip replace by L.A.Cosmic values if last dilation is not zero
|
|
184
184
|
# or cleandata_lacosmic is not available
|
|
185
|
-
if interp_method == "
|
|
185
|
+
if interp_method == "L.A.Cosmic":
|
|
186
186
|
if self.last_dilation != 0:
|
|
187
187
|
state = "disabled"
|
|
188
188
|
if self.cleandata_lacosmic is None:
|
|
189
189
|
state = "disabled"
|
|
190
190
|
# Skip replace by PyCosmic values if cleandata_pycosmic is not available
|
|
191
|
-
elif interp_method == "
|
|
191
|
+
elif interp_method == "PyCosmic":
|
|
192
192
|
if self.cleandata_pycosmic is None:
|
|
193
193
|
state = "disabled"
|
|
194
|
-
# Skip replace by
|
|
195
|
-
elif interp_method == "
|
|
194
|
+
# Skip replace by deepCR values if cleandata_deepcr is not available
|
|
195
|
+
elif interp_method == "deepCR":
|
|
196
196
|
if self.cleandata_deepcr is None:
|
|
197
197
|
state = "disabled"
|
|
198
198
|
# Skip auxdata method if auxdata is not available
|
|
@@ -475,7 +475,7 @@ class InterpolationEditor:
|
|
|
475
475
|
self.entry_maskfill_operator.config(state="disabled")
|
|
476
476
|
self.entry_maskfill_smooth.config(state="disabled")
|
|
477
477
|
self.entry_maskfill_verbose.config(state="disabled")
|
|
478
|
-
elif selected_method in ["
|
|
478
|
+
elif selected_method in ["L.A.Cosmic", "PyCosmic", "deepCR", "auxdata"]:
|
|
479
479
|
self.entry_npoints.config(state="disabled")
|
|
480
480
|
self.entry_degree.config(state="disabled")
|
|
481
481
|
self.entry_maskfill_size.config(state="disabled")
|
|
@@ -91,13 +91,15 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
91
91
|
cleandata_pycosmic: 2D numpy array or None
|
|
92
92
|
The cleaned image data from PyCosmic.
|
|
93
93
|
cleandata_deepcr: 2D numpy array or None
|
|
94
|
-
The cleaned image data from
|
|
94
|
+
The cleaned image data from deepCR.
|
|
95
95
|
cr_labels : 2D numpy array
|
|
96
96
|
Labels of connected cosmic ray pixel groups.
|
|
97
97
|
num_features : int
|
|
98
98
|
Number of connected cosmic ray pixel groups.
|
|
99
99
|
first_cr_index : int, optional
|
|
100
100
|
The index of the first cosmic ray to review (default is 1).
|
|
101
|
+
If set to 0, the user have selected the CR region
|
|
102
|
+
directly with the mouse cursor.
|
|
101
103
|
single_cr : bool, optional
|
|
102
104
|
Whether to review a single cosmic ray (default is False).
|
|
103
105
|
If True, the review window will close after reviewing the
|
|
@@ -167,7 +169,7 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
167
169
|
cleandata_pycosmic: 2D numpy array or None
|
|
168
170
|
The cleaned image data from PyCosmic.
|
|
169
171
|
cleandata_deepcr: 2D numpy array or None
|
|
170
|
-
The cleaned image data from
|
|
172
|
+
The cleaned image data from deepCR.
|
|
171
173
|
cr_labels : 2D numpy array
|
|
172
174
|
Labels of connected cosmic ray pixel groups.
|
|
173
175
|
num_features : int
|
|
@@ -236,7 +238,11 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
236
238
|
if self.num_features == 0:
|
|
237
239
|
print("No CR hits found!")
|
|
238
240
|
else:
|
|
239
|
-
self.
|
|
241
|
+
self.first_cr_index = first_cr_index
|
|
242
|
+
if self.first_cr_index == 0: # Select CR directly with mouse cursor
|
|
243
|
+
self.cr_index = 1
|
|
244
|
+
else:
|
|
245
|
+
self.cr_index = self.first_cr_index
|
|
240
246
|
self.single_cr = single_cr
|
|
241
247
|
self.create_widgets()
|
|
242
248
|
center_on_parent(child=self.root, parent=self.root.master, offset_x=50, offset_y=50)
|
|
@@ -360,7 +366,7 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
360
366
|
# --- Interpolation using L.A.Cosmic button
|
|
361
367
|
self.interp_l_button = tkbutton.new(
|
|
362
368
|
self.button_frame3,
|
|
363
|
-
text="[
|
|
369
|
+
text="[L].A.Cosmic",
|
|
364
370
|
command=self.use_lacosmic,
|
|
365
371
|
help_text="Use L.A.Cosmic interpolation for the current cosmic ray.",
|
|
366
372
|
)
|
|
@@ -384,7 +390,7 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
384
390
|
self.button_frame3,
|
|
385
391
|
text="deepCR",
|
|
386
392
|
command=self.use_deepcr,
|
|
387
|
-
help_text="Use
|
|
393
|
+
help_text="Use deepCR interpolation for the current cosmic ray.",
|
|
388
394
|
)
|
|
389
395
|
self.interp_deepcr_button.pack(side=tk.LEFT, padx=5)
|
|
390
396
|
if self.cleandata_deepcr is None:
|
|
@@ -494,11 +500,14 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
494
500
|
ycr_list, xcr_list = np.where(self.cr_labels == self.cr_index)
|
|
495
501
|
ycr_list_original, xcr_list_original = np.where(self.cr_labels_original == self.cr_index)
|
|
496
502
|
if self.first_plot:
|
|
497
|
-
|
|
498
|
-
f"
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
503
|
+
if self.first_cr_index == 0:
|
|
504
|
+
print(f"Centroid = ({np.mean(xcr_list)+1:.2f}, {np.mean(ycr_list)+1:.2f})")
|
|
505
|
+
else:
|
|
506
|
+
print(
|
|
507
|
+
f"Cosmic ray {self.cr_index}: "
|
|
508
|
+
f"Number of pixels = {len(xcr_list)}, "
|
|
509
|
+
f"Centroid = ({np.mean(xcr_list)+1:.2f}, {np.mean(ycr_list)+1:.2f})"
|
|
510
|
+
)
|
|
502
511
|
# Use original positions to define the region to display in order
|
|
503
512
|
# to avoid image shifts when some pixels are unmarked or new ones are marked
|
|
504
513
|
i0 = int(np.mean(ycr_list_original) + 0.5)
|
|
@@ -564,7 +573,10 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
564
573
|
self.ax.plot([xcr - 0.5, xcr + 0.5], [ycr - 0.5, ycr + 0.5], "r-")
|
|
565
574
|
self.ax.set_xlim(xlim)
|
|
566
575
|
self.ax.set_ylim(ylim)
|
|
567
|
-
self.
|
|
576
|
+
if self.first_cr_index == 0:
|
|
577
|
+
self.ax.set_title("Selecting CR pixels with mouse cursor")
|
|
578
|
+
else:
|
|
579
|
+
self.ax.set_title(f"Cosmic ray #{self.cr_index}/{self.num_features}")
|
|
568
580
|
if self.first_plot:
|
|
569
581
|
self.first_plot = False
|
|
570
582
|
self.canvas.draw_idle()
|
|
@@ -743,13 +755,13 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
743
755
|
self.num_cr_cleaned += 1
|
|
744
756
|
self.set_buttons_after_cleaning_cr()
|
|
745
757
|
self.update_display(cleaned=True)
|
|
746
|
-
|
|
758
|
+
|
|
747
759
|
def use_deepcr(self):
|
|
748
|
-
"""Use
|
|
760
|
+
"""Use deepCR cleaned data to clean a cosmic ray."""
|
|
749
761
|
if self.cleandata_deepcr is None:
|
|
750
|
-
print("
|
|
762
|
+
print("deepCR cleaned data not available.")
|
|
751
763
|
return
|
|
752
|
-
print(f"
|
|
764
|
+
print(f"deepCR interpolation of cosmic ray {self.cr_index}")
|
|
753
765
|
ycr_list, xcr_list = np.where(self.cr_labels == self.cr_index)
|
|
754
766
|
for iy, ix in zip(ycr_list, xcr_list):
|
|
755
767
|
self.data[iy, ix] = self.cleandata_deepcr[iy, ix]
|
|
@@ -895,10 +907,10 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
895
907
|
iy = int(y + 0.5) - 1 # from pixel to index
|
|
896
908
|
if int(self.cr_labels[iy, ix]) == self.cr_index:
|
|
897
909
|
self.cr_labels[iy, ix] = 0
|
|
898
|
-
print(f"Pixel ({ix+1}, {iy+1}) unmarked as
|
|
910
|
+
print(f"Pixel ({ix+1}, {iy+1}) unmarked as CR pixel.")
|
|
899
911
|
else:
|
|
900
912
|
self.cr_labels[iy, ix] = self.cr_index
|
|
901
|
-
print(f"Pixel ({ix+1}, {iy+1}), with signal {self.data[iy, ix]}, marked as
|
|
913
|
+
print(f"Pixel ({ix+1}, {iy+1}), with signal {self.data[iy, ix]}, marked as CR pixel.")
|
|
902
914
|
xcr_list, ycr_list = np.where(self.cr_labels == self.cr_index)
|
|
903
915
|
if len(xcr_list) == 0:
|
|
904
916
|
self.disable_interpolation_buttons()
|
teareduce/version.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: teareduce
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.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
|
|
@@ -39,7 +39,7 @@ Dynamic: license-file
|
|
|
39
39
|
|
|
40
40
|
# teareduce
|
|
41
41
|
|
|
42
|
-
[](https://badge.fury.io/py/teareduce)
|
|
42
|
+
[](https://badge.fury.io/py/teareduce)
|
|
43
43
|
|
|
44
44
|
Utilities for astronomical data reduction.
|
|
45
45
|
|
|
@@ -72,13 +72,6 @@ $ . venv_teareduce/bin/activate
|
|
|
72
72
|
(venv_teareduce) $
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
If you are planning to use **tea-cleanest**, you need to install this package
|
|
76
|
-
with extra dependencies. In this case employ:
|
|
77
|
-
|
|
78
|
-
```shell
|
|
79
|
-
(venv_teareduce) $ pip install 'teareduce[cleanest]'
|
|
80
|
-
```
|
|
81
|
-
|
|
82
75
|
### Installing the package
|
|
83
76
|
|
|
84
77
|
The latest stable version is available via de [PyPI repository](https://pypi.org/project/teareduce/):
|
|
@@ -96,6 +89,20 @@ The latest development version is available through [GitHub](https://github.com/
|
|
|
96
89
|
(venv_teareduce) $ pip install git+https://github.com/nicocardiel/teareduce.git@main#egg=teareduce
|
|
97
90
|
```
|
|
98
91
|
|
|
92
|
+
If you are planning to use **tea-cleanest**, you need to install this package
|
|
93
|
+
with extra dependencies. In this case employ:
|
|
94
|
+
|
|
95
|
+
```shell
|
|
96
|
+
(venv_teareduce) $ pip install 'teareduce[cleanest]'
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
In addition, in order to make use of the **PyCosmic** algorithm with
|
|
100
|
+
`tea-cleanest`, you need to install that package. This can be done using:
|
|
101
|
+
|
|
102
|
+
```shell
|
|
103
|
+
(venv_teareduce) $ pip install git+https://github.com/nicocardiel/PyCosmic.git@test
|
|
104
|
+
```
|
|
105
|
+
|
|
99
106
|
### Testing the installation
|
|
100
107
|
|
|
101
108
|
```shell
|
|
@@ -106,7 +113,7 @@ The latest development version is available through [GitHub](https://github.com/
|
|
|
106
113
|
(venv_teareduce) $ ipython
|
|
107
114
|
In [1]: import teareduce as tea
|
|
108
115
|
In [2]: print(tea.__version__)
|
|
109
|
-
0.
|
|
116
|
+
0.6.7
|
|
110
117
|
```
|
|
111
118
|
|
|
112
119
|
Note that in PyPI there is a package called **tea** that provides utilities
|
|
@@ -15,7 +15,7 @@ teareduce/sdistortion.py,sha256=z7GX7MMkWhexUJn4VqsSOXLNsZTSdoaCzl9ukW1XlaA,5912
|
|
|
15
15
|
teareduce/simulateccdexposure.py,sha256=cdbpca6GVuM3d7R1LGzlIZZvjTq_jzrlkk_Cli7aouQ,24636
|
|
16
16
|
teareduce/sliceregion.py,sha256=Jdf8XvmGaY_vaY1cneTaRtSOYPxpUsJm9cXJDDMa0YM,18626
|
|
17
17
|
teareduce/statsummary.py,sha256=vtM0ZtKI1-uw6zZyNwDkBGDS_hOdBcFCtpMzdSrLwIw,5418
|
|
18
|
-
teareduce/version.py,sha256=
|
|
18
|
+
teareduce/version.py,sha256=Zl-ouPPlJRbEhbRSm-uueFKXjafJSEQTaGeg_vwnlHw,419
|
|
19
19
|
teareduce/wavecal.py,sha256=nu0iYM2475pJr3btODa5T8XKgNVA-kc8Fsio9Oe2biY,68582
|
|
20
20
|
teareduce/write_array_to_fits.py,sha256=kWDrEH9coJ1yIu56oQJpWtDqJL4c8HGmssE9jle4e94,617
|
|
21
21
|
teareduce/zscale.py,sha256=SDgmcDD2N5GvDn46JADCgTQJPBF_N_jSKMHoeTz9Nsw,1152
|
|
@@ -23,8 +23,8 @@ teareduce/cleanest/__init__.py,sha256=1rcfu97uqj3R-OZbU9HHLYaTzWkS-poRFBBy8nuH7p
|
|
|
23
23
|
teareduce/cleanest/__main__.py,sha256=sTMk3vEfGYcF58MjVZaycWk3jRLIS1vYK2qp40EcTNA,5904
|
|
24
24
|
teareduce/cleanest/askextension.py,sha256=Q6mGLA6ajUcDU4gsVA4P78GsPei0c7iZK1f7SfK9iVo,3014
|
|
25
25
|
teareduce/cleanest/centerchildparent.py,sha256=wHxOvNrrQ-KBLZAbtQ9bJAxYhGOzqYBF4LgdIQk7UF8,1285
|
|
26
|
-
teareduce/cleanest/cosmicraycleanerapp.py,sha256=
|
|
27
|
-
teareduce/cleanest/definitions.py,sha256=
|
|
26
|
+
teareduce/cleanest/cosmicraycleanerapp.py,sha256=CZNYKW9uiDwpCevqyEwUSqzBbtoUBu-yon7afPkqTIw,80979
|
|
27
|
+
teareduce/cleanest/definitions.py,sha256=pq_ZYEn16nvNMdvkOD71PB0Y4p1tIaNJFYd8hsq59Nc,7782
|
|
28
28
|
teareduce/cleanest/dilatemask.py,sha256=I5tHAv5VEO6V0Wed8Ar20uLt4F9P-tgjmLL5BAaFvgM,1276
|
|
29
29
|
teareduce/cleanest/find_closest_true.py,sha256=mWdIvhipzAXDRKfePDrP7f0lP4U48cckpHiKwiB4jHI,1320
|
|
30
30
|
teareduce/cleanest/gausskernel2d_elliptical.py,sha256=f6AT0ZHmLCd83NAIyyJ8ODlihMeeTkmvNnUSK3vjP9I,1606
|
|
@@ -33,12 +33,12 @@ teareduce/cleanest/interpolate.py,sha256=eB9pVkEyJsNorKKV4Dx-j0UldBV6bgWSQBosYka
|
|
|
33
33
|
teareduce/cleanest/interpolation_a.py,sha256=iyAEbh0Bf74OfAVhZjSvP3cO7pDC8eVDrVnDUd18FZQ,4030
|
|
34
34
|
teareduce/cleanest/interpolation_x.py,sha256=MZhtlZZuMLvLnOK0EsLkJM3_dpyNHsxQL_BU1vLt9Lw,3767
|
|
35
35
|
teareduce/cleanest/interpolation_y.py,sha256=ZX1Uv3FOxoLHtuR_yspcSA5B81CK_J0oNJ1ztzp0l5g,3782
|
|
36
|
-
teareduce/cleanest/interpolationeditor.py,sha256=
|
|
36
|
+
teareduce/cleanest/interpolationeditor.py,sha256=W6FCa8YvaPMyRcX6q_WrRzEjs5Hb4t0rzepMir5tFlA,20608
|
|
37
37
|
teareduce/cleanest/lacosmicpad.py,sha256=Ox6XpgZ7O_HmSth-6IiTY09NuskqMu0NfMjZBTbb1h0,7607
|
|
38
38
|
teareduce/cleanest/mergemasks.py,sha256=TdbfQl5ETxtyFfod0WCD7Czzmgt-WxYOk3hpLqGNOTQ,2620
|
|
39
39
|
teareduce/cleanest/modalprogressbar.py,sha256=uwd-p92PvOVJnbXd-B8DRcBZ--keKpr4ZN9PLeqm1Ws,6449
|
|
40
40
|
teareduce/cleanest/parametereditor.py,sha256=XvJuvwhkeGyqZHESz0rdkAydBqnJQmKP2YwUz1H4bzE,41818
|
|
41
|
-
teareduce/cleanest/reviewcosmicray.py,sha256=
|
|
41
|
+
teareduce/cleanest/reviewcosmicray.py,sha256=ErDbjzyq09g6kI20A6BBpcUwZF7tC0huUmv90xB43GQ,41147
|
|
42
42
|
teareduce/cleanest/trackedbutton.py,sha256=r6Mzhb24c3HaJdvGGGFLn7cF9n4TgsKYc_yfcYIyB4g,2348
|
|
43
43
|
teareduce/cookbook/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
44
|
teareduce/cookbook/get_cookbook_file.py,sha256=vde-iNii2lm1QII8GmLRsFsKNxkdsd7njCBE-8Z7io0,1088
|
|
@@ -46,9 +46,9 @@ teareduce/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
46
46
|
teareduce/tests/test_cleanest.py,sha256=6dRqkw1RQMKsFrC8cEweMvTD6wXhiDv3P4PS57-HEqI,5598
|
|
47
47
|
teareduce/tests/test_sliceregion.py,sha256=S7Zoh2eEBFIEbfsXgWBEMCf7pottjw2oLhqlZJQkAwg,3785
|
|
48
48
|
teareduce/tests/test_version.py,sha256=mKLnbXyvVNc1pATq5PxR8qeoFMPAFL_GilFV6IHLOi0,172
|
|
49
|
-
teareduce-0.6.
|
|
50
|
-
teareduce-0.6.
|
|
51
|
-
teareduce-0.6.
|
|
52
|
-
teareduce-0.6.
|
|
53
|
-
teareduce-0.6.
|
|
54
|
-
teareduce-0.6.
|
|
49
|
+
teareduce-0.6.8.dist-info/licenses/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
50
|
+
teareduce-0.6.8.dist-info/METADATA,sha256=jJTyBbRA9tPU7XDy5l2GYs7KJVdSBiPEFoaxCBQuF7E,4081
|
|
51
|
+
teareduce-0.6.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
52
|
+
teareduce-0.6.8.dist-info/entry_points.txt,sha256=6yBvig5jTL2ugqz5SF767AiszzrHKGRASsX1II84kqA,66
|
|
53
|
+
teareduce-0.6.8.dist-info/top_level.txt,sha256=7OkwtX9zNRkGJ7ACgjk4ESgC74qUYcS5O2qcO0v-Si4,10
|
|
54
|
+
teareduce-0.6.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|