예제 #1
0
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)
예제 #2
0
 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
예제 #3
0
    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))
예제 #4
0
 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)
예제 #5
0
파일: algorithm.py 프로젝트: rjgildea/dials
 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}")