test_HTTS_v2

wield.control.fitting.SISO.test.v2.test_HTTS_v2

This is a pytest module needing documentation

pytest-html report

Functions

test_HTTS_P_L(request)

This is a pytest needing documentation

test_HTTS_Y_L(request)

This is a pytest needing documentation

test_HTTS_Y_L_reldeg(request)

This is a pytest needing documentation

Details

test_HTTS_P_L(request)[source][github]

This is a pytest needing documentation

code
 1@pytest.mark.skipif(module_import_skip, reason="cannot import IIRrational_test_data")
 2def test_HTTS_P_L(request, ):
 3    data = testing_data_dev("HTTS_P_L")
 4    out = v2.data2filter(
 5        F_Hz=data.F_Hz,
 6        data=data.data,
 7        SNR=data.SNR,
 8        order_initial=20,
 9        hints=[sign_validate_and_plot_hint(tjoin('error'))],
10    )
11    with plot_on_assert(tjoin('output'), out.fitter, plot_anyway=True):
12        pass
13    # with digest_on_assert(__file__, request, out, plot_anyway = True):
14    #    pass
15    return
pytest information

This code is wrapped in a pytest function using conventions detailed in Pytest Conventions. The full name of this test, as known by the documentation, is:

wield.control.fitting.SISO.test.v2.test_HTTS_v2.test_HTTS_P_L

The full name is useful when building documentation, to link a reference to this page using :func:`name`, or directly include it with an autofunction directive. The collapse nodes below show every instance of the test run. There may only be one, but if the test was run multiple times through pytest parametrizations, the list can be longer.

test_HTTS_P_L
output
{'F_Hz': array([0.3       , 0.31591058, 0.332665  , 0.35030797, 0.36888665,
       0.38845062, 0.40905222, 0.4307464 , 0.45359117, 0.47764748,
       0.50297964, 0.52965534, 0.55774575, 0.58732593, 0.6184749 ,
       0.6512759 , 0.68581647, 0.72218895, 0.7604904 , 0.8008233 ,
       0.8432951 , 0.8880195 , 0.9351159 , 0.98471   , 1.0369344 ,
       1.0919285 , 1.1498392 , 1.2108212 , 1.2750374 , 1.3426594 ,
       1.4138676 , 1.4888525 , 1.5678142 , 1.6509637 , 1.7385229 ,
       1.8307259 , 1.927819  , 2.0300615 , 2.1377263 , 2.251101  ,
       2.370489  , 2.4962084 , 2.6285954 , 2.7680037 , 2.9148057 ,
       3.0693932 , 3.2321792 , 3.4035985 , 3.5841093 , 3.7741935 ,
       3.974359  , 4.18514   , 4.4071    , 4.640832  , 4.8869596 ,
       5.146141  , 5.419068  , 5.7064695 , 6.009114  , 6.327809  ,
       6.663406  , 7.0168014 , 7.388939  , 7.7808137 , 8.193471  ,
       8.628014  , 9.085603  , 9.56746   ], dtype=float32), 'data': array([ 6.26657205e-03+3.36349418e-04j,  6.25598105e-03+3.43608117e-04j,
        6.20087981e-03+2.79483036e-04j,  6.09785551e-03+2.33245082e-04j,
        6.04991009e-03+1.61669654e-04j,  5.86760556e-03+5.41600712e-05j,
        5.66797424e-03-1.05478175e-04j,  5.34016220e-03-2.11176870e-04j,
        4.97082621e-03-3.62902385e-04j,  4.60434472e-03-5.04104246e-04j,
        3.95310903e-03-4.96785855e-04j,  3.24075157e-03-5.63028501e-04j,
        2.44789408e-03-4.97109198e-04j,  1.37176004e-03-3.80744023e-04j,
        1.26066239e-04-7.47091763e-05j, -1.34696986e-03+3.64144857e-04j,
       -3.22632981e-03+1.01031759e-03j, -5.58829959e-03+1.98084023e-03j,
       -8.52349680e-03+3.48959398e-03j, -1.23110665e-02+5.79148671e-03j,
       -1.75471883e-02+9.21454653e-03j, -2.38554925e-02+1.46850217e-02j,
       -3.16964425e-02+2.48544216e-02j, -4.34691198e-02+3.99214067e-02j,
       -5.38084805e-02+6.97819218e-02j, -5.71363047e-02+1.24355674e-01j,
       -2.10116804e-02+2.18069479e-01j,  1.26397669e-01+3.15680534e-01j,
        4.12499905e-01+2.23059475e-01j,  5.00969529e-01-1.61561877e-01j,
        1.99388400e-01-3.78067464e-01j, -2.53898818e-02-2.83329308e-01j,
       -8.85927603e-02-1.66694611e-01j, -8.50087553e-02-9.29021984e-02j,
       -6.94367364e-02-5.58795892e-02j, -5.53501956e-02-3.67235169e-02j,
       -4.40684929e-02-2.34637205e-02j, -3.69076245e-02-1.64711140e-02j,
       -3.00282110e-02-1.15612894e-02j, -2.53917184e-02-8.24316125e-03j,
       -2.14230549e-02-5.91475796e-03j, -1.84789300e-02-4.06909874e-03j,
       -1.58235207e-02-2.74005323e-03j, -1.38497343e-02-1.66656089e-03j,
       -1.17402989e-02-9.80053563e-04j, -9.85912979e-03-3.54936725e-04j,
       -8.55925214e-03-2.10470444e-06j, -7.36935623e-03+2.49393313e-04j,
       -6.28088415e-03+3.49266164e-04j, -5.49304904e-03+4.63029486e-04j,
       -4.55069495e-03+4.34313755e-04j, -3.91639583e-03+3.90814384e-04j,
       -3.61655699e-03+3.01423512e-04j, -3.17537249e-03+2.98641331e-04j,
       -2.68707052e-03+3.09247174e-04j, -2.40267790e-03+2.54282437e-04j,
       -2.14939308e-03+1.95540881e-04j, -1.82690460e-03+1.70343119e-04j,
       -1.64199038e-03+1.47657731e-04j, -1.32341182e-03+1.25263716e-04j,
       -1.14942016e-03+4.56628413e-06j, -9.77236312e-04-9.08011589e-06j,
       -8.70033284e-04+8.16742977e-06j, -8.82570050e-04-4.72888278e-05j,
       -9.65597632e-04-8.93408651e-06j, -6.72171591e-04+2.40430221e-04j,
       -5.93457778e-04-1.06613461e-05j, -5.90686162e-04-4.61619275e-05j],
      dtype=complex64), 'SNR': array([8.3184120e+06, 1.8965644e+07, 4.1718558e+06, 1.7043994e+06,
       4.7551265e+06, 3.9494482e+06, 4.4581600e+06, 5.7037306e+05,
       9.9085481e+05, 3.0935730e+06, 9.2809219e+05, 7.1427133e+04,
       2.6440331e+05, 4.4104561e+03, 1.0289489e+00, 2.7046399e+03,
       5.1088656e+05, 5.2988312e+05, 1.4995149e+07, 4.2753720e+06,
       2.7884720e+06, 4.5964388e+05, 1.6927789e+06, 2.3759456e+05,
       4.7395803e+05, 1.4576422e+05, 1.0755106e+05, 6.9135594e+04,
       3.8281227e+04, 2.5681225e+04, 6.1745590e+04, 1.9051036e+05,
       3.6284297e+04, 1.2782663e+05, 2.2100259e+05, 6.4284625e+05,
       7.2105806e+05, 3.6310252e+07, 9.3820808e+07, 6.4670725e+06,
       1.9736862e+07, 1.4452075e+06, 9.5468394e+05, 2.9372112e+05,
       3.6282125e+05, 2.8523997e+05, 3.0143628e+05, 5.2403819e+05,
       7.1500281e+04, 3.2441212e+05, 8.2282898e+04, 1.4196937e+04,
       1.0788927e+05, 1.2233660e+04, 3.2872477e+04, 2.4351320e+05,
       7.4074419e+05, 9.9376094e+03, 3.4667910e+03, 1.3082276e+04,
       1.9952886e+03, 3.0470044e+03, 1.0723019e+03, 6.1542969e+02,
       2.3638728e+02, 5.5699249e+02, 3.4465361e+03, 4.1210479e+03],
      dtype=float32), 'order_initial': 20, 'hints': [{'fitter_update_validate': <function sign_validate_and_plot_hint.<locals>.sign_validate_plot at 0x7f19de4b1f80>, 'fitter_check_validate': <function sign_validate_and_plot_hint.<locals>.sign_validate_plot at 0x7f19de4b1f80>, 'rational_fitter_validate': <function rational_fitter_validate at 0x7f19df2632e0>}]}
TEE_LOGFILE None
A []
B []
------------:SNR Fix Test:
------------:rational fitting:
4P   0.02    chebychev rational fit
RELDEG:  0 0 0
3P   0.14    Initial Order: (Z=20, P=20, Z-P=0)
3P   0.18    Fastdrop Order: (Z=8, P=8, Z-P=0)
4P   0.19    mag fitting and phase patching
--------------:rational fitting:sample variance (from magnitude):
3A   0.94      Weight Scaling determined:  57.84472255202867
3A   0.94      Weight Scaling Used  7.605571809668795
--------------:rational fitting:Phase patching:
------------:Q-ranked order reduction:
4P   2.39    order reduced annealing
5P   2.88  zero flipping, maxzp 12, residuals=1.16e+04, 1.16e+04, reldeg=0
5P   3.45  zero flipped, maxzp 12, residuals=1.08e+04, reldeg=0
5P   3.70  zero flipped, maxzp 12, residuals=1.00e+04, reldeg=0
5P   5.88  zero flipped, maxzp 12, residuals=9.09e+03, reldeg=0
<wield.control.fitting.SISO.fitters_ZPK.MRF.MultiReprFilterS object at 0x7f19de37b770>
None
rB(-28.718287244733204, -0.015914067310442877, -0.5545358827733934±4.070030308937273j, 1.4372782111676785±4.7299998493202455j, 7.4825972546963495±7.345900710869082j, 12.758717129300829±10.170153927664334j, 26.776881730911146±27.789632853052755j)
rB()
<wield.control.fitting.SISO.representations.zpk_with_data.ZPKwData object at 0x7f19de37a510>
Captured stderr call
3W   0.01    The number of effective data points N=(ΣW^2)^2/(ΣW^4)=2.37e-02*len(W)
             [where W=SNR] is below the configured 'SNR_regularize_scale'=10,
             given the maximum SNR=93820808.0. Now Finding an SNR ceiling that balances
             the ratio with max SNR.
3W   0.01    Using SNR<236.3872833251953 ceiling.
3W   0.17    Fitter_checkpoint improvement succeed, None
1W   0.97      Phase patching did not remove all unstable roots in
               a single pass. It is not programmed to accommodate this
               failure mode. Unstable zeros (or poles) may be wrong.
1W   1.00      Phase patching did not remove all unstable roots in
               a single pass. It is not programmed to accommodate this
               failure mode. Unstable zeros (or poles) may be wrong.
3W   1.00    High Confidence that an unstable pole exists at 0.009212688080313527+6.13868884988229i Hz!
             Adding it to the filter. Prevent this with 'never_unstable_poles'
3W   1.00    High Confidence that an unstable pole exists at 0.0606944181515335+8.894696267968515i Hz!
             Adding it to the filter. Prevent this with 'never_unstable_poles'
3W   2.38    Fitter_checkpoint improvement succeed, None
3W   2.64    Fitter_checkpoint improvement succeed, None
captured errors:
request = <FixtureRequest for <Function test_HTTS_P_L>>

    @pytest.mark.skipif(module_import_skip, reason="cannot import IIRrational_test_data")
    def test_HTTS_P_L(request, ):
        data = testing_data_dev("HTTS_P_L")
>       out = v2.data2filter(
            F_Hz=data.F_Hz,
            data=data.data,
            SNR=data.SNR,
            order_initial=20,
            hints=[sign_validate_and_plot_hint(tjoin('error'))],
        )

../../src/wield/control/fitting/SISO/test/v2/test_HTTS_v2.py:26: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../src/wield/control/fitting/SISO/v2/data2filter.py:423: in data2filter
    baseline_order = fit_full(aid, emphasis)
../../src/wield/control/fitting/SISO/v2/data2filter.py:489: in fit_full
    return _reduce(aid)
