LALBurst 2.0.7.1-eeff03c
snglcoinc_coincrates_verify.py
Go to the documentation of this file.
1from numpy.testing import assert_allclose
2import sys
3import unittest
4import warnings
5
6from lalburst import snglcoinc
7
8
9# FIXME: make this more strict when we can rely on a new-enough scipy
10rtol = 1e-3
11def assertDictEqual(x, y, rtol = rtol):
12 # keys are the same
13 assert set(x) == set(y)
14 # values are the same
15 for key in x:
16 assert abs((x[key] - y[key]) / x[key]) <= rtol
17
18
19class TestCoincRates(unittest.TestCase):
21 rates = snglcoinc.CoincRates(("H1", "L1", "V1"), 0.005, 1)
22 self.assertSetEqual(
23 set(rates.all_instrument_combos),
24 {frozenset(['H1']),
25 frozenset(['L1']),
26 frozenset(['V1']),
27 frozenset(['H1', 'L1']),
28 frozenset(['H1', 'V1']),
29 frozenset(['L1', 'V1']),
30 frozenset(['H1', 'L1', 'V1'])},
31 )
32
33 rates = snglcoinc.CoincRates(("H1", "L1", "V1"), 0.005, 2)
34 self.assertSetEqual(
35 set(rates.all_instrument_combos),
36 {frozenset(['H1', 'L1']),
37 frozenset(['H1', 'V1']),
38 frozenset(['L1', 'V1']),
39 frozenset(['H1', 'L1', 'V1'])},
40 )
41
43 rates = snglcoinc.CoincRates(("H1", "L1", "V1"), 0.005, 2)
44 crates = rates.coinc_rates(H1=0.001, L1=0.002, V1=0.003)
45 expected = {
46 frozenset(['H1', 'L1']): 6.00513846088957e-08,
47 frozenset(['H1', 'V1']): 1.9372787960306537e-07,
48 frozenset(['L1', 'V1']): 3.77380092200718e-07,
49 frozenset(['H1', 'L1', 'V1']): 1.0125819710267318e-11,
50 }
51 for key in crates:
52 assert_allclose(crates[key], expected[key], rtol = rtol)
53
54 crates = rates.coinc_rates(H1=0.001, L1=0.002, V1=0.002)
55 expected = {
56 frozenset(['H1', 'L1']): 6.00513846088957e-08,
57 frozenset(['H1', 'V1']): 1.291519197353769e-07,
58 frozenset(['L1', 'V1']): 2.5158672813381197e-07,
59 frozenset(['H1', 'L1', 'V1']): 6.750546473511545e-12,
60 }
61 for key in crates:
62 assert_allclose(crates[key], expected[key], rtol = rtol)
63
64 crates = rates.coinc_rates(H1=0.001, L1=0.002, V1=0.001)
65 expected = {
66 frozenset(['H1', 'L1']): 6.00513846088957e-08,
67 frozenset(['H1', 'V1']): 6.457595986768845e-08,
68 frozenset(['L1', 'V1']): 1.2579336406690598e-07,
69 frozenset(['H1', 'L1', 'V1']): 3.3752732367557724e-12,
70 }
71 for key in crates:
72 assert_allclose(crates[key], expected[key], rtol = rtol)
73
75 rates = snglcoinc.CoincRates(("H1", "L1", "V1"), 0.005, 2)
76 scrates = rates.strict_coinc_rates(H1=0.001, L1=0.002, V1=0.003)
77 expected = {
78 frozenset(['H1', 'L1']): 6.004125878918543e-08,
79 frozenset(['H1', 'V1']): 1.937177537833551e-07,
80 frozenset(['L1', 'V1']): 3.7736996638100773e-07,
81 frozenset(['H1', 'L1', 'V1']): 1.0125819710267318e-11,
82 }
83 for key in scrates:
84 assert_allclose(scrates[key], expected[key], rtol = rtol)
85
86 scrates = rates.strict_coinc_rates(H1=0.001, L1=0.002, V1=0.002)
87 expected = {
88 frozenset(['H1', 'L1']): 6.004463406242219e-08,
89 frozenset(['H1', 'V1']): 1.2914516918890337e-07,
90 frozenset(['L1', 'V1']): 2.5157997758733847e-07,
91 frozenset(['H1', 'L1', 'V1']): 6.750546473511545e-12,
92 }
93 for key in scrates:
94 assert_allclose(scrates[key], expected[key], rtol = rtol)
95
96 scrates = rates.strict_coinc_rates(H1=0.001, L1=0.002, V1=0.001)
97 expected = {
98 frozenset(['H1', 'L1']): 6.004800933565894e-08,
99 frozenset(['H1', 'V1']): 6.457258459445168e-08,
100 frozenset(['L1', 'V1']): 1.2578998879366924e-07,
101 frozenset(['H1', 'L1', 'V1']): 3.3752732367557724e-12,
102 }
103 for key in scrates:
104 assert_allclose(scrates[key], expected[key], rtol = rtol)
105
107 rates = snglcoinc.CoincRates(("H1", "L1", "V1"), 0.005, 2)
108 # FIXME: use the built-in method when a new enough scipy
109 # is available
110 #self.assertDictEqual(
112 rates.lnP_instruments(H1=0.001, L1=0.002, V1=0.003),
113 {frozenset(['H1', 'L1']): -2.352494317162074,
114 frozenset(['H1', 'V1']): -1.181124067253893,
115 frozenset(['L1', 'V1']): -0.5143002401188091,
116 frozenset(['H1', 'L1', 'V1']): -11.040192999777876},
117 )
118
119
120suite = unittest.TestSuite()
121suite.addTest(unittest.defaultTestLoader.loadTestsFromTestCase(TestCoincRates))
122sys.exit(not unittest.TextTestRunner(verbosity=2).run(suite).wasSuccessful())