Skip to content
Snippets Groups Projects
residual_test.py 4 KiB
Newer Older
  • Learn to ignore specific revisions
  • from numpy.testing import assert_almost_equal
    
    Cain, Payton David's avatar
    Cain, Payton David committed
    import pytest
    
    from obspy.core import UTCDateTime
    from geomagio.residual import (
        calculate,
        Reading,
        SpreadsheetAbsolutesFactory,
        WebAbsolutesFactory,
    )
    
    def assert_readings_equal(expected: Reading, actual: Reading, decimal: float):
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
        Compares calculation actuals to expected absolutes from spreadsheet
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
        expected_absolutes = {a.element: a for a in expected.absolutes}
        actual_absolutes = {a.element: a for a in actual.absolutes}
    
        assert_almost_equal(
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
            [expected_absolutes["H"].absolute, expected_absolutes["H"].baseline],
            [actual_absolutes["H"].absolute, actual_absolutes["H"].baseline],
    
            decimal=decimal,
    
            verbose=True,
        )
        assert_almost_equal(
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
            [expected_absolutes["D"].absolute, expected_absolutes["D"].baseline],
            [actual_absolutes["D"].absolute, actual_absolutes["D"].baseline],
    
            decimal=decimal,
    
            verbose=True,
        )
        assert_almost_equal(
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
            [expected_absolutes["Z"].absolute, expected_absolutes["Z"].baseline],
            [actual_absolutes["Z"].absolute, actual_absolutes["Z"].baseline],
    
            decimal=decimal,
    
    
        if expected.scale_value:
            assert_almost_equal(
                expected.scale_value, actual.scale_value, decimal=1, verbose=True
            )
    
    def compare_spreadsheet_absolutes(path):
        """
        Tests functionality of SpreadsheetAbsolutesFactory and recalculation of absolutes
        """
        # establish SpreadsheetAbsolutesFactory for reading test data from Excel
        saf = SpreadsheetAbsolutesFactory()
        # Read spreadsheet containing test data
        reading = saf.parse_spreadsheet(path=path)
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
        return reading
    
    def compare_null_absolutes(observatory, starttime, endtime):
        """
        Tests functionality of WebAbsolutesFactory and recalculation of absolutes
        """
        # establish SpreadsheetAbsolutesFactory for reading test data from Excel
        waf = WebAbsolutesFactory()
        # Read spreadsheet containing test data
        reading = waf.get_readings(observatory, starttime, endtime)[0]
        return reading
    
    
    
    def test_DED_20140952332():
    
        """
        Compare calulations to original absolutes obejct from Spreadsheet.
        Tests gathering of Dedhorse's metadata for use by calculations.
        Tests calculations for measurements in units of DMS.
        """
    
    Cain, Payton David's avatar
    Cain, Payton David committed
        # gather absolute from DED test data and recalculate
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
        reading = compare_spreadsheet_absolutes(path="etc/residual/DED-20140952332.xlsm")
    
    Cain, Payton David's avatar
    Cain, Payton David committed
        # test results with original spreadsheet values
    
        assert_readings_equal(reading, calculate(reading), 1)
    
    def test_BRW_20133650000():
    
        """
        Compare calulations to original absolutes obejct from Spreadsheet.
        Tests gathering of BRW's metadata for use by calculations.
        Tests calculations for measurements in units of DM.
        """
    
        # gather absolute from DED test data and recalculate
    
    Jeremy M Fee's avatar
    Jeremy M Fee committed
        reading = compare_spreadsheet_absolutes(path="etc/residual/BRW-20133650000.xlsm")
    
    Cain, Payton David's avatar
    Cain, Payton David committed
        # test results with original spreadsheet values
    
        assert_readings_equal(reading, calculate(reading), 1)
    
    
    def test_BOU_20200422():
        """
        Compare calulations to original absolutes obejct from web absolutes.
        Tests gathering of BOU's metadata for use by calculations.
        Tests calculations for null method measurements in units of DMS.
        """
        reading = compare_null_absolutes(
            observatory="BOU",
            starttime=UTCDateTime("2020-04-22T00:00:00Z"),
            endtime=UTCDateTime("2020-04-23T00:00:00Z"),
        )
    
    
        assert_readings_equal(reading, calculate(reading, False), 0.0)
    
    
    def test_BOU_20190702():
        """
        Compare calulations to original absolutes obejct from web absolutes.
        Tests gathering of BOU's metadata for use by calculations.
        Tests calculations for null method measurements in units of DM.
        """
        reading = compare_null_absolutes(
            observatory="BOU",
            starttime=UTCDateTime("2019-07-02T00:00:00Z"),
            endtime=UTCDateTime("2019-07-03T00:00:00Z"),
        )
    
        assert_readings_equal(reading, calculate(reading, False), 0.0)