Commit 29d117c2 authored by lucas_miranda's avatar lucas_miranda
Browse files

Added speed computing tests

parent ca2088d2
......@@ -90,8 +90,10 @@ def compute_dist(
- result (pd.DataFrame): pandas.DataFrame with the
absolute distances between a pair of body parts"""
a, b = pair_array[:, :2], pair_array[:, 2:]
lim = 2 if pair_array.shape[1] == 4 else 1
a, b = pair_array[:, :lim], pair_array[:, lim:]
ab = a - b
dist = np.sqrt(np.einsum("...i,...i", ab, ab))
return pd.DataFrame(dist * arena_abs / arena_rel)
......@@ -199,18 +201,21 @@ def align_trajectories(data: np.array, mode: str = "all") -> np.array:
center_time = (data.shape[1] - 1) // 2
angles = np.arctan2(data[:, center_time, 0], data[:, center_time, 1])
elif mode == "all":
data = data.reshape(-1, dshape[-1])
data = data.reshape(-1, dshape[-1], order="C")
angles = np.arctan2(data[:, 0], data[:, 1])
elif mode == "none":
data = data.reshape(-1, dshape[-1], order="C")
angles = np.zeros(data.shape[0])
aligned_trajs = np.zeros(data.shape)
for frame in range(data.shape[0]):
aligned_trajs[frame] = rotate(
data[frame].reshape([-1, 2]), angles[frame],
).reshape(data.shape[1:])
data[frame].reshape([-1, 2], order="C"), angles[frame],
).reshape(data.shape[1:], order="C")
if mode == "all":
aligned_trajs = aligned_trajs.reshape(dshape)
if mode == "all" or mode == "none":
aligned_trajs = aligned_trajs.reshape(dshape, order="C")
return aligned_trajs
......@@ -436,33 +441,52 @@ def climb_wall(
return climbing
def rolling_speed(dframe, typ, pause=10, rounds=5, order=1):
"""Returns the average speed over 10 frames in pixels per frame"""
s = dframe.shape[0]
def rolling_speed(
dframe: pd.DatetimeIndex, window: int = 10, rounds: int = 10, deriv: int = 1
) -> pd.DataFrame:
"""Returns the average speed over n frames in pixels per frame
Parameters:
- dframe (pandas.DataFrame): position over time dataframe
- pause (int): frame-length of the averaging window
- rounds (int): float rounding decimals
- deriv (int): position derivative order; 1 for speed,
2 for acceleration, 3 for jerk, etc
if typ == "coords":
bp = dframe.shape[1] / 2 if order == 1 else dframe.shape[1]
d = 2 if order == 1 else 1
Returns:
- speeds (pd.DataFrame): containing 2D speeds for each body part
in the original data or their consequent derivatives"""
original_shape = dframe.shape
body_parts = dframe.columns.levels[0]
speeds = pd.DataFrame
for der in range(deriv):
distances = np.concatenate(
[
np.array(dframe).reshape([-1, (2 if der == 0 else 1)], order="F"),
np.array(dframe.shift()).reshape(
[-1, (2 if der == 0 else 1)], order="F"
),
],
axis=1,
)
else:
bp = dframe.shape[1]
d = 1
distances = np.array(compute_dist(distances))
distances = distances.reshape(
[original_shape[0], original_shape[1] // 2], order="F"
)
distances = pd.DataFrame(distances, index=dframe.index)
speeds = np.round(distances.rolling(window).mean(), rounds)
speeds[np.isnan(speeds)] = 0.0
distances = np.linalg.norm(
np.array(dframe).reshape(s, int(bp), d)
- np.array(dframe.shift()).reshape(s, int(bp), d),
axis=2,
)
dframe = speeds
distances = pd.DataFrame(distances, index=dframe.index)
speeds = np.round(distances.rolling(pause).mean(), rounds)
speeds[np.isnan(speeds)] = 0.0
speeds.columns = body_parts
return speeds
def huddle(pos_dict, fnum, tol, tol2, mouse="B"):
def huddle(pos_dict, tol, tol2, mouse="B"):
"""Returns true when the specified mouse is huddling"""
return (
......@@ -700,8 +724,8 @@ def Tag_video(
)
# Compute speed on a rolling window
tagdict["bspeed"] = rolling_speed(dframe["B_Center"], pause=speedpause)
tagdict["wspeed"] = rolling_speed(dframe["W_Center"], pause=speedpause)
tagdict["bspeed"] = rolling_speed(dframe["B_Center"], window=speedpause)
tagdict["wspeed"] = rolling_speed(dframe["W_Center"], window=speedpause)
if any([show, save]):
# Loop over the frames in the video
......
,scorer,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.1,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.2,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.3,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.4,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.5,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.6,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.7,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.8,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.9,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.10,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.11,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.12,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.13,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.14,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.15,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.16,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.17,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.18,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.19,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.20,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.21,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.22,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.23,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.24,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.25,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.26,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.27,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.28,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.29,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.30,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.31,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.32,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.33,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.34,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.35,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.36,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.37,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.38,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.39,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.40,DLC_resnet50_deepof_single_topviewAug28shuffle1_1030000.41
0,bodyparts,Nose,Nose,Nose,Left_ear,Left_ear,Left_ear,Right_ear,Right_ear,Right_ear,Spine_1,Spine_1,Spine_1,Center,Center,Center,Spine_2,Spine_2,Spine_2,Tail_base,Tail_base,Tail_base,Tail_1,Tail_1,Tail_1,Tail_2,Tail_2,Tail_2,Tail_tip,Tail_tip,Tail_tip,Left_bhip,Left_bhip,Left_bhip,Right_bhip,Right_bhip,Right_bhip,Left_fhip,Left_fhip,Left_fhip,Right_fhip,Right_fhip,Right_fhip
1,coords,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood,x,y,likelihood
2,0,321.7864074707031,279.9944152832031,0.9999995231628418,305.66082763671875,284.1924743652344,0.9999982118606567,313.52740478515625,295.6185302734375,0.9999988675117493,299.8774108886719,294.3467102050781,0.9999982714653015,286.9008483886719,305.1651306152344,0.9999656677246094,273.994384765625,310.9064025878906,0.9999967813491821,257.56689453125,317.3056640625,0.9999994039535522,236.46583557128906,321.2188415527344,0.9999994039535522,210.152099609375,316.280029296875,0.999998927116394,191.57794189453125,306.7235412597656,0.9999997615814209,262.12408447265625,299.0452575683594,0.9999978542327881,281.63861083984375,322.350830078125,0.9999223947525024,292.8892517089844,284.6905517578125,0.999991774559021,307.343505859375,303.76702880859375,0.9999868869781494
3,1,327.0859680175781,275.70452880859375,0.9999994039535522,309.6587219238281,281.42578125,0.9999969005584717,318.1083068847656,291.7984313964844,0.9999991655349731,304.0071105957031,291.8552551269531,0.9999997615814209,293.1524963378906,302.5064697265625,0.9999920129776001,280.509033203125,311.1799011230469,0.9999966621398926,262.5455322265625,317.2895202636719,0.9999996423721313,243.06715393066406,321.543701171875,0.9999998211860657,218.7965545654297,318.1690368652344,0.9999997615814209,199.2876739501953,312.0535888671875,0.9999998211860657,264.98480224609375,299.8907165527344,0.9999944567680359,285.11553955078125,320.7864685058594,0.999954104423523,297.0074157714844,282.4609375,0.9999780654907227,311.9873352050781,301.5010681152344,0.9999886751174927
4,2,330.4190673828125,271.64813232421875,0.9999988079071045,313.9596252441406,278.5182189941406,0.9999930262565613,323.8216857910156,288.92926025390625,0.9999988079071045,309.3366394042969,290.1162414550781,0.9999992847442627,297.2020263671875,300.70068359375,0.9999741315841675,284.419189453125,309.0053405761719,0.9999972581863403,268.5704650878906,316.9551086425781,0.9999983906745911,249.689453125,321.86553955078125,0.9999992251396179,229.00270080566406,318.8466491699219,1.0,211.6363067626953,313.9662170410156,0.9999998807907104,268.2113037109375,300.46832275390625,0.9999915957450867,288.8795166015625,322.1364440917969,0.9999651312828064,300.3100891113281,280.9918518066406,0.9999685287475586,318.1178283691406,299.004150390625,0.9999830722808838
5,3,334.5060119628906,268.4765930175781,0.9999955892562866,317.92852783203125,274.943359375,0.9999904632568359,328.0828857421875,285.9749450683594,0.9999948740005493,313.7651672363281,286.64276123046875,0.999992847442627,301.53778076171875,297.9413146972656,0.999983549118042,289.1869812011719,308.0235595703125,0.9999979734420776,273.0370788574219,316.7059631347656,0.9999995231628418,253.88311767578125,322.253173828125,0.9999995827674866,232.27291870117188,318.6571960449219,0.999998927116394,214.17391967773438,310.6844177246094,0.9999999403953552,275.993896484375,297.34844970703125,0.9999955892562866,294.51397705078125,320.2091064453125,0.9999757409095764,303.8191833496094,278.718994140625,0.9999423027038574,321.3238220214844,295.8558654785156,0.9999649524688721
6,4,336.6714782714844,264.0709533691406,0.9999997019767761,322.2580871582031,271.75604248046875,0.9999918937683105,332.53424072265625,281.7124938964844,0.999995768070221,317.25433349609375,282.87860107421875,0.9999985098838806,305.8335876464844,295.40252685546875,0.9999915361404419,293.3653259277344,305.5113525390625,0.9999991059303284,277.5843811035156,315.07843017578125,0.9999997615814209,261.2330322265625,320.49591064453125,0.9999998807907104,240.78485107421875,318.5222473144531,0.9999997615814209,224.90090942382812,312.50762939453125,0.9999995231628418,283.1654052734375,293.4952697753906,0.9999964237213135,300.4433288574219,317.6142272949219,0.999997079372406,308.8462829589844,276.8486022949219,0.9999929666519165,325.767578125,291.9089050292969,0.9999721050262451
7,5,338.8237609863281,259.7372741699219,0.9999998807907104,324.80389404296875,268.7807922363281,0.9999985694885254,335.2571716308594,277.60943603515625,0.9999964237213135,320.3153991699219,280.3871765136719,0.9999983310699463,308.6853332519531,292.00732421875,0.999997615814209,298.55865478515625,302.85150146484375,0.9999982118606567,283.20477294921875,312.5348205566406,0.9999980926513672,265.8277893066406,319.1864013671875,0.9999995231628418,240.1988525390625,316.87969970703125,0.9999982714653015,222.24197387695312,307.7298278808594,0.9999998807907104,289.1572265625,292.00335693359375,0.9999991655349731,308.4129943847656,312.41717529296875,0.9999947547912598,311.2310485839844,273.74847412109375,0.9999592900276184,329.0758972167969,289.02020263671875,0.9999567270278931
8,6,342.1973876953125,257.1493225097656,0.9999987483024597,326.3176574707031,264.8803405761719,0.9999975562095642,337.7223815917969,274.286865234375,0.9999988079071045,323.3399658203125,276.7010803222656,0.9999998807907104,311.81671142578125,289.51348876953125,0.9999960064888,302.9460754394531,300.50738525390625,0.9999996423721313,288.9923095703125,311.08245849609375,0.999998927116394,273.056884765625,317.5334777832031,0.9999996423721313,249.0185546875,317.8982238769531,0.9999994039535522,232.12774658203125,311.58984375,0.9999998807907104,292.5061340332031,290.034912109375,0.9999991655349731,312.39654541015625,309.0645751953125,0.999974250793457,313.2773132324219,270.4516906738281,0.9999858140945435,332.63812255859375,285.5257263183594,0.9999852180480957
9,7,344.7782897949219,254.00848388671875,0.9999979734420776,328.5389709472656,260.63824462890625,0.9999969005584717,340.4918518066406,270.3646240234375,0.9999980926513672,325.3454895019531,272.32806396484375,0.9999997019767761,314.8409118652344,285.8310852050781,0.9999985694885254,305.7230224609375,297.2454528808594,0.9999995827674866,292.98565673828125,309.21600341796875,0.9999998807907104,274.33367919921875,317.20220947265625,0.9999999403953552,248.9339141845703,317.36480712890625,0.9999990463256836,232.6364288330078,308.4588317871094,0.9999998807907104,295.89483642578125,287.04449462890625,0.9999943971633911,315.4678955078125,305.6531677246094,0.9999814033508301,313.77667236328125,267.26214599609375,0.9999867081642151,335.635498046875,281.39178466796875,0.9999921321868896
10,8,347.4989929199219,253.52598571777344,0.9999983310699463,331.34503173828125,257.5873718261719,0.999995231628418,342.3507995605469,268.371337890625,0.9999977350234985,328.1563720703125,269.696044921875,0.9999989867210388,317.1274108886719,282.8573913574219,0.9999980926513672,307.739501953125,295.29010009765625,0.9999998807907104,296.00958251953125,307.499267578125,0.9999997615814209,278.84686279296875,317.08319091796875,0.9999998807907104,255.16404724121094,319.1007385253906,0.9999971389770508,236.6320343017578,311.1502990722656,1.0,298.6144714355469,285.7929992675781,0.9999827146530151,318.1817626953125,303.667236328125,0.999991774559021,315.1496887207031,264.0911865234375,0.9999324083328247,335.7398681640625,281.8724670410156,0.9999789595603943
11,9,350.853759765625,253.75668334960938,0.9999948143959045,334.72857666015625,256.5538635253906,0.9999865293502808,343.22113037109375,267.4593200683594,0.9999963045120239,330.34619140625,267.9066467285156,0.9999977946281433,319.0589599609375,280.1928405761719,0.9999963045120239,309.9710693359375,293.328125,0.9999998807907104,299.30316162109375,306.73992919921875,0.9999997615814209,282.9940490722656,318.0300598144531,0.9999997615814209,261.37005615234375,320.50262451171875,0.9999997615814209,240.9342041015625,313.27459716796875,0.9999992251396179,298.4796447753906,284.7976989746094,0.9999938011169434,320.6761169433594,301.38006591796875,0.9999963045120239,317.6734924316406,262.2158203125,0.9999101758003235,336.45208740234375,278.5016784667969,0.9999936819076538
12,10,351.1809997558594,253.53329467773438,0.9999802112579346,335.99005126953125,256.3735656738281,0.9999746084213257,344.1318664550781,266.7430419921875,0.9999955892562866,330.9982604980469,267.5301818847656,0.9999991655349731,319.7397766113281,278.5572509765625,0.999997079372406,311.31378173828125,292.0672912597656,0.9999999403953552,301.109375,306.185302734375,0.9999997615814209,285.362060546875,317.81378173828125,0.9999997019767761,263.32061767578125,321.12884521484375,0.9999996423721313,243.28384399414062,313.2882995605469,0.9999997615814209,299.123779296875,283.0916442871094,0.9999944567680359,323.36663818359375,298.8363037109375,0.9999986886978149,319.05712890625,260.50775146484375,0.999971330165863,337.3118896484375,277.22076416015625,0.9999982118606567
13,11,354.2748107910156,255.16307067871094,0.9999945163726807,336.9726257324219,256.8808898925781,0.9999876022338867,345.8560485839844,269.1570739746094,0.9999966025352478,332.2501220703125,267.9696044921875,0.9999995827674866,320.4464416503906,279.0586853027344,0.9999972581863403,312.361328125,291.6931457519531,0.9999998211860657,302.69805908203125,306.0731506347656,0.9999998807907104,288.0173034667969,318.3255615234375,0.9999995231628418,266.3686828613281,321.49737548828125,0.9999999403953552,245.64015197753906,314.9606018066406,0.9999996423721313,299.85479736328125,282.2408447265625,0.9999933242797852,324.7231750488281,297.4534606933594,0.9999983310699463,320.66534423828125,260.61614990234375,0.9999913573265076,338.5454406738281,278.4653625488281,0.9999986290931702
14,12,354.8505859375,253.66165161132812,0.9999980926513672,338.6573791503906,256.9320373535156,0.999995231628418,346.2902526855469,268.7314147949219,0.999997615814209,333.3760070800781,268.0704650878906,0.9999996423721313,321.5964050292969,279.1463623046875,0.9999977350234985,313.266845703125,291.3772277832031,0.9999996423721313,304.0565185546875,305.9864501953125,0.9999996423721313,290.2103576660156,318.1630554199219,0.9999999403953552,267.9025573730469,322.3601379394531,0.9999999403953552,247.0559539794922,316.61529541015625,0.9999992847442627,300.60699462890625,282.727294921875,0.9999952912330627,325.53399658203125,297.8350524902344,0.9999969005584717,321.8846435546875,260.1670227050781,0.9999843835830688,339.0807189941406,278.6418762207031,0.9999988079071045
15,13,354.4783935546875,253.92762756347656,0.999997079372406,338.0447692871094,256.63629150390625,0.9999948740005493,345.90423583984375,269.5141906738281,0.9999979138374329,333.28094482421875,268.4510803222656,0.9999996423721313,322.1076354980469,279.71783447265625,0.9999967813491821,313.8962097167969,291.94903564453125,0.9999996423721313,304.70965576171875,305.9699401855469,0.9999997019767761,290.4445495605469,318.8441162109375,0.9999998807907104,268.0901184082031,322.9889831542969,0.9999998807907104,247.03616333007812,316.51336669921875,0.9999994039535522,300.767822265625,282.9859924316406,0.9999947547912598,325.9807434082031,298.5986633300781,0.9999951720237732,322.3370361328125,260.40093994140625,0.9999793171882629,339.0989685058594,279.0635986328125,0.9999990463256836
16,14,354.3957824707031,254.10765075683594,0.9999963045120239,338.1031799316406,257.4737243652344,0.9999957084655762,345.774658203125,270.90252685546875,0.9999968409538269,333.2081604003906,269.2045593261719,0.9999997019767761,321.7561950683594,280.57305908203125,0.9999964833259583,313.73248291015625,292.4058837890625,0.9999997615814209,304.76165771484375,305.9679260253906,0.9999997615814209,290.4547119140625,318.8628845214844,0.9999999403953552,267.9459228515625,322.9311218261719,0.9999999403953552,246.84786987304688,316.5499572753906,0.9999995231628418,300.55181884765625,283.3677978515625,0.9999960660934448,325.7466735839844,298.8464660644531,0.9999954104423523,322.8476257324219,260.50408935546875,0.9999821186065674,338.7728576660156,279.5689392089844,0.9999988079071045
17,15,354.2286376953125,254.52023315429688,0.9999933242797852,338.0010681152344,257.3443908691406,0.9999955892562866,345.87310791015625,270.7385559082031,0.9999972581863403,333.1982421875,269.1656799316406,0.9999997615814209,321.8152770996094,280.57196044921875,0.9999963045120239,313.89727783203125,292.36798095703125,0.9999997615814209,304.75701904296875,306.0708923339844,0.9999997615814209,290.39886474609375,318.7978820800781,0.9999999403953552,268.114501953125,322.74847412109375,0.9999998807907104,247.07095336914062,316.4527282714844,0.9999995231628418,300.47161865234375,283.6838684082031,0.9999955892562866,325.6784362792969,299.34991455078125,0.9999958872795105,322.9878845214844,260.851806640625,0.9999760985374451,338.7875061035156,279.7268981933594,0.999998927116394
18,16,353.2840576171875,255.07530212402344,0.9999785423278809,338.03240966796875,257.6259765625,0.9999963045120239,345.9084167480469,271.2637634277344,0.9999969005584717,333.25128173828125,269.41796875,0.9999997615814209,321.5918884277344,280.6438903808594,0.9999970197677612,313.8250732421875,292.3824768066406,0.9999997615814209,304.64630126953125,305.88067626953125,0.9999997615814209,290.4173278808594,318.3207702636719,0.9999998807907104,268.0154113769531,322.2461853027344,1.0,247.54763793945312,316.5588684082031,0.9999994039535522,300.76055908203125,283.2368469238281,0.9999962449073792,325.5782775878906,299.1881103515625,0.9999967813491821,322.8702392578125,260.7680969238281,0.9999790191650391,338.6973876953125,280.0749206542969,0.9999986886978149
19,17,352.66851806640625,255.54962158203125,0.9999351501464844,338.1618347167969,258.4227294921875,0.9999955892562866,345.955078125,271.5458068847656,0.9999966621398926,333.5682678222656,269.9515075683594,0.9999997019767761,321.5721740722656,280.808349609375,0.9999973773956299,313.6940612792969,292.5270690917969,0.9999997615814209,304.2806091308594,305.74798583984375,0.9999996423721313,290.0379943847656,317.9689636230469,0.9999999403953552,267.7345275878906,321.7906188964844,0.9999998807907104,246.97117614746094,315.81097412109375,0.9999995231628418,300.83648681640625,283.418701171875,0.9999960660934448,325.7420959472656,299.48260498046875,0.9999955296516418,323.1280822753906,261.2095031738281,0.9999784231185913,339.09185791015625,280.5215148925781,0.9999982118606567
20,18,352.7233581542969,255.3430938720703,0.9999293088912964,338.22711181640625,258.4141540527344,0.9999957084655762,345.9214172363281,271.3821716308594,0.9999963641166687,333.6231689453125,269.77679443359375,0.9999997615814209,321.66607666015625,280.7109375,0.9999969005584717,313.7770690917969,292.38671875,0.9999997615814209,304.4053955078125,305.7093505859375,0.9999996423721313,290.1180725097656,317.98077392578125,0.9999999403953552,267.8793640136719,322.0466613769531,0.9999998807907104,247.1928253173828,315.9608459472656,0.999999463558197,300.9728698730469,283.36187744140625,0.9999957084655762,325.73846435546875,299.5654296875,0.9999948740005493,323.3173828125,261.10211181640625,0.9999765157699585,339.0964050292969,280.3023986816406,0.9999980926513672
21,19,354.59014892578125,255.94735717773438,0.9999756813049316,338.82012939453125,258.35382080078125,0.9999971985816956,346.2475891113281,271.64862060546875,0.9999968409538269,334.06072998046875,269.80218505859375,0.9999996423721313,322.2764587402344,280.5951232910156,0.9999966621398926,314.000244140625,292.0800476074219,0.9999997615814209,304.5510559082031,305.3269348144531,0.9999996423721313,290.33154296875,317.84417724609375,1.0,267.88958740234375,321.9481201171875,0.9999998807907104,247.1084442138672,315.8612365722656,0.9999995231628418,300.70111083984375,283.596435546875,0.9999960660934448,325.1893615722656,299.978271484375,0.9999935030937195,323.79852294921875,260.6617736816406,0.9999803304672241,339.89990234375,280.9065246582031,0.9999980330467224
22,20,353.6457824707031,255.45741271972656,0.9999305009841919,338.83966064453125,258.6941833496094,0.9999967813491821,346.4245910644531,272.2847595214844,0.9999979138374329,334.1454772949219,269.9410705566406,0.9999997615814209,322.4026794433594,280.4316711425781,0.999996542930603,314.10308837890625,291.7940673828125,0.9999997615814209,304.5616455078125,304.5722961425781,0.9999995827674866,290.6474304199219,316.8450012207031,1.0,268.3935241699219,321.41241455078125,0.9999999403953552,247.4750213623047,315.61248779296875,0.9999994039535522,301.3345947265625,282.9305114746094,0.9999954700469971,325.2677307128906,299.7344970703125,0.9999947547912598,323.91851806640625,260.8906555175781,0.9999796748161316,339.69854736328125,280.96087646484375,0.9999984502792358
23,21,353.0889892578125,256.8885803222656,0.99991375207901,338.398193359375,259.6118469238281,0.9999959468841553,345.6036376953125,273.17779541015625,0.9999983310699463,333.6170654296875,270.55120849609375,0.9999996423721313,322.12939453125,280.6000061035156,0.9999977946281433,313.9335632324219,292.0914611816406,0.9999998211860657,304.5616760253906,304.4819030761719,0.9999995231628418,290.8126220703125,316.598388671875,0.9999998807907104,268.85235595703125,321.44891357421875,0.9999998807907104,247.720458984375,316.2571716308594,0.9999994039535522,301.2344970703125,283.0470886230469,0.9999949932098389,325.006103515625,299.9173889160156,0.9999960660934448,323.85247802734375,260.9755554199219,0.9999780654907227,339.51495361328125,281.641845703125,0.9999991655349731
24,22,352.1758728027344,257.7547912597656,0.9997865557670593,338.31036376953125,260.2834167480469,0.9999957084655762,345.0142822265625,274.3459777832031,0.9999988079071045,332.7493591308594,271.75494384765625,0.9999995827674866,321.8910827636719,281.2301025390625,0.9999991655349731,313.705078125,292.5945129394531,0.9999998807907104,304.49652099609375,304.45892333984375,0.9999996423721313,290.49267578125,316.7694091796875,1.0,268.4943542480469,321.74383544921875,0.9999998807907104,247.47964477539062,316.7235107421875,0.9999994039535522,301.10589599609375,283.1637878417969,0.9999943971633911,324.3481750488281,300.0675354003906,0.9999972581863403,323.6124572753906,260.9291687011719,0.9999858140945435,338.80084228515625,282.48089599609375,0.9999992847442627
25,23,352.0698547363281,258.9212341308594,0.999728798866272,338.015380859375,260.9254455566406,0.999994158744812,344.6402587890625,275.2498474121094,0.9999986886978149,332.4512634277344,272.34710693359375,0.9999996423721313,321.95111083984375,281.76251220703125,0.9999992847442627,313.51287841796875,292.94061279296875,0.9999999403953552,304.276611328125,304.5387268066406,0.9999995231628418,290.1742248535156,317.0252380371094,1.0,268.52935791015625,322.0232238769531,0.9999999403953552,247.06678771972656,317.4020690917969,0.9999992251396179,300.7715759277344,283.6104431152344,0.9999948143959045,323.6665344238281,300.866943359375,0.9999959468841553,323.5324401855469,261.3251037597656,0.9999855160713196,338.5400085449219,283.1807861328125,0.9999991655349731
26,24,352.5889587402344,261.0860900878906,0.9907858371734619,340.12335205078125,261.711669921875,0.9999761581420898,345.0539855957031,276.8068542480469,0.9999979138374329,333.0414733886719,272.8597106933594,0.999999463558197,322.01483154296875,282.08245849609375,0.9999992847442627,313.2916259765625,293.7664489746094,0.9999997615814209,304.25421142578125,305.5624084472656,0.9999996423721313,290.0164489746094,317.6039733886719,0.9999998807907104,268.80950927734375,322.8050231933594,0.9999998807907104,247.473388671875,318.5140380859375,0.9999990463256836,300.4399108886719,284.0805969238281,0.9999916553497314,323.43524169921875,300.5983581542969,0.9999959468841553,324.2670593261719,261.8275146484375,0.999970555305481,337.7144775390625,283.3396301269531,0.9999984502792358
27,25,352.5101013183594,261.0500183105469,0.9926856756210327,339.6697692871094,262.0292663574219,0.9999786615371704,344.6539306640625,277.2541809082031,0.9999979138374329,332.6329345703125,273.3494873046875,0.9999997615814209,321.90936279296875,282.357666015625,0.9999991655349731,313.0420227050781,293.87335205078125,0.9999998211860657,304.3671569824219,306.2720642089844,0.9999997615814209,291.1751403808594,317.76239013671875,1.0,272.5539855957031,323.8879089355469,0.9999998807907104,250.42666625976562,323.9313049316406,0.9999998807907104,300.0047302246094,284.7485046386719,0.9999884366989136,322.2828369140625,301.63665771484375,0.9999961853027344,324.7140197753906,262.3098449707031,0.9999722242355347,337.3182678222656,283.9104309082031,0.9999990463256836
28,26,352.9141845703125,261.8019104003906,0.9991574287414551,338.52374267578125,262.5230712890625,0.9999871253967285,344.4166259765625,278.4910583496094,0.999997615814209,332.2399597167969,274.1378173828125,0.9999998211860657,321.90484619140625,283.32720947265625,0.9999992251396179,312.9940185546875,295.47589111328125,0.9999997615814209,304.3603820800781,307.0150451660156,0.9999998807907104,291.1020202636719,319.56396484375,1.0,272.55316162109375,326.53497314453125,0.9999997019767761,249.74609375,326.0974426269531,0.9999998807907104,299.75091552734375,284.7080383300781,0.9999872446060181,322.191650390625,302.3491516113281,0.999997615814209,324.6887512207031,262.4028625488281,0.9999899864196777,337.77777099609375,285.0625305175781,0.9999990463256836
29,27,352.7434387207031,261.9869384765625,0.9992340803146362,338.1343078613281,262.864013671875,0.9999874830245972,343.46282958984375,277.7091369628906,0.9999974966049194,331.5224914550781,274.4909362792969,0.9999998807907104,321.4766845703125,284.01422119140625,0.9999989867210388,312.8145751953125,296.3760070800781,0.9999997615814209,303.92120361328125,307.8575134277344,0.9999998807907104,290.74261474609375,320.5600280761719,0.9999998807907104,272.05889892578125,328.0977478027344,0.9999994039535522,249.98236083984375,326.0150146484375,0.9999998807907104,299.607421875,285.32659912109375,0.9999886751174927,322.2032470703125,303.02313232421875,0.9999978542327881,324.7244567871094,262.91937255859375,0.9999926686286926,337.7197265625,285.4884338378906,0.9999985694885254
30,28,352.93304443359375,261.99127197265625,0.9997130632400513,337.233642578125,263.10650634765625,0.99998939037323,343.20745849609375,277.80926513671875,0.9999970197677612,331.3210754394531,274.5030822753906,0.9999998807907104,321.6131286621094,284.26165771484375,0.999998927116394,312.95526123046875,296.3583984375,0.9999997615814209,303.9429016113281,307.51873779296875,0.9999999403953552,290.83612060546875,320.2757263183594,1.0,273.2467346191406,328.5932922363281,0.9999996423721313,250.44564819335938,327.84912109375,0.9999998211860657,299.86773681640625,284.9146728515625,0.9999899864196777,322.1297302246094,303.3554992675781,0.9999971389770508,324.98333740234375,263.0471496582031,0.999995231628418,337.97137451171875,285.58135986328125,0.9999985694885254
31,29,353.08172607421875,262.65545654296875,0.9996411800384521,337.2823791503906,263.3573913574219,0.9999876022338867,343.2580261230469,278.178466796875,0.9999971389770508,331.35333251953125,274.6298828125,0.9999998211860657,321.52508544921875,284.3859558105469,0.9999988079071045,312.8442687988281,296.5501403808594,0.9999997615814209,303.9320373535156,307.6822204589844,1.0,290.48443603515625,320.378173828125,0.9999998807907104,272.7137451171875,328.7339172363281,0.9999995231628418,250.1587371826172,327.7334289550781,0.9999998807907104,299.9599914550781,284.9165344238281,0.9999905228614807,322.08953857421875,303.4778137207031,0.9999970197677612,324.9033508300781,263.0679016113281,0.9999957084655762,338.0239562988281,285.86883544921875,0.9999985694885254
32,30,352.53875732421875,263.0077819824219,0.9998756051063538,335.917236328125,264.0364990234375,0.9999774694442749,342.2244873046875,278.8236083984375,0.9999982118606567,329.9498596191406,275.2984313964844,0.9999998807907104,320.66400146484375,285.1189880371094,0.9999986886978149,312.46429443359375,297.3099365234375,0.9999998807907104,303.6224670410156,308.0592041015625,1.0,291.13421630859375,319.2193603515625,1.0,274.7746887207031,328.37872314453125,0.9999998211860657,253.07618713378906,329.828125,0.9999992847442627,299.7570495605469,284.9720458984375,0.999991774559021,321.9695129394531,303.595458984375,0.9999975562095642,324.36444091796875,264.2505798339844,0.999998152256012,337.5739440917969,286.3854675292969,0.9999983310699463
33,31,352.56414794921875,263.12054443359375,0.9999343156814575,336.2012939453125,264.77923583984375,0.9999678134918213,342.4201965332031,278.9597473144531,0.9999983310699463,329.72711181640625,275.4211730957031,0.9999997615814209,320.3619384765625,285.19757080078125,0.9999980926513672,312.2361145019531,296.3902893066406,0.9999998807907104,303.546142578125,308.3133239746094,0.9999999403953552,290.3171691894531,320.3471374511719,1.0,274.03094482421875,329.52020263671875,0.9999996423721313,251.06570434570312,330.140380859375,0.9999990463256836,299.71728515625,285.33258056640625,0.999988317489624,321.31402587890625,303.4868469238281,0.9999973773956299,324.069091796875,264.5117492675781,0.999997615814209,337.0556640625,286.37384033203125,0.9999978542327881
34,32,351.0354309082031,263.20159912109375,0.9999610781669617,333.2323303222656,265.28594970703125,0.9999884366989136,341.0237121582031,277.9737854003906,0.9999994039535522,328.69354248046875,275.474853515625,0.9999998807907104,319.7948303222656,285.34649658203125,0.9999985694885254,312.0393981933594,296.6700134277344,1.0,303.2173767089844,308.8558349609375,1.0,289.7996520996094,321.0486145019531,0.9999998807907104,273.9360046386719,331.4349670410156,0.9999997615814209,251.0989227294922,333.0367431640625,0.9999990463256836,299.7373962402344,285.4761962890625,0.9999924898147583,321.259521484375,303.82257080078125,0.9999978542327881,322.6328125,264.92291259765625,0.9999979734420776,337.1816101074219,286.02777099609375,0.9999986886978149
35,33,342.2716064453125,256.9473571777344,0.9999802112579346,328.8988952636719,263.81878662109375,0.9999969005584717,339.35858154296875,272.4006042480469,0.9999991655349731,326.21563720703125,275.65399169921875,0.9999997615814209,318.1690368652344,287.954833984375,0.9999990463256836,310.9408874511719,298.3654479980469,1.0,302.458984375,309.6338806152344,1.0,288.6304626464844,321.78125,0.9999998807907104,270.7786560058594,332.42138671875,0.9999996423721313,247.3470458984375,336.7334289550781,0.999997615814209,299.81646728515625,286.0990905761719,0.9999915361404419,320.5717468261719,304.242431640625,0.9999973773956299,319.91131591796875,267.2989807128906,0.999994695186615,336.9555358886719,281.7472839355469,0.9999982118606567
36,34,337.01104736328125,254.82411193847656,0.9999991655349731,323.1336364746094,264.5224304199219,0.9999995231628418,336.10845947265625,273.6832275390625,0.9999995231628418,323.1639404296875,277.1517333984375,1.0,316.2409973144531,289.6437072753906,0.9999997019767761,310.2402648925781,299.7228698730469,1.0,302.5057678222656,310.2108459472656,1.0,288.01123046875,322.9413757324219,0.9999998807907104,267.80682373046875,334.5915832519531,0.9999996423721313,241.4504852294922,338.1486511230469,0.9999995827674866,299.1950988769531,285.71502685546875,0.9999915361404419,322.580322265625,302.7802734375,0.9999970197677612,316.1423034667969,268.2031555175781,0.999997615814209,334.7977600097656,281.31329345703125,0.9999973773956299
37,35,335.2857360839844,251.85252380371094,0.9999991059303284,322.31634521484375,263.8298645019531,0.9999991655349731,336.3067932128906,271.4913024902344,0.9999983310699463,323.5085144042969,276.29864501953125,1.0,316.5819396972656,289.23028564453125,0.9999997615814209,310.4646301269531,299.9023132324219,1.0,302.5558776855469,310.7460021972656,1.0,287.7594909667969,323.80938720703125,0.9999998807907104,268.15875244140625,334.7773742675781,0.9999995827674866,241.7953643798828,337.5054931640625,0.999999463558197,299.05596923828125,286.056396484375,0.9999919533729553,322.9506530761719,303.124267578125,0.9999985098838806,315.0696716308594,267.904541015625,0.9999985098838806,335.6470642089844,280.2132873535156,0.9999972581863403
38,36,334.62945556640625,249.77532958984375,0.9999983310699463,323.4393310546875,261.55633544921875,0.9999997615814209,335.5945129394531,267.88677978515625,0.9999989867210388,325.00787353515625,274.7795104980469,1.0,317.9169006347656,288.44708251953125,0.9999997019767761,311.56378173828125,300.03790283203125,1.0,303.8338317871094,311.0836181640625,1.0,288.0123596191406,323.409423828125,0.9999998807907104,269.3759765625,334.48138427734375,0.9999997615814209,243.11959838867188,337.2996826171875,0.9999994039535522,299.75787353515625,286.1398010253906,0.9999942779541016,325.6289978027344,303.94049072265625,0.9999967813491821,316.4776306152344,267.06085205078125,0.9999975562095642,337.5394287109375,277.9676208496094,0.9999992251396179
39,37,335.05523681640625,244.0199432373047,0.9999983310699463,324.56463623046875,258.1135559082031,0.9999996423721313,338.44158935546875,264.84698486328125,0.9999990463256836,327.29052734375,271.7437438964844,0.9999995827674866,320.39520263671875,286.62823486328125,0.999999463558197,312.6451110839844,298.6755065917969,0.9999999403953552,305.0176086425781,310.2577819824219,1.0,288.9842834472656,323.1032409667969,1.0,270.1667175292969,334.07769775390625,0.999999463558197,243.32904052734375,336.985107421875,0.9999991655349731,299.5575256347656,285.2080993652344,0.9999953508377075,326.0445861816406,303.9862060546875,0.9999927878379822,317.44781494140625,264.98455810546875,0.999995231628418,338.8388671875,273.7590637207031,0.9999986886978149
40,38,335.9676818847656,239.89212036132812,0.9999960660934448,324.68817138671875,255.94158935546875,0.9999991059303284,338.6512145996094,260.7237854003906,0.9999995231628418,327.4733581542969,268.76239013671875,0.9999973773956299,321.7632751464844,284.58453369140625,0.9999995231628418,313.8205871582031,297.7779235839844,0.9999999403953552,306.9641418457031,308.9205627441406,1.0,292.5926208496094,321.59246826171875,1.0,274.8907775878906,332.4093322753906,0.9999991059303284,248.8033905029297,335.61602783203125,0.9999864101409912,299.7161865234375,284.5750427246094,0.9999946355819702,327.251953125,302.4944152832031,0.9999802112579346,318.0506896972656,261.5011901855469,0.9999964237213135,339.6695556640625,269.72088623046875,0.9999933242797852
41,39,336.5637512207031,237.40573120117188,0.9999995231628418,325.7176818847656,253.3647003173828,0.9999995827674866,340.3072814941406,257.3642883300781,0.9999992847442627,327.97625732421875,265.32965087890625,0.9999969005584717,322.96282958984375,281.6639404296875,0.9999996423721313,316.02838134765625,295.4913330078125,0.9999998807907104,308.9803466796875,306.83868408203125,1.0,295.6136474609375,320.0420837402344,0.9999998807907104,278.0107421875,330.4845275878906,0.9999992847442627,251.4652099609375,334.8501892089844,0.9999970197677612,301.2036437988281,283.46087646484375,0.9999979734420776,327.96954345703125,298.963134765625,0.9999953508377075,318.5044250488281,259.35345458984375,0.9999942183494568,341.2367858886719,265.89300537109375,0.9999920129776001
42,40,337.6562805175781,233.04080200195312,0.9999997615814209,326.98114013671875,248.9391632080078,0.9999974370002747,343.3168640136719,253.62770080566406,0.9999969601631165,331.2200012207031,262.8596496582031,0.9999997019767761,325.30657958984375,278.02362060546875,0.9999983906745911,318.5391540527344,292.64862060546875,0.9999998211860657,310.9338073730469,305.2790832519531,1.0,297.4056091308594,318.5080871582031,0.9999998211860657,279.6554870605469,329.2691345214844,0.9999978542327881,252.28050231933594,332.86968994140625,0.9999987483024597,301.83587646484375,282.3148193359375,0.9999980330467224,330.09466552734375,296.5448303222656,0.9999974966049194,319.5982971191406,257.1535339355469,0.999982476234436,343.7767028808594,263.7298889160156,0.999981164932251
43,41,339.14306640625,229.31515502929688,0.9999998807907104,328.5299377441406,244.58370971679688,0.9999980926513672,343.9707336425781,249.45343017578125,0.9999954700469971,332.7323913574219,257.9289245605469,0.9999995827674866,327.22509765625,273.98828125,0.9999967813491821,320.0596923828125,288.9515380859375,0.9999995827674866,313.0625305175781,302.80419921875,0.9999985694885254,300.46551513671875,316.4726867675781,0.9999997615814209,284.7261962890625,327.7226257324219,0.9999995231628418,258.8984680175781,332.0860595703125,0.9999997615814209,303.0689392089844,281.35888671875,0.999994158744812,332.6365661621094,294.2841796875,0.9999970197677612,321.8969421386719,252.20062255859375,0.9999935626983643,344.87908935546875,260.2325744628906,0.9999925494194031
44,42,340.42730712890625,224.3156280517578,0.9999993443489075,329.10626220703125,239.2331085205078,0.9999867677688599,345.025634765625,242.92648315429688,0.9999959468841553,333.0939025878906,253.04884338378906,0.999998927116394,328.7958679199219,268.079833984375,0.9999961853027344,322.2037048339844,284.5269470214844,0.9999998807907104,316.9998474121094,300.5998229980469,0.9999985694885254,304.20269775390625,313.68060302734375,0.9999998807907104,288.3379821777344,325.27587890625,0.9999997615814209,262.4825134277344,329.614013671875,0.9999994039535522,305.41741943359375,281.3742980957031,0.9999948143959045,334.9095458984375,290.56866455078125,0.9999929666519165,324.0982666015625,246.46914672851562,0.999971866607666,345.90545654296875,254.94384765625,0.9999384880065918
45,43,342.1900329589844,221.1448516845703,0.9999997019767761,330.2379150390625,236.4241485595703,0.9999887943267822,346.60821533203125,239.96939086914062,0.999994695186615,334.3827819824219,248.74005126953125,0.9999989867210388,329.33990478515625,264.81060791015625,0.9999953508377075,324.0489196777344,280.07952880859375,0.9999999403953552,318.2800598144531,296.8543701171875,0.9999979734420776,306.13232421875,312.57354736328125,0.9999998211860657,288.77825927734375,324.31060791015625,0.9999997019767761,263.1663818359375,329.4715576171875,0.9999995231628418,307.5851745605469,280.192138671875,0.9999966621398926,336.9965515136719,287.0975036621094,0.9999929666519165,322.98785400390625,245.57859802246094,0.9999874830245972,346.6670227050781,252.47315979003906,0.999981164932251
46,44,345.2635803222656,218.60923767089844,0.9999973773956299,331.6555480957031,233.5413818359375,0.9999669194221497,348.46142578125,238.87460327148438,0.9999892115592957,335.9859924316406,247.45851135253906,0.9999982118606567,329.7775573730469,263.0382995605469,0.9999962449073792,325.1834411621094,278.8320617675781,0.9999995231628418,319.8511047363281,295.3686218261719,0.9999994039535522,306.9660339355469,310.9277038574219,0.9999997615814209,290.7198791503906,321.4713439941406,0.9999997019767761,264.4689636230469,326.0946960449219,0.9999996423721313,308.5176086425781,279.4304504394531,0.9999948740005493,336.951904296875,286.7322998046875,0.9999931454658508,323.8126220703125,243.38543701171875,0.9999617338180542,347.84173583984375,250.43991088867188,0.9999805688858032
47,45,346.4250183105469,214.21006774902344,0.9999998807907104,332.66802978515625,230.9234619140625,0.9999958276748657,349.8125915527344,234.7447052001953,0.9999854564666748,337.02447509765625,245.17178344726562,0.9999996423721313,331.4940490722656,260.99951171875,0.9999988079071045,326.04241943359375,276.5311279296875,0.9999996423721313,321.2799987792969,293.48065185546875,0.9999997615814209,310.5965576171875,309.65093994140625,0.9999996423721313,294.5511169433594,320.3202209472656,0.9999997019767761,270.092529296875,324.47003173828125,0.9999998807907104,308.6958312988281,279.0662841796875,0.9999935626983643,336.3048400878906,285.6646423339844,0.9999892711639404,324.99090576171875,241.61997985839844,0.999955415725708,350.01373291015625,248.05958557128906,0.9999489784240723
48,46,346.6142883300781,210.54734802246094,0.999997615814209,335.39959716796875,225.43980407714844,0.999992847442627,351.0240783691406,228.4210968017578,0.9999927282333374,339.25579833984375,240.0699462890625,0.999998152256012,334.2768249511719,256.6493225097656,0.9999979734420776,328.8697814941406,273.31329345703125,0.999998927116394,323.4424133300781,291.386474609375,0.9999997615814209,311.9604187011719,308.40673828125,0.999998927116394,297.8165588378906,319.94573974609375,0.9999978542327881,273.55108642578125,323.3166809082031,0.9999997019767761,312.6737060546875,275.1279296875,0.9999479055404663,339.0516052246094,280.7306213378906,0.9999957084655762,326.1295471191406,240.5116424560547,0.9998890161514282,353.38812255859375,246.0401611328125,0.9999818205833435
49,47,346.5321044921875,205.1708526611328,0.9999977350234985,337.8288269042969,221.19580078125,0.9999886751174927,352.6366271972656,223.7068634033203,0.9999394416809082,340.7925720214844,235.6739501953125,0.9999899864196777,336.5579528808594,252.3837890625,0.9999972581863403,331.34149169921875,269.7530822753906,0.9999980926513672,327.0288391113281,287.7859191894531,0.9999798536300659,316.588134765625,306.66546630859375,0.9999960660934448,304.5279235839844,317.66534423828125,0.9999977350234985,280.87701416015625,321.19464111328125,0.9999984502792358,318.65728759765625,265.9595031738281,0.9997406005859375,345.477783203125,272.8666687011719,0.9999697208404541,327.4398498535156,236.49169921875,0.9998311996459961,356.1090393066406,241.9051971435547,0.9999157190322876
50,48,348.38531494140625,199.62367248535156,0.9999994039535522,339.518310546875,215.54393005371094,0.9999449253082275,353.46734619140625,217.67918395996094,0.9998023509979248,339.9183349609375,250.34005737304688,0.995664656162262,341.18133544921875,243.30953979492188,0.999992311000824,341.21380615234375,248.99705505371094,0.5467916131019592,338.2562255859375,279.76708984375,0.026652425527572632,336.45849609375,285.2216796875,0.007029742002487183,319.01580810546875,292.70587158203125,0.01969471573829651,310.0569152832031,310.9902648925781,0.024719446897506714,327.3167724609375,264.2772521972656,0.015042215585708618,352.8309020996094,261.2143859863281,0.9919724464416504,327.52032470703125,234.8579559326172,0.8726620674133301,353.4178161621094,238.2326202392578,0.9124478101730347
51,49,348.8160400390625,195.11343383789062,0.9999986886978149,341.209716796875,210.15142822265625,0.9999902844429016,354.1337585449219,212.10369873046875,0.9999850988388062,344.19805908203125,224.28732299804688,0.9998610019683838,342.3702392578125,239.39845275878906,0.9999978542327881,342.2869873046875,251.43186950683594,0.9932444095611572,341.23333740234375,272.6778259277344,0.6757448315620422,333.9922790527344,286.14447021484375,0.21667012572288513,328.24822998046875,292.9869689941406,0.06739035248756409,326.12017822265625,267.8748474121094,0.020102381706237793,335.35052490234375,249.54849243164062,0.4041158854961395,352.3661193847656,256.47808837890625,0.9918655157089233,333.8143310546875,224.65557861328125,0.9810914993286133,354.8856506347656,231.82965087890625,0.9953980445861816
52,50,350.4617614746094,190.28529357910156,0.9999991655349731,340.0145568847656,205.7083740234375,0.9999996423721313,355.09039306640625,208.3263397216797,0.9999995231628418,344.5655517578125,219.65960693359375,0.9999991059303284,342.4195251464844,236.3901824951172,0.9999998211860657,340.1609191894531,250.98707580566406,0.9999998807907104,337.3382568359375,264.6431579589844,0.9999994039535522,330.3863830566406,285.1390075683594,0.9999997019767761,322.906005859375,299.8094482421875,0.9999992847442627,312.3960876464844,315.0573425292969,0.999954342842102,327.591552734375,244.48272705078125,0.9999994039535522,355.7080383300781,246.1244354248047,0.9999962449073792,332.8269958496094,214.79769897460938,0.9999837875366211,357.115966796875,219.57968139648438,0.9999985694885254
53,51,351.48822021484375,186.34991455078125,0.999996542930603,339.64410400390625,204.01051330566406,0.9999986290931702,356.5437927246094,206.76248168945312,0.9999988079071045,345.1930847167969,216.60935974121094,0.9999978542327881,343.790771484375,232.3433837890625,0.9999973773956299,342.30242919921875,247.70050048828125,1.0,340.05914306640625,261.9165344238281,0.9999999403953552,332.51617431640625,282.1325378417969,0.9999990463256836,323.7723693847656,297.2047119140625,0.9999969005584717,313.7826843261719,311.8164367675781,0.9997439384460449,327.6157531738281,242.74722290039062,0.9999995231628418,357.8351135253906,243.8216552734375,0.9999983310699463,332.5029602050781,213.07220458984375,0.9999794363975525,358.5721740722656,216.31195068359375,0.9999929666519165
54,52,352.6970520019531,181.6827392578125,0.9999996423721313,342.1828308105469,197.9732208251953,0.9999984502792358,358.3291015625,200.75558471679688,0.9999974966049194,347.75457763671875,210.7650909423828,0.9999980926513672,345.5362243652344,228.10791015625,0.9999991059303284,343.3360290527344,244.41258239746094,0.9999997615814209,341.2269287109375,260.2653503417969,0.9999998807907104,333.3406982421875,281.82244873046875,0.9999991655349731,324.7383728027344,296.4941101074219,0.9999967813491821,313.7578125,310.896240234375,0.9998106956481934,327.4898681640625,241.9774627685547,0.9999974966049194,359.43756103515625,241.66494750976562,0.999996542930603,334.6690979003906,209.4521942138672,0.9999264478683472,360.5474853515625,212.34278869628906,0.9999863505363464
55,53,353.7666015625,176.47055053710938,0.9999957084655762,343.2814025878906,194.5587158203125,0.9999964237213135,359.2928161621094,195.98129272460938,0.9999978542327881,348.3248291015625,207.8007354736328,0.9999935626983643,346.65716552734375,225.3511505126953,0.9999992251396179,344.6679992675781,241.27731323242188,0.9999995827674866,342.58245849609375,258.3246765136719,0.9999998211860657,335.3047180175781,279.5545959472656,0.9999995231628418,326.0235900878906,295.3415832519531,0.9999980330467224,312.693359375,309.26666259765625,0.9997918605804443,328.36102294921875,241.44314575195312,0.9999903440475464,360.5279846191406,239.6212921142578,0.9999917149543762,336.51947021484375,206.9503631591797,0.9999565482139587,362.1069641113281,207.84066772460938,0.9999078512191772
56,54,354.1806945800781,171.2248077392578,0.9999955892562866,343.5877685546875,187.78091430664062,0.9999872446060181,360.319091796875,189.843994140625,0.9999853372573853,349.2275085449219,202.30589294433594,0.9999902248382568,348.02642822265625,220.59788513183594,0.9999973177909851,346.3180236816406,237.3788604736328,0.9999997019767761,345.3957824707031,253.7855224609375,0.9999923706054688,338.79833984375,275.367919921875,0.9999997019767761,331.1631774902344,289.88818359375,0.9999954700469971,316.90777587890625,305.020263671875,0.9988279342651367,329.7049865722656,240.90673828125,0.9999889135360718,362.7462158203125,232.75181579589844,0.9999234080314636,335.1759338378906,201.1715087890625,0.9999563694000244,362.7227783203125,202.82061767578125,0.9999342560768127
57,55,352.86383056640625,165.62660217285156,0.9999995231628418,343.5037536621094,183.2542724609375,0.9999758005142212,360.3094177246094,183.51063537597656,0.9999867677688599,349.6430969238281,196.9333038330078,0.9999669790267944,349.6767272949219,216.129150390625,0.9999927282333374,348.9808044433594,233.17140197753906,0.9999982118606567,349.53387451171875,249.59686279296875,0.9999785423278809,343.72869873046875,270.1945495605469,0.9999995231628418,334.6580505371094,283.7017517089844,0.999998927116394,321.4093322753906,296.9896240234375,0.9999896287918091,333.20184326171875,240.31732177734375,0.999995231628418,364.06903076171875,228.67921447753906,0.9999349117279053,334.86517333984375,199.9815673828125,0.9999551773071289,363.4176025390625,198.36387634277344,0.9999189376831055
58,56,350.1180419921875,160.22091674804688,0.9999908208847046,343.9908752441406,180.7981414794922,0.9999904632568359,359.3915100097656,180.74050903320312,0.9999946355819702,350.4671936035156,193.44044494628906,0.9999769926071167,350.6529541015625,212.6830291748047,0.9999980926513672,350.6941833496094,229.5796356201172,0.9999996423721313,352.6470642089844,245.48751831054688,0.9999951124191284,344.688232421875,267.6322937011719,0.9999989867210388,334.190673828125,285.5321960449219,0.999999463558197,319.4211730957031,297.9500427246094,0.999972939491272,334.87554931640625,238.77731323242188,0.9999879598617554,365.3858642578125,225.63819885253906,0.9999446868896484,337.4284973144531,197.32017517089844,0.9999761581420898,362.2958984375,194.59153747558594,0.9999510049819946
59,57,350.1780700683594,157.56439208984375,0.9999949336051941,343.9281921386719,176.2285919189453,0.9999817609786987,359.3448181152344,176.57174682617188,0.9999912977218628,350.0497131347656,190.63375854492188,0.9999871253967285,351.5611572265625,210.74557495117188,0.9999978542327881,351.4898681640625,227.46560668945312,0.9999995827674866,351.8458557128906,242.6708221435547,0.9999991655349731,346.62188720703125,262.2662048339844,0.9999995231628418,338.93707275390625,277.6242370605469,1.0,326.7945556640625,286.5919494628906,0.9999958276748657,337.3087463378906,235.5993194580078,0.9999936819076538,365.89434814453125,225.7322235107422,0.99991375207901,337.5016174316406,195.4523162841797,0.9999702572822571,363.1609802246094,191.95314025878906,0.9999309778213501
60,58,350.8847961425781,156.34408569335938,0.9999953508377075,343.3851318359375,173.73300170898438,0.9999427795410156,359.2860107421875,175.0872344970703,0.9999752044677734,349.90179443359375,188.6699676513672,0.9999779462814331,351.9201354980469,209.17919921875,0.9999921321868896,351.29205322265625,227.41627502441406,0.999998927116394,352.0754699707031,242.85287475585938,0.999998927116394,345.4051208496094,265.4846496582031,0.9999984502792358,333.8376770019531,281.9897155761719,0.999999463558197,317.8363952636719,290.4817199707031,0.9999992847442627,337.6866455078125,235.7477264404297,0.9999914169311523,366.93365478515625,225.30691528320312,0.9997525215148926,337.60003662109375,193.6919708251953,0.999854326248169,362.8626403808594,190.4805145263672,0.9999197721481323
61,59,350.0203857421875,156.524658203125,0.9999970197677612,343.2375793457031,174.26809692382812,0.9999489784240723,359.2156677246094,174.995361328125,0.9999812841415405,349.96624755859375,189.2899932861328,0.9999845027923584,351.84832763671875,209.81817626953125,0.9999949932098389,351.2919006347656,227.68789672851562,0.9999991655349731,351.7862243652344,243.23056030273438,0.9999992251396179,344.75567626953125,265.7055969238281,0.9999986886978149,332.3087158203125,283.0775451660156,0.9999995827674866,315.1728515625,291.0751647949219,0.9999992847442627,337.53680419921875,235.62210083007812,0.9999924898147583,366.59136962890625,226.2146759033203,0.9998226165771484,337.7548828125,194.14059448242188,0.9999083280563354,362.9833068847656,190.7628936767578,0.999921977519989
62,60,347.0073547363281,158.49844360351562,0.9999985098838806,343.1285400390625,178.0621795654297,0.9999959468841553,358.2033386230469,177.2725067138672,0.9999974966049194,349.4143981933594,191.8815460205078,0.9999898672103882,350.8722839355469,211.2693634033203,0.9999983906745911,351.468994140625,227.62396240234375,0.9999995231628418,351.6949768066406,243.6434326171875,0.9999991059303284,344.9304504394531,265.8475341796875,0.9999994039535522,331.10919189453125,283.093505859375,0.9999997019767761,313.5189514160156,290.8166809082031,0.9999989867210388,337.0856628417969,234.34921264648438,0.9999922513961792,364.77099609375,226.23883056640625,0.9999361038208008,338.3365783691406,193.95933532714844,0.9999327063560486,361.3100891113281,191.1803436279297,0.9998040199279785
63,61,340.7665100097656,163.2725830078125,0.9999995231628418,341.20208740234375,183.55174255371094,0.9999982118606567,356.34613037109375,179.87196350097656,0.999998927116394,349.9504089355469,195.6581573486328,0.999998927116394,350.8717041015625,214.27169799804688,0.9999988079071045,351.6590270996094,229.28652954101562,0.999999463558197,353.0549621582031,244.4933624267578,0.9999992847442627,344.0857238769531,266.8563232421875,0.9999997019767761,329.2455749511719,284.1228332519531,0.999999463558197,311.2833557128906,291.1507263183594,0.9999996423721313,336.7026062011719,233.8035888671875,0.9999927878379822,363.6361389160156,226.51731872558594,0.9999592304229736,338.200439453125,195.42332458496094,0.9999816417694092,360.40863037109375,190.50247192382812,0.9998948574066162
64,62,335.7170715332031,170.218505859375,0.9999893307685852,338.4833984375,187.96646118164062,0.9999980926513672,353.1706848144531,182.07546997070312,0.9999934434890747,348.7903137207031,198.4426727294922,0.9999997615814209,351.08270263671875,216.19448852539062,0.9999990463256836,351.2851257324219,230.00167846679688,0.9999995827674866,352.767822265625,245.2662353515625,0.9999995231628418,343.5505065917969,266.5023498535156,0.9999997615814209,329.234619140625,283.80938720703125,0.9999992251396179,308.8283386230469,290.33843994140625,0.9999997615814209,336.1089782714844,235.0003662109375,0.9999944567680359,363.2096862792969,227.38299560546875,0.9999738931655884,336.6920166015625,197.82432556152344,0.9999954700469971,358.81231689453125,190.2589111328125,0.9999715089797974
65,63,329.9499206542969,174.7654571533203,0.9999997615814209,336.86260986328125,192.8642120361328,0.9999995231628418,351.6661682128906,183.35472106933594,0.9999990463256836,348.70550537109375,201.24530029296875,0.9999997019767761,349.89056396484375,217.84689331054688,0.9999995231628418,351.6316833496094,231.85379028320312,0.9999997019767761,353.2464294433594,246.75021362304688,0.9999985694885254,343.5078430175781,267.7115173339844,0.9999997615814209,327.45703125,284.0978088378906,0.9999995827674866,304.8514404296875,289.5817565917969,0.9999989867210388,335.5495300292969,236.5413360595703,0.9999936819076538,364.6129150390625,228.87525939941406,0.999956488609314,334.64337158203125,200.10418701171875,0.9999889135360718,355.99261474609375,192.050048828125,0.9999787211418152
66,64,327.9049072265625,178.85223388671875,0.9999999403953552,336.0635986328125,196.44564819335938,0.9999996423721313,350.1519470214844,186.4496612548828,0.9999985694885254,348.28802490234375,205.50485229492188,0.9999997019767761,349.9160461425781,219.24761962890625,0.999998927116394,351.9703063964844,233.17657470703125,0.9999997615814209,351.6092529296875,249.7247772216797,0.9999964237213135,343.6204833984375,269.2127990722656,0.9999996423721313,327.58197021484375,285.0977783203125,0.9999995827674866,305.34710693359375,291.1362609863281,0.9999995231628418,335.8167724609375,237.5011444091797,0.9999919533729553,365.5625305175781,232.7356719970703,0.9998428821563721,334.64007568359375,205.58424377441406,0.999991774559021,354.33978271484375,195.7619171142578,0.999992311000824
67,65,322.46087646484375,184.58485412597656,1.0,332.56280517578125,200.09754943847656,0.9999995231628418,345.6302490234375,188.27401733398438,0.9999974966049194,347.86224365234375,206.24078369140625,0.9999991655349731,349.99853515625,220.7479705810547,0.9999969005584717,351.0762634277344,233.93191528320312,0.9999997615814209,351.6749572753906,251.30810546875,0.9999985694885254,343.942138671875,270.05108642578125,0.9999977350234985,327.81512451171875,285.7712707519531,0.9999992847442627,305.00140380859375,291.2242126464844,0.9999990463256836,334.30462646484375,238.78317260742188,0.9999858736991882,365.4940490722656,233.80967712402344,0.9995942115783691,332.2526550292969,209.32913208007812,0.9999975562095642,350.6406555175781,196.5621795654297,0.9999715685844421
68,66,317.9513854980469,184.58277893066406,0.9999998807907104,329.1351623535156,200.6271209716797,0.9999969601631165,339.5126953125,188.92630004882812,0.9999992847442627,344.777099609375,205.70330810546875,0.999998927116394,347.4337463378906,218.92306518554688,0.9999964237213135,351.27349853515625,233.10311889648438,0.9999988079071045,350.9935607910156,250.9955291748047,0.999994695186615,345.3088684082031,270.2599182128906,0.9999929666519165,328.752197265625,285.607421875,0.9999986886978149,308.40264892578125,290.60284423828125,0.9999992847442627,333.5417785644531,239.13699340820312,0.9999697208404541,363.7337951660156,231.6363067626953,0.9994601011276245,331.1568603515625,210.81704711914062,0.9999970197677612,346.9820861816406,195.1220703125,0.9999761581420898
69,67,312.2062072753906,181.22373962402344,0.9999999403953552,324.6533203125,198.563720703125,0.9999990463256836,334.2605895996094,187.4510040283203,0.9999957084655762,340.1978454589844,201.94747924804688,0.999998927116394,347.5340270996094,216.375732421875,0.9999963045120239,351.52777099609375,230.09042358398438,0.9999943971633911,354.1614685058594,247.78436279296875,0.9999866485595703,347.2762451171875,269.2686462402344,0.9999938011169434,332.50140380859375,284.93267822265625,0.9999989867210388,313.2361755371094,290.1585388183594,0.999996542930603,335.5826110839844,237.6789093017578,0.999954104423523,364.30364990234375,225.3331756591797,0.9972683191299438,326.83526611328125,208.43411254882812,0.9999955892562866,340.75531005859375,191.6206512451172,0.9999296069145203
70,68,310.0344543457031,175.42274475097656,1.0,321.58404541015625,193.21990966796875,0.9999984502792358,332.33251953125,181.73663330078125,0.9999971389770508,337.0959777832031,197.0327606201172,0.9999995231628418,346.4672546386719,212.0196075439453,0.9999992847442627,351.33526611328125,225.7358856201172,0.9999974966049194,356.7107849121094,239.43426513671875,0.9999644756317139,350.43109130859375,260.75018310546875,0.9999539852142334,348.5690002441406,270.0892028808594,0.9985241889953613,336.508544921875,279.35223388671875,0.9983203411102295,337.6070556640625,236.47080993652344,0.9998566508293152,360.3609924316406,219.8105926513672,0.9985893368721008,323.7143859863281,204.22332763671875,0.9999880790710449,338.7939147949219,185.88282775878906,0.9999375343322754
71,69,307.8492736816406,169.535400390625,0.9999998807907104,317.96136474609375,186.31027221679688,0.9999917149543762,329.1295166015625,174.65777587890625,0.9999945163726807,334.7075500488281,190.61172485351562,0.9999991059303284,344.1440734863281,204.93397521972656,0.999998927116394,349.621337890625,217.06712341308594,0.9999983310699463,354.63177490234375,231.96566772460938,0.9999868273735046,353.50054931640625,245.6407470703125,0.9960317611694336,351.2662048339844,257.341552734375,0.09250470995903015,341.82733154296875,244.48306274414062,0.03249698877334595,335.158935546875,230.6082000732422,0.9999550580978394,360.0126037597656,209.6902313232422,0.999966025352478,321.11663818359375,197.3886260986328,0.9999798536300659,336.57611083984375,179.40760803222656,0.999989926815033
72,70,304.988037109375,161.3689727783203,0.9999999403953552,313.1632385253906,178.49191284179688,0.9999992251396179,323.5247802734375,168.68057250976562,0.9999986886978149,328.69415283203125,182.63845825195312,0.9999990463256836,339.10235595703125,196.11532592773438,0.9999998807907104,348.43585205078125,209.02496337890625,0.9999985694885254,354.7205810546875,220.57948303222656,0.9999266266822815,357.5025939941406,233.2557830810547,0.9748823642730713,351.1842956542969,243.4248504638672,0.035150229930877686,338.7276916503906,229.72740173339844,0.009622246026992798,337.2903137207031,221.27821350097656,0.9997456073760986,356.6622314453125,197.8560028076172,0.999988317489624,316.8255920410156,190.3852081298828,0.9999704360961914,332.8324890136719,171.3629608154297,0.9999947547912598
73,71,299.7083740234375,152.2060089111328,0.9999999403953552,306.8894348144531,169.93138122558594,0.9999973773956299,317.7087097167969,161.01727294921875,0.9999964237213135,321.8167419433594,173.915283203125,0.9999996423721313,333.5757751464844,186.62982177734375,0.9999986886978149,344.4903564453125,201.4005889892578,0.9999962449073792,353.4500427246094,214.77914428710938,0.9999997019767761,357.7650451660156,231.2021484375,0.9999845027923584,358.23699951171875,244.76585388183594,0.7002039551734924,348.2332458496094,241.88372802734375,0.003016442060470581,328.88836669921875,207.78341674804688,0.9999960660934448,354.14501953125,191.28077697753906,0.9999873638153076,310.4980773925781,180.90237426757812,0.9999970197677612,328.5304260253906,164.02635192871094,0.9999957084655762
74,72,295.0782775878906,146.72064208984375,1.0,302.17694091796875,164.3058319091797,0.9999990463256836,313.1659851074219,154.4167938232422,0.9999983310699463,317.0305480957031,168.4165802001953,0.9999995827674866,329.9617919921875,182.3093719482422,0.9999989867210388,340.1665954589844,196.56581115722656,0.9999997615814209,348.93756103515625,210.8964080810547,0.9999997615814209,357.706787109375,227.99163818359375,0.9999997019767761,359.786376953125,242.69635009765625,0.9708282947540283,353.8466491699219,250.28842163085938,0.012716919183731079,324.9551696777344,201.18922424316406,0.9999988079071045,349.40362548828125,184.52635192871094,0.9999704360961914,306.81610107421875,175.54144287109375,0.9999852776527405,323.6864929199219,160.4680633544922,0.9999963045120239
75,73,289.4466552734375,139.92611694335938,0.9999999403953552,296.70587158203125,157.92027282714844,0.9999948740005493,307.50537109375,149.60324096679688,0.9999995827674866,311.9363708496094,162.90826416015625,0.9999995231628418,323.62225341796875,176.03175354003906,0.9999996423721313,334.4187316894531,190.2772216796875,0.9999990463256836,343.8982849121094,203.3607940673828,0.9999991655349731,353.8487548828125,218.62948608398438,0.9999999403953552,359.6551513671875,235.69912719726562,0.9999629855155945,355.9062194824219,246.9681396484375,0.9745931029319763,319.9212951660156,194.31727600097656,0.9999864101409912,344.0306396484375,178.80731201171875,0.999988317489624,300.44873046875,169.5996551513672,0.9999731183052063,318.6065368652344,154.26695251464844,0.9999747276306152
76,74,285.4259033203125,131.5335235595703,0.9999998807907104,291.2235107421875,151.41519165039062,0.9999967813491821,302.9199523925781,143.12368774414062,0.999992847442627,305.209228515625,157.08248901367188,0.9999999403953552,316.7037048339844,171.56471252441406,0.9999990463256836,328.25213623046875,184.4493865966797,0.9999971389770508,337.4599609375,196.9976348876953,0.9999998807907104,347.13323974609375,212.38768005371094,0.9999996423721313,354.3341369628906,230.19004821777344,0.9999465346336365,353.322998046875,241.32058715820312,0.906011164188385,313.677001953125,189.56130981445312,0.9999791383743286,337.8282470703125,176.2305908203125,0.9999648332595825,292.9248352050781,162.11495971679688,0.9999765157699585,312.7355041503906,146.96421813964844,0.9999915361404419
77,75,278.6187438964844,124.45228576660156,0.9999999403953552,285.3661804199219,144.1116943359375,0.9999966621398926,297.1402893066406,135.0687255859375,0.9999979734420776,299.6630859375,149.9957275390625,0.9999998807907104,311.0991516113281,164.4408416748047,0.9999997615814209,320.7191467285156,178.1870880126953,0.9999998807907104,329.3653869628906,190.38356018066406,0.9999985694885254,339.760009765625,206.54998779296875,0.9999998807907104,346.997802734375,224.6684112548828,0.9992921352386475,346.7406005859375,235.06752014160156,0.6175752878189087,308.46990966796875,184.2066650390625,0.9999961853027344,332.62396240234375,169.3447265625,0.999974250793457,286.7772521972656,155.7122039794922,0.9999927282333374,306.2236328125,140.08065795898438,0.9999970197677612
78,76,272.8021545410156,114.69039154052734,1.0,279.7431945800781,135.63426208496094,0.9999933242797852,291.8091125488281,126.7581558227539,0.9999994039535522,295.6331787109375,142.06268310546875,0.9999995231628418,305.8352966308594,157.3369903564453,0.9999994039535522,315.47430419921875,170.18006896972656,0.9999997615814209,324.6103515625,183.8668212890625,0.9999999403953552,331.5311584472656,196.77224731445312,1.0,336.8731689453125,211.3497314453125,0.9999989867210388,337.2953796386719,224.48399353027344,0.999995231628418,304.2449951171875,177.24769592285156,0.999996542930603,324.16815185546875,158.35592651367188,0.9999994039535522,282.4822692871094,146.39266967773438,0.9999658465385437,300.7890625,130.93905639648438,0.9999969005584717
79,77,267.7412414550781,108.83284759521484,1.0,275.0743103027344,127.26959228515625,0.9999959468841553,285.5816345214844,118.15850830078125,0.9999989867210388,288.4932556152344,132.0305633544922,0.9999997615814209,299.610107421875,146.67185974121094,0.9999995231628418,310.4835510253906,159.56983947753906,0.9999996423721313,320.2969970703125,171.56103515625,0.9999978542327881,330.6170959472656,188.13131713867188,0.9999998807907104,334.0246276855469,207.51397705078125,0.9999966621398926,331.385498046875,223.85975646972656,0.999996542930603,302.491943359375,171.90945434570312,0.9999780654907227,316.81475830078125,146.37893676757812,0.9999947547912598,277.72705078125,137.4388885498047,0.9999865889549255,294.58660888671875,121.98295593261719,0.9999964237213135
80,78,261.67413330078125,99.6260986328125,1.0,269.11016845703125,117.40966033935547,0.9999994039535522,281.1309509277344,108.49527740478516,0.9999982118606567,284.54241943359375,121.1709213256836,0.9999997615814209,295.0050354003906,136.3287353515625,0.9999985694885254,305.4193420410156,149.5840606689453,0.9999995827674866,315.5335998535156,162.43019104003906,0.9999995231628418,328.1078186035156,181.83958435058594,0.9999997615814209,333.0232238769531,202.80340576171875,0.9999995231628418,330.6056823730469,220.5723419189453,0.9999971389770508,292.21649169921875,157.77572631835938,0.9999971389770508,313.2630310058594,137.6695556640625,0.9999724626541138,270.4615783691406,127.90577697753906,0.9999585151672363,288.7577209472656,111.58951568603516,0.9999948740005493
81,79,254.97671508789062,94.4382095336914,0.9999999403953552,263.2828369140625,110.30709838867188,0.999998927116394,274.5408020019531,100.51907348632812,0.9999997615814209,277.66571044921875,114.56526184082031,0.9999999403953552,290.09991455078125,128.0546875,0.9999991655349731,301.02001953125,141.9954376220703,0.9999997615814209,312.7981262207031,154.03341674804688,0.9999974370002747,324.02801513671875,173.30416870117188,1.0,331.66973876953125,192.32412719726562,0.9999995231628418,331.42584228515625,213.39749145507812,0.9999994039535522,287.9949645996094,147.99574279785156,0.9999973773956299,309.5494384765625,129.0531463623047,0.9999986886978149,265.5889587402344,121.71734619140625,0.9999722242355347,283.6343688964844,105.95154571533203,0.9999912977218628
82,80,249.86578369140625,87.71045684814453,0.9999998807907104,257.831787109375,103.70785522460938,0.9999990463256836,268.94573974609375,93.50000762939453,0.9999990463256836,272.4477233886719,108.51701354980469,0.9999998807907104,285.8003845214844,120.65707397460938,0.9999991655349731,297.9706726074219,132.83242797851562,0.9999998211860657,308.7551574707031,145.32435607910156,1.0,320.21868896484375,163.07273864746094,1.0,327.43414306640625,180.1107177734375,0.9999997615814209,328.81341552734375,199.990966796875,0.9999989867210388,282.871826171875,139.83834838867188,0.9999969005584717,304.0472412109375,120.78862762451172,0.999995768070221,260.0692443847656,113.8515396118164,0.9999905824661255,278.1519775390625,98.51377868652344,0.9999986886978149
83,81,245.40745544433594,83.10601043701172,1.0,252.83319091796875,99.17093658447266,0.9999996423721313,264.2718811035156,90.0799560546875,0.9999979734420776,268.7068786621094,103.29957580566406,0.9999998807907104,281.2244873046875,115.0897216796875,0.9999992847442627,292.9596252441406,126.71441650390625,0.9999975562095642,304.79644775390625,137.7508544921875,0.9999994039535522,318.5403137207031,156.36785888671875,0.9999995231628418,325.7350769042969,175.00613403320312,0.9999998807907104,326.9299011230469,194.27769470214844,0.9999997615814209,277.8907470703125,132.59939575195312,0.999998152256012,300.538818359375,114.560791015625,0.9999912977218628,255.14109802246094,108.36499786376953,0.9999892711639404,272.8815002441406,93.20124053955078,0.9999984502792358
84,82,240.3216094970703,75.9661636352539,0.9999999403953552,247.10353088378906,92.12928771972656,0.9999992847442627,258.49652099609375,83.14306640625,0.9999997615814209,261.62091064453125,97.20639038085938,0.9999998211860657,274.0152282714844,109.24920654296875,0.9999998211860657,287.6961975097656,121.58106994628906,0.9999986290931702,300.2188720703125,133.32591247558594,0.9999997019767761,313.6112365722656,151.00709533691406,0.9999997615814209,322.4097595214844,169.7791748046875,0.9999997615814209,325.17266845703125,188.51541137695312,0.9999986290931702,273.97308349609375,128.93409729003906,0.9999963641166687,299.00518798828125,112.47836303710938,0.9999892711639404,249.7783203125,104.22216033935547,0.999965488910675,269.64190673828125,89.1134033203125,0.999994158744812
85,83,238.5809783935547,72.72469329833984,0.9999997615814209,244.42530822753906,89.15364074707031,0.9999991655349731,255.74159240722656,78.99105072021484,0.9999986886978149,257.9439697265625,93.4559097290039,1.0,270.0206604003906,105.0875473022461,0.9999990463256836,282.6788330078125,115.84510803222656,0.9999998807907104,294.0657958984375,127.76679229736328,1.0,306.5697937011719,143.3019561767578,1.0,313.77783203125,159.8585205078125,0.9999994039535522,314.8625793457031,176.24668884277344,0.9999885559082031,271.2596435546875,125.91317749023438,0.999998152256012,293.8236999511719,107.662841796875,0.9999967813491821,246.11627197265625,100.01141357421875,0.9999970197677612,265.5610656738281,83.97212219238281,0.9999983906745911
86,84,235.29840087890625,68.02935791015625,0.9999998807907104,240.01626586914062,84.64759826660156,0.9999991655349731,250.44073486328125,74.69690704345703,0.9999995827674866,252.94337463378906,89.60188293457031,0.9999998807907104,265.8727111816406,100.42621612548828,0.9999997615814209,278.4356384277344,110.41552734375,0.9999995231628418,290.3205871582031,122.55287170410156,0.9999997615814209,303.4596862792969,141.2305908203125,0.9999995827674866,311.16558837890625,160.40151977539062,0.9999997615814209,313.8509216308594,178.23846435546875,0.9999969005584717,268.26556396484375,120.98494720458984,0.9999989867210388,286.2156677246094,99.5940170288086,0.9999942779541016,243.8145751953125,96.29415130615234,0.999992847442627,259.2044982910156,80.58901977539062,0.9999982118606567
87,85,230.14674377441406,65.97412109375,0.9999998807907104,234.61370849609375,82.31306457519531,0.9999995231628418,247.4999237060547,71.93526458740234,0.9999994039535522,249.04196166992188,85.81990051269531,0.9999998211860657,261.9775390625,95.4956283569336,0.9999997615814209,274.7273254394531,106.42790222167969,0.9999997615814209,286.5458984375,115.72606658935547,0.9999997615814209,298.712646484375,132.9460906982422,1.0,306.1939697265625,150.4027099609375,0.9999995231628418,308.2922668457031,168.05613708496094,0.9999998807907104,269.15936279296875,119.17750549316406,0.999993085861206,281.3497314453125,95.76773834228516,0.9999854564666748,239.75149536132812,94.05828857421875,0.9999877214431763,254.3724822998047,76.39220428466797,0.9999982118606567
88,86,221.6071319580078,64.81819915771484,0.9999999403953552,230.94229125976562,79.35009002685547,0.9999983310699463,240.56179809570312,67.8583755493164,0.9999994039535522,245.3922882080078,81.82810974121094,1.0,257.809814453125,91.05083465576172,0.9999997019767761,271.5669860839844,100.57982635498047,0.9999992251396179,284.1593017578125,109.95439910888672,0.9999985098838806,298.4703063964844,127.31687927246094,0.9999995231628418,307.2447814941406,147.5148162841797,0.9999994039535522,308.28253173828125,168.90350341796875,0.9999996423721313,271.4359130859375,117.76990509033203,0.9999687671661377,276.6263122558594,90.45477294921875,0.9999750256538391,236.17550659179688,90.8510971069336,0.9999901056289673,248.9666290283203,71.92096710205078,0.9999960660934448
89,87,215.19149780273438,64.77628326416016,0.9999998807907104,227.32485961914062,77.65894317626953,0.9999989867210388,235.18809509277344,65.53325653076172,0.9999979734420776,240.9774627685547,77.3956527709961,0.9999994039535522,254.9051513671875,86.58656311035156,0.9999978542327881,268.3420715332031,97.79808807373047,0.9999995231628418,282.2722473144531,105.49120330810547,0.9999986886978149,300.15087890625,123.08414459228516,0.999998927116394,310.12060546875,142.9886474609375,0.9999995827674866,311.238037109375,164.23301696777344,0.9999996423721313,259.7468566894531,110.45205688476562,0.9999955892562866,273.06573486328125,84.68013000488281,0.9999974966049194,231.4231719970703,87.55033111572266,0.9999933242797852,244.4328155517578,67.9954833984375,0.9999991059303284
90,88,208.10494995117188,64.40629577636719,0.9999998807907104,220.94541931152344,78.4210433959961,0.9999855160713196,229.25515747070312,65.23409271240234,0.9999997019767761,237.80050659179688,76.82786560058594,0.9999994039535522,250.9995574951172,84.60957336425781,0.9999994039535522,265.5368347167969,93.98966979980469,0.9999970197677612,279.13275146484375,101.99616241455078,0.9999997019767761,297.6839599609375,117.68811798095703,0.9999991655349731,309.0384521484375,136.11767578125,0.9999994039535522,311.7611389160156,156.44027709960938,0.9999994039535522,254.86453247070312,103.76956176757812,0.9999960660934448,269.3641052246094,81.00616455078125,0.999990701675415,227.6578369140625,87.28203582763672,0.9999932050704956,239.27601623535156,67.38787078857422,0.9999964237213135
91,89,204.5638885498047,65.94242858886719,0.9999998807907104,217.60183715820312,76.99541473388672,0.9999951124191284,224.6916961669922,63.904258728027344,0.9999977350234985,233.17520141601562,75.10499572753906,0.9999979734420776,248.52276611328125,83.18030548095703,0.9999984502792358,262.0106201171875,90.88922119140625,0.9999997019767761,275.70318603515625,98.57594299316406,1.0,293.68658447265625,112.29434967041016,0.9999998807907104,304.23095703125,128.38658142089844,0.999998927116394,308.2305908203125,147.9813232421875,0.9999997615814209,248.22518920898438,100.56071472167969,0.9999963641166687,266.002685546875,78.9617691040039,0.9999852180480957,222.6807098388672,83.86917877197266,0.9999903440475464,233.0740966796875,64.3135986328125,0.9999940395355225
92,90,195.56138610839844,66.28247833251953,0.9999998807907104,211.01332092285156,76.46109771728516,0.9999983310699463,215.42015075683594,62.89966583251953,0.9999986886978149,224.73190307617188,72.44876098632812,0.9999978542327881,241.83787536621094,80.11689758300781,0.9999942779541016,255.760498046875,88.83451843261719,0.9999991655349731,269.7316589355469,97.93757629394531,1.0,282.3131103515625,106.74549865722656,0.9999998807907104,292.1278991699219,117.62886047363281,0.9999998211860657,298.31884765625,131.05870056152344,0.9999958276748657,241.4836883544922,96.70975494384766,0.9999972581863403,260.22528076171875,75.94050598144531,0.9999918937683105,217.61203002929688,83.47130584716797,0.9999945163726807,225.1895751953125,61.54961395263672,0.9999908208847046
93,91,192.17825317382812,68.04776000976562,0.9999998807907104,207.83160400390625,76.9947509765625,0.9999946355819702,211.6448516845703,63.1173210144043,0.9999995231628418,222.5275421142578,73.177490234375,0.9999990463256836,238.49395751953125,78.87200164794922,0.9999934434890747,251.39306640625,87.16226196289062,0.9999996423721313,264.6806945800781,94.01387786865234,0.9999986886978149,282.9432067871094,106.86957550048828,0.9999994039535522,294.2532653808594,122.7995376586914,0.9999998807907104,298.53564453125,141.7816925048828,0.9999945163726807,238.5369415283203,96.68685150146484,0.9999828338623047,254.3897247314453,74.6986312866211,0.9999837875366211,214.28431701660156,83.40459442138672,0.9999980330467224,219.78099060058594,61.29339599609375,0.9999895691871643
94,92,187.49237060546875,67.87218475341797,1.0,202.4309539794922,77.68253326416016,0.9999967813491821,206.31951904296875,63.6941032409668,0.9999979138374329,217.29054260253906,73.17407989501953,0.9999985694885254,234.6261444091797,79.28681945800781,0.9999972581863403,249.10769653320312,85.81327819824219,0.9999997615814209,259.69219970703125,91.18700408935547,0.9999998807907104,279.6771545410156,103.59766387939453,0.9999997019767761,293.3695068359375,118.78195190429688,0.999999463558197,298.44952392578125,139.1590118408203,0.9999986886978149,238.01771545410156,96.75713348388672,0.9999901056289673,248.54531860351562,71.1667709350586,0.9999878406524658,210.708984375,85.23194122314453,0.9999986886978149,212.77322387695312,61.66938018798828,0.9999978542327881
95,93,182.72872924804688,68.76136016845703,1.0,198.6116485595703,78.8465576171875,0.9999958276748657,201.56285095214844,64.20599365234375,0.999997615814209,213.52743530273438,74.17086791992188,0.9999997615814209,230.34495544433594,78.81208801269531,0.9999979734420776,245.9265899658203,84.37195587158203,0.9999998807907104,257.5372314453125,88.96723937988281,0.9999997615814209,277.13763427734375,101.09432983398438,0.9999998807907104,291.5436706542969,115.36710357666016,0.9999998211860657,296.5380554199219,136.16525268554688,0.9999983310699463,235.8644256591797,95.46768188476562,0.9999960660934448,246.515625,68.40884399414062,0.9999974966049194,207.41830444335938,85.37259674072266,0.9999970197677612,208.64971923828125,62.135135650634766,0.9999970197677612
96,94,177.14744567871094,68.55370330810547,0.9999998807907104,193.8141326904297,77.72706604003906,0.9999936819076538,197.0027313232422,63.605594635009766,0.9999989867210388,208.59979248046875,73.39634704589844,0.9999963045120239,226.54122924804688,77.9634780883789,0.9999977350234985,243.57818603515625,82.98079681396484,0.9999997615814209,255.62149047851562,87.67910766601562,0.9999994039535522,274.982666015625,98.1246337890625,0.9999999403953552,288.38873291015625,112.9361572265625,0.999999463558197,294.4903869628906,134.36012268066406,0.9999997615814209,232.3373260498047,94.8775863647461,0.999992311000824,239.53517150878906,65.46119689941406,0.9999904632568359,202.12330627441406,83.69632720947266,0.9999975562095642,203.74606323242188,61.31049346923828,0.999984085559845
97,95,173.7025604248047,65.90838623046875,0.9999999403953552,188.8095703125,76.53810119628906,0.9999934434890747,193.0703582763672,61.548683166503906,0.9999985098838806,204.51785278320312,71.64163970947266,0.9999983310699463,220.30624389648438,76.44097900390625,0.9999978542327881,238.36468505859375,80.82220458984375,0.9999998807907104,250.7546844482422,84.44281768798828,0.9999999403953552,270.6470031738281,94.99655151367188,0.9999985694885254,285.02947998046875,108.80870056152344,0.9999998211860657,292.50860595703125,133.1389923095703,0.9999998807907104,231.70468139648438,94.90433502197266,0.9999964237213135,235.9746551513672,66.36734771728516,0.9999989867210388,198.597412109375,83.00092315673828,0.9999982118606567,200.2386932373047,60.525672912597656,0.9999858140945435
98,96,168.90435791015625,64.04479217529297,0.9999996423721313,184.03564453125,74.39778137207031,0.9999951124191284,187.8862762451172,60.3816032409668,0.9999985098838806,199.22364807128906,70.11739349365234,0.9999997615814209,217.2340087890625,74.44657135009766,0.9999929666519165,233.55105590820312,78.39739990234375,0.9999997019767761,247.6193084716797,80.83177947998047,0.9999998211860657,266.8871154785156,90.45491027832031,0.999998927116394,282.0858154296875,104.48284912109375,0.9999997615814209,288.9232177734375,126.42273712158203,0.9999984502792358,233.3931884765625,92.94364929199219,0.9999828338623047,230.5912628173828,63.34953689575195,0.9999983310699463,194.2941131591797,81.89765167236328,0.9999986886978149,195.81448364257812,59.842498779296875,0.999997615814209
99,97,163.79981994628906,64.53292846679688,1.0,180.60092163085938,73.01909637451172,0.9999990463256836,182.82537841796875,60.07624816894531,0.9999997019767761,193.60047912597656,68.3561782836914,0.9999998807907104,211.68069458007812,70.6761245727539,0.9999988079071045,228.1832733154297,74.86186218261719,1.0,241.72830200195312,77.99679565429688,0.9999998807907104,263.0295104980469,86.61671447753906,0.9999998807907104,280.440185546875,101.32225036621094,0.9999997615814209,287.30950927734375,122.23285675048828,0.9999974966049194,232.79415893554688,91.10246276855469,0.9999903440475464,228.78945922851562,59.61891555786133,0.9999986886978149,189.6120147705078,78.9335708618164,0.9999945163726807,189.54713439941406,58.6285514831543,0.9999878406524658
......@@ -10,6 +10,12 @@ from deepof.utils import *
import deepof.preprocess
import pytest
# AUXILIARY FUNCTIONS #
def autocorr(x, t=1):
return np.round(np.corrcoef(np.array([x[:-t], x[t:]]))[0, 1], 5)
# QUALITY CONTROL AND PREPROCESSING #
......@@ -215,6 +221,7 @@ def test_angle_trio(array):
def test_rotate(p):
assert np.allclose(rotate(p, 2 * np.pi), p)
assert np.allclose(rotate(p, np.pi), -p)
assert np.allclose(rotate(p, 0), p)
@settings(deadline=None)
......@@ -230,16 +237,18 @@ def test_rotate(p):
min_value=1, max_value=10, allow_nan=False, allow_infinity=False
),
),
mode_idx=st.integers(min_value=0, max_value=1),
mode_idx=st.integers(min_value=0, max_value=2),
)
def test_align_trajectories(data, mode_idx):
mode = ["center", "all"][mode_idx]
mode = ["center", "all", "none"][mode_idx]
aligned = align_trajectories(data, mode)
assert aligned.shape == data.shape
if mode == "center":
assert np.allclose(aligned[:, (data.shape[1] - 1) // 2, 0], 0)
elif mode == "all":
assert np.allclose(aligned[:, :, 0], 0)
elif mode == "none":
assert np.allclose(aligned, data)
@settings(deadline=None)
......@@ -305,9 +314,6 @@ def test_smooth_mult_trajectory(alpha, series):
smoothed1 = smooth_mult_trajectory(series, alpha1)
smoothed2 = smooth_mult_trajectory(series, alpha2)
def autocorr(x, t=1):
return np.round(np.corrcoef(np.array([x[:-t], x[t:]]))[0, 1], 5)
assert autocorr(smoothed1) >= autocorr(series)
assert autocorr(smoothed2) >= autocorr(series)
assert autocorr(smoothed2) <= autocorr(smoothed1)
......@@ -347,14 +353,14 @@ def test_close_single_contact(pos_dframe, tol):
index=range_indexes(min_size=5),
columns=columns(["X1", "y1", "X2", "y2", "X3", "y3", "X4", "y4"], dtype=float),
rows=st.tuples(
st.floats(min_value=1, max_value=10, allow_nan=False, allow_infinity=False),
st.floats(min_value=1, max_value=10, allow_nan=False, allow_infinity=False),
st.floats(min_value=1, max_value=10, allow_nan=False, allow_infinity=False),
st.floats(min_value=1, max_value=10, allow_nan=False, allow_infinity=False),
st.floats(min_value=1, max_value=10, allow_nan=False, allow_infinity=False),
st.floats(min_value=1, max_value=10, allow_nan=False, allow_infinity=False),
st.floats(min_value=1, max_value=10, allow_nan=False, allow_infinity=False),
st.floats(min_value=1, max_value=10, allow_nan=False, allow_infinity=False),
st.floats(min_value=1, max_value=10),
st.floats(min_value=1, max_value=10),
st.floats(min_value=1, max_value=10),
st.floats(min_value=1, max_value=10),
st.floats(min_value=1, max_value=10),
st.floats(min_value=1, max_value=10),
st.floats(min_value=1, max_value=10),
st.floats(min_value=1, max_value=10),
),
),
tol=st.floats(min_value=0.01, max_value=4.98),
......@@ -422,3 +428,43 @@ def test_climb_wall(arena, tol):
with pytest.raises(NotImplementedError):
climb_wall("", arena, prun["test"], tol1, nose="Nose")
@settings(deadline=None)
@given(
dframe=data_frames(
index=range_indexes(min_size=50),
columns=columns(["X1", "y1", "X2", "y2"], dtype=float),
rows=st.tuples(
st.floats(min_value=1, max_value=10),
st.floats(min_value=1, max_value=10),
st.floats(min_value=1, max_value=10),
st.floats(min_value=1, max_value=10),
),
),
sampler=st.data(),
)
def test_rolling_speed(dframe, sampler):
dframe *= np.random.uniform(0, 1, dframe.shape)
order1 = sampler.draw(st.integers(min_value=1, max_value=3))
order2 = sampler.draw(st.integers(min_value=order1, max_value=3))
window2 = sampler.draw(st.integers(min_value=10, max_value=25))
idx = pd.MultiIndex.from_product(
[["bpart1", "bpart2"], ["X", "y"]], names=["bodyparts", "coords"],
)
dframe.columns = idx
speeds1 = rolling_speed(dframe, 5, 10, order1)
speeds2 = rolling_speed(dframe, 5, 10, order2)
speeds3 = rolling_speed(dframe, window2, 10, order1)
assert speeds1.shape[0] == dframe.shape[0]
assert speeds1.shape[1] == dframe.shape[1] // 2
assert np.all(np.std(speeds1) >= np.std(speeds2))
for i in range(speeds1.shape[1]):
assert autocorr(np.array(speeds1.iloc[:, i])) <= autocorr(
np.array(speeds3.iloc[:, i])
)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment