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.
@@ -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("The 'teareduce.cleanest' module requires the 'PyCosmic' package.\n"
26
- "Please install this module using:\n"
27
- "`pip install git+https://github.com/nicocardiel/PyCosmic.git@test`"
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 DeepCR",
377
+ text="Run deepCR",
376
378
  command=self.run_deepcr,
377
- help_text="Run the DeepCR algorithm to detect cosmic rays in the image.",
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 DeepCR cleaned data
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 DeepCR to detect cosmic rays."""
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 DeepCR...[/bold green]")
1202
- # Initialize the DeepCR model
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 DeepCR probability threshold (0.0 - 1.0):",
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. DeepCR detection skipped!")
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 DeepCR version: {deepCR.__version__} (please wait...)", end="")
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 DeepCR cleaned data.\n\n" "Enter Dilation (min=0):",
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. DeepCR detection skipped!")
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 DeepCR cleaned data if dilation applied
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=1,
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
- "lacosmic": "lacosmic",
139
- "pycosmic": "pycosmic",
140
- "deepcr": "deepcr",
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 DeepCR, if available.
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 DeepCR, if available.
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 == "lacosmic":
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 == "pycosmic":
191
+ elif interp_method == "PyCosmic":
192
192
  if self.cleandata_pycosmic is None:
193
193
  state = "disabled"
194
- # Skip replace by DeepCR values if cleandata_deepcr is not available
195
- elif interp_method == "deepcr":
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 ["lacosmic", "pycosmic", "deepcr", "auxdata"]:
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 DeepCR.
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 DeepCR.
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.cr_index = first_cr_index
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="[l]acosmic",
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 DeepCR interpolation for the current cosmic ray.",
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
- print(
498
- f"Cosmic ray {self.cr_index}: "
499
- f"Number of pixels = {len(xcr_list)}, "
500
- f"Centroid = ({np.mean(xcr_list)+1:.2f}, {np.mean(ycr_list)+1:.2f})"
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.ax.set_title(f"Cosmic ray #{self.cr_index}/{self.num_features}")
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 DeepCR cleaned data to clean a cosmic ray."""
760
+ """Use deepCR cleaned data to clean a cosmic ray."""
749
761
  if self.cleandata_deepcr is None:
750
- print("DeepCR cleaned data not available.")
762
+ print("deepCR cleaned data not available.")
751
763
  return
752
- print(f"DeepCR interpolation of cosmic ray {self.cr_index}")
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 cosmic ray.")
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 cosmic ray.")
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
@@ -9,7 +9,7 @@
9
9
  #
10
10
  """Module to define the version of the teareduce package."""
11
11
 
12
- VERSION = '0.6.6'
12
+ VERSION = '0.6.8'
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.6.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
- [![Teareduce's PyPI version](https://badge.fury.io/py/teareduce.svg)](https://badge.fury.io/py/teareduce)
42
+ [![Teareduce's PyPI version](https://badge.fury.io/py/teareduce.svg?kill_cache=1)](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.5.9
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=BmttN-OFIHBPLpMVvra9qYVBs5IgEuSYtkX_lx5o5Mg,419
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=6Qlc4A-PlFj_2gEwAX8_6xkacrAjsetORe_BCA5EawQ,80965
27
- teareduce/cleanest/definitions.py,sha256=LkU5AaL49TZH3N3ke84ilRmH2ev2Naf9Bi8SpMaPIpo,7780
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=89xMDrCrPtKykdePHv1clHHqV24T0lfNsgC0QrpUtKY,20604
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=e0tpyHAPwr_F8arcFGvT-s9cOXJBFfTdsWfYgcEu_mU,40559
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.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,,
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,,