Exemple #1
0
def test_contrast_stretching():
    data = np.arange(100)
    assert contrast_stretching(data, 1, 99) == (1, 99)
    assert contrast_stretching(data, 1.0, 99.0) == (1, 99)
    assert contrast_stretching(data, '1th', '99th') == (0.99, 98.01)
    assert contrast_stretching(data, '0.05th', '99.95th') == (0.0495, 98.9505)
    # vmin, vmax are to set in conftest.py
    assert contrast_stretching(data, None, None) == (0.0, 99.0)
Exemple #2
0
 def optimize_contrast(self, data):
     if (self._vmin_user is not None and self._vmax_user is not None):
         return
     if np.issubdtype(data.dtype, complex):
         data = np.log(np.abs(data))
     self._vmin_auto, self._vmax_auto = utils.contrast_stretching(
         data, self.saturated_pixels)
 def _convert_tia_single_item(self, item, suffix=''):
     original_data = item.data.copy()
     for extension in self.extension_list:
         item.data = original_data
         if extension in ['jpg', 'jpeg'] and self.contrast_streching:
             if isinstance(item, hs.signals.Signal1D):
                 return
             vmin, vmax = contrast_stretching(
                 item.data, self.saturated_pixels)
             item.data = self.stretch_contrast(item.data, vmin, vmax)
         if extension in ['tif', 'tiff']:
             if isinstance(item, hs.signals.Signal1D):
                 return
             self._set_convenient_scale(item)
             if self.normalisation:
                 # dirty workaround to read tif file in imagej and dm...
                 item.data = self.normalise(item.data)
                 item.data *= np.iinfo(np.int32).max
                 item.change_dtype(np.int32)
         self.fname_ext = ''.join([os.path.splitext(self.fname)[0], suffix,
                                   '.', extension])
         if os.path.exists(self.fname_ext) and self.overwrite is None:
             write_answer = self._ask_confirmation_overwrite()
             self._save_data(item, overwrite=write_answer)
         # workaround, currently hyperspy doesn't write file is
         # overwrite=False
         elif not os.path.exists(self.fname_ext):
             self._save_data(item)
         else:
             self._save_data(item, overwrite=self.overwrite)
Exemple #4
0
    def _calculate_vmin_max(self,
                            data,
                            auto_contrast=False,
                            vmin=None,
                            vmax=None):
        # Calculate vmin and vmax using `utils.contrast_stretching` when:
        # - auto_contrast is True
        # - self.vmin or self.vmax is of tpye str
        if (auto_contrast and
            (isinstance(self.vmin, str) or isinstance(self.vmax, str))):
            with ignore_warning(category=RuntimeWarning):
                # In case of "All-NaN slices"
                vmin, vmax = utils.contrast_stretching(data, self.vmin,
                                                       self.vmax)
        else:
            vmin, vmax = self._vmin_numeric, self._vmax_numeric
        # provided vmin, vmax override the calculated value
        if isinstance(vmin, (int, float)):
            vmin = vmin
        if isinstance(vmax, (int, float)):
            vmax = vmax
        if vmin == np.nan:
            vmin = None
        if vmax == np.nan:
            vmax = None

        return vmin, vmax
Exemple #5
0
 def optimize_contrast(self, data):
     if (self._vmin_user is not None and self._vmax_user is not None):
         return
     if np.issubdtype(data.dtype, complex):
         data = np.log(np.abs(data))
     self._vmin_auto, self._vmax_auto = utils.contrast_stretching(
         data, self.saturated_pixels)
Exemple #6
0
 def optimize_contrast(self, data):
     if (self._vmin_user is not None and self._vmax_user is not None):
         return
     with ignore_warning(category=RuntimeWarning):
         # In case of "All-NaN slices"
         vmin, vmax = utils.contrast_stretching(data, self.saturated_pixels)
     if vmin == np.nan:
         vmin = None
     if vmax == np.nan:
         vmax = None
     self._vmin_auto, self._vmax_auto = vmin, vmax
