コード例 #1
0
def test_local_regressor_cm_tipper(monkeypatch):
    """Test local regressor process for different combination of inputs and ouputs (tipper)"""
    from resistics.regression.local import LocalRegressor
    from mocks import mock_window_selector
    import numpy as np

    # patch out the writeTF function
    monkeypatch.setattr(LocalRegressor, "writeResult", mock_local_regressor_writeResult)

    selector = mock_window_selector()
    regressor = LocalRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"], inCross=["Hx", "Hy"])
    regressor.setOutput("local", ["Hz"], outCross=None)
    regressor.setMethod("cm", intercept=False)
    regressor.setSmooth("hann", 1)
    regressor.process()
    # expected
    expected_evalfreq = np.array([24, 40])
    expected_impedances = [
        np.array([[2.0 + 0.0j, 8.0 + 0.0j]]),
        np.array([[2.0 + 0.0j, 8.0 + 0.0j]]),
    ]
    expected_variances = [
        np.array([[3.41232327e-27, 2.19175834e-27]]),
        np.array([[5.18941937e-29, 6.91709078e-29]]),
    ]
    np.testing.assert_equal(regressor.evalFreq, expected_evalfreq)
    np.testing.assert_almost_equal(regressor.parameters[0], expected_impedances[0])
    np.testing.assert_almost_equal(regressor.parameters[1], expected_impedances[1])
    np.testing.assert_almost_equal(regressor.variances[0], expected_variances[0])
    np.testing.assert_almost_equal(regressor.variances[1], expected_variances[1])
コード例 #2
0
def test_local_regressor_cm_intersite(monkeypatch):
    """Test local regressor process for intersite processing"""
    from resistics.regression.local import LocalRegressor
    from mocks import mock_window_selector
    import numpy as np

    # patch out the writeTF function
    monkeypatch.setattr(LocalRegressor, "writeResult", mock_local_regressor_writeResult)

    selector = mock_window_selector()
    regressor = LocalRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"], inCross=["Hx", "Hy"])
    regressor.setOutput("inter", ["Ex", "Ey"], outCross=["Ex", "Ey"])
    regressor.setMethod("cm", intercept=False)
    regressor.setSmooth("hann", 1)
    regressor.process()
    # expected
    expected_evalfreq = np.array([24, 40])
    expected_impedances = [
        np.array([[6.0 + 0.0j, 8.0 + 0.0j], [4.0 + 0.0j, 1.0 + 0.0j]]),
        np.array([[6.0 + 0.0j, 8.0 + 0.0j], [4.0 + 0.0j, 1.0 + 0.0j]]),
    ]
    expected_variances = [
        np.array([[9.14649740e-29, 5.89343794e-29], [1.42914022e-30, 9.20849678e-31]]),
        np.array([[1.38145310e-28, 1.84606779e-28], [3.45363276e-29, 4.61516947e-29]]),
    ]
    np.testing.assert_equal(regressor.evalFreq, expected_evalfreq)
    np.testing.assert_almost_equal(regressor.parameters[0], expected_impedances[0])
    np.testing.assert_almost_equal(regressor.parameters[1], expected_impedances[1])
    np.testing.assert_almost_equal(regressor.variances[0], expected_variances[0])
    np.testing.assert_almost_equal(regressor.variances[1], expected_variances[1])
