def test_truncated(): lower = 0.01 upper = 0.01 reject = TruncatedOutlierRejector(lower, upper) size = (9, 9, 9) ninvalid = 5 nforeground = 20 mean = 20 def assert_is_correct(data, mask): ( invalid, foreground, background, background_used, background_valid, ) = assert_basic_mask_is_correct(mask, ninvalid, nforeground) ntot = len(background_valid) i0 = int(lower * ntot / 2.0) i1 = int(upper * ntot / 2.0) nexp = ntot - i1 - i0 assert len(background_used) == nexp index_exp = sorted(mask.select(background_valid), key=lambda x: data[x])[i0:i1] assert all(ii == jj for ii, jj in zip(index_exp, background_used)) for i in range(10): data, mask = generate_shoebox(size, mean, nforeground, ninvalid) reject(data, mask) assert_is_correct(data, mask)
def __init__(self): from dials.algorithms.background.simple import TruncatedOutlierRejector self.lower = 0.01 self.upper = 0.01 self.reject = TruncatedOutlierRejector(self.lower, self.upper) self.size = (9,9,9) self.ninvalid = 5 self.nforeground = 20 self.mean = 20
def run(self): from dials.algorithms.background.simple import Creator from dials.algorithms.background.simple import Constant2dModeller from dials.algorithms.background.simple import TruncatedOutlierRejector from dials.algorithms.background.simple import NSigmaOutlierRejector from dials.algorithms.background.simple import NormalOutlierRejector modeller = Constant2dModeller() outlier_rejector = [ None, TruncatedOutlierRejector(0.01, 0.01), NSigmaOutlierRejector(3.0, 3.0), NormalOutlierRejector(10), ] for rejector in outlier_rejector: self.tst(Creator(modeller, rejector))
def select_rejector(): if outlier == 'null': return None elif outlier == 'truncated': return TruncatedOutlierRejector(kwargs.get("lower", 0.01), kwargs.get("upper", 0.01)) elif outlier == 'nsigma': return NSigmaOutlierRejector(kwargs.get("lower", 3), kwargs.get("upper", 3)) elif outlier == 'normal': return NormalOutlierRejector(kwargs.get("min_pixels", 10)) elif outlier == 'plane': return MosflmOutlierRejector(kwargs.get("fraction", 1.0), kwargs.get("n_sigma", 4.0)) elif outlier == 'tukey': return TukeyOutlierRejector(kwargs.get("lower", 1.5), kwargs.get("upper", 1.5)) raise RuntimeError("Unexpected outlier rejector: %s" % outlier)
def select_rejector(): if outlier == "null": return None elif outlier == "truncated": return TruncatedOutlierRejector(kwargs.get("lower", 0.01), kwargs.get("upper", 0.01)) elif outlier == "nsigma": return NSigmaOutlierRejector(kwargs.get("lower", 3), kwargs.get("upper", 3)) elif outlier == "normal": return NormalOutlierRejector(kwargs.get("min_pixels", 10)) elif outlier == "plane": return MosflmOutlierRejector(kwargs.get("fraction", 1.0), kwargs.get("n_sigma", 4.0)) elif outlier == "tukey": return TukeyOutlierRejector(kwargs.get("lower", 1.5), kwargs.get("upper", 1.5)) raise RuntimeError(f"Unexpected outlier rejector: {outlier}")