Exemple #7
0
 def convert(self):
     original_data = self.s.data.copy()
     for extension in self.extension_list:
         self.s.data = original_data
         if extension in ['jpg', 'jpeg'] and self.contrast_streching:
             vmin, vmax = contrast_stretching(self.s.data,
                                              self.saturated_pixels)
             self.s.data = self.normalise(self.s.data, vmin, vmax)
         self.fname_ext = ''.join(
             [os.path.splitext(self.fname)[0], '.', extension])
         if os.path.exists(self.fname_ext) and self.overwrite is None:
             write_answer = self._ask_confirmation_overwrite()
             self._save_data(self.s, overwrite=write_answer)
         # workaround, currently hyperspy doesn't write file is
         # overwrite=False
         elif not os.path.exists(self.fname_ext):
             self._save_data(self.s)
         else:
             self._save_data(self.s, overwrite=self.overwrite)
 def convert(self):
     original_data = self.s.data.copy()
     for extension in self.extension_list:
         self.s.data = original_data
         if extension in ['jpg', 'jpeg'] and self.contrast_streching:
             vmin, vmax = contrast_stretching(self.s.data,
                                              self.saturated_pixels)
             self.s.data = self.normalise(self.s.data, vmin, vmax)
         self.fname_ext = ''.join([os.path.splitext(self.fname)[0], '.',
                                   extension])
         if os.path.exists(self.fname_ext) and self.overwrite is None:
             write_answer = self._ask_confirmation_overwrite()
             self._save_data(self.s, overwrite=write_answer)
         # workaround, currently hyperspy doesn't write file is
         # overwrite=False
         elif not os.path.exists(self.fname_ext):
             self._save_data(self.s)
         else:
             self._save_data(self.s, overwrite=self.overwrite)
Exemple #9
0
 def _convert_tia_single_item(self, item, suffix=''):
     if self.correct_cfeg_fluctuation:
         item = correct_intensity(item)
     original_data = item.data.copy()
     for extension in self.extension_list:
         item.data = original_data
         if extension in ['jpg', 'jpeg'] and self.contrast_streching:
             if isinstance(item, hs.signals.Signal1D):
                 return
             vmin, vmax = contrast_stretching(
                 item.data, f"{self.saturated_pixels/2}th",
                 f'{100-self.saturated_pixels/2}th')
             item.data = self.stretch_contrast(item.data, vmin, vmax)
             item.data = self.normalise(item.data)
             item.data *= np.iinfo(np.uint8).max
             item.change_dtype(np.uint8)
         if extension in ['tif', 'tiff']:
             if isinstance(item, hs.signals.Signal1D):
                 return
             try:
                 # TODO: improve this
                 self._set_convenient_scale(item)
             except:
                 pass
             if self.normalisation:
                 # dirty workaround to read tif file in imagej and dm...
                 item.data = self.normalise(item.data)
                 item.data *= np.iinfo(np.int32).max
                 item.change_dtype(np.int32)
         dname, fname = os.path.split(self.fname)
         if self.use_subfolder:
             dname = os.path.join(dname, extension)
         fname = os.path.join(dname, os.path.splitext(fname)[0])
         self.fullfname = f'{fname}{suffix}.{extension}'
         if os.path.exists(self.fullfname) and self.overwrite is None:
             write_answer = self._ask_confirmation_overwrite()
             self._save_data(item, overwrite=write_answer)
         # workaround, currently hyperspy doesn't write file is
         # overwrite=False
         elif not os.path.exists(self.fullfname):
             self._save_data(item)
         else:
             self._save_data(item, overwrite=self.overwrite)
 def test_out_of_range(self):
     with pytest.raises(ValueError):
         contrast_stretching(self.data, -1)
 def test_nans(self):
     data = self.data[:-1]
     bounds = contrast_stretching(self.data, 1)
     assert bounds == (np.percentile(data, 0.5), np.percentile(data, 99.5))
 def test_no_nans(self, value):
     data = self.data[:-1]
     bounds = contrast_stretching(data, value[0], value[1])
     assert bounds == (np.percentile(data, 0.5), np.percentile(data, 99.5))
Exemple #13
0
 def test_out_of_range(self):
     contrast_stretching(self.data, -1)
Exemple #14
0
 def test_out_of_range(self):
     with pytest.raises(ValueError):
         contrast_stretching(self.data, -1)
Exemple #15
0
 def optimize_contrast(self, data):
     if (self._vmin_user is not None and self._vmax_user is not None):
         return
     self._vmin_auto, self._vmax_auto = utils.contrast_stretching(
         data, self.saturated_pixels)
Exemple #16
0
 def test_out_of_range(self):
     contrast_stretching(self.data, -1)
Exemple #17
0
 def test_nans(self):
     data = self.data[:-1]
     bounds = contrast_stretching(self.data, 1)
     nose.tools.assert_tuple_equal(bounds, (
         np.percentile(data, 0.5),
         np.percentile(data, 99.5)))
Exemple #18
0
 def optimize_contrast(self, data):
     if (self._vmin_user is not None and self._vmax_user is not None):
         return
     self._vmin_auto, self._vmax_auto = utils.contrast_stretching(
         data, self.saturated_pixels)
Exemple #19
0
 def test_nans(self):
     data = self.data[:-1]
     bounds = contrast_stretching(self.data, 1)
     nose.tools.assert_tuple_equal(
         bounds, (np.percentile(data, 0.5), np.percentile(data, 99.5)))
Exemple #20
0
 def test_nans(self):
     data = self.data[:-1]
     bounds = contrast_stretching(self.data, 1)
     assert bounds == (
         np.percentile(data, 0.5),
         np.percentile(data, 99.5))