def setUp(self):
     # we can not load the fixtures once, because the MUSSetDefault
     # is not readonly
     load_catalog()
     self.homogeniser = Homogeniser()
     self.homogeniser.set_scales(native="mb", target="MS")
     self.i = 0
Пример #2
0
    def test_different_configs(self):
        h**o = Homogeniser("mb", "MS")
        h**o.set_criteria(C(agency__in=["ISC", "BJI"]))
        h**o.set_selector(selection.Precise)
        h**o.add_model(LinearModel)
        self._plot_and_assert(h**o, 'first')

        h**o.set_criteria(C(before=datetime.now()))
        ranking = {"ML": ["ISC", "IDC"], "mb": ["ISC", "FUNV"]}
        h**o.set_selector(selection.AgencyRanking, ranking=ranking)
        h**o.set_scales("ML", "mb")
        h**o.add_model(PolynomialModel, order=2)
        self._plot_and_assert(h**o, 'second')

        h**o.set_criteria(
            C(between=(datetime(2010, 2, 28, 4, 11), datetime.now())) &
            C(agency__in=["NIED", "IDC"]) & C(scale__in=["ML", "mb"]))
        h**o.set_selector(selection.Precise)
        h**o.set_missing_uncertainty_strategy(selection.MUSSetDefault,
                                              default=0.2)
        h**o.reset_models()
        h**o.add_model(LinearModel)
        h**o.add_model(PolynomialModel, order=3)
        self._plot_and_assert(h**o, 'fourth')

        polygon = 'POLYGON((127.40 30.24, 144.36 49.96, 150.22 34.78))'
        h**o.set_criteria(C(within_polygon=polygon))
        h**o.set_missing_uncertainty_strategy(selection.MUSSetEventMaximum)
        self._plot_and_assert(h**o, 'third')

        point = 'POINT(138.80 33.80)'
        distance = 10000000
        h**o.set_criteria(C(within_distance_from_point=[point, distance]))
        h**o.set_missing_uncertainty_strategy(selection.MUSDiscard)
        self._plot_and_assert(h**o, 'fifth')
class AnHomogeniserShould(unittest.TestCase):

    def setUp(self):
        # we can not load the fixtures once, because the MUSSetDefault
        # is not readonly
        load_catalog()
        self.homogeniser = Homogeniser()
        self.homogeniser.set_scales(native="mb", target="MS")
        self.i = 0

    def _write_and_check(self):
        self.homogeniser.serialize(ACTUAL_OUTPUT[self.i])
        self.assertTrue(path.exists(in_data_dir(ACTUAL_OUTPUT[self.i])))
        self.i = self.i + 1

    def test_homogenise_easily(self):
        self.homogeniser.add_model(LinearModel)
        self.homogeniser.add_model(PolynomialModel, order=2)

        self._write_and_check()

    def test_homogenise_different_scales(self):
        self.homogeniser.set_criteria()
        self.homogeniser.set_scales(native="mb", target="MS")
        self.homogeniser.set_missing_uncertainty_strategy(
            selection.MUSSetDefault, default=0.2)
        self.homogeniser.add_model(LinearModel)
        self._write_and_check()

    def test_filter(self):
        self.homogeniser.set_criteria(
            C(agency__in=["ISC", "GCMT"]) & C(magnitude__gt=5.5))

        self.assertEqual(7, len(self.homogeniser.measures()))

        self.assertEqual(set([
            "Event 14342120 from EventSource ISC Bulletin",
            "Event 17273456 from EventSource ISC Bulletin",
            "Event 14357818 from EventSource ISC Bulletin"]),
            set([str(e) for e in self.homogeniser.events()]))

        self.assertEqual(set([u'17273456', u'14342120', u'14357818']),
                         set(self.homogeniser.grouped_measures().keys()))

        self.homogeniser.set_criteria(C(scale__in=["Mw", "mb"]))
        self.assertEqual(17, len(self.homogeniser.events()))
        self.assertEqual(97, len(self.homogeniser.measures()))
        self.assertEqual(17, len(self.homogeniser.grouped_measures().keys()))
        self.assertEqual(0, len(self.homogeniser.selected_native_measures()))

    def test_set_different_mus(self):
        self.homogeniser.set_scales(native="mb", target="Mw")
        self.assertEqual(18, len(self.homogeniser.events()))
        self.assertEqual(334, len(self.homogeniser.measures()))
        self.assertEqual(18, len(self.homogeniser.grouped_measures().keys()))
        self.assertEqual(0, len(self.homogeniser.selected_native_measures()))

        self.homogeniser.set_missing_uncertainty_strategy(
            selection.MUSSetDefault, default=1)
        self.assertEqual(18, len(self.homogeniser.events()))
        self.assertEqual(334, len(self.homogeniser.measures()))
        self.assertEqual(18, len(self.homogeniser.grouped_measures().keys()))
        self.assertEqual(1, len(self.homogeniser.selected_native_measures()))

    def test_group_differently(self):
        self.assertEqual(18, len(self.homogeniser.grouped_measures().keys()))
        self.homogeniser.set_grouper(
            grouping.GroupMeasuresByHierarchicalClustering,
            args={'t': 1000})
        self.assertEqual(14, len(self.homogeniser.grouped_measures().keys()))

    def test_select_differently(self):
        self.homogeniser.set_selector(selection.AgencyRanking,
                                      ranking={'mb': ['ISC']})
        self.assertEqual(14, len(self.homogeniser.selected_native_measures()))
        self.homogeniser.set_selector(selection.Precise)
        self.assertEqual(14, len(self.homogeniser.selected_native_measures()))

    def test_homogenise_after_different_setup_sequences_1(self):
        self.homogeniser.set_scales(native="MS", target="MW")
        self.homogeniser.set_criteria(C(magnitude__gt=4))
        self.homogeniser.set_grouper(
            grouping.GroupMeasuresByHierarchicalClustering,
            args={'t': 100})
        self.homogeniser.set_selector(selection.Precise)
        self.homogeniser.set_missing_uncertainty_strategy(
            selection.MUSSetDefault, default=1)

        self.assertTrue(len(self.homogeniser.selected_native_measures()) > 1)
        self.assertTrue(len(self.homogeniser.selected_target_measures()) > 1)

        self.homogeniser.add_model(LinearModel)
        self._write_and_check()

    def test_homogenise_after_different_setup_sequences_2(self):
        self.homogeniser.set_scales(native="MS", target="MW")
        self.homogeniser.set_grouper(
            grouping.GroupMeasuresByHierarchicalClustering,
            args={'t': 100})
        self.homogeniser.set_criteria(C(magnitude__gt=4))
        self.homogeniser.set_selector(selection.Precise)
        self.homogeniser.set_missing_uncertainty_strategy(
            selection.MUSSetDefault, default=1)

        self.assertTrue(len(self.homogeniser.selected_native_measures()) > 1)
        self.assertTrue(len(self.homogeniser.selected_target_measures()) > 1)

        self.homogeniser.add_model(LinearModel)
        self._write_and_check()

    def tearDown(self):
        models.CatalogueDatabase().session.commit()
 def setUp(self):
     load_catalog()
     self.homogeniser = Homogeniser()
     self.homogeniser.set_scales(native="mb", target="MS")
     self.i = 0