Esempio n. 1
0
 def test_manual_zero_limit(self):
     # Regression test for a bug that caused ManualInterval to compute the
     # limit (min or max) if it was set to zero.
     interval = ManualInterval(vmin=0, vmax=0)
     vmin, vmax = interval.get_limits(self.data)
     np.testing.assert_allclose(vmin, 0)
     np.testing.assert_allclose(vmax, 0)
Esempio n. 2
0
    def test_implicit_autoscale(self):
        norm = ImageNormalize(vmin=None,
                              vmax=10.,
                              stretch=SqrtStretch(),
                              clip=False)
        norm2 = ImageNormalize(DATA,
                               interval=ManualInterval(None, 10),
                               stretch=SqrtStretch(),
                               clip=False)
        output = norm(DATA)
        assert norm.vmin == np.min(DATA)
        assert norm.vmax == 10.
        assert_allclose(output, norm2(DATA))

        norm = ImageNormalize(vmin=2.,
                              vmax=None,
                              stretch=SqrtStretch(),
                              clip=False)
        norm2 = ImageNormalize(DATA,
                               interval=ManualInterval(2, None),
                               stretch=SqrtStretch(),
                               clip=False)
        output = norm(DATA)
        assert norm.vmin == 2.
        assert norm.vmax == np.max(DATA)
        assert_allclose(output, norm2(DATA))
Esempio n. 3
0
 def test_manual_defaults_with_nan(self):
     interval = ManualInterval()
     data = np.copy(self.data)
     data[0] = np.nan
     vmin, vmax = interval.get_limits(self.data)
     np.testing.assert_allclose(vmin, -20)
     np.testing.assert_allclose(vmax, +60)
Esempio n. 4
0
 def test_manual_defaults_with_nan(self):
     interval = ManualInterval()
     data = np.copy(self.data)
     data[0] = np.nan
     vmin, vmax = interval.get_limits(self.data)
     np.testing.assert_allclose(vmin, -20)
     np.testing.assert_allclose(vmax, +60)
Esempio n. 5
0
 def test_manual_zero_limit(self):
     # Regression test for a bug that caused ManualInterval to compute the
     # limit (min or max) if it was set to zero.
     interval = ManualInterval(vmin=0, vmax=0)
     vmin, vmax = interval.get_limits(self.data)
     np.testing.assert_allclose(vmin, 0)
     np.testing.assert_allclose(vmax, 0)
Esempio n. 6
0
    def test_manual_defaults(self):

        interval = ManualInterval(vmin=-10.)
        vmin, vmax = interval.get_limits(self.data)
        np.testing.assert_allclose(vmin, -10.)
        np.testing.assert_allclose(vmax, np.max(self.data))

        interval = ManualInterval(vmax=15.)
        vmin, vmax = interval.get_limits(self.data)
        np.testing.assert_allclose(vmin, np.min(self.data))
        np.testing.assert_allclose(vmax, 15.)
Esempio n. 7
0
 def test_scalar(self):
     norm = ImageNormalize(vmin=2., vmax=10., stretch=SqrtStretch(),
                           clip=True)
     norm2 = ImageNormalize(data=6, interval=ManualInterval(2, 10),
                            stretch=SqrtStretch(), clip=True)
     assert_allclose(norm(6), 0.70710678)
     assert_allclose(norm(6), norm2(6))
Esempio n. 8
0
 def test_clip(self):
     norm = ImageNormalize(vmin=2., vmax=10., stretch=SqrtStretch(),
                           clip=True)
     norm2 = ImageNormalize(DATA, interval=ManualInterval(2, 10),
                            stretch=SqrtStretch(), clip=True)
     output = norm(DATA)
     expected = [0., 0.35355339, 0.70710678, 0.93541435, 1., 1.]
     assert_allclose(output, expected)
     assert_allclose(output.mask, [0, 0, 0, 0, 0, 0])
     assert_allclose(output, norm2(DATA))
