Best Python code snippet using localstack_python
trajectory.py
Source:trajectory.py  
1import numpy as np2from scipy.interpolate import UnivariateSpline3from wzk.math2 import angle2minuspi_pluspi4def full2inner(x):5    return x[..., 1:-1, :].copy()6def inner2full(inner, start=None, end=None):7    n_samples = inner.shape[0]8    def __repeat(x):9        x = np.atleast_2d(x)10        if inner.ndim != 3:11            return x12        else:13            if x.ndim == 2:14                x = x[:, np.newaxis, :]15            return x.repeat(n_samples // x.shape[0], axis=0)16    if start is not None:17        start = __repeat(start)18        inner = np.concatenate((start, inner), axis=-2)19    if end is not None:20        end = __repeat(end)21        inner = np.concatenate((inner, end), axis=-2)22    return inner23def full2start_end(x, mode=''):24    if mode == '1':25        return x[..., [0, -1], :].copy()26    if mode == '20':27        return x[..., 0, :].copy(), x[..., -1, :].copy()28    elif mode == '21':29        return x[..., :1, :].copy(), x[..., -1:, :].copy()30    else:31        raise NotImplementedError32def path_mode(x, mode=None):33    if mode is None or mode == 'full':34        return x35    elif mode == 'inner':36        return x[..., 1:-1, :]37    elif mode == 'wo_start':38        return x[..., 1:, :]39    elif mode == 'wo_end':40        return x[..., :-1, :]41    else:42        raise ValueError43def flat2full(flat, n_dof):44    if flat.ndim == 1:45        flat = flat.reshape(-1, n_dof)46    elif flat.ndim == 2:47        flat = flat.reshape(len(flat), -1, n_dof)48    return flat49def full2flat(x):50    if x.ndim == 2:51        x = x.reshape(-1)52    elif x.ndim == 3:53        x = x.reshape(len(x), -1)54    return x55def periodic_dof_wrapper(x,56                         is_periodic=None):57    if is_periodic is not None and any(is_periodic):58        x[..., is_periodic] = angle2minuspi_pluspi(x[..., is_periodic])59    return x60def get_steps(q,61              is_periodic=None):62    return periodic_dof_wrapper(np.diff(q, axis=-2), is_periodic=is_periodic)63def get_steps_norm(q,64                   is_periodic=None):65    return np.linalg.norm(get_steps(q=q, is_periodic=is_periodic), axis=-1)66def get_substeps(x, n,67                 is_periodic=None, include_start=True):68    *shape, m, d = x.shape69    # only fill in substeps if the number is greater 1,70    if n <= 1 or m <= 1:71        if include_start:72            return x73        else:  # How often does this happen? once?: fill_linear_connection74            return x[..., 1:, :]75    steps = get_steps(q=x, is_periodic=is_periodic)76    delta = (np.arange(n-1, -1, -1)/n) * steps[..., np.newaxis]77    x_ss = x[..., 1:, :, np.newaxis] - delta78    x_ss = np.swapaxes(x_ss, -2, -1)79    x_ss = x_ss.reshape(shape + [(m-1) * n, d])80    if include_start:81        x_ss = np.concatenate((x[..., :1, :], x_ss), axis=-2)82    x_ss = periodic_dof_wrapper(x_ss, is_periodic=is_periodic)83    return x_ss84def get_steps_between(start, end, n, is_periodic=None):85    q = np.concatenate((start[..., np.newaxis, :], end[..., np.newaxis, :]), axis=-2)86    q = get_substeps(q, n=n-1, is_periodic=is_periodic)87    return q88def get_substeps_adjusted(x, n,89                          is_periodic=None, weighting=None):90    *shape, m, d = x.shape91    if shape:92        shape = tuple(shape)93        x_n = np.zeros(shape+(n, d))94        for i in np.ndindex(*shape):95            x_n[i] = get_substeps_adjusted(x=x[i], n=n, is_periodic=is_periodic, weighting=weighting)96        return x_n97    m1 = m - 198    steps = get_steps(q=x, is_periodic=is_periodic)99    if weighting is not None:100        steps *= weighting101    # Distribute the waypoints equally along the linear sequences of the initial path102    steps_length = np.linalg.norm(steps, axis=-1)103    if np.sum(steps_length) == 0:104        relative_steps_length = np.full(m1, fill_value=1 / m1)105    else:106        relative_steps_length = steps_length / np.sum(steps_length)107    # Adjust the number of waypoints for each step to make the initial guess as equally spaced as possible108    n_sub_exact = relative_steps_length * (n - 1)109    n_sub = np.round(n_sub_exact).astype(int)110    # If the number of points do not match, change the substeps where the rounding was worst111    n_diff = (n-1) - np.sum(n_sub)112    if n_diff != 0:113        n_sub_acc = n_sub_exact - n_sub114        n_sub_acc = 0.5 + np.sign(n_diff) * n_sub_acc115        idx = np.argsort(n_sub_acc)[-np.abs(n_diff):]116        n_sub[idx] += np.sign(n_diff)117    n_sub_cs = np.hstack((0, n_sub.cumsum())) + 1118    # Add the linear interpolation between the waypoints - step by step for each dimension119    x_n = np.empty((n, d))120    x_n[0, :] = x[0, :].copy()121    for i in range(m1):122        x_n[n_sub_cs[i]:n_sub_cs[i + 1], :] = \123            get_substeps(x=x[i:i + 2, :], n=n_sub[i], is_periodic=is_periodic, include_start=False)124    x_n = periodic_dof_wrapper(x=x_n, is_periodic=is_periodic)125    return x_n126def x2bee(x, n_wp=None):127    x_se = x[..., [0, -1], :]128    if n_wp is None:129        n_wp = x.shape[-2]130    bee = get_substeps(x_se, n=n_wp-1, include_start=True)131    return bee132def x2beerel(x, n_wp=None, eps=1e-4):133    bee = x2bee(x, n_wp=n_wp)134    beerel = x - bee135    d = np.linalg.norm(x[..., -1, :] - x[..., 0, :], axis=-1, keepdims=True)[..., np.newaxis] + eps136    beerel = beerel / d137    return beerel138def beerel2x(beerel, se, eps=1e-4):139    n_wp = beerel.shape[-2]140    assert np.all(beerel[..., [0, -1], :] == 0)141    bee = x2bee(x=se, n_wp=n_wp)142    d = np.linalg.norm(se[..., -1, :] - se[..., 0, :], axis=-1, keepdims=True)[..., np.newaxis] + eps143    x = bee + beerel * d144    return x145def get_path_adjusted(x, n=None, is_periodic=None, weighting=None, __m=5):146    n0 = x.shape[-2]147    if n is None:148        n = n0149    else:150        pass151    return get_substeps_adjusted(x=x, n=(n - 1) * (n0*__m) + 1,152                                 is_periodic=is_periodic, weighting=weighting)[..., ::(n0*__m), :]153def order_path(x, start=None, end=None, is_periodic=None, weights=1.):154    """155    Order the points given by 'x' [2d: (n, d)] according to a weighted euclidean distance156    so that always the nearest point comes next.157    Start with the first point in the array and end with the last if 'x_start' or 'x_end' aren't given.158    """159    # Handle different input combinations160    d = None161    if start is None:162        start = x[..., 0, :]163        x = np.delete(x, 0, axis=-2)164    else:165        d = np.size(start)166    if x is None:167        n = 0168    else:169        n, d = x.shape170    if end is None:171        x_o = np.zeros((n + 1, d))172    else:173        x_o = np.zeros((n + 2, d))174        x_o[-1, :] = end.ravel()175    # Order the points, so that always the nearest is visited next, according to the euclidean distance176    x_o[0, :] = start.ravel()177    for i in range(n):178        x_diff = np.linalg.norm(periodic_dof_wrapper(x - start, is_periodic=is_periodic) * weights, axis=-1)179        i_min = np.argmin(x_diff)180        x_o[1 + i, :] = x[i_min, :]181        start = x[i_min, :]182        x = np.delete(x, i_min, axis=-2)183    return x_o184#185# DERIVATIVES186def d_substeps__dx(n, order=0):187    """188    Get the dependence of substeps ' on the outer way points (x).189    The substeps are placed linear between the waypoints.190    To prevent counting points double one step includes only one of the two endpoints191    This gives a symmetric number of steps but ignores either the start or the end in192    the following calculations.193         x--'--'--'--x---'---'---'---x---'---'---'---x--'--'--'--x--'--'--'--x194    0:  {>         }{>            } {>            } {>         }{>         }195    1:     {         <} {            <} {            <}{         <}{         <}196    Ordering of the waypoints into a matrix:197    0:198    s00 s01 s02 s03 -> step 0 (with start)199    s10 s11 s12 s13200    s20 s21 s22 s23201    s30 s31 s32 s33202    s40 s41 s42 s43 -> step 4 (without end)203    1: (shifting by one, and reordering)204    s01 s02 s03 s10 -> step 0 (without start)205    s11 s12 s13 s20206    s21 s22 s23 s30207    s31 s32 s33 s40208    s41 s42 s43 s50 -> step 4 (with end)209    n          # way points210    n-1        # steps211    n_s        # intermediate points per step212    (n-1)*n_s  # substeps (total)213    n_s = 5214    jac0 = ([[1., 0.8, 0.6, 0.4, 0.2],  # following step  (including way point (1.))215             [0., 0.2, 0.4, 0.6, 0.8]]) # previous step  (excluding way point (1.))216    jac1 = ([[0.2, 0.4, 0.6, 0.8, 1.],  # previous step  (including way point (2.))217             [0.8, 0.6, 0.4, 0.2, 0.]])  # following step  (excluding way point (2.))218    """219    if order == 0:220        jac = (np.arange(n) / n)[np.newaxis, :].repeat(2, axis=0)221        jac[0, :] = 1 - jac[0, :]222    else:223        jac = (np.arange(start=n - 1, stop=-1, step=-1) / n)[np.newaxis, :].repeat(2, axis=0)224        jac[0, :] = 1 - jac[0, :]225    return jac226def combine_d_substeps__dx(d_dxs, n):227    # Combine the jacobians of the sub-way-points (joints) to the jacobian for the optimization variables228    if n <= 1:229        return d_dxs230    if d_dxs.ndim == 3:231        n_samples, n_wp_ss, n_dof = d_dxs.shape232        d_dxs = d_dxs.reshape(n_samples, n_wp_ss//n, n, n_dof)233        ss_jac = d_substeps__dx(n=n, order=1)[np.newaxis, np.newaxis, ..., np.newaxis]234        d_dx = np.einsum('ijkl, ijkl -> ijl', d_dxs, ss_jac[:, :, 0, :, :])235        d_dx[:, :-1, :] += np.einsum('ijkl, ijkl -> ijl', d_dxs[:, 1:, :, :], ss_jac[:, :, 1, :, :])236        return d_dx237    else:238        raise ValueError(f"{d_dxs.ndim}")239def to_spline(x, n_c=4, start_end0=False):240    n_wp, n_dof = x.shape[-2:]241    xx = np.linspace(0, 1, n_wp)242    if np.ndim(x) == 2:243        c = np.zeros((n_c, n_dof))244        for i_d in range(n_dof):245            spl = UnivariateSpline(x=xx, y=x[:, i_d])246            c[..., i_d] = spl.get_coeffs()247    elif np.ndim(x) == 3:248        n = x.shape[0]249        c = np.zeros((n, n_c, n_dof))250        for i_n in range(n):251            for i_d in range(n_dof):252                spl = UnivariateSpline(x=xx, y=x[i_n, :, i_d])253                c[i_n, :, i_d] = spl.get_coeffs()254    else:255        raise ValueError256    if start_end0:257        c = c[..., 1:-1, :]258    return c259def set_spline_coeffs(spl, coeffs):260    data = spl._data  # noqa261    k, n = data[5], data[7]262    data[9][:n - k - 1] = np.ravel(coeffs)263    spl._data = data264def from_spline(c, n_wp, start_end0=False):265    xx = np.linspace(0, 1, n_wp)266    spl = UnivariateSpline(x=xx, y=xx, )267    if start_end0:268        z = np.zeros_like(c[..., :1, :])269        c = np.concatenate((z, c, z), axis=-2)270    n_c, n_dof = c.shape[-2:]271    if np.ndim(c) == 2:272        x = np.zeros((n_wp, n_dof))273        for i_d in range(n_dof):274            set_spline_coeffs(spl, coeffs=c[:, i_d])275            x[:, i_d] = spl(xx)276    elif np.ndim(c) == 3:277        n = c.shape[0]278        x = np.zeros((n, n_wp, n_dof))279        for i_n in range(n):280            for i_d in range(n_dof):281                spl = UnivariateSpline(x=xx, y=x[i_n, :, i_d])282                set_spline_coeffs(spl, coeffs=c[i_n, :, i_d])283                x[i_n, :, i_d] = spl(xx)284    else:285        raise ValueError286    return x287# TODO which way is the best? Start and end MUST match288def fromto_spline(x, n_c=4, start_end0=False):289    return from_spline(c=to_spline(x=x, n_c=n_c, start_end0=start_end0), n_wp=x.shape[-2])290def fromto_spline2(x, n_c=4, start_end0=False):291    n_wp = x.shape[-2]292    x2 = get_steps_between(start=x[..., 0, :], end=x[..., -1, :], n=n_wp)293    dx = x - x2294    c = to_spline(dx, n_c=n_c, start_end0=start_end0)295    dx_spline = from_spline(c=c, n_wp=n_wp)296    x_spline = x2 + dx_spline297    x_spline = get_path_adjusted(x=x_spline)...test_geometry.py
Source:test_geometry.py  
1# -*- coding: utf-8 -*-2import numpy as np3import pytest4import amrex5from amrex import Geometry as Gm6# TODO: return coord?7@pytest.fixture8def box():9    return amrex.Box(amrex.IntVect(0, 0, 0), amrex.IntVect(127, 127, 127))10@pytest.fixture11def real_box():12    return amrex.RealBox([0, 0, 0], [1, 2, 5])13@pytest.fixture14def geometry(box, real_box):15    coord = 116    is_periodic = [0, 0, 1]17    return amrex.Geometry(box, real_box, coord, is_periodic)18def test_geometry_data(box, real_box):19    gd = amrex.GeometryData()20    print(gd.coord)21    assert gd.coord == 022    print(gd.domain)23    print(gd.domain.small_end)24    assert gd.domain.small_end == amrex.IntVect(1, 1, 1)25    print(gd.domain.big_end)26    assert gd.domain.big_end == amrex.IntVect(0, 0, 0)27    print(gd.prob_domain)28    assert amrex.AlmostEqual(gd.prob_domain, amrex.RealBox(0, 0, 0, -1, -1, -1))29    print(gd.isPeriodic())30    print(gd.is_periodic)31    assert gd.is_periodic == gd.isPeriodic() == [0, 0, 0]32    with pytest.raises(AttributeError):33        gd.coord = 134    with pytest.raises(AttributeError):35        gd.domain = box36    with pytest.raises(AttributeError):37        gd.prob_domain = real_box38    with pytest.raises(AttributeError):39        gd.is_periodic = [1, 0, 1]40    with pytest.raises(AttributeError):41        gd.dx = [0.1, 0.2, 0.3]42@pytest.mark.skipif(amrex.Config.spacedim != 3, reason="Requires AMREX_SPACEDIM = 3")43def test_geometry_define(box, real_box):44    gm = Gm()45    coord = 146    is_periodic = [0, 0, 1]47    gm.define(box, real_box, coord, is_periodic)48    assert gm.ProbLength(0) == 1 and gm.ProbLength(1) == 2 and gm.ProbLength(2) == 549    assert gm.isPeriodic() == is_periodic50@pytest.mark.skipif(amrex.Config.spacedim != 3, reason="Requires AMREX_SPACEDIM = 3")51def test_probDomain(box, real_box):52    gm = Gm()53    coord = 154    is_periodic = [0, 0, 1]55    gm.define(box, real_box, coord, is_periodic)56    assert gm.ok()57    lo = [0, -1, 1]58    hi = [1, 0, 2]59    rb = amrex.RealBox(lo, hi)60    gm.ProbDomain(rb)61    assert (62        np.isclose(gm.ProbLo(0), lo[0])63        and np.isclose(gm.ProbLo(1), lo[1])64        and np.isclose(gm.ProbLo(2), lo[2])65        and np.isclose(gm.ProbHi(0), hi[0])66        and np.isclose(gm.ProbHi(1), hi[1])67        and np.isclose(gm.ProbHi(2), hi[2])68    )69@pytest.mark.skipif(amrex.Config.spacedim != 3, reason="Requires AMREX_SPACEDIM = 3")70def test_size(geometry):71    gm = geometry72    assert np.isclose(gm.ProbSize(), 10)73    assert np.isclose(gm.ProbLength(0), 1)74    assert np.isclose(gm.ProbLength(1), 2)75    assert np.isclose(gm.ProbLength(2), 5)76@pytest.mark.skipif(amrex.Config.spacedim != 3, reason="Requires AMREX_SPACEDIM = 3")77def test_domain(box, real_box):78    bx = amrex.Box(amrex.IntVect(0, 0, 0), amrex.IntVect(127, 127, 127))79    gm = Gm()80    coord = 181    is_periodic = [0, 0, 1]82    gm.define(box, real_box, coord, is_periodic)83    assert gm.ok()84    gm.Domain(bx)85    assert gm.Domain().small_end == bx.small_end and gm.Domain().big_end == bx.big_end86@pytest.mark.skipif(amrex.Config.spacedim != 3, reason="Requires AMREX_SPACEDIM = 3")87def test_periodic_queries(box, real_box):88    coord = 189    is_periodic = [0, 0, 1]90    gm = Gm(box, real_box, coord, is_periodic)91    pdcity = gm.periodicity()92    assert gm.isAnyPeriodic()93    assert not gm.isPeriodic(0) and not gm.isPeriodic(1) and gm.isPeriodic(2)94    assert not gm.isAllPeriodic()95    assert gm.isPeriodic() == is_periodic96    gm.setPeriodicity([0, 0, 0])97    assert not gm.isAnyPeriodic()98    gm.setPeriodicity([1, 1, 1])99    assert gm.isAllPeriodic()100@pytest.mark.skipif(amrex.Config.spacedim != 3, reason="Requires AMREX_SPACEDIM = 3")101def test_periodicity(geometry):102    gm = geometry103    bx = gm.Domain()104    for non_periodic_coord in [0, 1]:105        error_thrown = False106        try:107            gm.period(0)108        except RuntimeError:109            error_thrown = True110        assert error_thrown111    assert gm.period(2) == bx.length(2)112    pdcity = amrex.Periodicity(bx.length() * amrex.IntVect(gm.isPeriodic()))113    assert gm.periodicity() == pdcity114    iv1 = amrex.IntVect(0, 0, 0)115    iv2 = amrex.IntVect(9, 19, 29)116    pdcity = amrex.Periodicity(amrex.IntVect(0, 0, 30))117    bx = amrex.Box(iv1, iv2)118    assert gm.periodicity(bx) == pdcity119@pytest.mark.skipif(amrex.Config.spacedim != 3, reason="Requires AMREX_SPACEDIM = 3")120def test_grow(geometry):121    gm = geometry122    gm_grow_pd = gm.growPeriodicDomain(2)123    assert gm_grow_pd.small_end == amrex.IntVect(0, 0, -2)124    assert gm_grow_pd.big_end == amrex.IntVect(127, 127, 129)125    gm_grow_npd = gm.growNonPeriodicDomain(3)126    assert gm_grow_npd.small_end == amrex.IntVect(-3, -3, 0)127    assert gm_grow_npd.big_end == amrex.IntVect(130, 130, 127)128def test_data(geometry, box, real_box):129    geometry_data = geometry.data()130    gd = geometry_data131    assert gd.domain.small_end == box.small_end == gd.Domain().small_end132    assert gd.domain.big_end == box.big_end == gd.Domain().big_end133    assert amrex.AlmostEqual(gd.prob_domain, real_box)134    assert np.allclose(real_box.lo(), gd.prob_domain.lo())135    assert np.allclose(real_box.hi(), gd.prob_domain.hi())136    assert (137        np.isclose(real_box.lo(0), gd.prob_domain.lo(0))138        and np.isclose(real_box.lo(1), gd.prob_domain.lo(1))139        and np.isclose(real_box.lo(2), gd.prob_domain.lo(2))140    )141    assert (142        np.isclose(real_box.hi(0), gd.prob_domain.hi(0))143        and np.isclose(real_box.hi(1), gd.prob_domain.hi(1))144        and np.isclose(real_box.hi(2), gd.prob_domain.hi(2))145    )146    assert np.allclose(real_box.lo(), gd.ProbLo())147    assert np.allclose(real_box.hi(), gd.ProbHi())148    assert (149        np.isclose(real_box.lo(0), gd.ProbLo(0))150        and np.isclose(real_box.lo(1), gd.ProbLo(1))151        and np.isclose(real_box.lo(2), gd.ProbLo(2))152    )153    assert (154        np.isclose(real_box.hi(0), gd.ProbHi(0))155        and np.isclose(real_box.hi(1), gd.ProbHi(1))156        and np.isclose(real_box.hi(2), gd.ProbHi(2))157    )158    assert gd.coord == gd.Coord() == 1159    assert gd.is_periodic == [0, 0, 1]160    assert gd.is_periodic[0] == gd.isPeriodic(0) == 0161    assert gd.is_periodic[1] == gd.isPeriodic(1) == 0162    assert gd.is_periodic[2] == gd.isPeriodic(2) == 1163    print(gd.CellSize())164    assert np.allclose(gd.CellSize(), [0.0078125, 0.015625, 0.0390625])165    assert np.isclose(gd.CellSize(0), 0.0078125)166    assert np.isclose(gd.CellSize(1), 0.015625)167    assert np.isclose(gd.CellSize(2), 0.0390625)168@pytest.mark.skipif(amrex.Config.spacedim != 3, reason="Requires AMREX_SPACEDIM = 3")169def test_coarsen_refine(geometry):170    iv1 = amrex.IntVect(-1, -2, -3)171    iv2 = amrex.IntVect(4, 5, 6)172    bx = amrex.Box(iv1, iv2)173    rb = amrex.RealBox(-1, -2, -3, 2, 4, 6)174    gmc = amrex.Geometry(bx, rb, 1, [0, 0, 1])175    cv = amrex.IntVect(2, 2, 1)176    gmc.coarsen(cv)177    assert gmc.Domain().small_end == amrex.IntVect(-1, -1, -3)178    assert gmc.Domain().big_end == amrex.IntVect(2, 2, 6)179    gmr = amrex.Geometry(bx, rb, 1, [0, 0, 1])180    rv = amrex.IntVect(2, 2, 3)181    gmr.refine(rv)182    assert gmr.Domain().small_end == amrex.IntVect(-2, -4, -9)183    assert gmr.Domain().big_end == amrex.IntVect(9, 11, 20)184@pytest.mark.skipif(amrex.Config.spacedim != 3, reason="Requires AMREX_SPACEDIM = 3")185def test_roundoff_domain():186    iv1 = amrex.IntVect(-1, -2, -3)187    iv2 = amrex.IntVect(4, 5, 6)188    bx = amrex.Box(iv1, iv2)189    rb = amrex.RealBox(0, 1.0002, 0.00105, 2, 4.2, 5)190    gm = Gm(bx, rb, 1, [0, 0, 1])191    assert gm.outsideRoundOffDomain(-1.0, 1, 2)192    assert not gm.outsideRoundOffDomain(1.00, 2.0, 2)193    assert not gm.insideRoundOffDomain(-1.0, 1, 2)194    assert gm.insideRoundOffDomain(1.00, 2.0, 2)195@pytest.mark.skipif(amrex.Config.spacedim != 3, reason="Requires AMREX_SPACEDIM = 3")196def test_Resets():197    rb = amrex.RealBox(0, 0, 0, 1, 2, 6)198    amrex.Geometry.ResetDefaultProbDomain(rb)199    Gm.ResetDefaultProbDomain(rb)200    is_periodic = [1, 0, 1]201    Gm.ResetDefaultPeriodicity(is_periodic)202    Gm.ResetDefaultCoord(1)203    gm = Gm()204    assert (205        np.isclose(gm.ProbLength(0), 1)206        and np.isclose(gm.ProbLength(1), 2)207        and np.isclose(gm.ProbLength(2), 6)208    )209    assert gm.isPeriodic() == is_periodic210    print(gm.Coord())211    CType = amrex.CoordSys.CoordType...verify.py
Source:verify.py  
1from printer import print_line2def set_verification(app_data, is_periodic):3    print_line()4    print("[verify]: Setting the verification values ...")5    verify_data = {}6    verify_data['verified'] = False7    verify_data['epsilon'] = 1.0e-88    verify_value = 0.09    Class = app_data['prob_class']10    if Class == 'S':11        if is_periodic == True:12            verify_value = 0.530770700573e-0413        else:14            verify_value = 0.115028215110e-0115    elif Class == 'W':16        if is_periodic == True:17            verify_value = 0.646732937534e-0518        else:19            verify_value = 0.731581264884e-0120    elif Class == 'A':21        if is_periodic == True:22            verify_value = 0.243336530907e-0523        else:24            verify_value = 0.979991065870e-0125    elif Class == 'B':26        if is_periodic == True:27            verify_value = 0.180056440136e-0528        else:29            verify_value = 0.184378110108e+1930    elif Class == 'C':31        if is_periodic == True:32            verify_value = 0.570673228574e-0633        else:34            verify_value = 0.474623829181e+2435    elif Class == 'D':36        if is_periodic == True:37            verify_value = 0.158327506043e-0938        else:39            verify_value = 0.183242406095e+8440    #fi41    verify_data['verify_value'] = verify_value42    app_data['verify_data'] = verify_data43    return44def verify_norm(app_data):45    print_line()46    print("[verify]: Verifying the results ...")47    verify_data = app_data['verify_data']48    rnm2 = app_data['rnm2']49    verify_value = verify_data['verify_value']50    epsilon = verify_data['epsilon']51    err = abs(rnm2 - verify_value) / verify_value52    if err <= epsilon:53        print("[verify]: VERIFICATION SUCCESSFUL")54        print("[verify]: L2 norm            =", rnm2)55        print("[verify]: Error              =", err)56    else:57        print("[verify]: VERIFICATION FAILED")58        print("[verify]: L2 norm            =", rnm2)59        print("[verify]: Correct L2 norm    =", verify_value)60    #fi61    verify_data['verified'] = True...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