../../src/wield/control/fitting/SISO/v2/data2filter.py:1135: in _reduce
    order_reduce_flip.order_reduce_flip(
../../src/wield/control/fitting/SISO/v2/algorithms/order_reduce_flip.py:136: in order_reduce_flip
    ret = ranking_delay_flip(
../../src/wield/control/fitting/SISO/v2/algorithms/order_reduce_flip.py:94: in ranking_delay_flip
    did_reduce = aid.fitter_check(
../../src/wield/control/fitting/SISO/v2/fit_aid.py:371: in fitter_check
    val_func(self, fitter_new)
../../src/wield/control/fitting/SISO/testing/utilities.py:219: in sign_validate_plot
    sign_validate(aid, fitter)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

aid = <wield.control.fitting.SISO.v2.fit_aid.FitAid object at 0x7f19de4976e0>
fitter = <wield.control.fitting.SISO.fitters_ZPK.MRF.MultiReprFilterS object at 0x7f19de37b770>

    def sign_validate(aid, fitter):
        """
        To be added as a hint to data2filter
        """
        rep = fitter.ZPKrep
        xfer = rep.xfer_fit
        data = rep.data
        rat = data / xfer
        rat_ang = np.exp(1j * np.angle(rat))
        ang_avg_rep = np.sum(rat_ang * rep.W ** 2) / np.sum(rep.W ** 2)

        xfer = fitter.xfer_fit
        data = fitter.data
        rat = data / xfer
        rat_ang = np.exp(1j * np.angle(rat))
        ang_avg_fit = np.sum(rat_ang * fitter.W ** 2) / np.sum(fitter.W ** 2)
        # print("SGN: ", ang_avg_rep, ang_avg_fit)
        # axB = plots.plots.plot_fit(
        #    fitter,
        #    fname = 'test1.png',
        # )
        # axB = plots.plots.plot_fitter_flag(
        #    fitter,
        #    fname = 'test3.png',
        # )
        # axB = plots.plots.plot_fit(
        #    fitter.ZPKrep,
        #    fname = 'test2.png',
        # )

        if isinstance(fitter, fitters_ZPK.MultiReprFilterBase):
            for coding in list(fitter.num_codings) + list(fitter.den_codings):
                rB = representations.RootBunch(
                    u=coding.roots(),
                    constraint=representations.root_constraints.no_constraint,
                )
                h1 = coding.transfer()
                h, lnG = rB.val_lnG(fitter.Xex_grid)
                h = h * np.exp(lnG)
                assert_almost_equal(h / h1, 1, 4)

>       assert ang_avg_fit.real > 0 and ang_avg_rep.real > 0
E       AssertionError

../../src/wield/control/fitting/SISO/testing/utilities.py:191: AssertionError
test_HTTS_Y_L(request)[source][github]

This is a pytest needing documentation

code
 1@pytest.mark.skipif(module_import_skip, reason="cannot import IIRrational_test_data")
 2def test_HTTS_Y_L(request, ):
 3    data = testing_data_dev("HTTS_Y_L")
 4    out = v2.data2filter(
 5        F_Hz=data.F_Hz,
 6        data=data.data,
 7        SNR=data.SNR,
 8        order_initial=20,
 9        hints=[sign_validate_and_plot_hint(tjoin('error'))],
10    )
11    with plot_on_assert(tjoin('output'), out.fitter, plot_anyway=True):
12        pass
13    return
pytest information

This code is wrapped in a pytest function using conventions detailed in Pytest Conventions. The full name of this test, as known by the documentation, is:

wield.control.fitting.SISO.test.v2.test_HTTS_v2.test_HTTS_Y_L

The full name is useful when building documentation, to link a reference to this page using :func:`name`, or directly include it with an autofunction directive. The collapse nodes below show every instance of the test run. There may only be one, but if the test was run multiple times through pytest parametrizations, the list can be longer.

test_HTTS_Y_L
output
{'F_Hz': array([0.3       , 0.31591058, 0.332665  , 0.35030797, 0.36888665,
       0.38845062, 0.40905222, 0.4307464 , 0.45359117, 0.47764748,
       0.50297964, 0.52965534, 0.55774575, 0.58732593, 0.6184749 ,
       0.6512759 , 0.68581647, 0.72218895, 0.7604904 , 0.8008233 ,
       0.8432951 , 0.8880195 , 0.9351159 , 0.98471   , 1.0369344 ,
       1.0919285 , 1.1498392 , 1.2108212 , 1.2750374 , 1.3426594 ,
       1.4138676 , 1.4888525 , 1.5678142 , 1.6509637 , 1.7385229 ,
       1.8307259 , 1.927819  , 2.0300615 , 2.1377263 , 2.251101  ,
       2.370489  , 2.4962084 , 2.6285954 , 2.7680037 , 2.9148057 ,
       3.0693932 , 3.2321792 , 3.4035985 , 3.5841093 , 3.7741935 ,
       3.974359  , 4.18514   , 4.4071    , 4.640832  , 4.8869596 ,
       5.146141  , 5.419068  , 5.7064695 , 6.009114  , 6.327809  ,
       6.663406  , 7.0168014 , 7.388939  , 7.7808137 , 8.193471  ,
       8.628014  , 9.085603  , 9.56746   ], dtype=float32), 'data': array([ 7.69708352e-03+1.88647115e-04j,  7.71694304e-03+1.64625279e-04j,
        7.98650272e-03+1.70850180e-04j,  8.10783170e-03+1.17214913e-04j,
        8.24236777e-03+5.64253787e-05j,  8.40548985e-03-6.73616159e-05j,
        8.59375298e-03-2.15381559e-04j,  8.87502823e-03-3.18981241e-04j,
        8.99362005e-03-4.92383842e-04j,  9.07130446e-03-6.30910858e-04j,
        9.26269591e-03-8.57356354e-04j,  9.34286881e-03-9.91831766e-04j,
        9.41749196e-03-1.15720672e-03j,  9.58323386e-03-1.30758516e-03j,
        9.80107300e-03-1.46633154e-03j,  1.00330198e-02-1.71570713e-03j,
        1.03774555e-02-1.82686292e-03j,  1.08236624e-02-2.09053955e-03j,
        1.12831704e-02-2.33364687e-03j,  1.19829169e-02-2.70329299e-03j,
        1.29821254e-02-3.15852463e-03j,  1.40425591e-02-3.72272264e-03j,
        1.56027265e-02-4.75011999e-03j,  1.82581972e-02-6.23423234e-03j,
        2.16406118e-02-9.57186799e-03j,  2.62307189e-02-1.62536670e-02j,
        2.97282003e-02-3.09389550e-02j,  2.14375257e-02-5.80745265e-02j,
       -2.56073549e-02-7.62012377e-02j, -8.62303898e-02-3.25199999e-02j,
       -6.45838976e-02+4.43714410e-02j, -3.58453626e-03+5.77501580e-02j,
        3.40101384e-02+3.06373946e-02j,  3.65021527e-02-4.47911769e-03j,
        1.81211904e-02-2.19406448e-02j,  2.75514717e-03-2.17657983e-02j,
       -3.69950826e-03-1.53610501e-02j, -6.26219204e-03-1.06040817e-02j,
       -6.13016589e-03-7.18047703e-03j, -5.84707689e-03-4.90359776e-03j,
       -5.08184312e-03-3.37584177e-03j, -4.52123769e-03-2.23394134e-03j,
       -4.26784251e-03-1.56559667e-03j, -3.64011596e-03-9.99783631e-04j,
       -3.16493725e-03-5.96167054e-04j, -2.77468236e-03-2.10247264e-04j,
       -2.28362856e-03-8.55092949e-05j, -1.78612734e-03+5.61557317e-05j,
       -1.53203413e-03+8.79380095e-05j, -1.16667233e-03+1.15691226e-04j,
       -1.07761996e-03+1.19403718e-04j, -9.08756920e-04+9.99966505e-05j,
       -6.47442823e-04+7.11724206e-05j, -5.15936641e-04+3.80427409e-05j,
       -6.00506610e-04+4.46381200e-05j, -4.68522572e-04+4.89799895e-05j,
       -3.30825191e-04+1.86624166e-05j, -3.58957361e-04+4.17257143e-05j,
       -3.15489335e-04+3.58919533e-05j, -3.24494875e-04-1.27699177e-05j,
       -3.04049114e-04+1.04072251e-05j, -2.96516926e-04-2.95402497e-05j,
       -3.14581353e-04-6.28239068e-05j, -2.44472234e-04-4.52930472e-05j,
       -2.00084643e-04-3.91148533e-05j, -9.19199301e-05+6.41346051e-05j,
       -7.16933282e-05-6.73393588e-05j, -1.00374717e-04-6.04890374e-05j],
      dtype=complex64), 'SNR': array([1.3275474e+07, 5.3262530e+06, 2.8175798e+06, 2.2548828e+05,
       9.4804019e+05, 4.9070730e+06, 5.6383950e+06, 1.2442429e+08,
       7.3481665e+06, 2.9148000e+06, 1.7800986e+07, 1.4197048e+08,
       5.1048480e+07, 2.7482272e+08, 3.9894668e+07, 2.5408968e+07,
       1.7482924e+07, 1.1816090e+07, 3.9536580e+07, 2.7052854e+08,
       5.8148780e+06, 6.0349825e+06, 2.2304988e+07, 3.5612430e+06,
       8.6483460e+06, 6.5280356e+05, 3.3251504e+04, 3.2008275e+04,
       5.2474487e+03, 1.1012148e+04, 2.1032062e+04, 6.3431931e+05,
       2.0275416e+05, 2.1165735e+06, 5.5447578e+04, 8.4114281e+04,
       4.9681004e+04, 7.9639460e+06, 1.7065251e+06, 2.0867708e+06,
       1.5962190e+06, 2.6169620e+05, 2.2424035e+06, 9.8850512e+05,
       1.9090841e+05, 1.4231462e+05, 1.4806786e+04, 2.7101982e+04,
       1.7778895e+03, 3.2235215e+03, 2.4746475e+03, 6.3499657e+01,
       1.6896085e+02, 3.4305683e+01, 8.1476891e+01, 3.0881732e+02,
       1.3786995e+02, 9.4301865e+01, 1.4036640e+01, 4.4287482e+02,
       1.7489172e+02, 2.4404325e+01, 9.0156433e+01, 7.9770527e+00,
       5.0196791e+00, 3.5699093e+00, 2.3833251e+00, 6.9880581e+00],
      dtype=float32), 'order_initial': 20, 'hints': [{'fitter_update_validate': <function sign_validate_and_plot_hint.<locals>.sign_validate_plot at 0x7f19ccb08180>, 'fitter_check_validate': <function sign_validate_and_plot_hint.<locals>.sign_validate_plot at 0x7f19ccb08180>, 'rational_fitter_validate': <function rational_fitter_validate at 0x7f19df2632e0>}]}
TEE_LOGFILE None
A []
B []
------------:SNR Fix Test:
------------:rational fitting:
4P   0.01    chebychev rational fit
RELDEG:  0 0 0
3P   0.11    Initial Order: (Z=20, P=20, Z-P=0)
3P   0.16    Fastdrop Order: (Z=10, P=10, Z-P=0)
4P   0.18    mag fitting and phase patching
--------------:rational fitting:sample variance (from magnitude):
3A   0.58      Weight Scaling determined:  55.68844470471451
3A   0.58      Weight Scaling Used  7.4624690756286896
--------------:rational fitting:Phase patching:
------------:Q-ranked order reduction:
4P   4.59    order reduced annealing
5P   6.57  zero flipping, maxzp 10, residuals=4.06e+03, 4.06e+03, reldeg=4
<wield.control.fitting.SISO.fitters_ZPK.MRF.MultiReprFilterS object at 0x7f19d2d0ed80>
None
rB(-24.614955203621907±18.457237278838896j, 30.560180372682716±24.60326644337358j, -30.943213570792786±24.78556003349899j, -30.919681663152517±24.98369682346415j, 29.39492171420367±26.45523400234222j)
rB()
<wield.control.fitting.SISO.representations.zpk_with_data.ZPKwData object at 0x7f19ccaceae0>
Captured stderr call
3W   0.01    The number of effective data points N=(ΣW^2)^2/(ΣW^4)=4.65e-02*len(W)
             [where W=SNR] is below the configured 'SNR_regularize_scale'=10,
             given the maximum SNR=274822720.0. Now Finding an SNR ceiling that balances
             the ratio with max SNR.
3W   0.01    Using SNR<81.47689056396484 ceiling.
3W   0.15    Fitter_checkpoint improvement succeed, None
1W   0.60      Phase patching did not remove all unstable roots in
               a single pass. It is not programmed to accommodate this
               failure mode. Unstable zeros (or poles) may be wrong.
1W   0.79      Phase patching did not remove all unstable roots in
               a single pass. It is not programmed to accommodate this
               failure mode. Unstable zeros (or poles) may be wrong.
1W   0.84      Phase patching did not remove all unstable roots in
               a single pass. It is not programmed to accommodate this
               failure mode. Unstable zeros (or poles) may be wrong.
5W   0.84    High Confidence that an unstable zero exists at 0.004399185605049967+6.902829868295211i Hz
             Adding it to the filter. Prevent this with 'never_unstable_zeros'
3W   0.84    High Confidence that an unstable pole exists at 0.9188590497962333+0.2781089791594633i Hz!
             Adding it to the filter. Prevent this with 'never_unstable_poles'
5W   0.84    High Confidence that an unstable zero exists at 1.9758588452318198+43.47888648789693i Hz
             Adding it to the filter. Prevent this with 'never_unstable_zeros'
3W   0.84    High Confidence that an unstable pole exists at 53.575862987092584+1896871767339064.2i Hz!
             Adding it to the filter. Prevent this with 'never_unstable_poles'
5W   0.84    High Confidence that an unstable zero exists at 52.587862161509904+174.77371268463745i Hz
             Adding it to the filter. Prevent this with 'never_unstable_zeros'
5W   0.84    High Confidence that an unstable zero exists at 2.8232067981882443+0.001976856052811723i Hz
             Adding it to the filter. Prevent this with 'never_unstable_zeros'
5W   0.84    High Confidence that an unstable zero exists at 0.2876931509406163+8.351866137567033i Hz
             Adding it to the filter. Prevent this with 'never_unstable_zeros'
3W   4.45  Fitter_checkpoint improvement succeed, None
3W   4.58    Fitter_checkpoint improvement succeed, None
3W   4.80    Fitter_checkpoint improvement succeed, None
3W   6.56  Fitter_checkpoint improvement succeed, None
captured errors:
request = <FixtureRequest for <Function test_HTTS_Y_L>>

    @pytest.mark.skipif(module_import_skip, reason="cannot import IIRrational_test_data")
    def test_HTTS_Y_L(request, ):
        data = testing_data_dev("HTTS_Y_L")
>       out = v2.data2filter(
            F_Hz=data.F_Hz,
            data=data.data,
            SNR=data.SNR,
            order_initial=20,
            hints=[sign_validate_and_plot_hint(tjoin('error'))],
        )

../../src/wield/control/fitting/SISO/test/v2/test_HTTS_v2.py:43: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../src/wield/control/fitting/SISO/v2/data2filter.py:423: in data2filter
    baseline_order = fit_full(aid, emphasis)
../../src/wield/control/fitting/SISO/v2/data2filter.py:489: in fit_full
    return _reduce(aid)
../../src/wield/control/fitting/SISO/v2/data2filter.py:1135: in _reduce
    order_reduce_flip.order_reduce_flip(
../../src/wield/control/fitting/SISO/v2/algorithms/order_reduce_flip.py:136: in order_reduce_flip
    ret = ranking_delay_flip(
../../src/wield/control/fitting/SISO/v2/algorithms/order_reduce_flip.py:94: in ranking_delay_flip
    did_reduce = aid.fitter_check(
../../src/wield/control/fitting/SISO/v2/fit_aid.py:371: in fitter_check
    val_func(self, fitter_new)
../../src/wield/control/fitting/SISO/testing/utilities.py:219: in sign_validate_plot
    sign_validate(aid, fitter)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

aid = <wield.control.fitting.SISO.v2.fit_aid.FitAid object at 0x7f19d2eb8f50>
fitter = <wield.control.fitting.SISO.fitters_ZPK.MRF.MultiReprFilterS object at 0x7f19d2d0ed80>

    def sign_validate(aid, fitter):
        """
        To be added as a hint to data2filter
        """
        rep = fitter.ZPKrep
        xfer = rep.xfer_fit
        data = rep.data
        rat = data / xfer
        rat_ang = np.exp(1j * np.angle(rat))
        ang_avg_rep = np.sum(rat_ang * rep.W ** 2) / np.sum(rep.W ** 2)

        xfer = fitter.xfer_fit
        data = fitter.data
        rat = data / xfer
        rat_ang = np.exp(1j * np.angle(rat))
        ang_avg_fit = np.sum(rat_ang * fitter.W ** 2) / np.sum(fitter.W ** 2)
        # print("SGN: ", ang_avg_rep, ang_avg_fit)
        # axB = plots.plots.plot_fit(
        #    fitter,
        #    fname = 'test1.png',
        # )
        # axB = plots.plots.plot_fitter_flag(
        #    fitter,
        #    fname = 'test3.png',
        # )
        # axB = plots.plots.plot_fit(
        #    fitter.ZPKrep,
        #    fname = 'test2.png',
        # )

        if isinstance(fitter, fitters_ZPK.MultiReprFilterBase):
            for coding in list(fitter.num_codings) + list(fitter.den_codings):
                rB = representations.RootBunch(
                    u=coding.roots(),
                    constraint=representations.root_constraints.no_constraint,
                )
                h1 = coding.transfer()
                h, lnG = rB.val_lnG(fitter.Xex_grid)
                h = h * np.exp(lnG)
                assert_almost_equal(h / h1, 1, 4)

>       assert ang_avg_fit.real > 0 and ang_avg_rep.real > 0
E       AssertionError

../../src/wield/control/fitting/SISO/testing/utilities.py:191: AssertionError
test_HTTS_Y_L_reldeg(request)[source][github]

This is a pytest needing documentation

code
 1@pytest.mark.skipif(module_import_skip, reason="cannot import IIRrational_test_data")
 2def test_HTTS_Y_L_reldeg(request, ):
 3    def reldeg_validate(aid, fitter):
 4        rdmax = aid.hint("relative_degree_max")
 5        rdmin = aid.hint("relative_degree_min")
 6        orders = aid.fitter_orders(fitter)
 7        # print("DEGREE", orders.total, orders.reldeg, rdmin, rdmax)
 8        if rdmax is not None:
 9            assert orders.reldeg <= rdmax
10        if rdmin is not None:
11            assert orders.reldeg >= rdmin
12
13    hint = {
14        "fitter_update_validate": reldeg_validate,
15        "fitter_check_validate": reldeg_validate,
16    }
17    data = testing_data_dev("HTTS_Y_L")
18    out = v2.data2filter(
19        F_Hz=data.F_Hz,
20        data=data.data,
21        SNR=data.SNR,
22        order_initial=20,
23        hints=[hint],
24        relative_degree=-2,
25        log_level=10,
26        log_level_debug=10,
27    )
28    with plot_on_assert(tjoin('plot'), out.fitter, plot_anyway=True):
29        pass
30    return
pytest information

This code is wrapped in a pytest function using conventions detailed in Pytest Conventions. The full name of this test, as known by the documentation, is:

wield.control.fitting.SISO.test.v2.test_HTTS_v2.test_HTTS_Y_L_reldeg

The full name is useful when building documentation, to link a reference to this page using :func:`name`, or directly include it with an autofunction directive. The collapse nodes below show every instance of the test run. There may only be one, but if the test was run multiple times through pytest parametrizations, the list can be longer.

test_HTTS_Y_L_reldeg
output
{'F_Hz': array([0.3       , 0.31591058, 0.332665  , 0.35030797, 0.36888665,
       0.38845062, 0.40905222, 0.4307464 , 0.45359117, 0.47764748,
       0.50297964, 0.52965534, 0.55774575, 0.58732593, 0.6184749 ,
       0.6512759 , 0.68581647, 0.72218895, 0.7604904 , 0.8008233 ,
       0.8432951 , 0.8880195 , 0.9351159 , 0.98471   , 1.0369344 ,
       1.0919285 , 1.1498392 , 1.2108212 , 1.2750374 , 1.3426594 ,
       1.4138676 , 1.4888525 , 1.5678142 , 1.6509637 , 1.7385229 ,
       1.8307259 , 1.927819  , 2.0300615 , 2.1377263 , 2.251101  ,
       2.370489  , 2.4962084 , 2.6285954 , 2.7680037 , 2.9148057 ,
       3.0693932 , 3.2321792 , 3.4035985 , 3.5841093 , 3.7741935 ,
       3.974359  , 4.18514   , 4.4071    , 4.640832  , 4.8869596 ,
       5.146141  , 5.419068  , 5.7064695 , 6.009114  , 6.327809  ,
       6.663406  , 7.0168014 , 7.388939  , 7.7808137 , 8.193471  ,
       8.628014  , 9.085603  , 9.56746   ], dtype=float32), 'data': array([ 7.69708352e-03+1.88647115e-04j,  7.71694304e-03+1.64625279e-04j,
        7.98650272e-03+1.70850180e-04j,  8.10783170e-03+1.17214913e-04j,
        8.24236777e-03+5.64253787e-05j,  8.40548985e-03-6.73616159e-05j,
        8.59375298e-03-2.15381559e-04j,  8.87502823e-03-3.18981241e-04j,
        8.99362005e-03-4.92383842e-04j,  9.07130446e-03-6.30910858e-04j,
        9.26269591e-03-8.57356354e-04j,  9.34286881e-03-9.91831766e-04j,
        9.41749196e-03-1.15720672e-03j,  9.58323386e-03-1.30758516e-03j,
        9.80107300e-03-1.46633154e-03j,  1.00330198e-02-1.71570713e-03j,
        1.03774555e-02-1.82686292e-03j,  1.08236624e-02-2.09053955e-03j,
        1.12831704e-02-2.33364687e-03j,  1.19829169e-02-2.70329299e-03j,
        1.29821254e-02-3.15852463e-03j,  1.40425591e-02-3.72272264e-03j,
        1.56027265e-02-4.75011999e-03j,  1.82581972e-02-6.23423234e-03j,
        2.16406118e-02-9.57186799e-03j,  2.62307189e-02-1.62536670e-02j,
        2.97282003e-02-3.09389550e-02j,  2.14375257e-02-5.80745265e-02j,
       -2.56073549e-02-7.62012377e-02j, -8.62303898e-02-3.25199999e-02j,
       -6.45838976e-02+4.43714410e-02j, -3.58453626e-03+5.77501580e-02j,
        3.40101384e-02+3.06373946e-02j,  3.65021527e-02-4.47911769e-03j,
        1.81211904e-02-2.19406448e-02j,  2.75514717e-03-2.17657983e-02j,
       -3.69950826e-03-1.53610501e-02j, -6.26219204e-03-1.06040817e-02j,
       -6.13016589e-03-7.18047703e-03j, -5.84707689e-03-4.90359776e-03j,
       -5.08184312e-03-3.37584177e-03j, -4.52123769e-03-2.23394134e-03j,
       -4.26784251e-03-1.56559667e-03j, -3.64011596e-03-9.99783631e-04j,
       -3.16493725e-03-5.96167054e-04j, -2.77468236e-03-2.10247264e-04j,
       -2.28362856e-03-8.55092949e-05j, -1.78612734e-03+5.61557317e-05j,
       -1.53203413e-03+8.79380095e-05j, -1.16667233e-03+1.15691226e-04j,
       -1.07761996e-03+1.19403718e-04j, -9.08756920e-04+9.99966505e-05j,
       -6.47442823e-04+7.11724206e-05j, -5.15936641e-04+3.80427409e-05j,
       -6.00506610e-04+4.46381200e-05j, -4.68522572e-04+4.89799895e-05j,
       -3.30825191e-04+1.86624166e-05j, -3.58957361e-04+4.17257143e-05j,
       -3.15489335e-04+3.58919533e-05j, -3.24494875e-04-1.27699177e-05j,
       -3.04049114e-04+1.04072251e-05j, -2.96516926e-04-2.95402497e-05j,
       -3.14581353e-04-6.28239068e-05j, -2.44472234e-04-4.52930472e-05j,
       -2.00084643e-04-3.91148533e-05j, -9.19199301e-05+6.41346051e-05j,
       -7.16933282e-05-6.73393588e-05j, -1.00374717e-04-6.04890374e-05j],
      dtype=complex64), 'SNR': array([1.3275474e+07, 5.3262530e+06, 2.8175798e+06, 2.2548828e+05,
       9.4804019e+05, 4.9070730e+06, 5.6383950e+06, 1.2442429e+08,
       7.3481665e+06, 2.9148000e+06, 1.7800986e+07, 1.4197048e+08,
       5.1048480e+07, 2.7482272e+08, 3.9894668e+07, 2.5408968e+07,
       1.7482924e+07, 1.1816090e+07, 3.9536580e+07, 2.7052854e+08,
       5.8148780e+06, 6.0349825e+06, 2.2304988e+07, 3.5612430e+06,
       8.6483460e+06, 6.5280356e+05, 3.3251504e+04, 3.2008275e+04,
       5.2474487e+03, 1.1012148e+04, 2.1032062e+04, 6.3431931e+05,
       2.0275416e+05, 2.1165735e+06, 5.5447578e+04, 8.4114281e+04,
       4.9681004e+04, 7.9639460e+06, 1.7065251e+06, 2.0867708e+06,
       1.5962190e+06, 2.6169620e+05, 2.2424035e+06, 9.8850512e+05,
       1.9090841e+05, 1.4231462e+05, 1.4806786e+04, 2.7101982e+04,
       1.7778895e+03, 3.2235215e+03, 2.4746475e+03, 6.3499657e+01,
       1.6896085e+02, 3.4305683e+01, 8.1476891e+01, 3.0881732e+02,
       1.3786995e+02, 9.4301865e+01, 1.4036640e+01, 4.4287482e+02,
       1.7489172e+02, 2.4404325e+01, 9.0156433e+01, 7.9770527e+00,
       5.0196791e+00, 3.5699093e+00, 2.3833251e+00, 6.9880581e+00],
      dtype=float32), 'order_initial': 20, 'hints': [{'fitter_update_validate': <function test_HTTS_Y_L_reldeg.<locals>.reldeg_validate at 0x7f19d3fa1760>, 'fitter_check_validate': <function test_HTTS_Y_L_reldeg.<locals>.reldeg_validate at 0x7f19d3fa1760>}], 'relative_degree': -2, 'log_level': 10, 'log_level_debug': 10}
TEE_LOGFILE None
A []
B []
------------:SNR Fix Test:
9D   0.01    W:ratio 0.5 0.9999617877528195 0.5522913089862389 0 34 261696.203125
9D   0.01    W:ratio 0.5 0.9943753535572971 0.7536478191511553 0 17 1777.8895263671875
9D   0.01    W:ratio 0.5 0.842518833592634 0.8962845990314582 8 17 63.499656677246094
9D   0.01    W:ratio 0.5 0.92746787789644 0.8614878261917941 8 12 137.8699493408203
9D   0.01    W:ratio 0.5 0.8890816810786915 0.8855187597956757 8 10 90.15643310546875
9D   0.01    W:ratio 0.5 0.8772658120507271 0.8889740719599489 9 10 81.47689056396484
Captured stderr call
3W   0.01    The number of effective data points N=(ΣW^2)^2/(ΣW^4)=4.65e-02*len(W)
             [where W=SNR] is below the configured 'SNR_regularize_scale'=10,
             given the maximum SNR=274822720.0. Now Finding an SNR ceiling that balances
             the ratio with max SNR.
3W   0.01    Using SNR<81.47689056396484 ceiling.
captured errors:
request = <FixtureRequest for <Function test_HTTS_Y_L_reldeg>>

    @pytest.mark.skipif(module_import_skip, reason="cannot import IIRrational_test_data")
    def test_HTTS_Y_L_reldeg(request, ):
        def reldeg_validate(aid, fitter):
            rdmax = aid.hint("relative_degree_max")
            rdmin = aid.hint("relative_degree_min")
            orders = aid.fitter_orders(fitter)
            # print("DEGREE", orders.total, orders.reldeg, rdmin, rdmax)
            if rdmax is not None:
                assert orders.reldeg <= rdmax
            if rdmin is not None:
                assert orders.reldeg >= rdmin

        hint = {
            "fitter_update_validate": reldeg_validate,
            "fitter_check_validate": reldeg_validate,
        }
        data = testing_data_dev("HTTS_Y_L")
>       out = v2.data2filter(
            F_Hz=data.F_Hz,
            data=data.data,
            SNR=data.SNR,
            order_initial=20,
            hints=[hint],
            relative_degree=-2,
            log_level=10,
            log_level_debug=10,
        )

../../src/wield/control/fitting/SISO/test/v2/test_HTTS_v2.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../src/wield/control/fitting/SISO/v2/data2filter.py:423: in data2filter
    baseline_order = fit_full(aid, emphasis)
../../src/wield/control/fitting/SISO/v2/data2filter.py:486: in fit_full
    aid.fitter_update(representative=True, validate=True)
../../src/wield/control/fitting/SISO/v2/fit_aid.py:459: in fitter_update
    val_func(self, fitter)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

aid = <wield.control.fitting.SISO.v2.fit_aid.FitAid object at 0x7f19ccb047d0>
fitter = <wield.control.fitting.SISO.fitters_ZPK.MRF.MultiReprFilterS object at 0x7f19d3d6dc70>

    def reldeg_validate(aid, fitter):
        rdmax = aid.hint("relative_degree_max")
        rdmin = aid.hint("relative_degree_min")
        orders = aid.fitter_orders(fitter)
        # print("DEGREE", orders.total, orders.reldeg, rdmin, rdmax)
        if rdmax is not None:
>           assert orders.reldeg <= rdmax
E           assert 0 <= -2
E            +  where 0 = Bunch(z=0, \n    p=0, \n    factors_z=0, \n    factors_p=0, \n    maxzp=0, \n    factors_maxzp=0, \n    factors_reldeg=0, \n    total=0, \n    reldeg=0).reldeg

../../src/wield/control/fitting/SISO/test/v2/test_HTTS_v2.py:63: AssertionError