コード例 #3
0
def test_local_regressor_cm(monkeypatch):
    """Test local regressor process using standard parameters"""
    from resistics.regression.local import LocalRegressor
    from mocks import mock_window_selector
    import numpy as np

    # patch out the writeTF function
    monkeypatch.setattr(LocalRegressor, "writeResult", mock_local_regressor_writeResult)

    selector = mock_window_selector()
    regressor = LocalRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"])
    regressor.setOutput("local", ["Ex", "Ey"])
    regressor.setMethod("cm", intercept=False)
    regressor.setSmooth("hann", 1)
    assert regressor.inCross == ["Hx", "Hy"]
    assert regressor.outCross == ["Ex", "Ey"]
    regressor.process()
    # expected
    expected_evalfreq = np.array([24, 40])
    expected_impedances = [
        np.array([[3 + 0.0j, 5 + 0.0j], [2 + 0.0j, 7 + 0.0j]]),
        np.array([[3 + 0.0j, 5 + 0.0j], [2 + 0.0j, 7 + 0.0j]]),
    ]
    expected_variances = [
        np.array([[2.08722609e-28, 1.34197332e-28], [2.31914010e-29, 1.49108146e-29]]),
        np.array([[4.59299270e-29, 6.12727229e-29], [1.34977745e-28, 1.80066778e-28]]),
    ]
    np.testing.assert_equal(regressor.evalFreq, expected_evalfreq)
    np.testing.assert_almost_equal(regressor.parameters[0], expected_impedances[0])
    np.testing.assert_almost_equal(regressor.parameters[1], expected_impedances[1])
    np.testing.assert_almost_equal(regressor.variances[0], expected_variances[0])
    np.testing.assert_almost_equal(regressor.variances[1], expected_variances[1])
コード例 #4
0
def test_local_regressor_mm_intercept(monkeypatch):
    """Test local regressor process with addition of intercept term"""
    from resistics.regression.local import LocalRegressor
    from mocks import mock_window_selector
    import numpy as np

    # patch out the writeTF function
    monkeypatch.setattr(LocalRegressor, "writeResult", mock_local_regressor_writeResult)

    selector = mock_window_selector(intercept=True)
    regressor = LocalRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"], inCross=["Hx", "Hy"])
    regressor.setOutput("local", ["Ex", "Ey"], outCross=["Ex", "Ey"])
    regressor.setMethod("mm", intercept=True)
    regressor.setSmooth("hann", 1)
    regressor.process()
    # expected
    expected_evalfreq = np.array([24, 40])
    expected_impedances = [
        np.array(
            [
                [3.0 + 0.0j, 5.0 + 0.0j, 5.0 + 0.0j],
                [2.0 + 0.0j, 7.0 + 0.0j, -9.0 + 0.0j],
            ]
        ),
        np.array(
            [
                [3.0 + 0.0j, 5.0 + 0.0j, 5.0 + 0.0j],
                [2.0 + 0.0j, 7.0 + 0.0j, -9.0 + 0.0j],
            ]
        ),
    ]
    expected_variances = [
        np.array(
            [
                [1.21088688e-23, 7.25740911e-24, 3.34802360e-23],
                [3.95687739e-23, 2.37154094e-23, 1.09405091e-22],
            ]
        ),
        np.array(
            [
                [2.48945809e-27, 3.32569517e-27, 2.95106525e-26],
                [1.00812766e-27, 1.34676912e-27, 1.19505948e-26],
            ]
        ),
    ]
    print(regressor.parameters)
    print(regressor.variances)
    np.testing.assert_equal(regressor.evalFreq, expected_evalfreq)
    np.testing.assert_almost_equal(regressor.parameters[0], expected_impedances[0])
    np.testing.assert_almost_equal(regressor.parameters[1], expected_impedances[1])
    np.testing.assert_almost_equal(regressor.variances[0], expected_variances[0])
    np.testing.assert_almost_equal(regressor.variances[1], expected_variances[1])
コード例 #5
0
def test_remote_regressor_setCores():
    """Test remote regressor setCores"""
    from resistics.regression.remote import RemoteRegressor
    from mocks import mock_window_selector

    selector = mock_window_selector()
    regressor = RemoteRegressor(selector, "test")
    assert regressor.ncores == 0
    regressor.setCores(4)
    assert regressor.ncores == 4
    regressor.setCores(11)
    assert regressor.ncores == 11
