Пример #1
0
def test_sigma_clipped_stats():
    """Test list data with input mask or mask_value (#3268)."""
    # test list data with mask
    data = [0, 1]
    mask = np.array([True, False])
    result = sigma_clipped_stats(data, mask=mask)
    # Check that the result of np.ma.median was converted to a scalar
    assert isinstance(result[1], float)
    assert result == (1., 1., 0.)

    result2 = sigma_clipped_stats(data, mask=mask, axis=0)
    assert_equal(result, result2)

    # test list data with mask_value
    result = sigma_clipped_stats(data, mask_value=0.)
    assert isinstance(result[1], float)
    assert result == (1., 1., 0.)

    # test without mask
    data = [0, 2]
    result = sigma_clipped_stats(data)
    assert isinstance(result[1], float)
    assert result == (1., 1., 1.)

    _data = np.arange(10)
    data = np.ma.MaskedArray([_data, _data, 10 * _data])
    mean = sigma_clip(data, axis=0, sigma=1).mean(axis=0)
    assert_equal(mean, _data)
    mean, median, stddev = sigma_clipped_stats(data, axis=0, sigma=1)
    assert_equal(mean, _data)
    assert_equal(median, _data)
    assert_equal(stddev, np.zeros_like(_data))
Пример #2
0
def test_sigma_clipped_stats():
    """Test list data with input mask or mask_value (#3268)."""
    # test list data with mask
    data = [0, 1]
    mask = np.array([True, False])
    result = sigma_clipped_stats(data, mask=mask)
    # Check that the result of np.ma.median was converted to a scalar
    assert isinstance(result[1], float)
    assert result == (1., 1., 0.)

    result2 = sigma_clipped_stats(data, mask=mask, axis=0)
    assert_equal(result, result2)

    # test list data with mask_value
    result = sigma_clipped_stats(data, mask_value=0.)
    assert isinstance(result[1], float)
    assert result == (1., 1., 0.)

    # test without mask
    data = [0, 2]
    result = sigma_clipped_stats(data)
    assert isinstance(result[1], float)
    assert result == (1., 1., 1.)

    _data = np.arange(10)
    data = np.ma.MaskedArray([_data, _data, 10 * _data])
    mean = sigma_clip(data, axis=0, sigma=1).mean(axis=0)
    assert_equal(mean, _data)
    mean, median, stddev = sigma_clipped_stats(data, axis=0, sigma=1)
    assert_equal(mean, _data)
    assert_equal(median, _data)
    assert_equal(stddev, np.zeros_like(_data))
Пример #3
0
def test_sigma_clipped_stats_ddof():
    with NumpyRNGContext(12345):
        data = np.random.randn(10000)
        data[10] = 1.e5
        mean1, median1, stddev1 = sigma_clipped_stats(data)
        mean2, median2, stddev2 = sigma_clipped_stats(data, std_ddof=1)
        assert mean1 == mean2
        assert median1 == median2
        assert_allclose(stddev1, 0.98156805711673156)
        assert_allclose(stddev2, 0.98161731654802831)
Пример #4
0
def test_sigma_clipped_stats_ddof():
    with NumpyRNGContext(12345):
        data = np.random.randn(10000)
        data[10] = 1.e5
        mean1, median1, stddev1 = sigma_clipped_stats(data)
        mean2, median2, stddev2 = sigma_clipped_stats(data, std_ddof=1)
        assert mean1 == mean2
        assert median1 == median2
        assert_allclose(stddev1, 0.98156805711673156)
        assert_allclose(stddev2, 0.98161731654802831)
Пример #5
0
def test_sigma_clippped_stats_all_masked():
    """
    Test sigma_clipped_stats when the input array is completely masked.
    """

    arr = np.ma.MaskedArray(np.arange(10), mask=True)
    result = sigma_clipped_stats(arr)
    assert result == (np.ma.masked, np.ma.masked, np.ma.masked)

    arr = np.ma.MaskedArray(np.zeros(10), mask=False)
    result = sigma_clipped_stats(arr, mask_value=0.)
    assert result == (np.ma.masked, np.ma.masked, np.ma.masked)

    arr = np.ma.MaskedArray(np.arange(10), mask=False)
    mask = arr < 20
    result = sigma_clipped_stats(arr, mask=mask)
    assert result == (np.ma.masked, np.ma.masked, np.ma.masked)
Пример #6
0
def measureFwhm(data):
    bkg = sep.Background(data)
    thresh = 3 * bkg.globalrms
    objects = sep.extract(data - bkg, thresh)
    fwhm = 2. * np.sqrt(np.log(2.) * (objects['a']**2 + objects['b']**2))
    mask = np.where(objects['peak'] < 40000)
    fwhm = fwhm[mask]
    if len(fwhm) > 3:
        mean, median, std = sigma_clipped_stats(fwhm, sigma=2.5, iters=10)
        return median, std
    return 0.0, 0.0
Пример #7
0
def measureHfd(data):
    bkg = sep.Background(data)
    thresh = 3 * bkg.globalrms
    objects = sep.extract(data - bkg, thresh)
    # taken from g-tecs autoFocus.py
    hfr, mask = sep.flux_radius(data,
                                objects['x'],
                                objects['y'],
                                30 * np.ones_like(objects['x']),
                                0.5,
                                normflux=objects['cflux'])
    mask = np.logical_and(mask == 0, objects['peak'] < 40000)
    hfd = 2 * hfr[mask]
    if hfd.size > 3:
        mean, median, std = sigma_clipped_stats(hfd, sigma=2.5, iters=10)
        return median, std
    return 0.0, 0.0
Пример #8
0
def measureHfd(img):
    data = fits.open(img)[0].data
    y, x = data.shape
    xcen = int(x / 2)
    ycen = int(y / 2)
    # grab the middle 2k x 2k
    stats_area = np.array(data[ycen-1024: ycen+1024, \
                               xcen-1024: xcen+1024]).astype(np.int32).copy(order='C')
    bkg = sep.Background(stats_area)
    thresh = 3 * bkg.globalrms
    objects = sep.extract(stats_area - bkg, thresh)
    # taken from g-tecs autoFocus.py
    hfr, mask = sep.flux_radius(stats_area,
                                objects['x'],
                                objects['y'],
                                30 * np.ones_like(objects['x']),
                                0.5,
                                normflux=objects['cflux'])
    mask = np.logical_and(mask == 0, objects['peak'] < 40000)
    hfd = 2 * hfr[mask]
    if hfd.size > 3:
        mean, median, std = sigma_clipped_stats(hfd, sigma=2.5, iters=10)
        return median, std
    return 0.0, 0.0
Пример #9
0
def test_sigma_clippped_stats_unit():
    data = np.array([1, 1]) * u.kpc
    result = sigma_clipped_stats(data)
    assert result == (1. * u.kpc, 1. * u.kpc, 0. * u.kpc)