Example #1
0
 def setup(self):
     system = WESTSystem()
     system.bin_mapper = RectilinearBinMapper([[0.0, 1.0, 2.0]])
     system.bin_target_counts = numpy.array([4, 4])
     system.pcoord_len = 2
     self.we_driver = WEDriver(system=system)
     self.system = system
     self._seg_id = 0
Example #2
0
 def setup(self):
     system = WESTSystem()
     system.bin_mapper = RectilinearBinMapper([[0.0, 1.0, 2.0]])
     system.bin_target_counts = numpy.array([4,4])
     system.pcoord_len = 2
     self.we_driver = WEDriver(system=system)
     self.system = system
     self._seg_id = 0
Example #3
0
    def test_merge_by_weight(self):
        selected_counts = {0: 0, 1: 0}
        alpha = 0.01
        nrounds = 1000
        from scipy.stats import binom
        # lower and upper bounds of 95% CI for selecting the segment with weight 1/3
        lb = binom.ppf(alpha / 2.0, nrounds, 1.0 / 3.0)
        ub = binom.ppf(1.0 - alpha / 2.0, nrounds, 1.0 / 3.0)

        system = WESTSystem()
        system.bin_mapper = RectilinearBinMapper([[0.0, 1.0]])
        system.bin_target_counts = numpy.array([1])
        system.pcoord_len = 2
        self.we_driver = WEDriver(system=system)
        self.system = system
        self._seg_id = 0

        segments = [
            Segment(n_iter=1,
                    seg_id=0,
                    pcoord=numpy.array([[0], [0.25]], dtype=numpy.float32),
                    weight=1.0 / 3.0),
            Segment(n_iter=1,
                    seg_id=1,
                    pcoord=numpy.array([[0], [0.75]], dtype=numpy.float32),
                    weight=2.0 / 3.0)
        ]

        for _iround in xrange(nrounds):
            for segment in segments:
                segment.endpoint_type = Segment.SEG_ENDPOINT_UNSET

            self.we_driver.new_iteration()
            self.we_driver.assign(segments)
            self.we_driver.construct_next()

            assert len(self.we_driver.next_iter_binning[0]) == 1
            newseg = self.we_driver.next_iter_binning[0].pop()

            assert segments[
                newseg.
                parent_id].endpoint_type == Segment.SEG_ENDPOINT_CONTINUES
            assert segments[
                ~newseg.parent_id].endpoint_type == Segment.SEG_ENDPOINT_MERGED

            selected_counts[newseg.parent_id] += 1

        print(selected_counts)
        assert lb <= selected_counts[0] <= ub, (
            'Incorrect proportion of histories selected.'
            'this is expected about {:%} of the time; retry test.'.format(
                alpha))
Example #4
0
 def test_merge_by_weight(self):
     selected_counts = {0: 0, 1: 0}
     alpha = 0.01
     nrounds = 1000
     from scipy.stats import binom
     # lower and upper bounds of 95% CI for selecting the segment with weight 1/3
     lb = binom.ppf(alpha/2.0, nrounds, 1.0/3.0)
     ub = binom.ppf(1.0-alpha/2.0, nrounds, 1.0/3.0)
     
     system = WESTSystem()
     system.bin_mapper = RectilinearBinMapper([[0.0, 1.0]])
     system.bin_target_counts = numpy.array([1])
     system.pcoord_len = 2
     self.we_driver = WEDriver(system=system)
     self.system = system
     self._seg_id = 0
     
     segments = [Segment(n_iter=1, seg_id=0, pcoord=numpy.array([[0],[0.25]], dtype=numpy.float32),weight=1.0/3.0),
                 Segment(n_iter=1, seg_id=1, pcoord=numpy.array([[0],[0.75]], dtype=numpy.float32),weight=2.0/3.0)]
     
     for _iround in xrange(nrounds):
         for segment in segments:
             segment.endpoint_type = Segment.SEG_ENDPOINT_UNSET
             
         self.we_driver.new_iteration()
         self.we_driver.assign(segments)
         self.we_driver.construct_next()
         
         assert len(self.we_driver.next_iter_binning[0]) == 1
         newseg = self.we_driver.next_iter_binning[0].pop()
         
         assert segments[newseg.parent_id].endpoint_type == Segment.SEG_ENDPOINT_CONTINUES
         assert segments[~newseg.parent_id].endpoint_type == Segment.SEG_ENDPOINT_MERGED
         
         selected_counts[newseg.parent_id] += 1
         
     print(selected_counts)
     assert lb <= selected_counts[0] <= ub, ('Incorrect proportion of histories selected.'
                                             'this is expected about {:%} of the time; retry test.'.format(alpha))