コード例 #6
0
def test_local_regressor_setCores():
    """Test local regressor setCores"""
    from resistics.regression.local import LocalRegressor
    from mocks import mock_window_selector

    selector = mock_window_selector()
    regressor = LocalRegressor(selector, "test")
    assert regressor.ncores == 0
    regressor.setCores(4)
    assert regressor.ncores == 4
    regressor.setCores(11)
    assert regressor.ncores == 11
コード例 #7
0
def test_remote_regressor_cm_intercept(monkeypatch):
    """Test remote regressor process with an intercept term"""
    from resistics.regression.remote import RemoteRegressor
    from mocks import mock_window_selector
    import numpy as np

    # patch out the writeTF function
    monkeypatch.setattr(RemoteRegressor, "writeResult",
                        mock_remote_regressor_writeResult)

    selector = mock_window_selector(intercept=True)
    regressor = RemoteRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"])
    regressor.setOutput("local", ["Ex", "Ey"])
    regressor.setRemote("remote", ["Hx", "Hy"])
    regressor.setMethod("cm", intercept=True)
    regressor.setSmooth("hann", 1)
    assert regressor.inCross == []
    assert regressor.outCross == []
    assert regressor.remoteCross == ["Hx", "Hy"]
    regressor.process()
    # expected
    expected_evalfreq = np.array([24, 40])
    expected_impedances = [
        np.array([
            [4.5708818 + 0.0j, 3.83094409 + 0.0j, 0.61631404 + 0.0j],
            [-0.34507489 + 0.0j, 8.7452132 + 0.0j, -2.45585909 + 0.0j],
        ]),
        np.array([
            [3.78599245 + 0.0j, 4.36870089 + 0.0j, 0.04394717 + 0.0j],
            [0.71686719 + 0.0j, 8.0305959 + 0.0j, -0.9092429 + 0.0j],
        ]),
    ]
    expected_variances = [
        np.array([
            [7.10053809, 4.20189219, 27.17637004],
            [15.82405112, 9.36421381, 60.56446191],
        ]),
        np.array([
            [3.28799791, 4.62734876, 37.21651907],
            [8.76270122, 12.33214734, 99.1841377],
        ]),
    ]
    np.testing.assert_equal(regressor.evalFreq, expected_evalfreq)
    np.testing.assert_almost_equal(regressor.parameters[0],
                                   expected_impedances[0])
    np.testing.assert_almost_equal(regressor.parameters[1],
                                   expected_impedances[1])
    np.testing.assert_almost_equal(regressor.variances[0],
                                   expected_variances[0])
    np.testing.assert_almost_equal(regressor.variances[1],
                                   expected_variances[1])
コード例 #8
0
def test_remote_regressor_mm_intercept(monkeypatch):
    """Test remote regressor process with an intercept term"""
    from resistics.regression.remote import RemoteRegressor
    from mocks import mock_window_selector
    import numpy as np

    # patch out the writeTF function
    monkeypatch.setattr(RemoteRegressor, "writeResult",
                        mock_remote_regressor_writeResult)

    selector = mock_window_selector(intercept=True)
    regressor = RemoteRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"])
    regressor.setOutput("local", ["Ex", "Ey"])
    regressor.setRemote("remote", ["Hx", "Hy"])
    regressor.setMethod("mm", intercept=True)
    regressor.setSmooth("hann", 1)
    assert regressor.inCross == []
    assert regressor.outCross == []
    assert regressor.remoteCross == ["Hx", "Hy"]
    regressor.process()
    # expected
    expected_evalfreq = np.array([24, 40])
    expected_impedances = [
        np.array([
            [5.1887448 + 0.0j, 3.23769067 + 0.0j, 1.72606573 + 0.0j],
            [-0.50578302 + 0.0j, 9.02951015 + 0.0j, -5.3106386 + 0.0j],
        ]),
        np.array([
            [4.16876826 + 0.0j, 3.93359941 + 0.0j, 0.1393923 + 0.0j],
            [2.56283624 + 0.0j, 5.80703278 + 0.0j, 0.57298163 + 0.0j],
        ]),
    ]
    expected_variances = [
        np.array([
            [0.13001168, 0.07693714, 0.4976025],
            [0.2015383, 0.11926451, 0.77136119],
        ]),
        np.array([
            [4.28780289, 6.03441972, 48.5332116],
            [8.09793129, 11.39658644, 91.65967348],
        ]),
    ]
    np.testing.assert_equal(regressor.evalFreq, expected_evalfreq)
    np.testing.assert_almost_equal(regressor.parameters[0],
                                   expected_impedances[0])
    np.testing.assert_almost_equal(regressor.parameters[1],
                                   expected_impedances[1])
    np.testing.assert_almost_equal(regressor.variances[0],
                                   expected_variances[0])
    np.testing.assert_almost_equal(regressor.variances[1],
                                   expected_variances[1])
