teareduce 0.5.3__py3-none-any.whl → 0.5.5__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.
@@ -19,6 +19,7 @@ from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolb
19
19
  import numpy as np
20
20
  from rich import print
21
21
 
22
+ from .centerchildparent import center_on_parent
22
23
  from .definitions import MAX_PIXEL_DISTANCE_TO_CR
23
24
  from .imagedisplay import ImageDisplay
24
25
  from .interpolation_a import interpolation_a
@@ -30,15 +31,27 @@ from ..sliceregion import SliceRegion2D
30
31
  from ..zscale import zscale
31
32
 
32
33
  import matplotlib
34
+
33
35
  matplotlib.use("TkAgg")
34
36
 
35
37
 
36
38
  class ReviewCosmicRay(ImageDisplay):
37
39
  """Class to review suspected cosmic ray pixels."""
38
40
 
39
- def __init__(self, root, data, auxdata, cleandata_lacosmic, cr_labels, num_features,
40
- first_cr_index=1, single_cr=False,
41
- last_dilation=None, last_npoints=None, last_degree=None):
41
+ def __init__(
42
+ self,
43
+ root,
44
+ data,
45
+ auxdata,
46
+ cleandata_lacosmic,
47
+ cr_labels,
48
+ num_features,
49
+ first_cr_index=1,
50
+ single_cr=False,
51
+ last_dilation=None,
52
+ last_npoints=None,
53
+ last_degree=None,
54
+ ):
42
55
  """Initialize the review window.
43
56
 
44
57
  Parameters
@@ -133,9 +146,13 @@ class ReviewCosmicRay(ImageDisplay):
133
146
  self.root.title("Review Cosmic Rays")
134
147
  self.auxdata = auxdata
135
148
  if self.auxdata is not None:
136
- self.root.geometry("1200x700+100+100")
149
+ # self.root.geometry("1000x700+100+100") # This does not work in Fedora
150
+ self.root.minsize(1000, 700)
137
151
  else:
138
- self.root.geometry("800x700+100+100")
152
+ # self.root.geometry("800x700+100+100") # This does not work in Fedora
153
+ self.root.minsize(800, 700)
154
+ self.root.update_idletasks()
155
+ self.root.geometry("+100+100")
139
156
  self.data = data
140
157
  self.cleandata_lacosmic = cleandata_lacosmic
141
158
  self.data_original = data.copy()
@@ -149,22 +166,25 @@ class ReviewCosmicRay(ImageDisplay):
149
166
  self.last_dilation = last_dilation
150
167
  # Make a copy of the original labels to allow pixel re-marking
151
168
  self.cr_labels_original = self.cr_labels.copy()
152
- print(f"Number of cosmic ray pixels detected..: {np.sum(self.cr_labels > 0)}")
153
- print(f"Number of cosmic rays (grouped pixels): {self.num_features}")
169
+ sdum = str(np.sum(self.cr_labels > 0))
170
+ print(f"Number of cosmic ray pixels detected..: {sdum}")
171
+ print(f"Number of cosmic rays (grouped pixels): {self.num_features:>{len(sdum)}}")
154
172
  if self.num_features == 0:
155
- print('No CR hits found!')
173
+ print("No CR hits found!")
156
174
  else:
157
175
  self.cr_index = first_cr_index
158
176
  self.single_cr = single_cr
159
177
  self.create_widgets()
178
+ center_on_parent(child=self.root, parent=self.root.master, offset_x=50, offset_y=50)
160
179
 
161
180
  def create_widgets(self):
162
181
  """Create the GUI widgets for the review window."""
163
182
  # Row 1 of buttons
164
183
  self.button_frame1 = tk.Frame(self.root)
165
184
  self.button_frame1.pack(pady=5)
166
- self.ndeg_label = tk.Button(self.button_frame1, text=f"Npoints={self.npoints}, Degree={self.degree}",
167
- command=self.set_ndeg)
185
+ self.ndeg_label = tk.Button(
186
+ self.button_frame1, text=f"Npoints={self.npoints}, Degree={self.degree}", command=self.set_ndeg
187
+ )
168
188
  self.ndeg_label.pack(side=tk.LEFT, padx=5)
169
189
  self.remove_crosses_button = tk.Button(self.button_frame1, text="remove all x's", command=self.remove_crosses)
170
190
  self.remove_crosses_button.pack(side=tk.LEFT, padx=5)
@@ -190,14 +210,13 @@ class ReviewCosmicRay(ImageDisplay):
190
210
  # the function is trying to deactivate the buttons before they are created, which
191
211
  # would lead to an error; in addition, since I have two buttons calling the same function
192
212
  # with different arguments, using lambda allows to differentiate them)
193
- self.interp_s_button = tk.Button(self.button_frame2, text="[s]urface interp.",
194
- command=lambda: self.interp_a('surface'))
213
+ self.interp_s_button = tk.Button(
214
+ self.button_frame2, text="[s]urface interp.", command=lambda: self.interp_a("surface")
215
+ )
195
216
  self.interp_s_button.pack(side=tk.LEFT, padx=5)
196
- self.interp_d_button = tk.Button(self.button_frame2, text="me[d]ian",
197
- command=lambda: self.interp_a('median'))
217
+ self.interp_d_button = tk.Button(self.button_frame2, text="me[d]ian", command=lambda: self.interp_a("median"))
198
218
  self.interp_d_button.pack(side=tk.LEFT, padx=5)
199
- self.interp_m_button = tk.Button(self.button_frame2, text="[m]ean",
200
- command=lambda: self.interp_a('mean'))
219
+ self.interp_m_button = tk.Button(self.button_frame2, text="[m]ean", command=lambda: self.interp_a("mean"))
201
220
  self.interp_m_button.pack(side=tk.LEFT, padx=5)
202
221
  self.interp_l_button = tk.Button(self.button_frame2, text="[l]acosmic", command=self.use_lacosmic)
203
222
  self.interp_l_button.pack(side=tk.LEFT, padx=5)
@@ -225,10 +244,9 @@ class ReviewCosmicRay(ImageDisplay):
225
244
 
226
245
  # Figure
227
246
  if self.auxdata is not None:
228
- self.fig, (self.ax_aux, self.ax) = plt.subplots(
229
- ncols=2, figsize=(10, 5), constrained_layout=True)
247
+ self.fig, (self.ax_aux, self.ax) = plt.subplots(ncols=2, figsize=(11, 5.5), constrained_layout=True)
230
248
  else:
231
- self.fig, self.ax = plt.subplots(figsize=(8, 5), constrained_layout=True)
249
+ self.fig, self.ax = plt.subplots(figsize=(8, 5.5), constrained_layout=True)
232
250
  self.canvas = FigureCanvasTkAgg(self.fig, master=self.root)
233
251
  self.canvas.get_tk_widget().pack(padx=5, pady=5)
234
252
  # The next two instructions prevent a segmentation fault when pressing "q"
@@ -236,7 +254,8 @@ class ReviewCosmicRay(ImageDisplay):
236
254
  self.canvas.mpl_connect("key_press_event", self.on_key)
237
255
  self.canvas.mpl_connect("button_press_event", self.on_click)
238
256
  self.canvas_widget = self.canvas.get_tk_widget()
239
- self.canvas_widget.pack(fill=tk.BOTH, expand=True)
257
+ # self.canvas_widget.pack(fill=tk.BOTH, expand=True) # This does not work in Fedora
258
+ self.canvas_widget.pack(expand=True)
240
259
 
241
260
  # Matplotlib toolbar
242
261
  self.toolbar_frame = tk.Frame(self.root)
@@ -258,16 +277,17 @@ class ReviewCosmicRay(ImageDisplay):
258
277
  ycr_list, xcr_list = np.where(self.cr_labels == self.cr_index)
259
278
  ycr_list_original, xcr_list_original = np.where(self.cr_labels_original == self.cr_index)
260
279
  if self.first_plot:
261
- print(f"Cosmic ray {self.cr_index}: "
262
- f"Number of pixels = {len(xcr_list)}, "
263
- f"Centroid = ({np.mean(xcr_list)+1:.2f}, {np.mean(ycr_list)+1:.2f})")
280
+ print(
281
+ f"Cosmic ray {self.cr_index}: "
282
+ f"Number of pixels = {len(xcr_list)}, "
283
+ f"Centroid = ({np.mean(xcr_list)+1:.2f}, {np.mean(ycr_list)+1:.2f})"
284
+ )
264
285
  # Use original positions to define the region to display in order
265
286
  # to avoid image shifts when some pixels are unmarked or new ones are marked
266
287
  i0 = int(np.mean(ycr_list_original) + 0.5)
267
288
  j0 = int(np.mean(xcr_list_original) + 0.5)
268
289
  max_distance_from_center = np.max(
269
- [np.max(np.abs(ycr_list_original - i0)),
270
- np.max(np.abs(xcr_list_original - j0))]
290
+ [np.max(np.abs(ycr_list_original - i0)), np.max(np.abs(xcr_list_original - j0))]
271
291
  )
272
292
  semiwidth = int(np.max([max_distance_from_center, MAX_PIXEL_DISTANCE_TO_CR]))
273
293
  jmin = j0 - semiwidth if j0 - semiwidth >= 0 else 0
@@ -283,22 +303,35 @@ class ReviewCosmicRay(ImageDisplay):
283
303
  imax = np.min([2 * semiwidth, self.data.shape[0] - 1])
284
304
  elif imax == self.data.shape[0] - 1:
285
305
  imin = np.max([0, self.data.shape[0] - 1 - 2 * semiwidth])
286
- self.region = SliceRegion2D(f'[{jmin+1}:{jmax+1}, {imin+1}:{imax+1}]', mode='fits').python
306
+ self.region = SliceRegion2D(f"[{jmin+1}:{jmax+1}, {imin+1}:{imax+1}]", mode="fits").python
287
307
  self.ax.clear()
288
308
  vmin = self.get_vmin()
289
309
  vmax = self.get_vmax()
290
- xlabel = 'X pixel (from 1 to NAXIS1)'
291
- ylabel = 'Y pixel (from 1 to NAXIS2)'
292
- self.image, _, _ = imshow(self.fig, self.ax, self.data[self.region], colorbar=False,
293
- xlabel=xlabel, ylabel=ylabel,
294
- vmin=vmin, vmax=vmax)
310
+ xlabel = "X pixel (from 1 to NAXIS1)"
311
+ ylabel = "Y pixel (from 1 to NAXIS2)"
312
+ self.image, _, _ = imshow(
313
+ self.fig,
314
+ self.ax,
315
+ self.data[self.region],
316
+ colorbar=False,
317
+ xlabel=xlabel,
318
+ ylabel=ylabel,
319
+ vmin=vmin,
320
+ vmax=vmax,
321
+ )
295
322
  self.image.set_extent([jmin + 0.5, jmax + 1.5, imin + 0.5, imax + 1.5])
296
323
  if self.auxdata is not None:
297
324
  self.ax_aux.clear()
298
- self.image_aux, _, _ = imshow(self.fig, self.ax_aux, self.auxdata[self.region],
299
- colorbar=False,
300
- xlabel=xlabel, ylabel=ylabel,
301
- vmin=vmin, vmax=vmax)
325
+ self.image_aux, _, _ = imshow(
326
+ self.fig,
327
+ self.ax_aux,
328
+ self.auxdata[self.region],
329
+ colorbar=False,
330
+ xlabel=xlabel,
331
+ ylabel=ylabel,
332
+ vmin=vmin,
333
+ vmax=vmax,
334
+ )
302
335
  self.image_aux.set_extent([jmin + 0.5, jmax + 1.5, imin + 0.5, imax + 1.5])
303
336
  self.ax_aux.set_title("Auxiliary data")
304
337
  # Overplot cosmic ray pixels
@@ -308,10 +341,10 @@ class ReviewCosmicRay(ImageDisplay):
308
341
  xcr += 1 # from index to pixel
309
342
  ycr += 1 # from index to pixel
310
343
  if cleaned:
311
- self.ax.plot(xcr, ycr, 'C1o', markersize=4)
344
+ self.ax.plot(xcr, ycr, "C1o", markersize=4)
312
345
  else:
313
- self.ax.plot([xcr - 0.5, xcr + 0.5], [ycr + 0.5, ycr - 0.5], 'r-')
314
- self.ax.plot([xcr - 0.5, xcr + 0.5], [ycr - 0.5, ycr + 0.5], 'r-')
346
+ self.ax.plot([xcr - 0.5, xcr + 0.5], [ycr + 0.5, ycr - 0.5], "r-")
347
+ self.ax.plot([xcr - 0.5, xcr + 0.5], [ycr - 0.5, ycr + 0.5], "r-")
315
348
  self.ax.set_xlim(xlim)
316
349
  self.ax.set_ylim(ylim)
317
350
  self.ax.set_title(f"Cosmic ray #{self.cr_index}/{self.num_features}")
@@ -321,12 +354,12 @@ class ReviewCosmicRay(ImageDisplay):
321
354
 
322
355
  def set_ndeg(self):
323
356
  """Set the number of points and degree for interpolation."""
324
- new_npoints = simpledialog.askinteger("Set Npoints", "Enter Npoints:",
325
- initialvalue=self.npoints, minvalue=1)
357
+ new_npoints = simpledialog.askinteger("Set Npoints", "Enter Npoints:", initialvalue=self.npoints, minvalue=1)
326
358
  if new_npoints is None:
327
359
  return
328
- new_degree = simpledialog.askinteger("Set degree", "Enter Degree (min=0):",
329
- initialvalue=self.degree, minvalue=0)
360
+ new_degree = simpledialog.askinteger(
361
+ "Set degree", "Enter Degree (min=0):", initialvalue=self.degree, minvalue=0
362
+ )
330
363
  if new_degree is None:
331
364
  return
332
365
  self.degree = new_degree
@@ -357,14 +390,14 @@ class ReviewCosmicRay(ImageDisplay):
357
390
  cr_labels=self.cr_labels,
358
391
  cr_index=self.cr_index,
359
392
  npoints=self.npoints,
360
- degree=self.degree
393
+ degree=self.degree,
361
394
  )
362
395
  if interpolation_performed:
363
396
  self.num_cr_cleaned += 1
364
397
  self.set_buttons_after_cleaning_cr()
365
398
  self.update_display(cleaned=interpolation_performed)
366
399
  if len(xfit_all) > 0:
367
- self.ax.plot(np.array(xfit_all) + 1, np.array(yfit_all) + 1, 'mo', markersize=4) # +1: from index to pixel
400
+ self.ax.plot(np.array(xfit_all) + 1, np.array(yfit_all) + 1, "mo", markersize=4) # +1: from index to pixel
368
401
  self.canvas.draw_idle()
369
402
 
370
403
  def interp_y(self):
@@ -379,14 +412,14 @@ class ReviewCosmicRay(ImageDisplay):
379
412
  cr_labels=self.cr_labels,
380
413
  cr_index=self.cr_index,
381
414
  npoints=self.npoints,
382
- degree=self.degree
415
+ degree=self.degree,
383
416
  )
384
417
  if interpolation_performed:
385
418
  self.num_cr_cleaned += 1
386
419
  self.set_buttons_after_cleaning_cr()
387
420
  self.update_display(cleaned=interpolation_performed)
388
421
  if len(xfit_all) > 0:
389
- self.ax.plot(np.array(xfit_all) + 1, np.array(yfit_all) + 1, 'mo', markersize=4) # +1: from index to pixel
422
+ self.ax.plot(np.array(xfit_all) + 1, np.array(yfit_all) + 1, "mo", markersize=4) # +1: from index to pixel
390
423
  self.canvas.draw_idle()
391
424
 
392
425
  def interp_a(self, method):
@@ -404,14 +437,14 @@ class ReviewCosmicRay(ImageDisplay):
404
437
  cr_labels=self.cr_labels,
405
438
  cr_index=self.cr_index,
406
439
  npoints=self.npoints,
407
- method=method
440
+ method=method,
408
441
  )
409
442
  if interpolation_performed:
410
443
  self.num_cr_cleaned += 1
411
444
  self.set_buttons_after_cleaning_cr()
412
445
  self.update_display(cleaned=interpolation_performed)
413
446
  if len(xfit_all) > 0:
414
- self.ax.plot(np.array(xfit_all) + 1, np.array(yfit_all) + 1, 'mo', markersize=4) # +1: from index to pixel
447
+ self.ax.plot(np.array(xfit_all) + 1, np.array(yfit_all) + 1, "mo", markersize=4) # +1: from index to pixel
415
448
  self.canvas.draw_idle()
416
449
 
417
450
  def use_lacosmic(self):
@@ -510,39 +543,39 @@ class ReviewCosmicRay(ImageDisplay):
510
543
 
511
544
  def on_key(self, event):
512
545
  """Handle key press events."""
513
- if event.key == 'q':
546
+ if event.key == "q":
514
547
  pass # Ignore the "q" key to prevent closing the window
515
- elif event.key == 'r':
548
+ elif event.key == "r":
516
549
  if self.restore_cr_button.cget("state") != "disabled":
517
550
  self.restore_cr()
518
- elif event.key == 'x':
551
+ elif event.key == "x":
519
552
  if self.interp_x_button.cget("state") != "disabled":
520
553
  self.interp_x()
521
- elif event.key == 'y':
554
+ elif event.key == "y":
522
555
  if self.interp_y_button.cget("state") != "disabled":
523
556
  self.interp_y()
524
- elif event.key == 's':
557
+ elif event.key == "s":
525
558
  if self.interp_s_button.cget("state") != "disabled":
526
- self.interp_a('surface')
527
- elif event.key == 'd':
559
+ self.interp_a("surface")
560
+ elif event.key == "d":
528
561
  if self.interp_d_button.cget("state") != "disabled":
529
- self.interp_a('median')
530
- elif event.key == 'm':
562
+ self.interp_a("median")
563
+ elif event.key == "m":
531
564
  if self.interp_m_button.cget("state") != "disabled":
532
- self.interp_a('mean')
533
- elif event.key == 'l':
565
+ self.interp_a("mean")
566
+ elif event.key == "l":
534
567
  if self.interp_l_button.cget("state") != "disabled":
535
568
  self.use_lacosmic()
536
- elif event.key == 'a':
569
+ elif event.key == "a":
537
570
  if self.interp_aux_button.cget("state") != "disabled":
538
571
  self.use_auxdata()
539
- elif event.key == 'right' or event.key == 'c':
572
+ elif event.key == "right" or event.key == "c":
540
573
  self.continue_cr()
541
- elif event.key == ',':
574
+ elif event.key == ",":
542
575
  self.set_minmax()
543
- elif event.key == '/':
576
+ elif event.key == "/":
544
577
  self.set_zscale()
545
- elif event.key == 'e':
578
+ elif event.key == "e":
546
579
  self.exit_review()
547
580
  return # important: do not remove (to avoid errors)
548
581
  else:
@@ -552,8 +585,8 @@ class ReviewCosmicRay(ImageDisplay):
552
585
  """Handle mouse click events on the image."""
553
586
  if event.inaxes == self.ax:
554
587
  x, y = event.xdata, event.ydata
555
- ix = int(x+0.5) - 1 # from pixel to index
556
- iy = int(y+0.5) - 1 # from pixel to index
588
+ ix = int(x + 0.5) - 1 # from pixel to index
589
+ iy = int(y + 0.5) - 1 # from pixel to index
557
590
  if int(self.cr_labels[iy, ix]) == self.cr_index:
558
591
  self.cr_labels[iy, ix] = 0
559
592
  print(f"Pixel ({ix+1}, {iy+1}) unmarked as cosmic ray.")
teareduce/version.py CHANGED
@@ -9,7 +9,7 @@
9
9
  #
10
10
  """Module to define the version of the teareduce package."""
11
11
 
12
- VERSION = '0.5.3'
12
+ VERSION = '0.5.5'
13
13
 
14
14
 
15
15
  def main():
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: teareduce
3
- Version: 0.5.3
3
+ Version: 0.5.5
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
@@ -15,33 +15,35 @@ teareduce/sdistortion.py,sha256=5ZsZn4vD5Sw2aoqO8-NIOH7H89Zmh7ZDkow6YbAotHU,5916
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=VTNAnBV8z6suqiyB2Lhw3YjUUOjlmwUPX3enkOKRF54,5422
18
- teareduce/version.py,sha256=PhV5vwOfjd2-SjStecfYtye4EUgepCl7-M0rx5QAJA0,419
18
+ teareduce/version.py,sha256=x8qFVHj0LWtGzf-qBtcwzyAnbALRdsIJ4c4C_GQISJc,419
19
19
  teareduce/wavecal.py,sha256=2MewWz5Y3ms41c305UtWOM_LaLNdk1mugDXCtzf-fSw,68586
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=3O-eptEAQareN504tLALMrJVQPGCuBx7YTfQGqMKjmc,205
23
- teareduce/cleanest/__main__.py,sha256=mobw6PW6JauOBKt-0eNvUH0UCC_D-AjrbTlzfAu7joY,1732
24
- teareduce/cleanest/cleanest.py,sha256=tf1RdKRZfSXkGXbMVkN-Y0eudFb_XUfCl8Va2mJ0kK8,5070
25
- teareduce/cleanest/cosmicraycleanerapp.py,sha256=gYP9KaueOPaUX2iLnHZc5rWBeiAm8u-2Lxl3t83KBls,36409
26
- teareduce/cleanest/definitions.py,sha256=pcq0gk_EnDVkRfatWseQvRIyF445jIarICkuWIW3oqE,2343
23
+ teareduce/cleanest/__main__.py,sha256=_wXGgwq62ete5-DlNDsKkZP0kATAVFVwTVrG9EspkU8,3298
24
+ teareduce/cleanest/centerchildparent.py,sha256=wHxOvNrrQ-KBLZAbtQ9bJAxYhGOzqYBF4LgdIQk7UF8,1285
25
+ teareduce/cleanest/cleanest.py,sha256=hDC_3jF9ovHCX8IRAPe9eEGFWt_LeVI5rzS7atK7oWI,5025
26
+ teareduce/cleanest/cosmicraycleanerapp.py,sha256=C-lGOREVXrlaqJsjEuJ66xVNx0z8axXq5f5GQh9dpMA,41226
27
+ teareduce/cleanest/definitions.py,sha256=HLv41cuhUOUyEicRHea0LRTv4Wagm24miSxFt4cZN3g,2546
27
28
  teareduce/cleanest/dilatemask.py,sha256=I5tHAv5VEO6V0Wed8Ar20uLt4F9P-tgjmLL5BAaFvgM,1276
28
29
  teareduce/cleanest/find_closest_true.py,sha256=mWdIvhipzAXDRKfePDrP7f0lP4U48cckpHiKwiB4jHI,1320
29
- teareduce/cleanest/imagedisplay.py,sha256=4FhoRcyskj_F6gaza4U37sLODpe-Sud3sunM8_-p5iY,5877
30
- teareduce/cleanest/interpolation_a.py,sha256=upbfZBU0i7YyXR4EJj-WdnMkWbajgDbnUDvJaoLAeEg,4039
30
+ teareduce/cleanest/imagedisplay.py,sha256=820Vn-Q0bJyHicOBsxDmfAZxuGOFepEEsm0LTxlPJjc,5848
31
+ teareduce/cleanest/interpolation_a.py,sha256=zE4VIrC41vapf0Vx9qmh1oacw2qkJwcuMnV3JpSDW8Y,4007
31
32
  teareduce/cleanest/interpolation_x.py,sha256=D5hKbobT6lJk18XktP3PXhzEN12zqed6U18yfQ-reLQ,3744
32
33
  teareduce/cleanest/interpolation_y.py,sha256=O6yw5nKKlTdV6qsP1Ku6CwGhXB6o3j0_YQirXyILi8c,3759
33
- teareduce/cleanest/interpolationeditor.py,sha256=F5_FyOLHgtvoan22Lfaoa9j-kdKrygaQARi1SYsDfPA,8179
34
- teareduce/cleanest/parametereditor.py,sha256=wfl1Zem_FI02YAVawq8r1FLGz5dXB5-S8RF1d_v6ZEQ,12495
35
- teareduce/cleanest/reviewcosmicray.py,sha256=tL1iutMrWlp0Ep5eDnuXlBPaIsFgYzy_c7BGU8_Gcd0,27775
34
+ teareduce/cleanest/interpolationeditor.py,sha256=EksuNwKOM79MyGlAgxb9j-v7pIFXV8QOcyZDLVQlQjU,13221
35
+ teareduce/cleanest/modalprogressbar.py,sha256=9anz3js_y_9JLjPyA7XxEsLpVwuMN_CTlnQnhf7m3uo,6355
36
+ teareduce/cleanest/parametereditor.py,sha256=IdaX6_VPicwnYw3dvRA0tKoTZYb6Gp-AZB5ksFClv1o,13390
37
+ teareduce/cleanest/reviewcosmicray.py,sha256=_qO9ifkAMqB4Wuvq2wIYZ8_DUniB2lWcxn9l404hXnY,28210
36
38
  teareduce/cookbook/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
39
  teareduce/cookbook/get_cookbook_file.py,sha256=vde-iNii2lm1QII8GmLRsFsKNxkdsd7njCBE-8Z7io0,1088
38
40
  teareduce/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
41
  teareduce/tests/test_cleanest.py,sha256=0uiun1Uloh3rt5ppkv1aG04KUbOJvYZ9C5BvqNizLuI,5562
40
42
  teareduce/tests/test_sliceregion.py,sha256=S7Zoh2eEBFIEbfsXgWBEMCf7pottjw2oLhqlZJQkAwg,3785
41
43
  teareduce/tests/test_version.py,sha256=mKLnbXyvVNc1pATq5PxR8qeoFMPAFL_GilFV6IHLOi0,172
42
- teareduce-0.5.3.dist-info/licenses/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
43
- teareduce-0.5.3.dist-info/METADATA,sha256=4CHBLx7SPJxE9Yh6gaxL5dpfxPkqH-g5DFcucCNzn9k,3113
44
- teareduce-0.5.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
45
- teareduce-0.5.3.dist-info/entry_points.txt,sha256=6yBvig5jTL2ugqz5SF767AiszzrHKGRASsX1II84kqA,66
46
- teareduce-0.5.3.dist-info/top_level.txt,sha256=7OkwtX9zNRkGJ7ACgjk4ESgC74qUYcS5O2qcO0v-Si4,10
47
- teareduce-0.5.3.dist-info/RECORD,,
44
+ teareduce-0.5.5.dist-info/licenses/LICENSE.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
45
+ teareduce-0.5.5.dist-info/METADATA,sha256=MIifKnlyWPEQyuxUG3OaqqRnydUaE7JYhcBIB-XDu7Q,3113
46
+ teareduce-0.5.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
47
+ teareduce-0.5.5.dist-info/entry_points.txt,sha256=6yBvig5jTL2ugqz5SF767AiszzrHKGRASsX1II84kqA,66
48
+ teareduce-0.5.5.dist-info/top_level.txt,sha256=7OkwtX9zNRkGJ7ACgjk4ESgC74qUYcS5O2qcO0v-Si4,10
49
+ teareduce-0.5.5.dist-info/RECORD,,