teareduce 0.6.5__py3-none-any.whl → 0.6.6__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/__main__.py +4 -10
- teareduce/cleanest/cosmicraycleanerapp.py +642 -233
- teareduce/cleanest/definitions.py +63 -5
- teareduce/cleanest/interpolate.py +1 -1
- teareduce/cleanest/interpolationeditor.py +23 -9
- teareduce/cleanest/lacosmicpad.py +23 -4
- teareduce/cleanest/parametereditor.py +386 -5
- teareduce/cleanest/reviewcosmicray.py +109 -18
- teareduce/sdistortion.py +1 -1
- teareduce/statsummary.py +1 -1
- teareduce/version.py +1 -1
- teareduce/wavecal.py +1 -1
- {teareduce-0.6.5.dist-info → teareduce-0.6.6.dist-info}/METADATA +5 -1
- {teareduce-0.6.5.dist-info → teareduce-0.6.6.dist-info}/RECORD +18 -18
- {teareduce-0.6.5.dist-info → teareduce-0.6.6.dist-info}/WHEEL +0 -0
- {teareduce-0.6.5.dist-info → teareduce-0.6.6.dist-info}/entry_points.txt +0 -0
- {teareduce-0.6.5.dist-info → teareduce-0.6.6.dist-info}/licenses/LICENSE.txt +0 -0
- {teareduce-0.6.5.dist-info → teareduce-0.6.6.dist-info}/top_level.txt +0 -0
|
@@ -58,6 +58,8 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
58
58
|
data,
|
|
59
59
|
auxdata,
|
|
60
60
|
cleandata_lacosmic,
|
|
61
|
+
cleandata_pycosmic,
|
|
62
|
+
cleandata_deepcr,
|
|
61
63
|
cr_labels,
|
|
62
64
|
num_features,
|
|
63
65
|
first_cr_index=1,
|
|
@@ -86,6 +88,10 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
86
88
|
The auxiliary image data.
|
|
87
89
|
cleandata_lacosmic: 2D numpy array or None
|
|
88
90
|
The cleaned image data from L.A.Cosmic.
|
|
91
|
+
cleandata_pycosmic: 2D numpy array or None
|
|
92
|
+
The cleaned image data from PyCosmic.
|
|
93
|
+
cleandata_deepcr: 2D numpy array or None
|
|
94
|
+
The cleaned image data from DeepCR.
|
|
89
95
|
cr_labels : 2D numpy array
|
|
90
96
|
Labels of connected cosmic ray pixel groups.
|
|
91
97
|
num_features : int
|
|
@@ -158,6 +164,10 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
158
164
|
The auxiliary image data.
|
|
159
165
|
cleandata_lacosmic: 2D numpy array or None
|
|
160
166
|
The cleaned image data from L.A.Cosmic.
|
|
167
|
+
cleandata_pycosmic: 2D numpy array or None
|
|
168
|
+
The cleaned image data from PyCosmic.
|
|
169
|
+
cleandata_deepcr: 2D numpy array or None
|
|
170
|
+
The cleaned image data from DeepCR.
|
|
161
171
|
cr_labels : 2D numpy array
|
|
162
172
|
Labels of connected cosmic ray pixel groups.
|
|
163
173
|
num_features : int
|
|
@@ -190,19 +200,21 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
190
200
|
self.factor_height = root_height / DEFAULT_TK_WINDOW_SIZE_Y
|
|
191
201
|
self.auxdata = auxdata
|
|
192
202
|
if self.auxdata is not None:
|
|
193
|
-
# self.root.geometry("
|
|
203
|
+
# self.root.geometry("1000x760+100+100") # This does not work in Fedora
|
|
194
204
|
window_width = int(1000 * self.factor_width + 0.5)
|
|
195
|
-
window_height = int(
|
|
205
|
+
window_height = int(760 * self.factor_height + 0.5)
|
|
196
206
|
self.root.minsize(window_width, window_height)
|
|
197
207
|
else:
|
|
198
|
-
# self.root.geometry("
|
|
208
|
+
# self.root.geometry("900x760+100+100") # This does not work in Fedora
|
|
199
209
|
window_width = int(900 * self.factor_width + 0.5)
|
|
200
|
-
window_height = int(
|
|
210
|
+
window_height = int(760 * self.factor_height + 0.5)
|
|
201
211
|
self.root.minsize(window_width, window_height)
|
|
202
212
|
self.root.update_idletasks()
|
|
203
213
|
self.root.geometry("+100+100")
|
|
204
214
|
self.data = data
|
|
205
215
|
self.cleandata_lacosmic = cleandata_lacosmic
|
|
216
|
+
self.cleandata_pycosmic = cleandata_pycosmic
|
|
217
|
+
self.cleandata_deepcr = cleandata_deepcr
|
|
206
218
|
self.data_original = data.copy()
|
|
207
219
|
self.cr_labels = cr_labels
|
|
208
220
|
self.num_features = num_features
|
|
@@ -238,6 +250,7 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
238
250
|
# Row 1 of buttons
|
|
239
251
|
self.button_frame1 = tk.Frame(self.root)
|
|
240
252
|
self.button_frame1.pack(pady=5)
|
|
253
|
+
# --- Npoints and Degree button
|
|
241
254
|
self.ndeg_label = tkbutton.new(
|
|
242
255
|
self.button_frame1,
|
|
243
256
|
text=f"Npoints={self.npoints}, Degree={self.degree}",
|
|
@@ -246,6 +259,7 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
246
259
|
alttext="Npoints=?, Degree=?",
|
|
247
260
|
)
|
|
248
261
|
self.ndeg_label.pack(side=tk.LEFT, padx=5)
|
|
262
|
+
# --- Maskfill params. button
|
|
249
263
|
self.maskfill_button = tkbutton.new(
|
|
250
264
|
self.button_frame1,
|
|
251
265
|
text="Maskfill params.",
|
|
@@ -253,6 +267,7 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
253
267
|
help_text="Set the parameters for the maskfill method.",
|
|
254
268
|
)
|
|
255
269
|
self.maskfill_button.pack(side=tk.LEFT, padx=5)
|
|
270
|
+
# --- Remove crosses button
|
|
256
271
|
self.remove_crosses_button = tkbutton.new(
|
|
257
272
|
self.button_frame1,
|
|
258
273
|
text="remove all x's",
|
|
@@ -260,14 +275,16 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
260
275
|
help_text="Remove all cross marks from the image.",
|
|
261
276
|
)
|
|
262
277
|
self.remove_crosses_button.pack(side=tk.LEFT, padx=5)
|
|
278
|
+
# --- Restore CR button
|
|
263
279
|
self.restore_cr_button = tkbutton.new(
|
|
264
280
|
self.button_frame1,
|
|
265
|
-
text="
|
|
281
|
+
text="[r]estore CR",
|
|
266
282
|
command=self.restore_cr,
|
|
267
283
|
help_text="Restore current cosmic ray pixels to their original values.",
|
|
268
284
|
)
|
|
269
285
|
self.restore_cr_button.pack(side=tk.LEFT, padx=5)
|
|
270
286
|
self.restore_cr_button.config(state=tk.DISABLED)
|
|
287
|
+
# --- Next button
|
|
271
288
|
self.next_button = tkbutton.new(
|
|
272
289
|
self.button_frame1,
|
|
273
290
|
text="[c]ontinue",
|
|
@@ -275,6 +292,7 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
275
292
|
help_text="Continue to the next cosmic ray.",
|
|
276
293
|
)
|
|
277
294
|
self.next_button.pack(side=tk.LEFT, padx=5)
|
|
295
|
+
# --- Exit button
|
|
278
296
|
self.exit_button = tkbutton.new(
|
|
279
297
|
self.button_frame1,
|
|
280
298
|
text="[e]xit review",
|
|
@@ -286,6 +304,7 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
286
304
|
# Row 2 of buttons
|
|
287
305
|
self.button_frame2 = tk.Frame(self.root)
|
|
288
306
|
self.button_frame2.pack(pady=5)
|
|
307
|
+
# --- X interpolation button
|
|
289
308
|
self.interp_x_button = tkbutton.new(
|
|
290
309
|
self.button_frame2,
|
|
291
310
|
text="[x] interp.",
|
|
@@ -293,6 +312,7 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
293
312
|
help_text="Perform X-interpolation for the current cosmic ray.",
|
|
294
313
|
)
|
|
295
314
|
self.interp_x_button.pack(side=tk.LEFT, padx=5)
|
|
315
|
+
# --- Y interpolation button
|
|
296
316
|
self.interp_y_button = tkbutton.new(
|
|
297
317
|
self.button_frame2,
|
|
298
318
|
text="[y] interp.",
|
|
@@ -300,11 +320,14 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
300
320
|
help_text="Perform Y-interpolation for the current cosmic ray.",
|
|
301
321
|
)
|
|
302
322
|
self.interp_y_button.pack(side=tk.LEFT, padx=5)
|
|
323
|
+
# --- Plane interpolation button
|
|
303
324
|
# it is important to use lambda here to pass the method argument correctly
|
|
304
325
|
# (avoiding the execution of the function at button creation time, which would happen
|
|
305
326
|
# if we didn't use lambda; in that case, the function would be called immediately and
|
|
306
327
|
# its return value (None) would be assigned to the command parameter; furthermore,
|
|
307
|
-
# the function is trying to deactivate the buttons before they are created,
|
|
328
|
+
# the function is trying to deactivate the buttons before they are created,
|
|
329
|
+
# which would lead to an error; in addition, since I have two buttons calling
|
|
330
|
+
# the same function with different arguments, using lambda allows to differentiate them)
|
|
308
331
|
# would lead to an error; in addition, since I have two buttons calling the same function
|
|
309
332
|
# with different arguments, using lambda allows to differentiate them)
|
|
310
333
|
self.interp_s_button = tkbutton.new(
|
|
@@ -314,6 +337,7 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
314
337
|
help_text="Perform surface interpolation for the current cosmic ray.",
|
|
315
338
|
)
|
|
316
339
|
self.interp_s_button.pack(side=tk.LEFT, padx=5)
|
|
340
|
+
# --- Median interpolation button
|
|
317
341
|
self.interp_d_button = tkbutton.new(
|
|
318
342
|
self.button_frame2,
|
|
319
343
|
text="me[d]ian",
|
|
@@ -321,6 +345,7 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
321
345
|
help_text="Perform median interpolation for the current cosmic ray.",
|
|
322
346
|
)
|
|
323
347
|
self.interp_d_button.pack(side=tk.LEFT, padx=5)
|
|
348
|
+
# --- Mean interpolation button
|
|
324
349
|
self.interp_m_button = tkbutton.new(
|
|
325
350
|
self.button_frame2,
|
|
326
351
|
text="[m]ean",
|
|
@@ -328,8 +353,13 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
328
353
|
help_text="Perform mean interpolation for the current cosmic ray.",
|
|
329
354
|
)
|
|
330
355
|
self.interp_m_button.pack(side=tk.LEFT, padx=5)
|
|
356
|
+
|
|
357
|
+
# Row 3 of buttons
|
|
358
|
+
self.button_frame3 = tk.Frame(self.root)
|
|
359
|
+
self.button_frame3.pack(pady=5)
|
|
360
|
+
# --- Interpolation using L.A.Cosmic button
|
|
331
361
|
self.interp_l_button = tkbutton.new(
|
|
332
|
-
self.
|
|
362
|
+
self.button_frame3,
|
|
333
363
|
text="[l]acosmic",
|
|
334
364
|
command=self.use_lacosmic,
|
|
335
365
|
help_text="Use L.A.Cosmic interpolation for the current cosmic ray.",
|
|
@@ -339,15 +369,37 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
339
369
|
self.interp_l_button.config(state=tk.DISABLED)
|
|
340
370
|
if self.cleandata_lacosmic is None:
|
|
341
371
|
self.interp_l_button.config(state=tk.DISABLED)
|
|
372
|
+
# --- Interpolation using PyCosmic button
|
|
373
|
+
self.interp_pycosmic_button = tkbutton.new(
|
|
374
|
+
self.button_frame3,
|
|
375
|
+
text="PyCosmic",
|
|
376
|
+
command=self.use_pycosmic,
|
|
377
|
+
help_text="Use PyCosmic interpolation for the current cosmic ray.",
|
|
378
|
+
)
|
|
379
|
+
self.interp_pycosmic_button.pack(side=tk.LEFT, padx=5)
|
|
380
|
+
if self.cleandata_pycosmic is None:
|
|
381
|
+
self.interp_pycosmic_button.config(state=tk.DISABLED)
|
|
382
|
+
# --- Interpolation using deepCR button
|
|
383
|
+
self.interp_deepcr_button = tkbutton.new(
|
|
384
|
+
self.button_frame3,
|
|
385
|
+
text="deepCR",
|
|
386
|
+
command=self.use_deepcr,
|
|
387
|
+
help_text="Use DeepCR interpolation for the current cosmic ray.",
|
|
388
|
+
)
|
|
389
|
+
self.interp_deepcr_button.pack(side=tk.LEFT, padx=5)
|
|
390
|
+
if self.cleandata_deepcr is None:
|
|
391
|
+
self.interp_deepcr_button.config(state=tk.DISABLED)
|
|
392
|
+
# --- Interpolation using maskfill button
|
|
342
393
|
self.interp_maskfill_button = tkbutton.new(
|
|
343
|
-
self.
|
|
344
|
-
text="
|
|
394
|
+
self.button_frame3,
|
|
395
|
+
text="mas[k]fill",
|
|
345
396
|
command=self.use_maskfill,
|
|
346
397
|
help_text="Perform maskfill interpolation for the current cosmic ray.",
|
|
347
398
|
)
|
|
348
399
|
self.interp_maskfill_button.pack(side=tk.LEFT, padx=5)
|
|
400
|
+
# --- Interpolation using auxiliary data button
|
|
349
401
|
self.interp_aux_button = tkbutton.new(
|
|
350
|
-
self.
|
|
402
|
+
self.button_frame3,
|
|
351
403
|
text="[a]ux. data",
|
|
352
404
|
command=self.use_auxdata,
|
|
353
405
|
help_text="Use auxiliary data for interpolation of the current cosmic ray.",
|
|
@@ -356,42 +408,47 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
356
408
|
if self.auxdata is None:
|
|
357
409
|
self.interp_aux_button.config(state=tk.DISABLED)
|
|
358
410
|
|
|
359
|
-
# Row
|
|
360
|
-
self.
|
|
361
|
-
self.
|
|
411
|
+
# Row 4 of buttons
|
|
412
|
+
self.button_frame4 = tk.Frame(self.root)
|
|
413
|
+
self.button_frame4.pack(pady=5)
|
|
414
|
+
# --- vmin button
|
|
362
415
|
vmin, vmax = zscale(self.data)
|
|
363
416
|
self.vmin_button = tkbutton.new(
|
|
364
|
-
self.
|
|
417
|
+
self.button_frame4,
|
|
365
418
|
text=f"vmin: {vmin:.2f}",
|
|
366
419
|
command=self.set_vmin,
|
|
367
420
|
help_text="Set the minimum value for the display scale.",
|
|
368
421
|
alttext="vmin: ??",
|
|
369
422
|
)
|
|
370
423
|
self.vmin_button.pack(side=tk.LEFT, padx=5)
|
|
424
|
+
# --- vmax button
|
|
371
425
|
self.vmax_button = tkbutton.new(
|
|
372
|
-
self.
|
|
426
|
+
self.button_frame4,
|
|
373
427
|
text=f"vmax: {vmax:.2f}",
|
|
374
428
|
command=self.set_vmax,
|
|
375
429
|
help_text="Set the maximum value for the display scale.",
|
|
376
430
|
alttext="vmax: ??",
|
|
377
431
|
)
|
|
378
432
|
self.vmax_button.pack(side=tk.LEFT, padx=5)
|
|
433
|
+
# --- minmax button
|
|
379
434
|
self.set_minmax_button = tkbutton.new(
|
|
380
|
-
self.
|
|
435
|
+
self.button_frame4,
|
|
381
436
|
text="minmax [,]",
|
|
382
437
|
command=self.set_minmax,
|
|
383
438
|
help_text="Set the display scale to the minimum and maximum data values.",
|
|
384
439
|
)
|
|
385
440
|
self.set_minmax_button.pack(side=tk.LEFT, padx=5)
|
|
441
|
+
# --- zscale button
|
|
386
442
|
self.set_zscale_button = tkbutton.new(
|
|
387
|
-
self.
|
|
443
|
+
self.button_frame4,
|
|
388
444
|
text="zscale [/]",
|
|
389
445
|
command=self.set_zscale,
|
|
390
446
|
help_text="Set the display scale using zscale.",
|
|
391
447
|
)
|
|
392
448
|
self.set_zscale_button.pack(side=tk.LEFT, padx=5)
|
|
449
|
+
# --- Help button
|
|
393
450
|
self.help_button = tkbutton.new(
|
|
394
|
-
self.
|
|
451
|
+
self.button_frame4,
|
|
395
452
|
text="Help",
|
|
396
453
|
command=tkbutton.show_help,
|
|
397
454
|
help_text="Show help information for all buttons.",
|
|
@@ -673,6 +730,34 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
673
730
|
self.set_buttons_after_cleaning_cr()
|
|
674
731
|
self.update_display(cleaned=True)
|
|
675
732
|
|
|
733
|
+
def use_pycosmic(self):
|
|
734
|
+
"""Use PyCosmic cleaned data to clean a cosmic ray."""
|
|
735
|
+
if self.cleandata_pycosmic is None:
|
|
736
|
+
print("PyCosmic cleaned data not available.")
|
|
737
|
+
return
|
|
738
|
+
print(f"PyCosmic interpolation of cosmic ray {self.cr_index}")
|
|
739
|
+
ycr_list, xcr_list = np.where(self.cr_labels == self.cr_index)
|
|
740
|
+
for iy, ix in zip(ycr_list, xcr_list):
|
|
741
|
+
self.data[iy, ix] = self.cleandata_pycosmic[iy, ix]
|
|
742
|
+
self.mask_fixed[iy, ix] = True
|
|
743
|
+
self.num_cr_cleaned += 1
|
|
744
|
+
self.set_buttons_after_cleaning_cr()
|
|
745
|
+
self.update_display(cleaned=True)
|
|
746
|
+
|
|
747
|
+
def use_deepcr(self):
|
|
748
|
+
"""Use DeepCR cleaned data to clean a cosmic ray."""
|
|
749
|
+
if self.cleandata_deepcr is None:
|
|
750
|
+
print("DeepCR cleaned data not available.")
|
|
751
|
+
return
|
|
752
|
+
print(f"DeepCR interpolation of cosmic ray {self.cr_index}")
|
|
753
|
+
ycr_list, xcr_list = np.where(self.cr_labels == self.cr_index)
|
|
754
|
+
for iy, ix in zip(ycr_list, xcr_list):
|
|
755
|
+
self.data[iy, ix] = self.cleandata_deepcr[iy, ix]
|
|
756
|
+
self.mask_fixed[iy, ix] = True
|
|
757
|
+
self.num_cr_cleaned += 1
|
|
758
|
+
self.set_buttons_after_cleaning_cr()
|
|
759
|
+
self.update_display(cleaned=True)
|
|
760
|
+
|
|
676
761
|
def use_maskfill(self):
|
|
677
762
|
"""Use maskfill cleaned data to clean a cosmic ray."""
|
|
678
763
|
print(f"Maskfill interpolation of cosmic ray {self.cr_index}")
|
|
@@ -832,6 +917,8 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
832
917
|
self.interp_d_button.config(state=tk.DISABLED)
|
|
833
918
|
self.interp_m_button.config(state=tk.DISABLED)
|
|
834
919
|
self.interp_l_button.config(state=tk.DISABLED)
|
|
920
|
+
self.interp_pycosmic_button.config(state=tk.DISABLED)
|
|
921
|
+
self.interp_deepcr_button.config(state=tk.DISABLED)
|
|
835
922
|
self.interp_maskfill_button.config(state=tk.DISABLED)
|
|
836
923
|
self.interp_aux_button.config(state=tk.DISABLED)
|
|
837
924
|
|
|
@@ -845,6 +932,10 @@ class ReviewCosmicRay(ImageDisplay):
|
|
|
845
932
|
if self.cleandata_lacosmic is not None:
|
|
846
933
|
if self.last_dilation is None or self.last_dilation == 0:
|
|
847
934
|
self.interp_l_button.config(state=tk.NORMAL)
|
|
935
|
+
if self.cleandata_pycosmic is not None:
|
|
936
|
+
self.interp_pycosmic_button.config(state=tk.NORMAL)
|
|
937
|
+
if self.cleandata_deepcr is not None:
|
|
938
|
+
self.interp_deepcr_button.config(state=tk.NORMAL)
|
|
848
939
|
self.interp_maskfill_button.config(state=tk.NORMAL)
|
|
849
940
|
if self.auxdata is not None:
|
|
850
941
|
self.interp_aux_button.config(state=tk.NORMAL)
|
teareduce/sdistortion.py
CHANGED
|
@@ -12,7 +12,7 @@ import matplotlib.pyplot as plt
|
|
|
12
12
|
import numpy as np
|
|
13
13
|
from numpy.polynomial import Polynomial
|
|
14
14
|
from scipy import ndimage
|
|
15
|
-
from tqdm.
|
|
15
|
+
from tqdm.auto import tqdm
|
|
16
16
|
|
|
17
17
|
from .imshow import imshow
|
|
18
18
|
from .polfit import polfit_residuals_with_sigma_rejection
|
teareduce/statsummary.py
CHANGED
teareduce/version.py
CHANGED
teareduce/wavecal.py
CHANGED
|
@@ -19,7 +19,7 @@ import numpy as np
|
|
|
19
19
|
from numpy.polynomial import Polynomial
|
|
20
20
|
from pathlib import Path
|
|
21
21
|
from scipy.ndimage import gaussian_filter1d
|
|
22
|
-
from tqdm.
|
|
22
|
+
from tqdm.auto import tqdm
|
|
23
23
|
|
|
24
24
|
from .ctext import ctext
|
|
25
25
|
from .imshow import imshow
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: teareduce
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.6
|
|
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
|
|
@@ -30,6 +30,8 @@ Requires-Dist: scipy
|
|
|
30
30
|
Requires-Dist: tqdm
|
|
31
31
|
Provides-Extra: cleanest
|
|
32
32
|
Requires-Dist: ccdproc; extra == "cleanest"
|
|
33
|
+
Requires-Dist: cosmic-conn; extra == "cleanest"
|
|
34
|
+
Requires-Dist: deepCR; extra == "cleanest"
|
|
33
35
|
Requires-Dist: maskfill; extra == "cleanest"
|
|
34
36
|
Provides-Extra: test
|
|
35
37
|
Requires-Dist: pytest; extra == "test"
|
|
@@ -37,6 +39,8 @@ Dynamic: license-file
|
|
|
37
39
|
|
|
38
40
|
# teareduce
|
|
39
41
|
|
|
42
|
+
[](https://badge.fury.io/py/teareduce)
|
|
43
|
+
|
|
40
44
|
Utilities for astronomical data reduction.
|
|
41
45
|
|
|
42
46
|
This package is not intended to be a general-purpose image reduction code. It
|
|
@@ -11,34 +11,34 @@ teareduce/numsplines.py,sha256=1PpG-frdc9Qz3VRbC7XyZFWKmhus05ID4REtFnWDmUo,8049
|
|
|
11
11
|
teareduce/peaks_spectrum.py,sha256=XLMbJZnyYDVSaa5nCMXk9kSn0fyG_lhVmXWHzTwehiA,9878
|
|
12
12
|
teareduce/polfit.py,sha256=CGsrRsz_Du2aKxOcgXi36lpAZO04JyqCCUaxhC0C-Mk,14281
|
|
13
13
|
teareduce/robust_std.py,sha256=dk1G3VgiplZzmSfL7qWniEZ-5c3novHnBpRPCM77u84,1084
|
|
14
|
-
teareduce/sdistortion.py,sha256=
|
|
14
|
+
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
|
-
teareduce/statsummary.py,sha256=
|
|
18
|
-
teareduce/version.py,sha256=
|
|
19
|
-
teareduce/wavecal.py,sha256=
|
|
17
|
+
teareduce/statsummary.py,sha256=vtM0ZtKI1-uw6zZyNwDkBGDS_hOdBcFCtpMzdSrLwIw,5418
|
|
18
|
+
teareduce/version.py,sha256=BmttN-OFIHBPLpMVvra9qYVBs5IgEuSYtkX_lx5o5Mg,419
|
|
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
|
|
22
22
|
teareduce/cleanest/__init__.py,sha256=1rcfu97uqj3R-OZbU9HHLYaTzWkS-poRFBBy8nuH7p4,547
|
|
23
|
-
teareduce/cleanest/__main__.py,sha256=
|
|
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=6Qlc4A-PlFj_2gEwAX8_6xkacrAjsetORe_BCA5EawQ,80965
|
|
27
|
+
teareduce/cleanest/definitions.py,sha256=LkU5AaL49TZH3N3ke84ilRmH2ev2Naf9Bi8SpMaPIpo,7780
|
|
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
|
|
31
31
|
teareduce/cleanest/imagedisplay.py,sha256=m8wmQ7CSDywABxkra2G4dFD06CVP1KvIYIdnZqoVdrI,5871
|
|
32
|
-
teareduce/cleanest/interpolate.py,sha256=
|
|
32
|
+
teareduce/cleanest/interpolate.py,sha256=eB9pVkEyJsNorKKV4Dx-j0UldBV6bgWSQBosYkaxNKM,7073
|
|
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=
|
|
37
|
-
teareduce/cleanest/lacosmicpad.py,sha256=
|
|
36
|
+
teareduce/cleanest/interpolationeditor.py,sha256=89xMDrCrPtKykdePHv1clHHqV24T0lfNsgC0QrpUtKY,20604
|
|
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
|
-
teareduce/cleanest/parametereditor.py,sha256=
|
|
41
|
-
teareduce/cleanest/reviewcosmicray.py,sha256=
|
|
40
|
+
teareduce/cleanest/parametereditor.py,sha256=XvJuvwhkeGyqZHESz0rdkAydBqnJQmKP2YwUz1H4bzE,41818
|
|
41
|
+
teareduce/cleanest/reviewcosmicray.py,sha256=e0tpyHAPwr_F8arcFGvT-s9cOXJBFfTdsWfYgcEu_mU,40559
|
|
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.6.dist-info/licenses/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
50
|
+
teareduce-0.6.6.dist-info/METADATA,sha256=ft_m9sDNfyHZF_9SLIOlMVSx6nNY6pcTMQM4HJHg4mw,3826
|
|
51
|
+
teareduce-0.6.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
52
|
+
teareduce-0.6.6.dist-info/entry_points.txt,sha256=6yBvig5jTL2ugqz5SF767AiszzrHKGRASsX1II84kqA,66
|
|
53
|
+
teareduce-0.6.6.dist-info/top_level.txt,sha256=7OkwtX9zNRkGJ7ACgjk4ESgC74qUYcS5O2qcO0v-Si4,10
|
|
54
|
+
teareduce-0.6.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|