コード例 #9
0
def test_remote_regressor_getSmoothLen(monkeypatch):
    """Test remote regressor process"""
    from resistics.regression.remote import RemoteRegressor
    from mocks import mock_window_selector
    import numpy as np

    selector = mock_window_selector()
    regressor = RemoteRegressor(selector, "test")
    regressor.setInput("site1", ["Hx", "Hy"])
    regressor.setOutput("site1", ["Ex", "Ey"])
    regressor.setRemote("remote1", ["Hx", "Hy"])
    regressor.setSmooth("hann", 1)
    assert regressor.smoothLen == 1
    regressor.setSmooth("hann", 12)
    assert regressor.getSmoothLen(65) == 13
コード例 #10
0
def test_remote_regressor_setRemote():
    """Test remote regressor setRemote"""
    from resistics.regression.remote import RemoteRegressor
    from mocks import mock_window_selector

    selector = mock_window_selector()
    regressor = RemoteRegressor(selector, "test")
    assert regressor.remoteCross == ["Hx", "Hy"]
    regressor.setRemote("remote1", ["Ex", "Hy", "Hx"])
    assert regressor.remoteSite == "remote1"
    assert regressor.remoteCross == ["Ex", "Hy", "Hx"]
    assert regressor.remoteSize == 3
    regressor.setRemote("remote2", ["Hx"])
    assert regressor.remoteSite == "remote2"
    assert regressor.remoteCross == ["Hx"]
    assert regressor.remoteSize == 1
コード例 #11
0
def test_local_regressor_getSmoothLen(monkeypatch):
    """Test local regressor process"""
    from resistics.regression.local import LocalRegressor
    from mocks import mock_window_selector
    import numpy as np

    selector = mock_window_selector()
    from mocks import mock_window_selector

    regressor = LocalRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"])
    regressor.setOutput("local", ["Ex", "Ey"])
    regressor.setSmooth("hann", 1)
    assert regressor.smoothLen == 1
    regressor.setSmooth("hann", 12)
    assert regressor.getSmoothLen(65) == 13
コード例 #12
0
def test_local_regressor_setSmooth():
    """Test local regressor setSmooth"""
    from resistics.regression.local import LocalRegressor
    from mocks import mock_window_selector

    selector = mock_window_selector()
    regressor = LocalRegressor(selector, "test")
    assert regressor.smoothFunc == "hann"
    assert regressor.smoothLen is None
    regressor.setSmooth("hann", 7)
    assert regressor.smoothFunc == "hann"
    assert regressor.smoothLen == 7
    regressor.setSmooth("parzen", 8)
    assert regressor.smoothFunc == "parzen"
    assert regressor.smoothLen == 8
    assert regressor.getSmoothLen(65) == 9
