def test_nsigma(): lower = 3.0 upper = 3.0 reject = NSigmaOutlierRejector(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) subdata = data.select(background_valid) mv = flex.mean_and_variance(subdata) m = mv.mean() s = mv.unweighted_sample_standard_deviation() p0 = m - lower * s p1 = m + upper * s mask = (subdata >= p0) & (subdata <= p1) exp = background_valid.select(mask) assert len(exp) == len(background_used) assert all(ii == jj for ii, jj in zip(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 NSigmaOutlierRejector self.lower = 3.0 self.upper = 3.0 self.reject = NSigmaOutlierRejector(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}")