# Generated by tools/build_imu_source.py; do not edit. # Original source SHA-256: 6805d1b4f1b7b57ba51f0c4add22527c1c3915757bd8fc8328dc407526e3341a # Frozen block grids generated with NumPy 1.26.4; 100 Hz, 10 s duration steps. import numpy as np BLOCK_SIZES = {1000: [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13, 15, 17, 19, 22, 25, 29, 33, 38, 44, 50, 58, 66, 76, 87, 100], 2000: [1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 19, 22, 26, 30, 36, 42, 49, 57, 67, 78, 91, 107, 125, 146, 171, 200], 3000: [1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 17, 20, 24, 28, 33, 40, 47, 56, 66, 78, 92, 109, 129, 153, 181, 214, 253, 300], 4000: [1, 2, 3, 4, 5, 6, 8, 9, 11, 14, 16, 20, 23, 28, 33, 40, 48, 57, 68, 81, 97, 116, 138, 165, 197, 235, 281, 335, 400], 5000: [1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 15, 18, 22, 26, 32, 38, 46, 55, 66, 80, 96, 115, 139, 166, 200, 240, 288, 346, 416, 499], 6000: [1, 2, 3, 4, 5, 6, 7, 9, 11, 13, 16, 20, 24, 29, 35, 43, 51, 62, 75, 91, 110, 133, 160, 194, 234, 282, 341, 411, 497, 599], 7000: [1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 17, 21, 26, 32, 38, 47, 57, 69, 84, 101, 123, 149, 181, 220, 267, 323, 392, 476, 577, 700], 8000: [1, 2, 3, 4, 5, 7, 8, 10, 12, 15, 19, 23, 28, 34, 41, 51, 62, 75, 92, 112, 136, 165, 202, 245, 299, 364, 443, 539, 657, 800], 9000: [1, 2, 3, 4, 6, 7, 9, 11, 13, 16, 20, 24, 29, 36, 44, 54, 66, 81, 99, 121, 148, 181, 221, 270, 330, 404, 493, 603, 736, 899], 10000: [1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 17, 21, 25, 31, 38, 47, 58, 71, 87, 107, 131, 160, 196, 241, 295, 362, 443, 543, 666, 816, 1000], 11000: [1, 2, 3, 4, 5, 6, 7, 9, 11, 14, 17, 21, 26, 33, 40, 50, 61, 75, 92, 114, 140, 172, 211, 260, 319, 392, 482, 592, 728, 895, 1099], 12000: [1, 2, 3, 4, 5, 6, 8, 9, 12, 15, 18, 22, 28, 34, 42, 52, 64, 79, 98, 121, 149, 183, 226, 278, 343, 423, 521, 641, 790, 974, 1199], 13000: [1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 19, 23, 29, 36, 44, 54, 67, 83, 103, 127, 157, 194, 240, 297, 366, 452, 559, 690, 852, 1052, 1300], 14000: [1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 19, 24, 30, 37, 46, 57, 70, 87, 108, 134, 166, 205, 254, 315, 389, 482, 597, 738, 914, 1131, 1400], 15000: [1, 2, 3, 4, 5, 6, 8, 10, 13, 16, 20, 25, 31, 38, 48, 59, 73, 91, 113, 140, 174, 216, 268, 332, 412, 511, 634, 786, 975, 1209, 1500], 16000: [1, 2, 3, 4, 5, 7, 8, 10, 13, 16, 20, 25, 32, 40, 49, 61, 76, 95, 118, 147, 182, 226, 281, 350, 435, 540, 671, 834, 1036, 1287, 1600], 17000: [1, 2, 3, 4, 5, 7, 8, 11, 13, 17, 21, 26, 33, 41, 51, 63, 79, 98, 123, 153, 190, 237, 295, 367, 457, 569, 708, 881, 1097, 1365, 1700], 18000: [1, 2, 3, 4, 5, 7, 9, 11, 14, 17, 21, 27, 34, 42, 52, 65, 82, 102, 127, 159, 198, 247, 308, 384, 479, 597, 745, 929, 1158, 1443, 1799], 19000: [1, 2, 3, 4, 5, 7, 9, 11, 14, 17, 22, 27, 34, 43, 54, 67, 84, 105, 132, 165, 206, 257, 321, 401, 501, 626, 781, 976, 1218, 1521, 1899], 20000: [1, 2, 3, 4, 5, 7, 9, 11, 14, 18, 22, 28, 35, 44, 55, 69, 87, 109, 136, 171, 213, 267, 334, 418, 522, 654, 817, 1022, 1278, 1599, 2000], 21000: [1, 2, 3, 4, 6, 7, 9, 11, 14, 18, 23, 29, 36, 45, 57, 71, 90, 112, 141, 176, 221, 277, 347, 434, 544, 681, 853, 1069, 1339, 1676, 2099], 22000: [1, 2, 3, 4, 6, 7, 9, 12, 15, 18, 23, 29, 37, 46, 58, 73, 92, 115, 145, 182, 228, 286, 359, 451, 565, 709, 889, 1115, 1398, 1754, 2199], 23000: [1, 2, 3, 4, 6, 7, 9, 12, 15, 19, 24, 30, 38, 47, 60, 75, 94, 119, 149, 187, 236, 296, 372, 467, 586, 736, 925, 1161, 1458, 1831, 2300], 24000: [1, 2, 3, 4, 6, 7, 9, 12, 15, 19, 24, 30, 38, 48, 61, 77, 97, 122, 153, 193, 243, 305, 384, 483, 607, 764, 960, 1207, 1518, 1908, 2399], 25000: [1, 2, 3, 5, 6, 7, 9, 12, 15, 19, 25, 31, 39, 49, 62, 79, 99, 125, 158, 198, 250, 315, 396, 499, 628, 791, 995, 1253, 1577, 1986, 2499], 26000: [1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 25, 32, 40, 50, 64, 80, 102, 128, 162, 204, 257, 324, 408, 515, 649, 818, 1030, 1299, 1637, 2063, 2599], 27000: [1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 25, 32, 41, 51, 65, 82, 104, 131, 166, 209, 264, 333, 420, 530, 669, 844, 1065, 1344, 1696, 2140, 2700], 28000: [1, 2, 3, 4, 5, 6, 8, 10, 13, 16, 20, 26, 33, 41, 52, 66, 84, 106, 134, 170, 214, 271, 342, 432, 546, 689, 871, 1100, 1389, 1755, 2217, 2800], 29000: [1, 2, 3, 4, 5, 6, 8, 10, 13, 16, 21, 26, 33, 42, 53, 68, 86, 108, 137, 173, 219, 278, 351, 444, 561, 710, 897, 1135, 1435, 1814, 2293, 2900], 30000: [1, 2, 3, 4, 5, 6, 8, 10, 13, 16, 21, 27, 34, 43, 54, 69, 87, 111, 140, 177, 224, 284, 360, 456, 577, 730, 924, 1169, 1480, 1873, 2370, 3000], 31000: [1, 2, 3, 4, 5, 6, 8, 10, 13, 17, 21, 27, 34, 43, 55, 70, 89, 113, 143, 181, 230, 291, 369, 467, 592, 750, 950, 1203, 1525, 1931, 2447, 3099], 32000: [1, 2, 3, 4, 5, 6, 8, 10, 13, 17, 21, 27, 35, 44, 56, 71, 90, 115, 146, 185, 235, 298, 377, 479, 607, 770, 976, 1238, 1569, 1990, 2523, 3199], 33000: [1, 2, 3, 4, 5, 6, 8, 10, 13, 17, 22, 28, 35, 45, 57, 72, 92, 117, 149, 189, 239, 304, 386, 490, 622, 789, 1002, 1272, 1614, 2049, 2600, 3300], 34000: [1, 2, 3, 4, 5, 6, 8, 10, 13, 17, 22, 28, 36, 45, 58, 74, 94, 119, 151, 192, 244, 311, 395, 501, 637, 809, 1028, 1306, 1659, 2107, 2676, 3399], 35000: [1, 2, 3, 4, 5, 6, 8, 11, 14, 17, 22, 28, 36, 46, 59, 75, 95, 121, 154, 196, 249, 317, 403, 513, 652, 829, 1054, 1340, 1703, 2165, 2753, 3500], 36000: [1, 2, 3, 4, 5, 6, 8, 11, 14, 17, 22, 29, 37, 47, 60, 76, 97, 123, 157, 200, 254, 323, 412, 524, 666, 848, 1079, 1373, 1747, 2223, 2829, 3600], 37000: [1, 2, 3, 4, 5, 6, 8, 11, 14, 18, 23, 29, 37, 47, 60, 77, 98, 125, 159, 203, 259, 330, 420, 535, 681, 867, 1105, 1407, 1792, 2281, 2905, 3700], 38000: [1, 2, 3, 4, 5, 6, 8, 11, 14, 18, 23, 29, 37, 48, 61, 78, 100, 127, 162, 207, 264, 336, 428, 546, 696, 887, 1130, 1440, 1836, 2339, 2981, 3799], 39000: [1, 2, 3, 4, 5, 6, 8, 11, 14, 18, 23, 30, 38, 48, 62, 79, 101, 129, 165, 210, 268, 342, 437, 557, 710, 906, 1156, 1474, 1880, 2397, 3058, 3899], 40000: [1, 2, 3, 4, 5, 7, 8, 11, 14, 18, 23, 30, 38, 49, 63, 80, 103, 131, 167, 214, 273, 348, 445, 568, 725, 925, 1181, 1507, 1924, 2455, 3134, 4000], 41000: [1, 2, 3, 4, 5, 7, 9, 11, 14, 18, 24, 30, 39, 50, 64, 81, 104, 133, 170, 217, 277, 354, 453, 579, 739, 944, 1206, 1540, 1967, 2513, 3210, 4100], 42000: [1, 2, 3, 4, 5, 7, 9, 11, 14, 19, 24, 31, 39, 50, 64, 82, 105, 135, 172, 221, 282, 361, 461, 589, 753, 963, 1231, 1573, 2011, 2571, 3286, 4199], 43000: [1, 2, 3, 4, 5, 7, 9, 11, 14, 19, 24, 31, 40, 51, 65, 83, 107, 137, 175, 224, 287, 367, 469, 600, 768, 982, 1256, 1606, 2055, 2628, 3362, 4300], 44000: [1, 2, 3, 4, 5, 7, 9, 11, 15, 19, 24, 31, 40, 51, 66, 84, 108, 139, 177, 227, 291, 373, 477, 611, 782, 1001, 1281, 1639, 2098, 2686, 3437, 4400], 45000: [1, 2, 3, 4, 5, 7, 9, 11, 15, 19, 24, 31, 40, 52, 67, 85, 110, 140, 180, 231, 295, 379, 485, 621, 796, 1019, 1306, 1672, 2142, 2743, 3513, 4499], 46000: [1, 2, 3, 4, 5, 7, 9, 11, 15, 19, 25, 32, 41, 52, 67, 86, 111, 142, 182, 234, 300, 385, 493, 632, 810, 1038, 1330, 1705, 2185, 2800, 3589, 4599], 47000: [1, 2, 3, 4, 5, 7, 9, 12, 15, 19, 25, 32, 41, 53, 68, 87, 112, 144, 185, 237, 304, 390, 501, 642, 824, 1057, 1355, 1738, 2228, 2858, 3665, 4700], 48000: [1, 2, 3, 4, 5, 7, 9, 12, 15, 19, 25, 32, 42, 53, 69, 88, 114, 146, 187, 240, 309, 396, 509, 653, 838, 1075, 1380, 1770, 2272, 2915, 3740, 4799], 49000: [1, 2, 3, 4, 5, 7, 9, 12, 15, 20, 25, 33, 42, 54, 70, 89, 115, 148, 190, 244, 313, 402, 516, 663, 852, 1093, 1404, 1803, 2315, 2972, 3816, 4900], 50000: [1, 2, 3, 4, 5, 7, 9, 12, 15, 20, 25, 33, 42, 55, 70, 90, 116, 149, 192, 247, 317, 408, 524, 673, 865, 1112, 1428, 1835, 2358, 3029, 3892, 4999], 51000: [1, 2, 3, 4, 5, 7, 9, 12, 15, 20, 26, 33, 43, 55, 71, 91, 117, 151, 194, 250, 322, 414, 532, 684, 879, 1130, 1453, 1868, 2401, 3086, 3967, 5099], 52000: [1, 2, 3, 4, 5, 7, 9, 12, 15, 20, 26, 33, 43, 56, 72, 92, 119, 153, 197, 253, 326, 419, 539, 694, 893, 1148, 1477, 1900, 2444, 3143, 4043, 5199], 53000: [1, 2, 3, 4, 5, 7, 9, 12, 16, 20, 26, 34, 43, 56, 72, 93, 120, 155, 199, 256, 330, 425, 547, 704, 906, 1166, 1501, 1932, 2486, 3200, 4118, 5300], 54000: [1, 2, 3, 4, 5, 7, 9, 12, 16, 20, 26, 34, 44, 57, 73, 94, 121, 156, 201, 260, 334, 431, 555, 714, 920, 1185, 1525, 1964, 2529, 3257, 4193, 5400], 55000: [1, 2, 3, 4, 5, 7, 9, 12, 16, 20, 26, 34, 44, 57, 74, 95, 123, 158, 204, 263, 339, 436, 562, 724, 933, 1203, 1549, 1996, 2572, 3313, 4269, 5499], 56000: [1, 2, 3, 4, 5, 7, 9, 12, 16, 21, 27, 34, 45, 58, 74, 96, 124, 160, 206, 266, 343, 442, 570, 734, 947, 1221, 1573, 2028, 2614, 3370, 4344, 5599], 57000: [1, 2, 3, 4, 5, 7, 9, 12, 16, 21, 27, 35, 45, 58, 75, 97, 125, 161, 208, 269, 347, 447, 577, 744, 960, 1239, 1597, 2060, 2657, 3427, 4419, 5700], 58000: [1, 2, 3, 4, 5, 7, 9, 12, 16, 21, 27, 35, 45, 59, 76, 98, 126, 163, 211, 272, 351, 453, 585, 754, 974, 1256, 1621, 2092, 2699, 3483, 4495, 5800], 59000: [1, 2, 3, 4, 5, 7, 9, 12, 16, 21, 27, 35, 46, 59, 76, 99, 128, 165, 213, 275, 355, 458, 592, 764, 987, 1274, 1645, 2124, 2742, 3540, 4570, 5900], 60000: [1, 2, 3, 4, 5, 7, 10, 12, 16, 21, 27, 35, 46, 59, 77, 100, 129, 166, 215, 278, 359, 464, 599, 774, 1000, 1292, 1669, 2156, 2784, 3596, 4645, 6000]} def analyze(t, y, block_sizes=None): if len(t) < 100 or not np.isfinite(t).all() or (not np.isfinite(y).all()): raise ValueError('Need at least 100 finite samples') d = np.diff(t) dt = float(np.median(d)) if dt <= 0 or np.any(d <= 0) or np.max(np.abs(d - dt)) > dt * 0.01: raise ValueError('Timestamps must increase with <=1% interval deviation; split gaps first') rows = [] for m in np.unique(np.logspace(0, np.log10(len(y) // 10), 35).astype(int)) if block_sizes is None else block_sizes: k = len(y) // m means = y[:k * m].reshape(k, m).mean(axis=1) rows.append((m * dt, np.sqrt(np.mean(np.diff(means) ** 2) / 2), k - 1)) return ({'samples': len(y), 'dt_s': dt, 'mean_rad_s': float(y.mean()), 'std_rad_s': float(y.std(ddof=1))}, np.array(rows))