コード例 #13
0
def test_local_regressor_setOutput():
    """Test local regressor setOutput"""
    from resistics.regression.local import LocalRegressor
    from mocks import mock_window_selector

    selector = mock_window_selector()
    regressor = LocalRegressor(selector, "test")
    regressor.setOutput("inter", ["Ex", "Hy", "Hx"])
    assert regressor.outSite == "inter"
    assert regressor.outChannels == ["Ex", "Hy", "Hx"]
    assert regressor.outSize == 3
    assert regressor.outCross == ["Ex", "Hy", "Hx"]
    regressor.setOutput("local", ["Hx", "Hy"], outCross=["Ex", "Hy"])
    assert regressor.outSite == "local"
    assert regressor.outChannels == ["Hx", "Hy"]
    assert regressor.outSize == 2
    assert regressor.outCross == ["Ex", "Hy"]
コード例 #14
0
def test_local_regressor_mm_noise(monkeypatch):
    """Test local regressor process with some noise added to the localsite"""
    from resistics.regression.remote import RemoteRegressor
    from mocks import mock_window_selector
    import numpy as np

    # patch out the writeTF function
    monkeypatch.setattr(RemoteRegressor, "writeResult",
                        mock_remote_regressor_writeResult)

    selector = mock_window_selector(localnoise=True)
    regressor = RemoteRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"])
    regressor.setOutput("local", ["Ex", "Ey"])
    regressor.setRemote("remote", ["Hx", "Hy"])
    regressor.setMethod("mm", intercept=False)
    regressor.setSmooth("hann", 1)
    assert regressor.inCross == []
    assert regressor.outCross == []
    regressor.process()
    # expected
    expected_evalfreq = np.array([24, 40])
    expected_impedances = [
        np.array([
            [4.28467732 + 0.0j, 3.39812143 + 0.0j],
            [2.33069538 + 0.0j, 6.59175726 + 0.0j],
        ]),
        np.array([
            [3.77407493 + 0.0j, 3.86441015 + 0.0j],
            [1.21575149 + 0.0j, 7.35576611 + 0.0j],
        ]),
    ]
    expected_variances = [
        np.array([[5.31246449e-04, 3.39037709e-04],
                  [3.13860843e00, 2.00303760e00]]),
        np.array([[0.11543121, 0.15322112], [47.59264394, 63.17353725]]),
    ]
    np.testing.assert_equal(regressor.evalFreq, expected_evalfreq)
    np.testing.assert_almost_equal(regressor.parameters[0],
                                   expected_impedances[0])
    np.testing.assert_almost_equal(regressor.parameters[1],
                                   expected_impedances[1])
    np.testing.assert_almost_equal(regressor.variances[0],
                                   expected_variances[0])
    np.testing.assert_almost_equal(regressor.variances[1],
                                   expected_variances[1])
コード例 #15
0
def test_remote_regressor_setOutput():
    """Test remote regressor setOutput"""
    from resistics.regression.remote import RemoteRegressor
    from mocks import mock_window_selector

    selector = mock_window_selector()
    regressor = RemoteRegressor(selector, "test")
    regressor.setOutput("site2", ["Ex", "Hy", "Hx"])
    assert regressor.outSite == "site2"
    assert regressor.outChannels == ["Ex", "Hy", "Hx"]
    assert regressor.outSize == 3
    assert regressor.outCross == []
    regressor.setOutput("site1", ["Hx", "Hy"], outCross=["Ex", "Hy"])
    assert regressor.outSite == "site1"
    assert regressor.outChannels == ["Hx", "Hy"]
    assert regressor.outSize == 2
    assert regressor.outCross == ["Ex", "Hy"]