Esempio n. 9
0
 def test_masked_clip(self):
     mdata = ma.array(DATA, mask=[0, 0, 1, 0, 0, 0])
     norm = ImageNormalize(vmin=2., vmax=10., stretch=SqrtStretch(),
                           clip=True)
     norm2 = ImageNormalize(mdata, interval=ManualInterval(2, 10),
                            stretch=SqrtStretch(), clip=True)
     output = norm(mdata)
     expected = [0., 0.35355339, 1., 0.93541435, 1., 1.]
     assert_allclose(output.filled(-10), expected)
     assert_allclose(output.mask, [0, 0, 0, 0, 0, 0])
     assert_allclose(output, norm2(mdata))
Esempio n. 10
0
 def test_noclip(self):
     norm = ImageNormalize(vmin=2., vmax=10., stretch=SqrtStretch(),
                           clip=False)
     norm2 = ImageNormalize(DATA, interval=ManualInterval(2, 10),
                            stretch=SqrtStretch(), clip=False)
     output = norm(DATA)
     expected = [np.nan, 0.35355339, 0.70710678, 0.93541435, 1.11803399,
                 1.27475488]
     assert_allclose(output, expected)
     assert_allclose(output.mask, [0, 0, 0, 0, 0, 0])
     assert_allclose(norm.inverse(norm(DATA))[1:], DATA[1:])
     assert_allclose(output, norm2(DATA))
Esempio n. 11
0
    def test_masked_noclip(self):
        mdata = ma.array(DATA, mask=[0, 0, 1, 0, 0, 0])
        norm = ImageNormalize(vmin=2., vmax=10., stretch=SqrtStretch(),
                              clip=False)
        norm2 = ImageNormalize(mdata, interval=ManualInterval(2, 10),
                               stretch=SqrtStretch(), clip=False)
        output = norm(mdata)
        expected = [np.nan, 0.35355339, -10, 0.93541435, 1.11803399,
                    1.27475488]
        assert_allclose(output.filled(-10), expected)
        assert_allclose(output.mask, [0, 0, 1, 0, 0, 0])

        assert_allclose(norm.inverse(norm(DATA))[1:], DATA[1:])
        assert_allclose(output, norm2(mdata))
Esempio n. 12
0
    def test_manual_defaults(self):

        interval = ManualInterval(vmin=-10.)
        vmin, vmax = interval.get_limits(self.data)
        np.testing.assert_allclose(vmin, -10.)
        np.testing.assert_allclose(vmax, np.max(self.data))

        interval = ManualInterval(vmax=15.)
        vmin, vmax = interval.get_limits(self.data)
        np.testing.assert_allclose(vmin, np.min(self.data))
        np.testing.assert_allclose(vmax, 15.)
Esempio n. 13
0
def simple_norm(data,
                stretch='linear',
                power=1.0,
                asinh_a=0.1,
                log_a=1000,
                min_cut=None,
                max_cut=None,
                min_percent=None,
                max_percent=None,
                percent=None,
                clip=True):

    if percent is not None:
        interval = PercentileInterval(percent)
    elif min_percent is not None or max_percent is not None:
        interval = AsymmetricPercentileInterval(min_percent or 0., max_percent
                                                or 100.)
    elif min_cut is not None or max_cut is not None:
        interval = ManualInterval(min_cut, max_cut)
    else:
        interval = MinMaxInterval()

    if stretch == 'linear':
        stretch = LinearStretch()
    elif stretch == 'sqrt':
        stretch = SqrtStretch()
    elif stretch == 'power':
        stretch = PowerStretch(power)
    elif stretch == 'log':
        stretch = LogStretch(log_a)
    elif stretch == 'asinh':
        stretch = AsinhStretch(asinh_a)
    else:
        raise ValueError('Unknown stretch: {0}.'.format(stretch))

    vmin, vmax = interval.get_limits(data)

    return ImageNormalize(vmin=vmin, vmax=vmax, stretch=stretch, clip=clip)
Esempio n. 14
0
 def test_manual(self):
     interval = ManualInterval(-10., +15.)
     vmin, vmax = interval.get_limits(self.data)
     np.testing.assert_allclose(vmin, -10.)
     np.testing.assert_allclose(vmax, +15.)
Esempio n. 15
0
 def test_manual(self):
     interval = ManualInterval(-10., +15.)
     vmin, vmax = interval.get_limits(self.data)
     np.testing.assert_allclose(vmin, -10.)
     np.testing.assert_allclose(vmax, +15.)