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))
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))
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)
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)
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)
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
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
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
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)