コード例 #16
0
def test_local_regressor_cm_noise(monkeypatch):
    """Test local regressor process with some noise added to the localsite"""
    from resistics.regression.remote import RemoteRegressor
    from mocks import mock_window_selector
    import numpy as np

    # patch out the writeTF function
    monkeypatch.setattr(RemoteRegressor, "writeResult",
                        mock_remote_regressor_writeResult)

    selector = mock_window_selector(localnoise=True)
    regressor = RemoteRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"])
    regressor.setOutput("local", ["Ex", "Ey"])
    regressor.setRemote("remote", ["Hx", "Hy"])
    regressor.setMethod("cm", intercept=False)
    regressor.setSmooth("hann", 1)
    assert regressor.inCross == []
    assert regressor.outCross == []
    regressor.process()
    # expected
    expected_evalfreq = np.array([24, 40])
    expected_impedances = [
        np.array([
            [4.32416997 + 0.0j, 3.36294245 + 0.0j],
            [1.06908193 + 0.0j, 7.60932995 + 0.0j],
        ]),
        np.array([
            [4.10868381 + 0.0j, 3.465675 + 0.0j],
            [1.78789942 + 0.0j, 7.24148737 + 0.0j],
        ]),
    ]
    expected_variances = [
        np.array([[7.01571556e-04, 4.47737982e-04],
                  [4.71858833e-01, 3.01136955e-01]]),
        np.array([[0.03930329, 0.05217041], [0.02580595, 0.03425431]]),
    ]
    np.testing.assert_equal(regressor.evalFreq, expected_evalfreq)
    np.testing.assert_almost_equal(regressor.parameters[0],
                                   expected_impedances[0])
    np.testing.assert_almost_equal(regressor.parameters[1],
                                   expected_impedances[1])
    np.testing.assert_almost_equal(regressor.variances[0],
                                   expected_variances[0])
    np.testing.assert_almost_equal(regressor.variances[1],
                                   expected_variances[1])
コード例 #17
0
def test_local_regressor_ols_noise(monkeypatch):
    """Test local regressor process with some noise added to the localsite"""
    from resistics.regression.remote import RemoteRegressor
    from mocks import mock_window_selector
    import numpy as np

    # patch out the writeTF function
    monkeypatch.setattr(RemoteRegressor, "writeResult",
                        mock_remote_regressor_writeResult)

    selector = mock_window_selector(localnoise=True)
    regressor = RemoteRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"])
    regressor.setOutput("local", ["Ex", "Ey"])
    regressor.setRemote("remote", ["Hx", "Hy"])
    regressor.setMethod("ols", intercept=False)
    regressor.setSmooth("hann", 1)
    assert regressor.inCross == []
    assert regressor.outCross == []
    regressor.process()
    # expected
    expected_evalfreq = np.array([24, 40])
    expected_impedances = [
        np.array([
            [4.17149691 + 0.0j, 3.48769594 + 0.0j],
            [1.48229546 + 0.0j, 7.28114671 + 0.0j],
        ]),
        np.array([
            [4.08086708 + 0.0j, 3.51508884 + 0.0j],
            [-1.80159334 + 0.0j, 10.70916092 + 0.0j],
        ]),
    ]
    expected_variances = [
        np.array([[0.01284865, 0.00819992], [0.68188147, 0.43517191]]),
        np.array([[0.03504211, 0.04651421], [18.06330838, 23.97687941]]),
    ]
    np.testing.assert_equal(regressor.evalFreq, expected_evalfreq)
    np.testing.assert_almost_equal(regressor.parameters[0],
                                   expected_impedances[0])
    np.testing.assert_almost_equal(regressor.parameters[1],
                                   expected_impedances[1])
    np.testing.assert_almost_equal(regressor.variances[0],
                                   expected_variances[0])
    np.testing.assert_almost_equal(regressor.variances[1],
                                   expected_variances[1])
コード例 #18
0
def test_local_regressor_setMethod():
    """Test local regressor setMethod"""
    from resistics.regression.local import LocalRegressor
    from mocks import mock_window_selector

    selector = mock_window_selector()
    regressor = LocalRegressor(selector, "test")
    assert regressor.method == "cm"
    assert regressor.intercept == False
    regressor.setMethod("ols", intercept=False)
    assert regressor.method == "ols"
    assert regressor.intercept == False
    regressor.setMethod("cm", intercept=True)
    assert regressor.method == "cm"
    assert regressor.intercept == True
    regressor.setMethod("mm", intercept=False)
    assert regressor.method == "mm"
    assert regressor.intercept == False
コード例 #19
0
def test_local_regressor_cm_noise(monkeypatch):
    """Test local regressor process with addition of noise"""
    from resistics.regression.local import LocalRegressor
    from mocks import mock_window_selector
    import numpy as np

    # patch out the writeTF function
    monkeypatch.setattr(LocalRegressor, "writeResult", mock_local_regressor_writeResult)

    selector = mock_window_selector(localnoise=True)
    regressor = LocalRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"], inCross=["Hx", "Hy"])
    regressor.setOutput("local", ["Ex", "Ey"], outCross=["Ex", "Ey"])
    regressor.setMethod("cm", intercept=False)
    regressor.setSmooth("hann", 1)
    regressor.process()
    # expected
    expected_evalfreq = np.array([24, 40])
    expected_impedances = [
        np.array(
            [
                [4.0781224 + 0.0j, 3.567369 + 0.0j],
                [1.85376383 + 0.0j, 6.98454182 + 0.0j],
            ]
        ),
        np.array(
            [
                [3.79687613 + 0.0j, 3.83744749 + 0.0j],
                [4.64021435 + 0.0j, 3.41744201 + 0.0j],
            ]
        ),
    ]
    expected_variances = [
        np.array([[0.04024341, 0.02563386], [0.0075834, 0.0048304]]),
        np.array([[0.00760705, 0.01007484], [2.48409977, 3.28996458]]),
    ]
    np.testing.assert_equal(regressor.evalFreq, expected_evalfreq)
    np.testing.assert_almost_equal(regressor.parameters[0], expected_impedances[0])
    np.testing.assert_almost_equal(regressor.parameters[1], expected_impedances[1])
    np.testing.assert_almost_equal(regressor.variances[0], expected_variances[0])
    np.testing.assert_almost_equal(regressor.variances[1], expected_variances[1])
コード例 #20
0
def test_local_regressor_mm_noise(monkeypatch):
    """Test local regressor process with addition of noise"""
    from resistics.regression.local import LocalRegressor
    from mocks import mock_window_selector
    import numpy as np

    # patch out the writeTF function
    monkeypatch.setattr(LocalRegressor, "writeResult", mock_local_regressor_writeResult)

    selector = mock_window_selector(localnoise=True)
    regressor = LocalRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"], inCross=["Hx", "Hy"])
    regressor.setOutput("local", ["Ex", "Ey"], outCross=["Ex", "Ey"])
    regressor.setMethod("mm", intercept=False)
    regressor.setSmooth("hann", 1)
    regressor.process()
    # expected
    expected_evalfreq = np.array([24, 40])
    expected_impedances = [
        np.array(
            [
                [4.30696333 + 0.0j, 3.38002297 + 0.0j],
                [2.5217861 + 0.0j, 6.44672487 + 0.0j],
            ]
        ),
        np.array(
            [
                [4.23654503 + 0.0j, 3.33331255 + 0.0j],
                [-8.19366818 + 0.0j, 18.06316472 + 0.0j],
            ]
        ),
    ]
    expected_variances = [
        np.array([[1.72623564e-04, 1.09956096e-04], [1.55939006e-01, 9.93285271e-02]]),
        np.array([[0.00691985, 0.00916471], [0.03841539, 0.0508777]]),
    ]
    np.testing.assert_equal(regressor.evalFreq, expected_evalfreq)
    np.testing.assert_almost_equal(regressor.parameters[0], expected_impedances[0])
    np.testing.assert_almost_equal(regressor.parameters[1], expected_impedances[1])
    np.testing.assert_almost_equal(regressor.variances[0], expected_variances[0])
    np.testing.assert_almost_equal(regressor.variances[1], expected_variances[1])
コード例 #21
0
def test_local_regressor_ols_noise(monkeypatch):
    """Test local regressor process with addition of noise"""
    from resistics.regression.local import LocalRegressor
    from mocks import mock_window_selector
    import numpy as np

    # patch out the writeTF function
    monkeypatch.setattr(LocalRegressor, "writeResult", mock_local_regressor_writeResult)

    selector = mock_window_selector(localnoise=True)
    regressor = LocalRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"], inCross=["Hx", "Hy"])
    regressor.setOutput("local", ["Ex", "Ey"], outCross=["Ex", "Ey"])
    regressor.setMethod("ols", intercept=False)
    regressor.setSmooth("hann", 1)
    regressor.process()
    # expected
    expected_evalfreq = np.array([24, 40])
    expected_impedances = [
        np.array(
            [
                [4.28572653 + 0.0j, 3.39668529 + 0.0j],
                [0.95079059 + 0.0j, 7.70464292 + 0.0j],
            ]
        ),
        np.array(
            [
                [4.16918831 + 0.0j, 3.4135369 + 0.0j],
                [-3.12128344 + 0.0j, 12.22876995 + 0.0j],
            ]
        ),
    ]
    expected_variances = [
        np.array([[0.00041475, 0.00026418], [0.1143862, 0.07286062]]),
        np.array([[0.00432538, 0.00572858], [2.26643718, 3.00169024]]),
    ]
    np.testing.assert_equal(regressor.evalFreq, expected_evalfreq)
    np.testing.assert_almost_equal(regressor.parameters[0], expected_impedances[0])
    np.testing.assert_almost_equal(regressor.parameters[1], expected_impedances[1])
    np.testing.assert_almost_equal(regressor.variances[0], expected_variances[0])
    np.testing.assert_almost_equal(regressor.variances[1], expected_variances[1])
コード例 #22
0
def test_remote_regressor_cm(monkeypatch):
    """Test remote regressor process"""
    from resistics.regression.remote import RemoteRegressor
    from mocks import mock_window_selector
    import numpy as np

    # patch out the writeTF function
    monkeypatch.setattr(RemoteRegressor, "writeResult",
                        mock_remote_regressor_writeResult)

    selector = mock_window_selector()
    regressor = RemoteRegressor(selector, "test")
    regressor.setInput("local", ["Hx", "Hy"])
    regressor.setOutput("local", ["Ex", "Ey"])
    regressor.setRemote("remote", ["Hx", "Hy"])
    regressor.setMethod("cm", intercept=False)
    regressor.setSmooth("hann", 1)
    assert regressor.inCross == []
    assert regressor.outCross == []
    regressor.process()
    # expected
    expected_evalfreq = np.array([24, 40])
    expected_impedances = [
        np.array([[3.0 + 0.0j, 5.0 + 0.0j], [2.0 + 0.0j, 7.0 + 0.0j]]),
        np.array([[3.0 + 0.0j, 5.0 + 0.0j], [2.0 + 0.0j, 7.0 + 0.0j]]),
    ]
    expected_variances = [
        np.array([[2.78469341e-28, 1.79044909e-28],
                  [1.64240080e-27, 1.05599956e-27]]),
        np.array([[1.47463485e-29, 1.96730235e-29],
                  [5.89853939e-29, 7.86920938e-29]]),
    ]
    np.testing.assert_equal(regressor.evalFreq, expected_evalfreq)
    np.testing.assert_almost_equal(regressor.parameters[0],
                                   expected_impedances[0])
    np.testing.assert_almost_equal(regressor.parameters[1],
                                   expected_impedances[1])
    np.testing.assert_almost_equal(regressor.variances[0],
                                   expected_variances[0])
    np.testing.assert_almost_equal(regressor.variances[1],
                                   expected_variances[1])