diff --git a/PROJECT_LOG.md b/PROJECT_LOG.md index 4ff4c76..8d0d544 100644 --- a/PROJECT_LOG.md +++ b/PROJECT_LOG.md @@ -2535,3 +2535,49 @@ variation неустойчива. TX control BER 0/0; AWGN control при оди Следующий этап: отдельно согласовать полностью офлайн-проверку исправленного preamble-only CFO/carrier estimator на сохранённых Lab056, Lab054 и контролях, без payload truth в оценивателе и без запуска Lab059 автоматически. + +# Запись 053 + +## Дата + +11 сентября 2026 года + +## Тема + +Lab059 — пределы восстановления несущей только по 1280-символьной преамбуле + +## Выполнено + +Lab058 зафиксирована отдельным коммитом +82f17499ace5e655991240348401b9700c7c3349 с согласованным сообщением; push не +выполнялся. Затем проведён только офлайн-анализ сохранённых Lab056, Lab054 и +Lab047. Оборудование не опрашивалось, аппаратных команд не было, RF TX=0. + +До альтернатив сохранён точный P0 baseline. Активная ветвь корректно учитывает +BPSK², знак, единицы и reference time, но использует только две точки по 512 +символов и отбрасывает последние 256 символов преамбулы. На Lab056 B ошибка P0 +относительно whole-burst reference составила +4,7307/+4,7608 Гц, средняя SER +52,4169%. P3 с устойчивым наклоном фазы по всей squared-преамбуле дал +−0,1249/+0,3917 Гц и SER 3,6170%, близко к диагностическим 3,4959%. + +Независимая проверка первой реализации выявила зависимость P1–P3 от RAW +полезной части через глобальное удаление DC. Исправленный расчёт ограничивает +DC и FIR-опору P1/P3 полной преамбулой, а P2 — только TRAIN; отдельный тест +меняет RAW после преамбулы и подтверждает неизменность новых оценок. P0 сохранён +дословно со штатной обработкой как исторический baseline. + +Две удачные реализации P3 не признаны доказательством устойчивости. Monte Carlo +с300 реализациями для каждой из17 CFO, двух скоростей и трёх заранее заданных +уровней EVM дал на500ксимв/с/EVM0,84535 вероятность |ошибки|≤0,5Гц только +5,86/10,47/3,67/9,61% для P0/P1/P2/P3. Лучший RMSE P1 равен3,728Гц; +AWGN CRLB sanity check даёт3,598Гц. Lab047 сохранён36/36 для всех методов; +Lab054 остался0/16 HEADER/FEC/CRC/packet у всех методов, исторически NOT_A. + +Вывод PREAMBLE_ONLY_INSUFFICIENT: P3 полезен как начальная оценка, но при +наблюдаемом качестве B требуется carrier tracking через burst. Следующий один +этап рекомендуется сделать офлайн: decision-directed tracking без payload truth +и без изменения формата. Физический предел B около3,50% ошибок остаётся. + +Созданы постановка, отчёт, baseline, CSV/JSON и пять графиков Lab059. Исходные +IQ повторно хешированы до/после и не изменились. Lab059 не коммитировалась, +push не выполнялся. Следующий этап: STOP; Lab060 автоматически не начинать. diff --git a/data/processed/lab059/baseline_p0.json b/data/processed/lab059/baseline_p0.json new file mode 100644 index 0000000..caaf375 --- /dev/null +++ b/data/processed/lab059/baseline_p0.json @@ -0,0 +1,2605 @@ +{ + "algorithm": "unchanged active CURRENT estimator", + "rows": [ + { + "dataset": "Lab056", + "label": "A1", + "frame": null, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 2, + "frequency_hz": 0.055789030390158624, + "diagnostic_reference_hz": -0.01750874609532253, + "frequency_error_hz": 0.07329777648548115, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 5.404098464721554, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.281350697674253, + "header_raw_errors": null, + "header_voted_errors": null, + "HEADER_ACCEPTED": null, + "FEC_STARTED": null, + "CRC_PASS": null, + "PACKET_OUTPUT": null, + "symbol_errors": 1, + "symbols": 2816, + "symbol_error_rate": 0.0003551136363636364, + "evm_rms": 0.31642307417060417, + "matched_residual_db": 9.994637088848512, + "estimate": { + "method": "P0", + "frequency_hz": 0.055789030390158624, + "gain": { + "real": -7.472778734762144, + "imag": 8.453362004738484 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999597371619533, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.281350697674253, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab056", + "label": "B1", + "frame": null, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 4.668990755640415, + "diagnostic_reference_hz": -0.061664567120971146, + "frequency_error_hz": 4.730655322761386, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": 348.7817556365515, + "preamble_errors": 30, + "validation_errors": 11, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.5454635255802189, + "header_raw_errors": null, + "header_voted_errors": null, + "HEADER_ACCEPTED": null, + "FEC_STARTED": null, + "CRC_PASS": null, + "PACKET_OUTPUT": null, + "symbol_errors": 53110, + "symbols": 101120, + "symbol_error_rate": 0.5252175632911392, + "evm_rms": 1.6279142433582847, + "matched_residual_db": -4.2326304604832785, + "estimate": { + "method": "P0", + "frequency_hz": 4.668990755640415, + "gain": { + "real": -1.4423830029567037, + "imag": 1.7202838096940447 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.999548955461982, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 0.5454635255802189, + "validation_errors": 11, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab056", + "label": "A2", + "frame": null, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": -0.13866849385025154, + "diagnostic_reference_hz": 0.007241046431241284, + "frequency_error_hz": -0.14590954028149283, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -10.757618585873903, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.29338787010225753, + "header_raw_errors": null, + "header_voted_errors": null, + "HEADER_ACCEPTED": null, + "FEC_STARTED": null, + "CRC_PASS": null, + "PACKET_OUTPUT": null, + "symbol_errors": 0, + "symbols": 2816, + "symbol_error_rate": 0.0, + "evm_rms": 0.3321213960734935, + "matched_residual_db": 9.574062903730386, + "estimate": { + "method": "P0", + "frequency_hz": -0.13866849385025154, + "gain": { + "real": -6.360018670028119, + "imag": 8.872238844744304 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9997512620567922, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.29338787010225753, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab056", + "label": "B2", + "frame": null, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": -1, + "frequency_hz": 4.742179029785731, + "diagnostic_reference_hz": -0.018668146565430317, + "frequency_error_hz": 4.760847176351161, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": 351.00774061801843, + "preamble_errors": 37, + "validation_errors": 20, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.6896823317427843, + "header_raw_errors": null, + "header_voted_errors": null, + "HEADER_ACCEPTED": null, + "FEC_STARTED": null, + "CRC_PASS": null, + "PACKET_OUTPUT": null, + "symbol_errors": 52898, + "symbols": 101120, + "symbol_error_rate": 0.5231210443037975, + "evm_rms": 1.678628511804188, + "matched_residual_db": -4.4990919081768785, + "estimate": { + "method": "P0", + "frequency_hz": 4.742179029785731, + "gain": { + "real": -1.0469452247986029, + "imag": 1.888582775043834 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9995347882200306, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 0.6896823317427843, + "validation_errors": 20, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_01", + "frame": 1, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 71.05787905983122, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": 5238.955307323236, + "preamble_errors": 507, + "validation_errors": 221, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.5602414937097426, + "header_raw_errors": 56, + "header_voted_errors": 20, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 71.05787905983122, + "gain": { + "real": -0.20138657080523356, + "imag": -0.2227004039361547 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.8997539265520238, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.5602414937097426, + "validation_errors": 221, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_02", + "frame": 2, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 26.887136251896358, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": 1982.334781579815, + "preamble_errors": 458, + "validation_errors": 201, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.5543902511548644, + "header_raw_errors": 49, + "header_voted_errors": 13, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 26.887136251896358, + "gain": { + "real": -0.12898727767837423, + "imag": -0.27586365685022596 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9854447640228347, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.5543902511548644, + "validation_errors": 201, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_03", + "frame": 3, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 182.1106401424685, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": 13426.653276423916, + "preamble_errors": 523, + "validation_errors": 226, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.6536071599102027, + "header_raw_errors": 68, + "header_voted_errors": 19, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 182.1106401424685, + "gain": { + "real": -0.19142591687539706, + "imag": 0.018988741917813835 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.478413130429056, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.6536071599102027, + "validation_errors": 226, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_04", + "frame": 4, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 60.165209259727966, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": 4435.860548301224, + "preamble_errors": 488, + "validation_errors": 217, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.5564877586860697, + "header_raw_errors": 52, + "header_voted_errors": 15, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 60.165209259727966, + "gain": { + "real": -0.1424906398098064, + "imag": -0.24557408008501552 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9336045711555485, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.5564877586860697, + "validation_errors": 217, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_05", + "frame": 5, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": -205.66943259870166, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": -15163.595926637077, + "preamble_errors": 554, + "validation_errors": 256, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.7235573946873264, + "header_raw_errors": 82, + "header_voted_errors": 31, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -205.66943259870166, + "gain": { + "real": 0.15578595282599192, + "imag": 0.014061036746332701 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.7117738752308008, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.7235573946873264, + "validation_errors": 256, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_06", + "frame": 6, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": -47.68896121203901, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": -3516.011732241213, + "preamble_errors": 457, + "validation_errors": 196, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.542299295501967, + "header_raw_errors": 60, + "header_voted_errors": 18, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -47.68896121203901, + "gain": { + "real": 0.09202163836635638, + "imag": -0.30751115136323937 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9595471754312264, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.542299295501967, + "validation_errors": 196, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_07", + "frame": 7, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": -127.68041030221116, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": -9413.621290761424, + "preamble_errors": 470, + "validation_errors": 222, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.5834898229355592, + "header_raw_errors": 65, + "header_voted_errors": 20, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -127.68041030221116, + "gain": { + "real": 0.20561424362295738, + "imag": -0.17019335817162404 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.6812856290495208, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.5834898229355592, + "validation_errors": 222, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_08", + "frame": 8, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 81.39413484639022, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": 6001.026773954659, + "preamble_errors": 519, + "validation_errors": 243, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.6515462970515726, + "header_raw_errors": 64, + "header_voted_errors": 16, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 81.39413484639022, + "gain": { + "real": -0.20108010357336217, + "imag": -0.13375648697295597 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.8804898691731686, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.6515462970515726, + "validation_errors": 243, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_09", + "frame": 9, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 1, + "frequency_hz": -61.15955835498989, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": -4509.171918396695, + "preamble_errors": 471, + "validation_errors": 195, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.493594575889102, + "header_raw_errors": 48, + "header_voted_errors": 16, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -61.15955835498989, + "gain": { + "real": 0.1323170664154355, + "imag": -0.2728704907112181 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9445918932053308, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.493594575889102, + "validation_errors": 195, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_10", + "frame": 10, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": -217.23518327179, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": -16016.315592262534, + "preamble_errors": 520, + "validation_errors": 259, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.7072105398940634, + "header_raw_errors": 74, + "header_voted_errors": 21, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -217.23518327179, + "gain": { + "real": 0.16692247754143646, + "imag": 0.012126443529206344 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.4828697077608528, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.7072105398940634, + "validation_errors": 259, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_11", + "frame": 11, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 49.031248600960424, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": 3614.9758968516107, + "preamble_errors": 471, + "validation_errors": 207, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.543877726497367, + "header_raw_errors": 48, + "header_voted_errors": 13, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 49.031248600960424, + "gain": { + "real": -0.16947902918337263, + "imag": -0.23988607130256293 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9557098349996653, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.543877726497367, + "validation_errors": 207, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_12", + "frame": 12, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": -7.466154244188351, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": -550.4646201155188, + "preamble_errors": 415, + "validation_errors": 192, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.5068553398400395, + "header_raw_errors": 55, + "header_voted_errors": 15, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -7.466154244188351, + "gain": { + "real": -0.11809670020183834, + "imag": -0.3434346123404777 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9991926333788222, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.5068553398400395, + "validation_errors": 192, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_13", + "frame": 13, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": -46.56896994516694, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": -3433.4370161172683, + "preamble_errors": 473, + "validation_errors": 216, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.5680670934044194, + "header_raw_errors": 45, + "header_voted_errors": 11, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -46.56896994516694, + "gain": { + "real": 0.06927671354750337, + "imag": -0.3098949838942619 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9785747847839693, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.5680670934044194, + "validation_errors": 216, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_14", + "frame": 14, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": -49.50229019680779, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": -3649.7048516302452, + "preamble_errors": 440, + "validation_errors": 200, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.532842081900804, + "header_raw_errors": 64, + "header_voted_errors": 22, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -49.50229019680779, + "gain": { + "real": 0.06539396817353246, + "imag": -0.30806999147805414 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9544044253798095, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.532842081900804, + "validation_errors": 200, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_15", + "frame": 15, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 97.69677376620051, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": 7202.987736234431, + "preamble_errors": 493, + "validation_errors": 223, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.5973091025441948, + "header_raw_errors": 58, + "header_voted_errors": 16, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 97.69677376620051, + "gain": { + "real": -0.25979061499556916, + "imag": -0.15001428119958704 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.8161591142983696, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.5973091025441948, + "validation_errors": 223, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab054", + "label": "Lab054_16", + "frame": 16, + "symbol_rate": 500000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 178.92197295233188, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_drift_to_burst_end_degrees": 13191.559221829526, + "preamble_errors": 508, + "validation_errors": 220, + "validation_symbols": 576, + "validation_phase_rmse_rad": 1.608641316659876, + "header_raw_errors": 58, + "header_voted_errors": 17, + "HEADER_ACCEPTED": false, + "FEC_STARTED": false, + "CRC_PASS": false, + "PACKET_OUTPUT": false, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 178.92197295233188, + "gain": { + "real": -0.22907386465477045, + "imag": -0.004715528910810441 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.002048, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.4088444367349875, + "unambiguous_abs_hz": 244.140625, + "validation_phase_rmse_rad": 1.608641316659876, + "validation_errors": 220, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_01", + "frame": 1, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 0.20338695996664063, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 14.995313784420482, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.24408019907089523, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.20338695996664063, + "gain": { + "real": -8.555277498594354, + "imag": -3.561101530833428 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9994652405020358, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.24408019907089523, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_02", + "frame": 2, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 2, + "frequency_hz": 0.01245206229793056, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 0.9180656491018244, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.23852904026224236, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.01245206229793056, + "gain": { + "real": -8.334834041829906, + "imag": -3.8194950218703343 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999979943620804, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.23852904026224236, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_03", + "frame": 3, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -1, + "frequency_hz": -0.15241918633579546, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -11.237561770165529, + "preamble_errors": 1, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.24661387763588047, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.15241918633579546, + "gain": { + "real": -8.467073086767183, + "imag": -3.1006131332383604 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9996995246213041, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.24661387763588047, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_04", + "frame": 4, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 0.01262764326672397, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 0.9310108827690249, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2508100393912278, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.01262764326672397, + "gain": { + "real": -8.524601645486, + "imag": -2.8787095178668736 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999979377522669, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2508100393912278, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_05", + "frame": 5, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 0.281028661583342, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 20.719681161216638, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2564155798218067, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.281028661583342, + "gain": { + "real": -8.64539201429091, + "imag": -2.1355006027656964 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9989786625222722, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2564155798218067, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_06", + "frame": 6, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -1, + "frequency_hz": 0.07286238375746204, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 5.371997829670161, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.24788987242020039, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.07286238375746204, + "gain": { + "real": -8.72474576789993, + "imag": -1.6539436998576456 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999313272510225, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.24788987242020039, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_07", + "frame": 7, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -1, + "frequency_hz": 0.021532444762196186, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 1.5875440874272004, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.24095534174885902, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.021532444762196186, + "gain": { + "real": -8.460856864799455, + "imag": -2.595501466173191 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999940031086962, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.24095534174885902, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_08", + "frame": 8, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -1, + "frequency_hz": 0.1303327314897419, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 9.60917162727569, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2369128317884453, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.1303327314897419, + "gain": { + "real": -8.614696641681737, + "imag": -1.671380073442122 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9997802868789241, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2369128317884453, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_09", + "frame": 9, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -1, + "frequency_hz": 0.08586105890936226, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 6.33036415126946, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2535402636657539, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.08586105890936226, + "gain": { + "real": -8.552901161613061, + "imag": -1.9687723426403427 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.999904633706121, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2535402636657539, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_10", + "frame": 10, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 0.019087741925426633, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 1.4073010366778549, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2626440541358539, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.019087741925426633, + "gain": { + "real": -8.560956875897665, + "imag": -2.3954465311973134 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999952873282404, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2626440541358539, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_11", + "frame": 11, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -2, + "frequency_hz": 0.012581579030474518, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 0.9276146587588253, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2529471932218112, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.012581579030474518, + "gain": { + "real": -8.187288744221659, + "imag": -2.71235240366042 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.999997952586087, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2529471932218112, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_12", + "frame": 12, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 3, + "frequency_hz": 0.18682094614419062, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 13.773934717318888, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.24569610830792896, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.18682094614419062, + "gain": { + "real": -8.64702493819515, + "imag": -2.1746932586448273 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.999548545574175, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.24569610830792896, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_13", + "frame": 13, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 2, + "frequency_hz": 0.10358472650455763, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 7.6370947157280265, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.25645250487406646, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.10358472650455763, + "gain": { + "real": -8.767680371105412, + "imag": -3.594135929309519 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.999861199492259, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.25645250487406646, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_14", + "frame": 14, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 1, + "frequency_hz": -0.21121437719218272, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -15.572413601625248, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.24869213329447715, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.21121437719218272, + "gain": { + "real": -8.748147356646916, + "imag": -3.473572203717599 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.999422953696793, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.24869213329447715, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_15", + "frame": 15, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 1, + "frequency_hz": 0.049870139505863734, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 3.676825645488322, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.24478796499020036, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.049870139505863734, + "gain": { + "real": -9.249387665541745, + "imag": -2.7375437222943906 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999678287729051, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.24478796499020036, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_16", + "frame": 16, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": -0.018063381987402014, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -1.3317770271671758, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.24528803540318814, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.018063381987402014, + "gain": { + "real": -8.80251709512771, + "imag": -3.7648476055388205 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.999995779093193, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.24528803540318814, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_17", + "frame": 17, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -2, + "frequency_hz": -0.10920347467377903, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -8.05135378074838, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.24975898491527454, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.10920347467377903, + "gain": { + "real": -8.634657615425033, + "imag": -3.1621477802381754 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9998458183019505, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.24975898491527454, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_18", + "frame": 18, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -2, + "frequency_hz": -0.02376851548176631, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -1.7524051094396667, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.25432671707204424, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.02376851548176631, + "gain": { + "real": -8.188014051808265, + "imag": -3.20629950336583 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999926928815138, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.25432671707204424, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_19", + "frame": 19, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -1, + "frequency_hz": -0.1284418534305705, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -9.469760969729101, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.24867962730232937, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.1284418534305705, + "gain": { + "real": -8.460463561484717, + "imag": -3.132039203301655 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9997865942502795, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.24867962730232937, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_20", + "frame": 20, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": -0.021131361180208717, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -1.5579729970944285, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2486026072422683, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.021131361180208717, + "gain": { + "real": -8.675920040497514, + "imag": -2.4209844897510386 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999942238080606, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2486026072422683, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_21", + "frame": 21, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 1, + "frequency_hz": 0.0010757126969957041, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 0.07931014572409928, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.23923504328822567, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.0010757126969957041, + "gain": { + "real": -8.487599095827468, + "imag": -3.0755289293093533 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999999850309331, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.23923504328822567, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_22", + "frame": 22, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -1, + "frequency_hz": 0.16827974148863914, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 12.406928780474388, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.25645634194934697, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.16827974148863914, + "gain": { + "real": -8.538132104537217, + "imag": -2.7404844122904284 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9996337701056393, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.25645634194934697, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_23", + "frame": 23, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 2, + "frequency_hz": 0.030806608556101577, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 2.2713096356242573, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2415451319340911, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.030806608556101577, + "gain": { + "real": -8.563503132253325, + "imag": -2.700053397350138 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999877236175959, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2415451319340911, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_24", + "frame": 24, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 1, + "frequency_hz": 0.03249723586727888, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 2.3959562060227375, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.24293484364278795, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.03249723586727888, + "gain": { + "real": -8.746008340939936, + "imag": -2.568771550143314 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999863407649648, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.24293484364278795, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_25", + "frame": 25, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": -0.11893265295803063, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -8.768666637289684, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.24457532066633564, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.11893265295803063, + "gain": { + "real": -8.384062462568421, + "imag": -2.9021230399875737 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9998170254030553, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.24457532066633564, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_26", + "frame": 26, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -1, + "frequency_hz": -0.08475155693776178, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -6.248562789907301, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2606975526043931, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.08475155693776178, + "gain": { + "real": -8.33308795380663, + "imag": -2.680602736247441 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999070829370373, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2606975526043931, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_27", + "frame": 27, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 0.05389158314748845, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 3.973318642298029, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2560996129719703, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.05389158314748845, + "gain": { + "real": -8.171466136026343, + "imag": -2.791678916936141 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999624332095763, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2560996129719703, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_28", + "frame": 28, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -1, + "frequency_hz": 0.042894290392977555, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 3.162510242093449, + "preamble_errors": 1, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.26290205291326413, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.042894290392977555, + "gain": { + "real": -8.334639822192353, + "imag": -2.1054132056551715 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999762145359951, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.26290205291326413, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_29", + "frame": 29, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -1, + "frequency_hz": -0.23616562017926682, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -17.412018844576984, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2617119394101073, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.23616562017926682, + "gain": { + "real": -8.414205533076071, + "imag": -4.007112541897692 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9992789271949121, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2617119394101073, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_30", + "frame": 30, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": -1, + "frequency_hz": -0.12603709631954577, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -9.29246303744747, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.24475383882612456, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.12603709631954577, + "gain": { + "real": -8.468485721352392, + "imag": -4.407880560131541 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9997946010567929, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.24475383882612456, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_31", + "frame": 31, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 0.0605923638017162, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 4.4673537983729315, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2519540554343922, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.0605923638017162, + "gain": { + "real": -9.058135576426293, + "imag": -3.329280138233372 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999525076054666, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2519540554343922, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_32", + "frame": 32, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": -0.0834985337983586, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -6.156179899885384, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2598625285692578, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.0834985337983586, + "gain": { + "real": -8.634913051814028, + "imag": -4.097835115698962 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9999098097366144, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2598625285692578, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_33", + "frame": 33, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 1, + "frequency_hz": -0.15898838343389923, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -11.721895533814523, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2584663403893296, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.15898838343389923, + "gain": { + "real": -8.46876129889292, + "imag": -4.437357933159314 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9996730461410841, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2584663403893296, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_34", + "frame": 34, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": 0.11383338774465794, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": 8.39270801163814, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.2595285054364747, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": 0.11383338774465794, + "gain": { + "real": -8.730625304157298, + "imag": -3.8915376707184914 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.999832410601363, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.2595285054364747, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_35", + "frame": 35, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 2, + "frequency_hz": -0.2328040338209343, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -17.164175805549842, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.25743082288546204, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.2328040338209343, + "gain": { + "real": -8.431129692626712, + "imag": -4.713149031746205 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9992992400557166, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.25743082288546204, + "validation_errors": 0, + "validation_symbols": 576 + } + }, + { + "dataset": "Lab047", + "label": "Lab047_36", + "frame": 36, + "symbol_rate": 20000, + "method": "P0", + "timing_samples": 0, + "frequency_hz": -0.2555997527116375, + "diagnostic_reference_hz": null, + "frequency_error_hz": null, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_drift_to_burst_end_degrees": -18.84485856792361, + "preamble_errors": 0, + "validation_errors": 0, + "validation_symbols": 576, + "validation_phase_rmse_rad": 0.25769090297150626, + "header_raw_errors": 0, + "header_voted_errors": 0, + "HEADER_ACCEPTED": true, + "FEC_STARTED": true, + "CRC_PASS": true, + "PACKET_OUTPUT": true, + "symbol_errors": null, + "symbols": null, + "symbol_error_rate": null, + "evm_rms": null, + "matched_residual_db": null, + "estimate": { + "method": "P0", + "frequency_hz": -0.2555997527116375, + "gain": { + "real": -8.71048544685464, + "imag": -3.5638110487045944 + }, + "estimation_symbols": 1024, + "estimation_duration_seconds": 0.0512, + "phase_fit_rmse_rad": 0.0, + "mean_block_coherence": 0.9991549955732492, + "unambiguous_abs_hz": 9.765625, + "validation_phase_rmse_rad": 0.25769090297150626, + "validation_errors": 0, + "validation_symbols": 576 + } + } + ], + "summary": { + "Lab056": { + "P0": { + "segments": 4, + "mean_abs_frequency_error_hz": 2.4276774539698804, + "A_frequency_errors_hz": [ + 0.07329777648548115, + -0.14590954028149283 + ], + "B_frequency_errors_hz": [ + 4.730655322761386, + 4.760847176351161 + ], + "B_mean_abs_frequency_error_hz": 4.745751249556274, + "B_mean_symbol_error_rate": 0.5241693037974684, + "A_mean_symbol_error_rate": 0.0001775568181818182, + "B_mean_evm_rms": 1.6532713775812362, + "B_mean_matched_residual_db": -4.365861184330079 + } + }, + "Lab054": { + "P0": { + "frames": 16, + "header_accepted": 0, + "fec_started": 0, + "crc_pass": 0, + "packet_output": 0, + "preamble_errors": 7767, + "header_raw_errors": 946, + "header_voted_errors": 283, + "mean_frequency_hz": -0.9816228278804822 + } + }, + "Lab047": { + "P0": { + "frames": 36, + "header_accepted": 36, + "fec_started": 36, + "crc_pass": 36, + "packet_output": 36, + "preamble_errors": 2, + "header_raw_errors": 0, + "header_voted_errors": 0, + "mean_frequency_hz": -0.007364438266704758 + } + } + }, + "mathematics": { + "active_input": "matched-filter symbol centers after nominal 50 kHz downconversion", + "p0_squares_bpsk": true, + "p0_symbol_ranges_half_open": [ + [ + 0, + 512 + ], + [ + 512, + 1024 + ] + ], + "p0_discarded_preamble_symbols_half_open": [ + 1024, + 1280 + ], + "block_center_symbol_times": [ + 256.0, + 768.0 + ], + "center_distance_symbols": 512, + "phase_difference_formula": "angle(block1)-angle(block0), unwrapped", + "frequency_formula": "delta_phase/(4*pi*(512/Rs))", + "factor_two_after_squaring": true, + "compensation_sign": "negative complex exponential", + "reference_time": "gain phase at t=0; symbol k center at (k+0.5)/Rs", + "p0_unambiguous_abs_hz": { + "20000": 9.765625, + "500000": 244.140625 + }, + "double_compensation": false + } +} diff --git a/data/processed/lab059/burst_phase_drift.png b/data/processed/lab059/burst_phase_drift.png new file mode 100644 index 0000000..3847e3c Binary files /dev/null and b/data/processed/lab059/burst_phase_drift.png differ diff --git a/data/processed/lab059/frequency_error_by_method.png b/data/processed/lab059/frequency_error_by_method.png new file mode 100644 index 0000000..ce0d47f Binary files /dev/null and b/data/processed/lab059/frequency_error_by_method.png differ diff --git a/data/processed/lab059/lab054_result_by_method.png b/data/processed/lab059/lab054_result_by_method.png new file mode 100644 index 0000000..40ff831 Binary files /dev/null and b/data/processed/lab059/lab054_result_by_method.png differ diff --git a/data/processed/lab059/lab056_b_symbol_errors.png b/data/processed/lab059/lab056_b_symbol_errors.png new file mode 100644 index 0000000..c104c17 Binary files /dev/null and b/data/processed/lab059/lab056_b_symbol_errors.png differ diff --git a/data/processed/lab059/real_results.csv b/data/processed/lab059/real_results.csv new file mode 100644 index 0000000..89398b5 --- /dev/null +++ b/data/processed/lab059/real_results.csv @@ -0,0 +1,225 @@ +dataset,label,frame,symbol_rate,method,timing_samples,frequency_hz,diagnostic_reference_hz,frequency_error_hz,estimation_symbols,estimation_duration_seconds,phase_drift_to_burst_end_degrees,preamble_errors,validation_errors,validation_symbols,validation_phase_rmse_rad,header_raw_errors,header_voted_errors,HEADER_ACCEPTED,FEC_STARTED,CRC_PASS,PACKET_OUTPUT,symbol_errors,symbols,symbol_error_rate,evm_rms,matched_residual_db +Lab056,A1,,20000,P0,2,0.055789030390158624,-0.01750874609532253,0.07329777648548115,1024,0.0512,5.404098464721554,0,0,576,0.281350697674253,,,,,,,1,2816,0.0003551136363636364,0.31642307417060417,9.994637088848512 +Lab056,A1,,20000,P1,2,-0.045203127260058616,-0.01750874609532253,-0.027694381164736086,1280,0.064,-2.041851334513662,0,0,576,0.28106976981388476,,,,,,,1,2816,0.0003551136363636364,0.3132162036317391,10.083115573034034 +Lab056,A1,,20000,P2,2,-0.1181109347063771,-0.01750874609532253,-0.10060218861105456,576,0.0288,-7.417198161915831,0,0,576,0.28185801409875083,,,,,,,1,2816,0.0003551136363636364,0.3227866377535928,9.821689037239365 +Lab056,A1,,20000,P3,2,-0.03462245283812144,-0.01750874609532253,-0.01711370674279891,1280,0.064,-1.261759370733078,0,0,576,0.28107733134015733,,,,,,,1,2816,0.0003551136363636364,0.3128290207824184,10.093859295041891 +Lab056,B1,,500000,P0,0,4.668990755640415,-0.061664567120971146,4.730655322761386,1024,0.002048,348.7817556365515,30,11,576,0.5454635255802189,,,,,,,53110,101120,0.5252175632911392,1.6279142433582847,-4.2326304604832785 +Lab056,B1,,500000,P1,0,-3.3802358861866058,-0.061664567120971146,-3.3185713190656347,1280,0.00256,-244.67162621207112,29,10,576,0.5478817168243599,,,,,,,61971,101120,0.6128461234177215,1.7197607275927802,-4.7093605437942285 +Lab056,B1,,500000,P2,0,-20.03952039459105,-0.061664567120971146,-19.97785582747008,576,0.001152,-1472.9273544477142,27,9,576,0.5669927710004875,,,,,,,50335,101120,0.49777492088607594,1.6041229976665214,-4.104753303400513 +Lab056,B1,,500000,P3,0,-0.186545694754331,-0.061664567120971146,-0.12488112763335985,1280,0.00256,-9.207235778152356,29,11,576,0.5479565818059529,,,,,,,3346,101120,0.03308939873417722,0.7880810508511308,2.0685822967252845 +Lab056,A2,,20000,P0,0,-0.13866849385025154,0.007241046431241284,-0.14590954028149283,1024,0.0512,-10.757618585873903,0,0,576,0.29338787010225753,,,,,,,0,2816,0.0,0.3321213960734935,9.574062903730386 +Lab056,A2,,20000,P1,0,0.12087165302322976,0.007241046431241284,0.11363060659198848,1280,0.064,8.377757362814128,0,0,576,0.2899397032633679,,,,,,,0,2816,0.0,0.3284274607953825,9.671210747659595 +Lab056,A2,,20000,P2,0,-0.3260000782776973,0.007241046431241284,-0.3332411247089386,576,0.0288,-24.569201642540627,0,0,576,0.3087390474340879,,,,,,,0,2816,0.0,0.41255034750088376,7.6904608546438125 +Lab056,A2,,20000,P3,0,0.10074780428611109,0.007241046431241284,0.09350675785486981,1280,0.064,6.8940662431238415,0,0,576,0.290102346434687,,,,,,,0,2816,0.0,0.3251596080688447,9.758068171911082 +Lab056,B2,,500000,P0,-1,4.742179029785731,-0.018668146565430317,4.760847176351161,1024,0.002048,351.00774061801843,37,20,576,0.6896823317427843,,,,,,,52898,101120,0.5231210443037975,1.678628511804188,-4.4990919081768785 +Lab056,B2,,500000,P1,-1,2.1612705674681,-0.018668146565430317,2.1799387140335305,1280,0.00256,160.72252150826412,37,20,576,0.6889499599311383,,,,,,,42640,101120,0.42167721518987344,1.5546696774807434,-3.832762561963899 +Lab056,B2,,500000,P2,-1,46.70256552332298,-0.018668146565430317,46.72123366988841,576,0.001152,3444.663116013533,48,28,576,0.7964840218525077,,,,,,,50792,101120,0.5022943037974683,1.651904346423168,-4.359697917516451 +Lab056,B2,,500000,P3,-1,0.373039417020298,-0.018668146565430317,0.39170756358572834,1280,0.00256,28.87981524804858,37,20,576,0.6888460616356666,,,,,,,3969,101120,0.039250395569620254,0.8994741401771035,0.9202263615398578 +Lab054,Lab054_01,1,500000,P0,0,71.05787905983122,,,1024,0.002048,5238.955307323236,507,221,576,1.5602414937097426,56,20,False,False,False,False,,,,, +Lab054,Lab054_01,1,500000,P1,0,-2.7596830538434087,,,1280,0.00256,-203.46591219376685,490,225,576,1.5581794908053075,61,19,False,False,False,False,,,,, +Lab054,Lab054_01,1,500000,P2,0,832.0124120469967,,,576,0.001152,61342.61111540097,651,295,576,1.8068588800428145,82,26,False,False,False,False,,,,, +Lab054,Lab054_01,1,500000,P3,0,445.67801522580993,,,1280,0.00256,32858.94870656852,623,266,576,1.7431028421860995,67,22,False,False,False,False,,,,, +Lab054,Lab054_02,2,500000,P0,0,26.887136251896358,,,1024,0.002048,1982.334781579815,458,201,576,1.5543902511548644,49,13,False,False,False,False,,,,, +Lab054,Lab054_02,2,500000,P1,0,33.458444956519024,,,1280,0.00256,2466.8242297542347,467,201,576,1.552515413220335,49,14,False,False,False,False,,,,, +Lab054,Lab054_02,2,500000,P2,0,-1145.653016820168,,,576,0.001152,-84466.70562411736,655,309,576,1.8893741832531823,60,14,False,False,False,False,,,,, +Lab054,Lab054_02,2,500000,P3,0,131.47278573983277,,,1280,0.00256,9693.225547026392,477,202,576,1.5648720364594986,68,20,False,False,False,False,,,,, +Lab054,Lab054_03,3,500000,P0,0,182.1106401424685,,,1024,0.002048,13426.653276423916,523,226,576,1.6536071599102027,68,19,False,False,False,False,,,,, +Lab054,Lab054_03,3,500000,P1,0,-3.8084421491854212,,,1280,0.00256,-280.78882277514276,482,211,576,1.5984408286255272,54,18,False,False,False,False,,,,, +Lab054,Lab054_03,3,500000,P2,0,52.5392025744128,,,576,0.001152,3873.6103274063066,485,221,576,1.6331156876177746,61,18,False,False,False,False,,,,, +Lab054,Lab054_03,3,500000,P3,0,-145.0747623772973,,,1280,0.00256,-10696.072080553377,500,219,576,1.6207715141617793,69,24,False,False,False,False,,,,, +Lab054,Lab054_04,4,500000,P0,0,60.165209259727966,,,1024,0.002048,4435.860548301224,488,217,576,1.5564877586860697,52,15,False,False,False,False,,,,, +Lab054,Lab054_04,4,500000,P1,0,-22.20190987715781,,,1280,0.00256,-1636.902411423091,467,208,576,1.5268130226021788,47,15,False,False,False,False,,,,, +Lab054,Lab054_04,4,500000,P2,0,24.104109593646626,,,576,0.001152,1777.1477921203787,467,213,576,1.5654011439879034,53,15,False,False,False,False,,,,, +Lab054,Lab054_04,4,500000,P3,0,-1031.870407252713,,,1280,0.00256,-76077.74138592802,622,270,576,1.7733555040622806,78,26,False,False,False,False,,,,, +Lab054,Lab054_05,5,500000,P0,0,-205.66943259870166,,,1024,0.002048,-15163.595926637077,554,256,576,1.7235573946873264,82,31,False,False,False,False,,,,, +Lab054,Lab054_05,5,500000,P1,0,424.98076705454054,,,1280,0.00256,31332.981993397167,629,268,576,1.7616360238082354,52,14,False,False,False,False,,,,, +Lab054,Lab054_05,5,500000,P2,0,-963.7636356228464,,,576,0.001152,-71056.36532720123,609,280,576,1.8123220027642652,62,22,False,False,False,False,,,,, +Lab054,Lab054_05,5,500000,P3,0,525.3844782268717,,,1280,0.00256,38735.546810710795,609,255,576,1.7377180712114089,66,23,False,False,False,False,,,,, +Lab054,Lab054_06,6,500000,P0,0,-47.68896121203901,,,1024,0.002048,-3516.011732241213,457,196,576,1.542299295501967,60,18,False,False,False,False,,,,, +Lab054,Lab054_06,6,500000,P1,0,-490.38623941182334,,,1280,0.00256,-36155.196659354915,606,269,576,1.7559244208972329,75,24,False,False,False,False,,,,, +Lab054,Lab054_06,6,500000,P2,0,-708.0723160401448,,,576,0.001152,-52204.75571700779,645,286,576,1.781688435968334,91,34,False,False,False,False,,,,, +Lab054,Lab054_06,6,500000,P3,0,-275.5102477841593,,,1280,0.00256,-20312.819548630494,561,239,576,1.6849216586175462,91,32,False,False,False,False,,,,, +Lab054,Lab054_07,7,500000,P0,0,-127.68041030221116,,,1024,0.002048,-9413.621290761424,470,222,576,1.5834898229355592,65,20,False,False,False,False,,,,, +Lab054,Lab054_07,7,500000,P1,0,-29.32545117992878,,,1280,0.00256,-2162.106864593789,451,210,576,1.5658469358392977,69,17,False,False,False,False,,,,, +Lab054,Lab054_07,7,500000,P2,0,-24.189430031667207,,,576,0.001152,-1783.4382973747602,448,208,576,1.5659371265924296,70,17,False,False,False,False,,,,, +Lab054,Lab054_07,7,500000,P3,0,-449.64749449758153,,,1280,0.00256,-33151.6104743177,606,266,576,1.7669945187604157,66,21,False,False,False,False,,,,, +Lab054,Lab054_08,8,500000,P0,0,81.39413484639022,,,1024,0.002048,6001.026773954659,519,243,576,1.6515462970515726,64,16,False,False,False,False,,,,, +Lab054,Lab054_08,8,500000,P1,0,-118.91387689984838,,,1280,0.00256,-8767.282316072022,510,227,576,1.6495475485725233,63,20,False,False,False,False,,,,, +Lab054,Lab054_08,8,500000,P2,0,122.84758234457003,,,576,0.001152,9057.30655110046,558,281,576,1.753366775632297,79,25,False,False,False,False,,,,, +Lab054,Lab054_08,8,500000,P3,0,438.2998249301433,,,1280,0.00256,32314.969492449607,614,247,576,1.687086644018741,76,25,False,False,False,False,,,,, +Lab054,Lab054_09,9,500000,P0,1,-61.15955835498989,,,1024,0.002048,-4509.171918396695,471,195,576,1.493594575889102,48,16,False,False,False,False,,,,, +Lab054,Lab054_09,9,500000,P1,1,-1.2987704753682394,,,1280,0.00256,-95.75574960794955,450,173,576,1.4812616681570683,51,15,False,False,False,False,,,,, +Lab054,Lab054_09,9,500000,P2,1,331.6820502291181,,,576,0.001152,24454.25419929242,666,363,576,2.025936024047941,74,24,False,False,False,False,,,,, +Lab054,Lab054_09,9,500000,P3,1,-261.3492937774327,,,1280,0.00256,-19268.76073162256,557,238,576,1.6488363148289535,84,28,False,False,False,False,,,,, +Lab054,Lab054_10,10,500000,P0,0,-217.23518327179,,,1024,0.002048,-16016.315592262534,520,259,576,1.7072105398940634,74,21,False,False,False,False,,,,, +Lab054,Lab054_10,10,500000,P1,0,-548.0413249573663,,,1280,0.00256,-40405.990806456706,595,257,576,1.7163253326819443,66,20,False,False,False,False,,,,, +Lab054,Lab054_10,10,500000,P2,0,29.902208030382948,,,576,0.001152,2204.629993664074,458,239,576,1.631822499340162,62,20,False,False,False,False,,,,, +Lab054,Lab054_10,10,500000,P3,0,-150.66067118069995,,,1280,0.00256,-11107.909964810646,496,247,576,1.6642510606503547,67,19,False,False,False,False,,,,, +Lab054,Lab054_11,11,500000,P0,0,49.031248600960424,,,1024,0.002048,3614.9758968516107,471,207,576,1.543877726497367,48,13,False,False,False,False,,,,, +Lab054,Lab054_11,11,500000,P1,0,211.65550401748763,,,1280,0.00256,15604.937000201327,532,225,576,1.6460792510525484,76,29,False,False,False,False,,,,, +Lab054,Lab054_11,11,500000,P2,0,-646.8217118580093,,,576,0.001152,-47688.871171867315,596,261,576,1.7190969275067276,74,27,False,False,False,False,,,,, +Lab054,Lab054_11,11,500000,P3,0,458.26134243049427,,,1280,0.00256,33786.69225471548,598,255,576,1.7218286749477174,64,19,False,False,False,False,,,,, +Lab054,Lab054_12,12,500000,P0,0,-7.466154244188351,,,1024,0.002048,-550.4646201155188,415,192,576,1.5068553398400395,55,15,False,False,False,False,,,,, +Lab054,Lab054_12,12,500000,P1,0,4.460893182362477,,,1280,0.00256,328.89273254922074,416,195,576,1.506074943246286,53,16,False,False,False,False,,,,, +Lab054,Lab054_12,12,500000,P2,0,20.91592194491063,,,576,0.001152,1542.0890931543709,424,197,576,1.5138860170233153,50,13,False,False,False,False,,,,, +Lab054,Lab054_12,12,500000,P3,0,833.8005508283416,,,1280,0.00256,61474.447011471966,615,276,576,1.8096275017327577,56,16,False,False,False,False,,,,, +Lab054,Lab054_13,13,500000,P0,0,-46.56896994516694,,,1024,0.002048,-3433.4370161172683,473,216,576,1.5680670934044194,45,11,False,False,False,False,,,,, +Lab054,Lab054_13,13,500000,P1,0,-2.2646341367322647,,,1280,0.00256,-166.9669456329964,477,216,576,1.556131083131332,45,7,False,False,False,False,,,,, +Lab054,Lab054_13,13,500000,P2,0,-1065.9822430278357,,,576,0.001152,-78592.73881395628,620,284,576,1.8451562690539585,97,37,False,False,False,False,,,,, +Lab054,Lab054_13,13,500000,P3,0,-165.68505819332077,,,1280,0.00256,-12215.627970477153,494,230,576,1.6601280696122982,69,22,False,False,False,False,,,,, +Lab054,Lab054_14,14,500000,P0,0,-49.50229019680779,,,1024,0.002048,-3649.7048516302452,440,200,576,1.532842081900804,64,22,False,False,False,False,,,,, +Lab054,Lab054_14,14,500000,P1,0,528.692786233779,,,1280,0.00256,38979.46174344406,545,251,576,1.6904176062246037,73,24,False,False,False,False,,,,, +Lab054,Lab054_14,14,500000,P2,0,1189.5834072882474,,,576,0.001152,87705.60545254791,625,308,576,1.8421648636021768,67,24,False,False,False,False,,,,, +Lab054,Lab054_14,14,500000,P3,0,695.1773940004922,,,1280,0.00256,51254.03890486829,601,261,576,1.7246944179103345,82,28,False,False,False,False,,,,, +Lab054,Lab054_15,15,500000,P0,0,97.69677376620051,,,1024,0.002048,7202.987736234431,493,223,576,1.5973091025441948,58,16,False,False,False,False,,,,, +Lab054,Lab054_15,15,500000,P1,0,-604.1744993201726,,,1280,0.00256,-44544.577485877686,578,262,576,1.7236176322880294,86,34,False,False,False,False,,,,, +Lab054,Lab054_15,15,500000,P2,0,38.487291276322644,,,576,0.001152,2837.591011220716,483,219,576,1.5759898648519743,55,16,False,False,False,False,,,,, +Lab054,Lab054_15,15,500000,P3,0,-597.7135764583809,,,1280,0.00256,-44068.22656512351,576,264,576,1.724817611795834,89,35,False,False,False,False,,,,, +Lab054,Lab054_16,16,500000,P0,0,178.92197295233188,,,1024,0.002048,13191.559221829526,508,220,576,1.608641316659876,58,17,False,False,False,False,,,,, +Lab054,Lab054_16,16,500000,P1,0,264.7252336159358,,,1280,0.00256,19517.662024035715,569,256,576,1.706644979285429,80,27,False,False,False,False,,,,, +Lab054,Lab054_16,16,500000,P2,0,100.52327792864216,,,576,0.001152,7411.38023512293,481,217,576,1.587694682319251,48,16,False,False,False,False,,,,, +Lab054,Lab054_16,16,500000,P3,0,65.35503817651379,,,1280,0.00256,4818.496254678009,471,201,576,1.5344604930166632,48,13,False,False,False,False,,,,, +Lab047,Lab047_01,1,20000,P0,0,0.20338695996664063,,,1024,0.0512,14.995313784420482,0,0,576,0.24408019907089523,0,0,True,True,True,True,,,,, +Lab047,Lab047_01,1,20000,P1,0,0.1746213830527502,,,1280,0.064,12.874485329713169,0,0,576,0.24411707186441448,0,0,True,True,True,True,,,,, +Lab047,Lab047_01,1,20000,P2,0,0.18964681963089342,,,576,0.0288,13.982280717746509,0,0,576,0.24401896871101017,0,0,True,True,True,True,,,,, +Lab047,Lab047_01,1,20000,P3,0,0.15714557883785213,,,1280,0.064,11.586029236557161,0,0,576,0.24416091006079055,0,0,True,True,True,True,,,,, +Lab047,Lab047_02,2,20000,P0,2,0.01245206229793056,,,1024,0.0512,0.9180656491018244,0,0,576,0.23852904026224236,0,0,True,True,True,True,,,,, +Lab047,Lab047_02,2,20000,P1,2,0.034088045854965755,,,1280,0.064,2.5132434447949152,0,0,576,0.23844907553552597,0,0,True,True,True,True,,,,, +Lab047,Lab047_02,2,20000,P2,2,-0.5650005127284886,,,576,0.0288,-41.65635780244601,0,0,576,0.27550205351340085,0,0,True,True,True,True,,,,, +Lab047,Lab047_02,2,20000,P3,2,0.045255488451016075,,,1280,0.064,3.3365966525165134,0,0,576,0.2384176308877155,0,0,True,True,True,True,,,,, +Lab047,Lab047_03,3,20000,P0,-1,-0.15241918633579546,,,1024,0.0512,-11.237561770165529,1,0,576,0.24661387763588047,0,0,True,True,True,True,,,,, +Lab047,Lab047_03,3,20000,P1,-1,-0.022583067982305857,,,1280,0.064,-1.6650044361994465,1,0,576,0.24581005836444317,0,0,True,True,True,True,,,,, +Lab047,Lab047_03,3,20000,P2,-1,-0.18811863304910567,,,576,0.0288,-13.869610577444462,1,0,576,0.24807927887407913,0,0,True,True,True,True,,,,, +Lab047,Lab047_03,3,20000,P3,-1,-0.012490712115183291,,,1280,0.064,-0.9209152228282338,1,0,576,0.24578442371576287,0,0,True,True,True,True,,,,, +Lab047,Lab047_04,4,20000,P0,0,0.01262764326672397,,,1024,0.0512,0.9310108827690249,0,0,576,0.2508100393912278,0,0,True,True,True,True,,,,, +Lab047,Lab047_04,4,20000,P1,0,0.07209517707358477,,,1280,0.064,5.315433215281258,0,0,576,0.25075809522428116,0,0,True,True,True,True,,,,, +Lab047,Lab047_04,4,20000,P2,0,-0.16408881526571176,,,576,0.0288,-12.097940171910397,0,0,576,0.25500705026357046,0,0,True,True,True,True,,,,, +Lab047,Lab047_04,4,20000,P3,0,0.08847141032386764,,,1280,0.064,6.522820140358114,0,0,576,0.25077533812322866,0,0,True,True,True,True,,,,, +Lab047,Lab047_05,5,20000,P0,0,0.281028661583342,,,1024,0.0512,20.719681161216638,0,0,576,0.2564155798218067,0,0,True,True,True,True,,,,, +Lab047,Lab047_05,5,20000,P1,0,0.18419490563665447,,,1280,0.064,13.580322002779262,0,0,576,0.25601462075812337,0,0,True,True,True,True,,,,, +Lab047,Lab047_05,5,20000,P2,0,0.19749041856353775,,,576,0.0288,14.56057357985251,0,0,576,0.2560944557930097,0,0,True,True,True,True,,,,, +Lab047,Lab047_05,5,20000,P3,0,0.19392441069093583,,,1280,0.064,14.297658951421319,0,0,576,0.2560336277059922,0,0,True,True,True,True,,,,, +Lab047,Lab047_06,6,20000,P0,-1,0.07286238375746204,,,1024,0.0512,5.371997829670161,0,0,576,0.24788987242020039,0,0,True,True,True,True,,,,, +Lab047,Lab047_06,6,20000,P1,-1,0.054034822860243144,,,1280,0.064,3.9838794198400067,0,0,576,0.2478512978182076,0,0,True,True,True,True,,,,, +Lab047,Lab047_06,6,20000,P2,-1,0.10550717486919484,,,576,0.0288,7.7788329887559975,0,0,576,0.24831559624907218,0,0,True,True,True,True,,,,, +Lab047,Lab047_06,6,20000,P3,-1,0.05516274853040141,,,1280,0.064,4.067039123649436,0,0,576,0.24785308847446866,0,0,True,True,True,True,,,,, +Lab047,Lab047_07,7,20000,P0,-1,0.021532444762196186,,,1024,0.0512,1.5875440874272004,0,0,576,0.24095534174885902,0,0,True,True,True,True,,,,, +Lab047,Lab047_07,7,20000,P1,-1,0.0389688296113565,,,1280,0.064,2.873093869586092,0,0,576,0.24098399646395197,0,0,True,True,True,True,,,,, +Lab047,Lab047_07,7,20000,P2,-1,0.0352577431033117,,,576,0.0288,2.599482883520965,0,0,576,0.2409522954756288,0,0,True,True,True,True,,,,, +Lab047,Lab047_07,7,20000,P3,-1,0.04068203072103648,,,1280,0.064,2.999404761000578,0,0,576,0.24098769140034668,0,0,True,True,True,True,,,,, +Lab047,Lab047_08,8,20000,P0,-1,0.1303327314897419,,,1024,0.0512,9.60917162727569,0,0,576,0.2369128317884453,0,0,True,True,True,True,,,,, +Lab047,Lab047_08,8,20000,P1,-1,0.03164727924555996,,,1280,0.064,2.333290604216645,0,0,576,0.2366131158369264,0,0,True,True,True,True,,,,, +Lab047,Lab047_08,8,20000,P2,-1,0.1296312419501212,,,576,0.0288,9.557452206498537,0,0,576,0.23735884034679874,0,0,True,True,True,True,,,,, +Lab047,Lab047_08,8,20000,P3,-1,0.03634652634439204,,,1280,0.064,2.6797566943193365,0,0,576,0.23661529101674741,0,0,True,True,True,True,,,,, +Lab047,Lab047_09,9,20000,P0,-1,0.08586105890936226,,,1024,0.0512,6.33036415126946,0,0,576,0.2535402636657539,0,0,True,True,True,True,,,,, +Lab047,Lab047_09,9,20000,P1,-1,-0.04725222123123114,,,1280,0.064,-3.4838117669362094,0,0,576,0.25260903263411894,0,0,True,True,True,True,,,,, +Lab047,Lab047_09,9,20000,P2,-1,-0.3266681807011343,,,576,0.0288,-24.084591626733232,0,0,576,0.26181014452476115,0,0,True,True,True,True,,,,, +Lab047,Lab047_09,9,20000,P3,-1,-0.03437247831378406,,,1280,0.064,-2.534214081118671,0,0,576,0.25266053015530004,0,0,True,True,True,True,,,,, +Lab047,Lab047_10,10,20000,P0,0,0.019087741925426633,,,1024,0.0512,1.4073010366778549,0,0,576,0.2626440541358539,0,0,True,True,True,True,,,,, +Lab047,Lab047_10,10,20000,P1,0,-0.013729659590578884,,,1280,0.064,-1.0122603422942,0,0,576,0.26271370527113086,0,0,True,True,True,True,,,,, +Lab047,Lab047_10,10,20000,P2,0,-0.3005202501201319,,,576,0.0288,-22.156757000857088,0,0,576,0.27198091802051255,0,0,True,True,True,True,,,,, +Lab047,Lab047_10,10,20000,P3,0,-0.004015026743280983,,,1280,0.064,-0.2960198917286203,0,0,576,0.2626875626669799,0,0,True,True,True,True,,,,, +Lab047,Lab047_11,11,20000,P0,-2,0.012581579030474518,,,1024,0.0512,0.9276146587588253,0,0,576,0.2529471932218112,0,0,True,True,True,True,,,,, +Lab047,Lab047_11,11,20000,P1,-2,0.09443444556685512,,,1280,0.064,6.962462802753095,0,0,576,0.25281676073527976,0,0,True,True,True,True,,,,, +Lab047,Lab047_11,11,20000,P2,-2,0.027745447558186104,,,576,0.0288,2.045616357569945,0,0,576,0.25292069347116236,0,0,True,True,True,True,,,,, +Lab047,Lab047_11,11,20000,P3,-2,0.08945445864400288,,,1280,0.064,6.595298326905044,0,0,576,0.25281464944047277,0,0,True,True,True,True,,,,, +Lab047,Lab047_12,12,20000,P0,3,0.18682094614419062,,,1024,0.0512,13.773934717318888,0,0,576,0.24569610830792896,0,0,True,True,True,True,,,,, +Lab047,Lab047_12,12,20000,P1,3,0.20479237041169496,,,1280,0.064,15.098931885713448,0,0,576,0.24566598529976807,0,0,True,True,True,True,,,,, +Lab047,Lab047_12,12,20000,P2,3,0.45595162006780315,,,576,0.0288,33.61640104435899,0,0,576,0.25216399334457085,0,0,True,True,True,True,,,,, +Lab047,Lab047_12,12,20000,P3,3,0.20793181183524942,,,1280,0.064,15.33039662298927,0,0,576,0.24566245420141905,0,0,True,True,True,True,,,,, +Lab047,Lab047_13,13,20000,P0,2,0.10358472650455763,,,1024,0.0512,7.6370947157280265,0,0,576,0.25645250487406646,0,0,True,True,True,True,,,,, +Lab047,Lab047_13,13,20000,P1,2,0.05673152622919844,,,1280,0.064,4.182701965826343,0,0,576,0.2561611907683394,0,0,True,True,True,True,,,,, +Lab047,Lab047_13,13,20000,P2,2,0.5194017187308818,,,576,0.0288,38.29444991859046,0,0,576,0.27777368840357314,0,0,True,True,True,True,,,,, +Lab047,Lab047_13,13,20000,P3,2,0.07046134475202344,,,1280,0.064,5.194974025877184,0,0,576,0.2562351764920526,0,0,True,True,True,True,,,,, +Lab047,Lab047_14,14,20000,P0,1,-0.21121437719218272,,,1024,0.0512,-15.572413601625248,0,0,576,0.24869213329447715,0,0,True,True,True,True,,,,, +Lab047,Lab047_14,14,20000,P1,1,-0.07767362950418914,,,1280,0.064,-5.726721356084857,0,0,576,0.24840631263699947,0,0,True,True,True,True,,,,, +Lab047,Lab047_14,14,20000,P2,1,-0.2548188474369813,,,576,0.0288,-18.787283983833756,0,0,576,0.24969891187490142,0,0,True,True,True,True,,,,, +Lab047,Lab047_14,14,20000,P3,1,-0.07105938241797222,,,1280,0.064,-5.239066146912256,0,0,576,0.24841610994376845,0,0,True,True,True,True,,,,, +Lab047,Lab047_15,15,20000,P0,1,0.049870139505863734,,,1024,0.0512,3.676825645488322,0,0,576,0.24478796499020036,0,0,True,True,True,True,,,,, +Lab047,Lab047_15,15,20000,P1,1,0.0627748975371117,,,1280,0.064,4.628267645616172,0,0,576,0.24481884782094224,0,0,True,True,True,True,,,,, +Lab047,Lab047_15,15,20000,P2,1,0.16392216706340793,,,576,0.0288,12.08565353325094,0,0,576,0.24631663360156883,0,0,True,True,True,True,,,,, +Lab047,Lab047_15,15,20000,P3,1,0.06096635147065189,,,1280,0.064,4.4949271612282224,0,0,576,0.24481399064788736,0,0,True,True,True,True,,,,, +Lab047,Lab047_16,16,20000,P0,0,-0.018063381987402014,,,1024,0.0512,-1.3317770271671758,0,0,576,0.24528803540318814,0,0,True,True,True,True,,,,, +Lab047,Lab047_16,16,20000,P1,0,-0.06505615838683895,,,1280,0.064,-4.796460445544862,0,0,576,0.2452696105654383,0,0,True,True,True,True,,,,, +Lab047,Lab047_16,16,20000,P2,0,-0.14012396592690116,,,576,0.0288,-10.331059759858569,0,0,576,0.24584743287436875,0,0,True,True,True,True,,,,, +Lab047,Lab047_16,16,20000,P3,0,-0.07015498272051532,,,1280,0.064,-5.172386566018154,0,0,576,0.2452745324985028,0,0,True,True,True,True,,,,, +Lab047,Lab047_17,17,20000,P0,-2,-0.10920347467377903,,,1024,0.0512,-8.05135378074838,0,0,576,0.24975898491527454,0,0,True,True,True,True,,,,, +Lab047,Lab047_17,17,20000,P1,-2,-0.1365799030816195,,,1280,0.064,-10.069763094401642,0,0,576,0.24970138523204924,0,0,True,True,True,True,,,,, +Lab047,Lab047_17,17,20000,P2,-2,-0.23440521117901503,,,576,0.0288,-17.28222740980642,0,0,576,0.2503921600363199,0,0,True,True,True,True,,,,, +Lab047,Lab047_17,17,20000,P3,-2,-0.11928091749358197,,,1280,0.064,-8.794343484966813,0,0,576,0.24973326990951503,0,0,True,True,True,True,,,,, +Lab047,Lab047_18,18,20000,P0,-2,-0.02376851548176631,,,1024,0.0512,-1.7524051094396667,0,0,576,0.25432671707204424,0,0,True,True,True,True,,,,, +Lab047,Lab047_18,18,20000,P1,-2,0.035279839568979406,,,1280,0.064,2.601112011741714,0,0,576,0.2542195802777361,0,0,True,True,True,True,,,,, +Lab047,Lab047_18,18,20000,P2,-2,0.09095369186496678,,,576,0.0288,6.705833793820271,0,0,576,0.2550869871777693,0,0,True,True,True,True,,,,, +Lab047,Lab047_18,18,20000,P3,-2,0.04019815509512783,,,1280,0.064,2.9637295788535845,0,0,576,0.2542185854643535,0,0,True,True,True,True,,,,, +Lab047,Lab047_19,19,20000,P0,-1,-0.1284418534305705,,,1024,0.0512,-9.469760969729101,0,0,576,0.24867962730232937,0,0,True,True,True,True,,,,, +Lab047,Lab047_19,19,20000,P1,-1,0.02445205624463984,,,1280,0.064,1.8028012028048064,0,0,576,0.24769169325782742,0,0,True,True,True,True,,,,, +Lab047,Lab047_19,19,20000,P2,-1,0.18003179751303086,,,576,0.0288,13.273384367040741,0,0,576,0.2510064099164619,0,0,True,True,True,True,,,,, +Lab047,Lab047_19,19,20000,P3,-1,0.015930866726855945,,,1280,0.064,1.1745509420376352,0,0,576,0.24771471304288994,0,0,True,True,True,True,,,,, +Lab047,Lab047_20,20,20000,P0,0,-0.021131361180208717,,,1024,0.0512,-1.5579729970944285,0,0,576,0.2486026072422683,0,0,True,True,True,True,,,,, +Lab047,Lab047_20,20,20000,P1,0,-0.0016551988124259057,,,1280,0.064,-0.12203449804253717,0,0,576,0.24863519577531928,0,0,True,True,True,True,,,,, +Lab047,Lab047_20,20,20000,P2,0,-0.30267325907969306,,,576,0.0288,-22.315494045427613,0,0,576,0.2576667210802013,0,0,True,True,True,True,,,,, +Lab047,Lab047_20,20,20000,P3,0,-0.008585722692993576,,,1280,0.064,-0.6330081627090305,0,0,576,0.24862138057023275,0,0,True,True,True,True,,,,, +Lab047,Lab047_21,21,20000,P0,1,0.0010757126969957041,,,1024,0.0512,0.07931014572409928,0,0,576,0.23923504328822567,0,0,True,True,True,True,,,,, +Lab047,Lab047_21,21,20000,P1,1,0.02650469397009667,,,1280,0.064,1.9541380770272874,0,0,576,0.2392384911570098,0,0,True,True,True,True,,,,, +Lab047,Lab047_21,21,20000,P2,1,0.09426821509330403,,,576,0.0288,6.950206962399119,0,0,576,0.24009559884226922,0,0,True,True,True,True,,,,, +Lab047,Lab047_21,21,20000,P3,1,0.038783731587593184,,,1280,0.064,2.8594469624900705,0,0,576,0.23925265863339787,0,0,True,True,True,True,,,,, +Lab047,Lab047_22,22,20000,P0,-1,0.16827974148863914,,,1024,0.0512,12.406928780474388,0,0,576,0.25645634194934697,0,0,True,True,True,True,,,,, +Lab047,Lab047_22,22,20000,P1,-1,0.09319505975080904,,,1280,0.064,6.871085365307649,0,0,576,0.2564141929121109,0,0,True,True,True,True,,,,, +Lab047,Lab047_22,22,20000,P2,-1,0.11828043713691415,,,576,0.0288,8.720580069230406,0,0,576,0.2564924710911361,0,0,True,True,True,True,,,,, +Lab047,Lab047_22,22,20000,P3,-1,0.09427369083541758,,,1280,0.064,6.950610677913667,0,0,576,0.25641278620738284,0,0,True,True,True,True,,,,, +Lab047,Lab047_23,23,20000,P0,2,0.030806608556101577,,,1024,0.0512,2.2713096356242573,0,0,576,0.2415451319340911,0,0,True,True,True,True,,,,, +Lab047,Lab047_23,23,20000,P1,2,-0.003986912070090059,,,1280,0.064,-0.29394705310359986,0,0,576,0.24159807656381949,0,0,True,True,True,True,,,,, +Lab047,Lab047_23,23,20000,P2,2,-0.059665389892132444,,,576,0.0288,-4.399009865967141,0,0,576,0.24269112674201504,0,0,True,True,True,True,,,,, +Lab047,Lab047_23,23,20000,P3,2,0.00037221452701625404,,,1280,0.064,0.02744263264785438,0,0,576,0.24158793942244342,0,0,True,True,True,True,,,,, +Lab047,Lab047_24,24,20000,P0,1,0.03249723586727888,,,1024,0.0512,2.3959562060227375,0,0,576,0.24293484364278795,0,0,True,True,True,True,,,,, +Lab047,Lab047_24,24,20000,P1,1,-0.0003501584437993217,,,1280,0.064,-0.025816481744436393,0,0,576,0.24290086805948694,0,0,True,True,True,True,,,,, +Lab047,Lab047_24,24,20000,P2,1,-0.21119097873043446,,,576,0.0288,-15.570688479837473,0,0,576,0.2481912863721224,0,0,True,True,True,True,,,,, +Lab047,Lab047_24,24,20000,P3,1,-0.008086790974243025,,,1280,0.064,-0.5962229249489898,0,0,576,0.2429011607891668,0,0,True,True,True,True,,,,, +Lab047,Lab047_25,25,20000,P0,0,-0.11893265295803063,,,1024,0.0512,-8.768666637289684,0,0,576,0.24457532066633564,0,0,True,True,True,True,,,,, +Lab047,Lab047_25,25,20000,P1,0,0.027850958226544764,,,1280,0.064,2.0533954481266923,0,0,576,0.2439399033965096,0,0,True,True,True,True,,,,, +Lab047,Lab047_25,25,20000,P2,0,0.05878603973732115,,,576,0.0288,4.334177137753214,0,0,576,0.24489748044786397,0,0,True,True,True,True,,,,, +Lab047,Lab047_25,25,20000,P3,0,0.02904815291865894,,,1280,0.064,2.1416622183868865,0,0,576,0.24393933327493048,0,0,True,True,True,True,,,,, +Lab047,Lab047_26,26,20000,P0,-1,-0.08475155693776178,,,1024,0.0512,-6.248562789907301,0,0,576,0.2606975526043931,0,0,True,True,True,True,,,,, +Lab047,Lab047_26,26,20000,P1,-1,-0.024588704735790837,,,1280,0.064,-1.8128760227603868,0,0,576,0.26049328403880645,0,0,True,True,True,True,,,,, +Lab047,Lab047_26,26,20000,P2,-1,-0.341631318170582,,,576,0.0288,-25.18779382608067,0,0,576,0.2707316867493965,0,0,True,True,True,True,,,,, +Lab047,Lab047_26,26,20000,P3,-1,-0.009737081038127005,,,1280,0.064,-0.7178955107790278,0,0,576,0.2604703163461209,0,0,True,True,True,True,,,,, +Lab047,Lab047_27,27,20000,P0,0,0.05389158314748845,,,1024,0.0512,3.973318642298029,0,0,576,0.2560996129719703,0,0,True,True,True,True,,,,, +Lab047,Lab047_27,27,20000,P1,0,0.059012155464016065,,,1280,0.064,4.350848198050977,0,0,576,0.25609186696630565,0,0,True,True,True,True,,,,, +Lab047,Lab047_27,27,20000,P2,0,0.11578871093418916,,,576,0.0288,8.536870079755898,0,0,576,0.25629306721832135,0,0,True,True,True,True,,,,, +Lab047,Lab047_27,27,20000,P3,0,0.051451462981815015,,,1280,0.064,3.7934134627232576,0,0,576,0.2561039375071072,0,0,True,True,True,True,,,,, +Lab047,Lab047_28,28,20000,P0,-1,0.042894290392977555,,,1024,0.0512,3.162510242093449,1,0,576,0.26290205291326413,0,0,True,True,True,True,,,,, +Lab047,Lab047_28,28,20000,P1,-1,-0.08027807220627067,,,1280,0.064,-5.918741707623924,1,0,576,0.2620141910920059,0,0,True,True,True,True,,,,, +Lab047,Lab047_28,28,20000,P2,-1,0.12819552286440142,,,576,0.0288,9.451599509746588,1,0,576,0.2672526150261246,0,0,True,True,True,True,,,,, +Lab047,Lab047_28,28,20000,P3,-1,-0.07130293548746769,,,1280,0.064,-5.257022827620018,1,0,576,0.262054656493232,0,0,True,True,True,True,,,,, +Lab047,Lab047_29,29,20000,P0,-1,-0.23616562017926682,,,1024,0.0512,-17.412018844576984,0,0,576,0.2617119394101073,0,0,True,True,True,True,,,,, +Lab047,Lab047_29,29,20000,P1,-1,-0.05992848962815605,,,1280,0.064,-4.4184076833046895,0,0,576,0.26106868851662407,0,0,True,True,True,True,,,,, +Lab047,Lab047_29,29,20000,P2,-1,0.02343701094287705,,,576,0.0288,1.727963942796439,0,0,576,0.2627237884966048,0,0,True,True,True,True,,,,, +Lab047,Lab047_29,29,20000,P3,-1,-0.04495122901239182,,,1280,0.064,-3.3141642126256246,0,0,576,0.26108313104925035,0,0,True,True,True,True,,,,, +Lab047,Lab047_30,30,20000,P0,-1,-0.12603709631954577,,,1024,0.0512,-9.29246303744747,0,0,576,0.24475383882612456,0,0,True,True,True,True,,,,, +Lab047,Lab047_30,30,20000,P1,-1,-0.09870894487312518,,,1280,0.064,-7.277613087605773,0,0,576,0.24466290685232628,0,0,True,True,True,True,,,,, +Lab047,Lab047_30,30,20000,P2,-1,0.10938825166020757,,,576,0.0288,8.064977018403784,0,0,576,0.24851518599994254,0,0,True,True,True,True,,,,, +Lab047,Lab047_30,30,20000,P3,-1,-0.11170187237255322,,,1280,0.064,-8.235555646283604,0,0,576,0.24470128886791734,0,0,True,True,True,True,,,,, +Lab047,Lab047_31,31,20000,P0,0,0.0605923638017162,,,1024,0.0512,4.4673537983729315,0,0,576,0.2519540554343922,0,0,True,True,True,True,,,,, +Lab047,Lab047_31,31,20000,P1,0,-0.06560811853095717,,,1280,0.064,-4.83715536305041,0,0,576,0.2514012601574603,0,0,True,True,True,True,,,,, +Lab047,Lab047_31,31,20000,P2,0,0.1550323505865861,,,576,0.0288,11.43022514404782,0,0,576,0.25487540451893803,0,0,True,True,True,True,,,,, +Lab047,Lab047_31,31,20000,P3,0,-0.06762877028906482,,,1280,0.064,-4.986133975872171,0,0,576,0.2513990138510552,0,0,True,True,True,True,,,,, +Lab047,Lab047_32,32,20000,P0,0,-0.0834985337983586,,,1024,0.0512,-6.156179899885384,0,0,576,0.2598625285692578,0,0,True,True,True,True,,,,, +Lab047,Lab047_32,32,20000,P1,0,-0.06614672767915013,,,1280,0.064,-4.876865938328381,0,0,576,0.2598552428171079,0,0,True,True,True,True,,,,, +Lab047,Lab047_32,32,20000,P2,0,-0.1505141005001188,,,576,0.0288,-11.097103601672758,0,0,576,0.2602836639649584,0,0,True,True,True,True,,,,, +Lab047,Lab047_32,32,20000,P3,0,-0.05377726593517939,,,1280,0.064,-3.9648902628689062,0,0,576,0.2598591024570934,0,0,True,True,True,True,,,,, +Lab047,Lab047_33,33,20000,P0,1,-0.15898838343389923,,,1024,0.0512,-11.721895533814523,0,0,576,0.2584663403893296,0,0,True,True,True,True,,,,, +Lab047,Lab047_33,33,20000,P1,1,-0.07860377067196185,,,1280,0.064,-5.795298804102404,0,0,576,0.2578371513019006,0,0,True,True,True,True,,,,, +Lab047,Lab047_33,33,20000,P2,1,-0.35880364050318053,,,576,0.0288,-26.453874807018497,0,0,576,0.2676437249006222,0,0,True,True,True,True,,,,, +Lab047,Lab047_33,33,20000,P3,1,-0.059835101855923375,,,1280,0.064,-4.411522389633519,0,0,576,0.2577361287503048,0,0,True,True,True,True,,,,, +Lab047,Lab047_34,34,20000,P0,0,0.11383338774465794,,,1024,0.0512,8.39270801163814,0,0,576,0.2595285054364747,0,0,True,True,True,True,,,,, +Lab047,Lab047_34,34,20000,P1,0,-0.04737427809184337,,,1280,0.064,-3.492810775155428,0,0,576,0.2593997276156599,0,0,True,True,True,True,,,,, +Lab047,Lab047_34,34,20000,P2,0,-0.03302840104298517,,,576,0.0288,-2.435117952097211,0,0,576,0.25984627907607477,0,0,True,True,True,True,,,,, +Lab047,Lab047_34,34,20000,P3,0,-0.039743443064704904,,,1280,0.064,-2.9302045702745634,0,0,576,0.2593770038096872,0,0,True,True,True,True,,,,, +Lab047,Lab047_35,35,20000,P0,2,-0.2328040338209343,,,1024,0.0512,-17.164175805549842,0,0,576,0.25743082288546204,0,0,True,True,True,True,,,,, +Lab047,Lab047_35,35,20000,P1,2,-0.02998657746199926,,,1280,0.064,-2.2108503831182813,0,0,576,0.25634727814494845,0,0,True,True,True,True,,,,, +Lab047,Lab047_35,35,20000,P2,2,-0.021368389770744883,,,576,0.0288,-1.5754486410174786,0,0,576,0.25670108225557436,0,0,True,True,True,True,,,,, +Lab047,Lab047_35,35,20000,P3,2,-0.04857299386555267,,,1280,0.064,-3.5811896917194677,0,0,576,0.2563598052975027,0,0,True,True,True,True,,,,, +Lab047,Lab047_36,36,20000,P0,0,-0.2555997527116375,,,1024,0.0512,-18.84485856792361,0,0,576,0.25769090297150626,0,0,True,True,True,True,,,,, +Lab047,Lab047_36,36,20000,P1,0,-0.09537986694549071,,,1280,0.064,-7.03216683015714,0,0,576,0.2568836490658936,0,0,True,True,True,True,,,,, +Lab047,Lab047_36,36,20000,P2,0,-0.28767217658174415,,,576,0.0288,-21.209494235018834,0,0,576,0.25861428978870016,0,0,True,True,True,True,,,,, +Lab047,Lab047_36,36,20000,P3,0,-0.08005187292868979,,,1280,0.064,-5.902064487286442,0,0,576,0.25687311865219126,0,0,True,True,True,True,,,,, diff --git a/data/processed/lab059/summary.json b/data/processed/lab059/summary.json new file mode 100644 index 0000000..2889668 --- /dev/null +++ b/data/processed/lab059/summary.json @@ -0,0 +1,823 @@ +{ + "status": "COMPLETED", + "lab058_commit": "82f17499ace5e655991240348401b9700c7c3349", + "rf_tx": 0, + "hardware_access": 0, + "preamble_symbols": 1280, + "preamble_duration_seconds": { + "20000": 0.064, + "500000": 0.00256 + }, + "burst_duration_seconds": 0.2048, + "phase_limits": [ + { + "phase_limit_degrees": 15, + "max_frequency_error_hz": 0.20345052083333331 + }, + { + "phase_limit_degrees": 30, + "max_frequency_error_hz": 0.40690104166666663 + }, + { + "phase_limit_degrees": 45, + "max_frequency_error_hz": 0.6103515624999999 + }, + { + "phase_limit_degrees": 60, + "max_frequency_error_hz": 0.8138020833333333 + }, + { + "phase_limit_degrees": 90, + "max_frequency_error_hz": 1.2207031249999998 + } + ], + "catastrophic_error_threshold_hz": 2.44140625, + "mathematics": { + "active_input": "matched-filter symbol centers after nominal 50 kHz downconversion", + "p0_squares_bpsk": true, + "p0_symbol_ranges_half_open": [ + [ + 0, + 512 + ], + [ + 512, + 1024 + ] + ], + "p0_discarded_preamble_symbols_half_open": [ + 1024, + 1280 + ], + "block_center_symbol_times": [ + 256.0, + 768.0 + ], + "center_distance_symbols": 512, + "phase_difference_formula": "angle(block1)-angle(block0), unwrapped", + "frequency_formula": "delta_phase/(4*pi*(512/Rs))", + "factor_two_after_squaring": true, + "compensation_sign": "negative complex exponential", + "reference_time": "gain phase at t=0; symbol k center at (k+0.5)/Rs", + "p0_unambiguous_abs_hz": { + "20000": 9.765625, + "500000": 244.140625 + }, + "double_compensation": false + }, + "p2_split": { + "train_half_open": [ + 32, + 608 + ], + "validation_half_open": [ + 672, + 1248 + ] + }, + "real": { + "Lab056": { + "P0": { + "segments": 4, + "mean_abs_frequency_error_hz": 2.4276774539698804, + "A_frequency_errors_hz": [ + 0.07329777648548115, + -0.14590954028149283 + ], + "B_frequency_errors_hz": [ + 4.730655322761386, + 4.760847176351161 + ], + "B_mean_abs_frequency_error_hz": 4.745751249556274, + "B_mean_symbol_error_rate": 0.5241693037974684, + "A_mean_symbol_error_rate": 0.0001775568181818182, + "B_mean_evm_rms": 1.6532713775812362, + "B_mean_matched_residual_db": -4.365861184330079 + }, + "P1": { + "segments": 4, + "mean_abs_frequency_error_hz": 1.4099587552139723, + "A_frequency_errors_hz": [ + -0.027694381164736086, + 0.11363060659198848 + ], + "B_frequency_errors_hz": [ + -3.3185713190656347, + 2.1799387140335305 + ], + "B_mean_abs_frequency_error_hz": 2.749255016549583, + "B_mean_symbol_error_rate": 0.5172616693037975, + "A_mean_symbol_error_rate": 0.0001775568181818182, + "B_mean_evm_rms": 1.637215202536762, + "B_mean_matched_residual_db": -4.271061552879064 + }, + "P2": { + "segments": 4, + "mean_abs_frequency_error_hz": 16.78323320266962, + "A_frequency_errors_hz": [ + -0.10060218861105456, + -0.3332411247089386 + ], + "B_frequency_errors_hz": [ + -19.97785582747008, + 46.72123366988841 + ], + "B_mean_abs_frequency_error_hz": 33.34954474867925, + "B_mean_symbol_error_rate": 0.5000346123417722, + "A_mean_symbol_error_rate": 0.0001775568181818182, + "B_mean_evm_rms": 1.6280136720448448, + "B_mean_matched_residual_db": -4.232225610458482 + }, + "P3": { + "segments": 4, + "mean_abs_frequency_error_hz": 0.15680228895418924, + "A_frequency_errors_hz": [ + -0.01711370674279891, + 0.09350675785486981 + ], + "B_frequency_errors_hz": [ + -0.12488112763335985, + 0.39170756358572834 + ], + "B_mean_abs_frequency_error_hz": 0.2582943456095441, + "B_mean_symbol_error_rate": 0.036169897151898736, + "A_mean_symbol_error_rate": 0.0001775568181818182, + "B_mean_evm_rms": 0.8437775955141171, + "B_mean_matched_residual_db": 1.4944043291325713 + } + }, + "Lab054": { + "P0": { + "frames": 16, + "header_accepted": 0, + "fec_started": 0, + "crc_pass": 0, + "packet_output": 0, + "preamble_errors": 7767, + "header_raw_errors": 946, + "header_voted_errors": 283, + "mean_frequency_hz": -0.9816228278804822 + }, + "P1": { + "frames": 16, + "header_accepted": 0, + "fec_started": 0, + "crc_pass": 0, + "packet_output": 0, + "preamble_errors": 8264, + "header_raw_errors": 1000, + "header_voted_errors": 313, + "mean_frequency_hz": -22.200075150050136 + }, + "P2": { + "frames": 16, + "header_accepted": 0, + "fec_started": 0, + "crc_pass": 0, + "packet_output": 0, + "preamble_errors": 8871, + "header_raw_errors": 1085, + "header_voted_errors": 348, + "mean_frequency_hz": -113.24280563396383 + }, + "P3": { + "frames": 16, + "header_accepted": 0, + "fec_started": 0, + "crc_pass": 0, + "packet_output": 0, + "preamble_errors": 9020, + "header_raw_errors": 1140, + "header_voted_errors": 373, + "mean_frequency_hz": 32.244869877307124 + } + }, + "Lab047": { + "P0": { + "frames": 36, + "header_accepted": 36, + "fec_started": 36, + "crc_pass": 36, + "packet_output": 36, + "preamble_errors": 2, + "header_raw_errors": 0, + "header_voted_errors": 0, + "mean_frequency_hz": -0.007364438266704758 + }, + "P1": { + "frames": 36, + "header_accepted": 36, + "fec_started": 36, + "crc_pass": 36, + "packet_output": 36, + "preamble_errors": 2, + "header_raw_errors": 0, + "header_voted_errors": 0, + "mean_frequency_hz": 0.007200221843812132 + }, + "P2": { + "frames": 36, + "header_accepted": 36, + "fec_started": 36, + "crc_pass": 36, + "packet_output": 36, + "preamble_errors": 2, + "header_raw_errors": 0, + "header_voted_errors": 0, + "mean_frequency_hz": -0.02893265807799859 + }, + "P3": { + "frames": 36, + "header_accepted": 36, + "fec_started": 36, + "crc_pass": 36, + "packet_output": 36, + "preamble_errors": 2, + "header_raw_errors": 0, + "header_voted_errors": 0, + "mean_frequency_hz": 0.011125329332019583 + } + } + }, + "synthetic": { + "trials_per_frequency_quality_rate": 300, + "frequency_values_hz": [ + -100.0, + -20.0, + -10.0, + -5.0, + -2.0, + -1.0, + -0.5, + -0.25, + 0.0, + 0.25, + 0.5, + 1.0, + 2.0, + 5.0, + 10.0, + 20.0, + 100.0 + ], + "quality_levels": [ + { + "name": "LAB058_A_EVM", + "evm_rms": 0.31739 + }, + { + "name": "INTERMEDIATE_EVM", + "evm_rms": 0.55 + }, + { + "name": "LAB058_B_EVM", + "evm_rms": 0.84535 + } + ], + "clean_rrc_controls": { + "20000": { + "sample_rate_hz": 8000000, + "symbol_rate": 20000, + "samples_per_symbol": 400, + "rrc_taps": 4001, + "tx_truth": { + "symbol_rate": 20000, + "delay_samples": 0.0, + "delay_symbols": 0.0, + "cfo_hz": 0.0, + "phase_rad": 0.0, + "phase_epoch": "raw n=0, before RX filtering", + "es_n0_db": null, + "complex_noise_variance": 0.0, + "signal_power": 1936.0000000000005, + "seed": 5701, + "comparison_condition": "equal digital Es/N0; noise variance scales with SPS" + }, + "clean_evm_rms": 0.010354140143269169 + }, + "500000": { + "sample_rate_hz": 8000000, + "symbol_rate": 500000, + "samples_per_symbol": 16, + "rrc_taps": 161, + "tx_truth": { + "symbol_rate": 500000, + "delay_samples": 0.0, + "delay_symbols": 0.0, + "cfo_hz": 0.0, + "phase_rad": 0.0, + "phase_epoch": "raw n=0, before RX filtering", + "es_n0_db": null, + "complex_noise_variance": 0.0, + "signal_power": 1936.0000000000007, + "seed": 5701, + "comparison_condition": "equal digital Es/N0; noise variance scales with SPS" + }, + "clean_evm_rms": 0.019179719784870774 + } + }, + "awgn_crlb_standard_deviation_hz": { + "formula": "sqrt(6*EVM^2*Rs^2/((2*pi)^2*N*(N^2-1)))", + "assumptions": "known symbols, unknown constant phase, complex AWGN", + "500000_lab058_b_evm": 3.598218202601661 + }, + "aggregate": [ + { + "symbol_rate": 20000, + "quality": "LAB058_A_EVM", + "target_evm_rms": 0.31739, + "method": "P0", + "trials": 5100, + "cfo_values": 17, + "bias_hz": -0.03994990706916153, + "rmse_hz": 35.27766452961887, + "median_abs_error_hz": 0.11267197654994818, + "p95_abs_error_hz": 99.38625173694851, + "p99_abs_error_hz": 106.34545651090411, + "catastrophic_error_rate": 0.34647058823529414, + "probability_abs_error_le_0p25_hz": 0.643921568627451, + "probability_abs_error_le_0p5_hz": 0.6535294117647059, + "probability_abs_error_le_1p0_hz": 0.6535294117647059, + "validation_phase_rmse_rad": 0.7261254181729553 + }, + { + "symbol_rate": 20000, + "quality": "LAB058_A_EVM", + "target_evm_rms": 0.31739, + "method": "P1", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.0008885471078995073, + "rmse_hz": 0.05694210824345046, + "median_abs_error_hz": 0.03815117925418354, + "p95_abs_error_hz": 0.11063363868695754, + "p99_abs_error_hz": 0.14501118508960584, + "catastrophic_error_rate": 0.0, + "probability_abs_error_le_0p25_hz": 1.0, + "probability_abs_error_le_0p5_hz": 1.0, + "probability_abs_error_le_1p0_hz": 1.0, + "validation_phase_rmse_rad": 0.23064178973471747 + }, + { + "symbol_rate": 20000, + "quality": "LAB058_A_EVM", + "target_evm_rms": 0.31739, + "method": "P2", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.001988038482725285, + "rmse_hz": 0.18418744251062372, + "median_abs_error_hz": 0.12215923720830196, + "p95_abs_error_hz": 0.36075379706777216, + "p99_abs_error_hz": 0.47453741676652017, + "catastrophic_error_rate": 0.0, + "probability_abs_error_le_0p25_hz": 0.8231372549019608, + "probability_abs_error_le_0p5_hz": 0.9935294117647059, + "probability_abs_error_le_1p0_hz": 1.0, + "validation_phase_rmse_rad": 0.23407663541496893 + }, + { + "symbol_rate": 20000, + "quality": "LAB058_A_EVM", + "target_evm_rms": 0.31739, + "method": "P3", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.0008031563449569883, + "rmse_hz": 0.05840036191732054, + "median_abs_error_hz": 0.03955118489494858, + "p95_abs_error_hz": 0.11341770842686368, + "p99_abs_error_hz": 0.15124372519320092, + "catastrophic_error_rate": 0.0, + "probability_abs_error_le_0p25_hz": 1.0, + "probability_abs_error_le_0p5_hz": 1.0, + "probability_abs_error_le_1p0_hz": 1.0, + "validation_phase_rmse_rad": 0.2306551116111988 + }, + { + "symbol_rate": 20000, + "quality": "INTERMEDIATE_EVM", + "target_evm_rms": 0.55, + "method": "P0", + "trials": 5100, + "cfo_values": 17, + "bias_hz": -0.016438006428522618, + "rmse_hz": 35.43683929034298, + "median_abs_error_hz": 0.20009194018242737, + "p95_abs_error_hz": 100.74954199314566, + "p99_abs_error_hz": 107.89264988455928, + "catastrophic_error_rate": 0.3296078431372549, + "probability_abs_error_le_0p25_hz": 0.5664705882352942, + "probability_abs_error_le_0p5_hz": 0.6652941176470588, + "probability_abs_error_le_1p0_hz": 0.6703921568627451, + "validation_phase_rmse_rad": 0.8445548255499953 + }, + { + "symbol_rate": 20000, + "quality": "INTERMEDIATE_EVM", + "target_evm_rms": 0.55, + "method": "P1", + "trials": 5100, + "cfo_values": 17, + "bias_hz": -0.0020946426691008124, + "rmse_hz": 0.0957624421078446, + "median_abs_error_hz": 0.06350912858768698, + "p95_abs_error_hz": 0.1901454657377376, + "p99_abs_error_hz": 0.24578074270342898, + "catastrophic_error_rate": 0.0, + "probability_abs_error_le_0p25_hz": 0.9905882352941177, + "probability_abs_error_le_0p5_hz": 1.0, + "probability_abs_error_le_1p0_hz": 1.0, + "validation_phase_rmse_rad": 0.4412378828176002 + }, + { + "symbol_rate": 20000, + "quality": "INTERMEDIATE_EVM", + "target_evm_rms": 0.55, + "method": "P2", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.006037261835378864, + "rmse_hz": 0.3180777143017349, + "median_abs_error_hz": 0.21470755021954835, + "p95_abs_error_hz": 0.6200158671372041, + "p99_abs_error_hz": 0.7969293765980515, + "catastrophic_error_rate": 0.0, + "probability_abs_error_le_0p25_hz": 0.567843137254902, + "probability_abs_error_le_0p5_hz": 0.8841176470588236, + "probability_abs_error_le_1p0_hz": 0.9982352941176471, + "validation_phase_rmse_rad": 0.44669581880328485 + }, + { + "symbol_rate": 20000, + "quality": "INTERMEDIATE_EVM", + "target_evm_rms": 0.55, + "method": "P3", + "trials": 5100, + "cfo_values": 17, + "bias_hz": -0.002416308397424423, + "rmse_hz": 0.10333416218255481, + "median_abs_error_hz": 0.07048301756784267, + "p95_abs_error_hz": 0.20300057249194792, + "p99_abs_error_hz": 0.2632565055540736, + "catastrophic_error_rate": 0.0, + "probability_abs_error_le_0p25_hz": 0.9847058823529412, + "probability_abs_error_le_0p5_hz": 1.0, + "probability_abs_error_le_1p0_hz": 1.0, + "validation_phase_rmse_rad": 0.4412929666840979 + }, + { + "symbol_rate": 20000, + "quality": "LAB058_B_EVM", + "target_evm_rms": 0.84535, + "method": "P0", + "trials": 5100, + "cfo_values": 17, + "bias_hz": -0.02487295673487596, + "rmse_hz": 35.53148619984433, + "median_abs_error_hz": 0.32862427090475266, + "p95_abs_error_hz": 101.43123344158475, + "p99_abs_error_hz": 107.94186117186754, + "catastrophic_error_rate": 0.32, + "probability_abs_error_le_0p25_hz": 0.41352941176470587, + "probability_abs_error_le_0p5_hz": 0.6154901960784314, + "probability_abs_error_le_1p0_hz": 0.6790196078431373, + "validation_phase_rmse_rad": 1.0430413340458966 + }, + { + "symbol_rate": 20000, + "quality": "LAB058_B_EVM", + "target_evm_rms": 0.84535, + "method": "P1", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.0011826215677020807, + "rmse_hz": 0.14651407576818676, + "median_abs_error_hz": 0.09803260328097285, + "p95_abs_error_hz": 0.28537572073019823, + "p99_abs_error_hz": 0.3811773961719878, + "catastrophic_error_rate": 0.0, + "probability_abs_error_le_0p25_hz": 0.9145098039215687, + "probability_abs_error_le_0p5_hz": 0.9992156862745099, + "probability_abs_error_le_1p0_hz": 1.0, + "validation_phase_rmse_rad": 0.7413606374734285 + }, + { + "symbol_rate": 20000, + "quality": "LAB058_B_EVM", + "target_evm_rms": 0.84535, + "method": "P2", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.0008314817399338177, + "rmse_hz": 0.48833634165135953, + "median_abs_error_hz": 0.32478059797899206, + "p95_abs_error_hz": 0.9640636741241208, + "p99_abs_error_hz": 1.2526697998533654, + "catastrophic_error_rate": 0.0, + "probability_abs_error_le_0p25_hz": 0.4025490196078431, + "probability_abs_error_le_0p5_hz": 0.6947058823529412, + "probability_abs_error_le_1p0_hz": 0.9596078431372549, + "validation_phase_rmse_rad": 0.74862814469735 + }, + { + "symbol_rate": 20000, + "quality": "LAB058_B_EVM", + "target_evm_rms": 0.84535, + "method": "P3", + "trials": 5100, + "cfo_values": 17, + "bias_hz": -0.005590240158082864, + "rmse_hz": 0.5201396504062407, + "median_abs_error_hz": 0.11894627555568146, + "p95_abs_error_hz": 0.3430226441253915, + "p99_abs_error_hz": 0.4786715240391113, + "catastrophic_error_rate": 0.002156862745098039, + "probability_abs_error_le_0p25_hz": 0.8507843137254902, + "probability_abs_error_le_0p5_hz": 0.9915686274509804, + "probability_abs_error_le_1p0_hz": 0.9974509803921568, + "validation_phase_rmse_rad": 0.7428826884058787 + }, + { + "symbol_rate": 500000, + "quality": "LAB058_A_EVM", + "target_evm_rms": 0.31739, + "method": "P0", + "trials": 5100, + "cfo_values": 17, + "bias_hz": -0.028324835474221908, + "rmse_hz": 2.253141535486236, + "median_abs_error_hz": 1.4962503201559325, + "p95_abs_error_hz": 4.448489433622006, + "p99_abs_error_hz": 5.709437492053499, + "catastrophic_error_rate": 0.27725490196078434, + "probability_abs_error_le_0p25_hz": 0.08725490196078431, + "probability_abs_error_le_0p5_hz": 0.1676470588235294, + "probability_abs_error_le_1p0_hz": 0.34784313725490196, + "validation_phase_rmse_rad": 0.231339425193028 + }, + { + "symbol_rate": 500000, + "quality": "LAB058_A_EVM", + "target_evm_rms": 0.31739, + "method": "P1", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.05429497252499488, + "rmse_hz": 1.3758457866823075, + "median_abs_error_hz": 0.9250930671491767, + "p95_abs_error_hz": 2.7024857819222334, + "p99_abs_error_hz": 3.5664388844212724, + "catastrophic_error_rate": 0.07941176470588235, + "probability_abs_error_le_0p25_hz": 0.14901960784313725, + "probability_abs_error_le_0p5_hz": 0.28019607843137256, + "probability_abs_error_le_1p0_hz": 0.54, + "validation_phase_rmse_rad": 0.2311393421976552 + }, + { + "symbol_rate": 500000, + "quality": "LAB058_A_EVM", + "target_evm_rms": 0.31739, + "method": "P2", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.06565713877478316, + "rmse_hz": 4.581561184769926, + "median_abs_error_hz": 3.0883642545236056, + "p95_abs_error_hz": 8.953835433400844, + "p99_abs_error_hz": 11.96456273215203, + "catastrophic_error_rate": 0.5976470588235294, + "probability_abs_error_le_0p25_hz": 0.039411764705882354, + "probability_abs_error_le_0p5_hz": 0.08509803921568627, + "probability_abs_error_le_1p0_hz": 0.17450980392156862, + "validation_phase_rmse_rad": 0.2345544161089221 + }, + { + "symbol_rate": 500000, + "quality": "LAB058_A_EVM", + "target_evm_rms": 0.31739, + "method": "P3", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.058842766466235895, + "rmse_hz": 1.4134247608333887, + "median_abs_error_hz": 0.9614089281004776, + "p95_abs_error_hz": 2.7679878506095847, + "p99_abs_error_hz": 3.6337112005617693, + "catastrophic_error_rate": 0.0888235294117647, + "probability_abs_error_le_0p25_hz": 0.1411764705882353, + "probability_abs_error_le_0p5_hz": 0.2747058823529412, + "probability_abs_error_le_1p0_hz": 0.5180392156862745, + "validation_phase_rmse_rad": 0.23115195125818536 + }, + { + "symbol_rate": 500000, + "quality": "INTERMEDIATE_EVM", + "target_evm_rms": 0.55, + "method": "P0", + "trials": 5100, + "cfo_values": 17, + "bias_hz": -0.03875761089802868, + "rmse_hz": 4.131625501040117, + "median_abs_error_hz": 2.9042927999066057, + "p95_abs_error_hz": 7.9528339390408584, + "p99_abs_error_hz": 10.52341079713349, + "catastrophic_error_rate": 0.5666666666666667, + "probability_abs_error_le_0p25_hz": 0.05019607843137255, + "probability_abs_error_le_0p5_hz": 0.09411764705882353, + "probability_abs_error_le_1p0_hz": 0.1935294117647059, + "validation_phase_rmse_rad": 0.4421333889963128 + }, + { + "symbol_rate": 500000, + "quality": "INTERMEDIATE_EVM", + "target_evm_rms": 0.55, + "method": "P1", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.06423845186681068, + "rmse_hz": 2.3913290252749078, + "median_abs_error_hz": 1.6065121427546019, + "p95_abs_error_hz": 4.649532259708706, + "p99_abs_error_hz": 6.192878068670655, + "catastrophic_error_rate": 0.3092156862745098, + "probability_abs_error_le_0p25_hz": 0.08431372549019608, + "probability_abs_error_le_0p5_hz": 0.16607843137254902, + "probability_abs_error_le_1p0_hz": 0.32372549019607844, + "validation_phase_rmse_rad": 0.441761357535385 + }, + { + "symbol_rate": 500000, + "quality": "INTERMEDIATE_EVM", + "target_evm_rms": 0.55, + "method": "P2", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.02004625787745806, + "rmse_hz": 7.921237841542093, + "median_abs_error_hz": 5.269438855163791, + "p95_abs_error_hz": 15.620242877196675, + "p99_abs_error_hz": 20.258593678746344, + "catastrophic_error_rate": 0.756078431372549, + "probability_abs_error_le_0p25_hz": 0.02372549019607843, + "probability_abs_error_le_0p5_hz": 0.05274509803921568, + "probability_abs_error_le_1p0_hz": 0.10549019607843137, + "validation_phase_rmse_rad": 0.4472161493685728 + }, + { + "symbol_rate": 500000, + "quality": "INTERMEDIATE_EVM", + "target_evm_rms": 0.55, + "method": "P3", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.04886503438637983, + "rmse_hz": 2.549592162835184, + "median_abs_error_hz": 1.7274887723017696, + "p95_abs_error_hz": 5.021571593956331, + "p99_abs_error_hz": 6.353311747517625, + "catastrophic_error_rate": 0.3415686274509804, + "probability_abs_error_le_0p25_hz": 0.08686274509803922, + "probability_abs_error_le_0p5_hz": 0.16294117647058823, + "probability_abs_error_le_1p0_hz": 0.31019607843137254, + "validation_phase_rmse_rad": 0.4418171712060747 + }, + { + "symbol_rate": 500000, + "quality": "LAB058_B_EVM", + "target_evm_rms": 0.84535, + "method": "P0", + "trials": 5100, + "cfo_values": 17, + "bias_hz": -0.018449630005399873, + "rmse_hz": 6.8080438723195575, + "median_abs_error_hz": 4.64257978395003, + "p95_abs_error_hz": 13.265150787635067, + "p99_abs_error_hz": 17.80453591229988, + "catastrophic_error_rate": 0.7207843137254902, + "probability_abs_error_le_0p25_hz": 0.03058823529411765, + "probability_abs_error_le_0p5_hz": 0.058627450980392154, + "probability_abs_error_le_1p0_hz": 0.11607843137254902, + "validation_phase_rmse_rad": 0.7431007414530082 + }, + { + "symbol_rate": 500000, + "quality": "LAB058_B_EVM", + "target_evm_rms": 0.84535, + "method": "P1", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.05043041270946037, + "rmse_hz": 3.727888844043392, + "median_abs_error_hz": 2.4981252391550526, + "p95_abs_error_hz": 7.436680937825983, + "p99_abs_error_hz": 9.894508393786168, + "catastrophic_error_rate": 0.5098039215686274, + "probability_abs_error_le_0p25_hz": 0.05235294117647059, + "probability_abs_error_le_0p5_hz": 0.10470588235294118, + "probability_abs_error_le_1p0_hz": 0.21274509803921568, + "validation_phase_rmse_rad": 0.7424981320951237 + }, + { + "symbol_rate": 500000, + "quality": "LAB058_B_EVM", + "target_evm_rms": 0.84535, + "method": "P2", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.07780133250091027, + "rmse_hz": 12.264121666056068, + "median_abs_error_hz": 8.25551126333268, + "p95_abs_error_hz": 23.708553996717562, + "p99_abs_error_hz": 31.583472778910384, + "catastrophic_error_rate": 0.8311764705882353, + "probability_abs_error_le_0p25_hz": 0.01647058823529412, + "probability_abs_error_le_0p5_hz": 0.03666666666666667, + "probability_abs_error_le_1p0_hz": 0.07196078431372549, + "validation_phase_rmse_rad": 0.7498501168809314 + }, + { + "symbol_rate": 500000, + "quality": "LAB058_B_EVM", + "target_evm_rms": 0.84535, + "method": "P3", + "trials": 5100, + "cfo_values": 17, + "bias_hz": 0.049138012426324186, + "rmse_hz": 7.089259568773472, + "median_abs_error_hz": 2.934776228989742, + "p95_abs_error_hz": 8.527851599718817, + "p99_abs_error_hz": 11.382887324913723, + "catastrophic_error_rate": 0.5794117647058824, + "probability_abs_error_le_0p25_hz": 0.049019607843137254, + "probability_abs_error_le_0p5_hz": 0.09607843137254903, + "probability_abs_error_le_1p0_hz": 0.18254901960784314, + "validation_phase_rmse_rad": 0.7429492477214338 + } + ] + }, + "verdict": "PREAMBLE_ONLY_INSUFFICIENT", + "main_reason": "ни один preamble-only метод не обеспечивает устойчивую ошибку менее 0,5 Гц на качестве B", + "recommended_next_single_step": "проверить decision-directed carrier tracking through burst", + "future_options": { + "decision_directed": "первый кандидат: не меняет формат и не знает payload truth", + "costas_loop": "альтернатива для слежения по всему burst; требует настройки полосы петли", + "periodic_pilots": "наиболее явная опора, но требует изменения формата и overhead" + }, + "physical_limit": { + "lab058_b_diagnostic_symbol_error_rate": 0.03495896, + "lab058_b_evm_rms": 0.84535, + "lab058_b_matched_residual_db": 1.464846, + "lab058_b_channel_ripple_db": 5.471382 + }, + "lab054_historical_result": "NOT_A, 0/16", + "lab059_commit": "NOT_PERFORMED", + "push": "NOT_PERFORMED", + "integrity": { + "before": { + "C:\\Users\\user\\Desktop\\projects\\SDR_Rover\\data\\raw\\lab056\\rx_stream.cs8": { + "bytes": 48000000, + "sha256": "e336dd653fa554058052fcf851e9f2462f66b8cf7c710815ca2b9a09ffc23ad4" + }, + "C:\\Users\\user\\Desktop\\projects\\SDR_Rover\\data\\raw\\lab056\\tx_abab.cs8": { + "bytes": 21177088, + "sha256": "5b34bbe1a8e6d037d2d6d367a74e9eb84e8940db7da61600ffaa7f7497d4f600" + }, + "C:\\Users\\user\\Desktop\\projects\\SDR_Rover\\data\\raw\\lab054\\rx_stream.cs8": { + "bytes": 48000000, + "sha256": "641886879964250c315dd399d469503808aae43fb319bef05e0bf2a78bf14585" + }, + "C:\\Users\\user\\Desktop\\projects\\SDR_Rover\\data\\raw\\lab054\\tx_stream.cs8": { + "bytes": 2952192, + "sha256": "e84bbce227426c0aac13a48ded1286ca4a44fc6e3efce01f6e5a513217c87ff5" + }, + "C:\\Users\\user\\Documents\\SDR_Rover_Lab047_raw\\20260903_115747\\rx_stream.cs8": { + "bytes": 240000000, + "sha256": "8521bf1b574cd1fe4e0a4f980c00c8664f8bb51551a241e46449e1eb2c77e635" + } + }, + "after": { + "C:\\Users\\user\\Desktop\\projects\\SDR_Rover\\data\\raw\\lab056\\rx_stream.cs8": { + "bytes": 48000000, + "sha256": "e336dd653fa554058052fcf851e9f2462f66b8cf7c710815ca2b9a09ffc23ad4" + }, + "C:\\Users\\user\\Desktop\\projects\\SDR_Rover\\data\\raw\\lab056\\tx_abab.cs8": { + "bytes": 21177088, + "sha256": "5b34bbe1a8e6d037d2d6d367a74e9eb84e8940db7da61600ffaa7f7497d4f600" + }, + "C:\\Users\\user\\Desktop\\projects\\SDR_Rover\\data\\raw\\lab054\\rx_stream.cs8": { + "bytes": 48000000, + "sha256": "641886879964250c315dd399d469503808aae43fb319bef05e0bf2a78bf14585" + }, + "C:\\Users\\user\\Desktop\\projects\\SDR_Rover\\data\\raw\\lab054\\tx_stream.cs8": { + "bytes": 2952192, + "sha256": "e84bbce227426c0aac13a48ded1286ca4a44fc6e3efce01f6e5a513217c87ff5" + }, + "C:\\Users\\user\\Documents\\SDR_Rover_Lab047_raw\\20260903_115747\\rx_stream.cs8": { + "bytes": 240000000, + "sha256": "8521bf1b574cd1fe4e0a4f980c00c8664f8bb51551a241e46449e1eb2c77e635" + } + }, + "passed": true + } +} diff --git a/data/processed/lab059/synthetic_500k_error_distribution.png b/data/processed/lab059/synthetic_500k_error_distribution.png new file mode 100644 index 0000000..617cf3d Binary files /dev/null and b/data/processed/lab059/synthetic_500k_error_distribution.png differ diff --git a/data/processed/lab059/synthetic_by_cfo.csv b/data/processed/lab059/synthetic_by_cfo.csv new file mode 100644 index 0000000..d359666 --- /dev/null +++ b/data/processed/lab059/synthetic_by_cfo.csv @@ -0,0 +1,409 @@ +symbol_rate,quality,target_evm_rms,true_frequency_hz,method,trials,bias_hz,rmse_hz,median_abs_error_hz,p95_abs_error_hz,p99_abs_error_hz,catastrophic_error_rate,probability_abs_error_le_0p25_hz,probability_abs_error_le_0p5_hz,probability_abs_error_le_1p0_hz,validation_phase_rmse_rad +20000,LAB058_A_EVM,0.31739,-100.0,P0,300,98.94270161754297,99.05448521204572,98.58088929257337,107.9722029250127,109.46883860058463,1.0,0.0,0.0,0.0,1.8279366898592457 +20000,LAB058_A_EVM,0.31739,-100.0,P1,300,0.005024700727542921,0.057584555372775535,0.035857476820105205,0.11860209143325591,0.14814000916042652,0.0,1.0,1.0,1.0,0.2302862650512219 +20000,LAB058_A_EVM,0.31739,-100.0,P2,300,0.014822546528318933,0.19014787458336088,0.1340165394451347,0.3794785457821448,0.42812016428561017,0.0,0.7933333333333333,0.9966666666666667,1.0,0.23397343285284422 +20000,LAB058_A_EVM,0.31739,-100.0,P3,300,0.00546950738309197,0.05953969273091296,0.037861057394451336,0.11426375902478725,0.15049787056875827,0.0,1.0,1.0,1.0,0.23030769678466945 +20000,LAB058_A_EVM,0.31739,-20.0,P0,300,19.286125624258034,19.67707482226666,19.14229552229802,25.94482649055591,28.35712530349968,1.0,0.0,0.0,0.0,1.5785865609506542 +20000,LAB058_A_EVM,0.31739,-20.0,P1,300,-0.0038128622525081114,0.05529195896697041,0.033539116552592674,0.10961449693991239,0.1515330495164512,0.0,1.0,1.0,1.0,0.23072735704350342 +20000,LAB058_A_EVM,0.31739,-20.0,P2,300,-0.007856502097118346,0.174572455277597,0.11407641400600355,0.3543885003131582,0.44170212064967296,0.0,0.85,0.9966666666666667,1.0,0.23389615128692873 +20000,LAB058_A_EVM,0.31739,-20.0,P3,300,-0.004355809448345802,0.05618891732218671,0.037193584695575765,0.10787181491078057,0.16694558761355505,0.0,1.0,1.0,1.0,0.23073984565308678 +20000,LAB058_A_EVM,0.31739,-10.0,P0,300,18.425900612897763,18.955142790957545,19.519882982016526,19.70251386703016,19.761918717763088,0.9433333333333334,0.013333333333333334,0.056666666666666664,0.056666666666666664,1.4965570916111781 +20000,LAB058_A_EVM,0.31739,-10.0,P1,300,0.002838990610818103,0.059322287020665804,0.042202060430303945,0.11263012089495454,0.14192596620277192,0.0,1.0,1.0,1.0,0.23103291339790058 +20000,LAB058_A_EVM,0.31739,-10.0,P2,300,0.013900541218445568,0.18703866628428056,0.11831937193707986,0.3642894007533605,0.44936152473903174,0.0,0.8133333333333334,0.9966666666666667,1.0,0.23459202105266017 +20000,LAB058_A_EVM,0.31739,-10.0,P3,300,0.0031503722580184914,0.06009352031723817,0.04095834049826319,0.11162864630716142,0.15367386795715393,0.0,1.0,1.0,1.0,0.2310445174975132 +20000,LAB058_A_EVM,0.31739,-5.0,P0,300,-0.0032513170411340477,0.10017605328507911,0.07183889664553078,0.18359434907896643,0.2634930661484287,0.0,0.9833333333333333,1.0,1.0,0.23008188644575295 +20000,LAB058_A_EVM,0.31739,-5.0,P1,300,0.004757152625039363,0.05777923941333464,0.037958011669281255,0.11003227574886343,0.14445529970510393,0.0,1.0,1.0,1.0,0.22983622677007895 +20000,LAB058_A_EVM,0.31739,-5.0,P2,300,-0.014156816523443793,0.18931780739055537,0.10854811964587707,0.3932831916045754,0.48551387561448106,0.0,0.8,0.99,1.0,0.23341446079189093 +20000,LAB058_A_EVM,0.31739,-5.0,P3,300,0.0034573175649527275,0.05762226334505837,0.03734021448368452,0.11388835949487525,0.13026014688800067,0.0,1.0,1.0,1.0,0.22984716008560582 +20000,LAB058_A_EVM,0.31739,-2.0,P0,300,0.0026142432080893366,0.09081396212184871,0.06120570252616431,0.17792300401264433,0.2195722600870137,0.0,0.9966666666666667,1.0,1.0,0.23084107130744863 +20000,LAB058_A_EVM,0.31739,-2.0,P1,300,-0.0009204385734485757,0.055658401987447675,0.03519305748637236,0.11788073150950133,0.1469346006846835,0.0,1.0,1.0,1.0,0.23063793589223575 +20000,LAB058_A_EVM,0.31739,-2.0,P2,300,-0.001797357812329298,0.18320084828524513,0.11751105437247711,0.35979504774025656,0.5095316113696284,0.0,0.8433333333333334,0.9866666666666667,1.0,0.23422788819135842 +20000,LAB058_A_EVM,0.31739,-2.0,P3,300,-0.001967453323073643,0.05727906583153931,0.039336883752109864,0.11854896612863346,0.14852784764122648,0.0,1.0,1.0,1.0,0.2306496137605873 +20000,LAB058_A_EVM,0.31739,-1.0,P0,300,0.006198270892579005,0.09279288779473956,0.06049677556945454,0.17842875264143698,0.2110273429125071,0.0,1.0,1.0,1.0,0.23091599426819068 +20000,LAB058_A_EVM,0.31739,-1.0,P1,300,0.003201731427716488,0.05531455734402373,0.037772918770562214,0.10706748704154694,0.13262043642903784,0.0,1.0,1.0,1.0,0.2306892015105715 +20000,LAB058_A_EVM,0.31739,-1.0,P2,300,0.014603737166282105,0.18166483886869167,0.11444775402821339,0.36980338495812065,0.45085789589745057,0.0,0.85,0.9933333333333333,1.0,0.23408437452906583 +20000,LAB058_A_EVM,0.31739,-1.0,P3,300,0.0024615671154576664,0.056476952471912485,0.04045497684214194,0.1057916977167203,0.1417395896606358,0.0,1.0,1.0,1.0,0.230700072748815 +20000,LAB058_A_EVM,0.31739,-0.5,P0,300,0.009084234211824367,0.09319523495570005,0.06421381437351437,0.19370768649149603,0.23032716088545038,0.0,0.9933333333333333,1.0,1.0,0.2302676687894469 +20000,LAB058_A_EVM,0.31739,-0.5,P1,300,0.009137155103287399,0.05558797988553908,0.03544206086833504,0.10600302161264989,0.1415960748338195,0.0,1.0,1.0,1.0,0.23005979168432825 +20000,LAB058_A_EVM,0.31739,-0.5,P2,300,0.006413214706419308,0.18242663007683063,0.12895699982656622,0.34896942143861426,0.4640345558598667,0.0,0.8366666666666667,0.9966666666666667,1.0,0.23337279679720482 +20000,LAB058_A_EVM,0.31739,-0.5,P3,300,0.009149117674743888,0.057475026763794054,0.03909486818991453,0.11446589117150875,0.1369912240395105,0.0,1.0,1.0,1.0,0.2300723258444064 +20000,LAB058_A_EVM,0.31739,-0.25,P0,300,-0.007252026033441741,0.09006013254840234,0.0557389395394568,0.19002405059487143,0.21619852671369905,0.0,0.9933333333333333,1.0,1.0,0.2317116626769491 +20000,LAB058_A_EVM,0.31739,-0.25,P1,300,-0.0027012135936885996,0.05671405033371192,0.037689355454102486,0.10946032318349841,0.14493444989078508,0.0,1.0,1.0,1.0,0.23151665790892711 +20000,LAB058_A_EVM,0.31739,-0.25,P2,300,0.000605765015357654,0.19454205499358246,0.12818383327414323,0.37969212729248203,0.5014598768005147,0.0,0.79,0.9866666666666667,1.0,0.23511015993396361 +20000,LAB058_A_EVM,0.31739,-0.25,P3,300,-0.0041567821119908544,0.05841623298895266,0.04008951448711581,0.11093628579037124,0.1321517054018353,0.0,1.0,1.0,1.0,0.23153294919644826 +20000,LAB058_A_EVM,0.31739,0.0,P0,300,0.0006261009544977788,0.08818165876294858,0.057225711835078436,0.16455933876520937,0.2453565209802318,0.0,0.9933333333333333,1.0,1.0,0.23126186724687017 +20000,LAB058_A_EVM,0.31739,0.0,P1,300,0.0019198809226195783,0.052007298805573365,0.03588215682382181,0.09654282926129053,0.12618781043535288,0.0,1.0,1.0,1.0,0.2310711960280373 +20000,LAB058_A_EVM,0.31739,0.0,P2,300,-0.0049350817223599635,0.1791668021013572,0.11132558504691528,0.35597620879750885,0.47912278266825237,0.0,0.84,0.9933333333333333,1.0,0.23466170623887947 +20000,LAB058_A_EVM,0.31739,0.0,P3,300,0.002409694049533988,0.05305659455520291,0.03792697737040129,0.10491124960213534,0.13943728534996186,0.0,1.0,1.0,1.0,0.2310835591471584 +20000,LAB058_A_EVM,0.31739,0.25,P0,300,0.0037225244911084023,0.09154119948803745,0.061070197507072335,0.17824791407415833,0.2248146971407685,0.0,0.99,1.0,1.0,0.2309538561876036 +20000,LAB058_A_EVM,0.31739,0.25,P1,300,-0.005393598104948875,0.05538286576606816,0.03828526604658186,0.09933151628868575,0.1246337677358317,0.0,1.0,1.0,1.0,0.23074932296988981 +20000,LAB058_A_EVM,0.31739,0.25,P2,300,-0.012728672542524728,0.18427502761158102,0.12505691906450414,0.3850996559653211,0.47454209070529035,0.0,0.83,0.9966666666666667,1.0,0.2341517489087323 +20000,LAB058_A_EVM,0.31739,0.25,P3,300,-0.0038666949357974278,0.057322239638114995,0.03775282732835472,0.10877796714797605,0.1301478275630185,0.0,1.0,1.0,1.0,0.23076152235555814 +20000,LAB058_A_EVM,0.31739,0.5,P0,300,0.0011604502496593528,0.09005699138862076,0.06220124275999464,0.16955435019000492,0.21658205764005484,0.0,0.99,1.0,1.0,0.23140191446102687 +20000,LAB058_A_EVM,0.31739,0.5,P1,300,-0.0021439527173748724,0.05755342795210277,0.037023848578281116,0.10846915820053683,0.13853943850091627,0.0,1.0,1.0,1.0,0.2311979365808069 +20000,LAB058_A_EVM,0.31739,0.5,P2,300,0.0013138752935756214,0.18702179994370455,0.1284274710859567,0.3615913282824084,0.44940492051807696,0.0,0.81,0.9966666666666667,1.0,0.23482751196798016 +20000,LAB058_A_EVM,0.31739,0.5,P3,300,-0.002086730096867209,0.05979435628143032,0.0383788631548552,0.11567473949859637,0.15711749526136304,0.0,1.0,1.0,1.0,0.23120808973093812 +20000,LAB058_A_EVM,0.31739,1.0,P0,300,-0.002198329401831928,0.09077866689796121,0.06060427751160985,0.17799669332258808,0.2085149558109997,0.0,0.9966666666666667,1.0,1.0,0.23051757895093958 +20000,LAB058_A_EVM,0.31739,1.0,P1,300,-0.006125756411002745,0.05934976057852379,0.041513811224258956,0.11171039710664611,0.141074658784369,0.0,1.0,1.0,1.0,0.23030771184174748 +20000,LAB058_A_EVM,0.31739,1.0,P2,300,0.009335670344937095,0.1974947905483157,0.13768765476048217,0.361810072304673,0.5106070326808272,0.0,0.7766666666666666,0.9866666666666667,1.0,0.23410017260398566 +20000,LAB058_A_EVM,0.31739,1.0,P3,300,-0.005746948485353258,0.060668278680354674,0.040755199914428664,0.1189289132108774,0.1322056176478218,0.0,1.0,1.0,1.0,0.23032399442041865 +20000,LAB058_A_EVM,0.31739,2.0,P0,300,0.0016661130443460914,0.09011031520874038,0.05800881910153366,0.17481061505153547,0.23691467555706422,0.0,0.9933333333333333,1.0,1.0,0.23115514369352383 +20000,LAB058_A_EVM,0.31739,2.0,P1,300,0.0005354801959696472,0.05921373082842544,0.039581108187599634,0.11821892156527254,0.1529712826516594,0.0,1.0,1.0,1.0,0.23098120000270853 +20000,LAB058_A_EVM,0.31739,2.0,P2,300,0.005854817221834652,0.16805768336403504,0.11097291140990717,0.3380906965690777,0.42199387832322727,0.0,0.87,0.9933333333333333,1.0,0.23386299869318014 +20000,LAB058_A_EVM,0.31739,2.0,P3,300,0.0020657065410795788,0.06063002413297532,0.04030854335896461,0.12105929972755171,0.15559748310599805,0.0,1.0,1.0,1.0,0.23099155977986272 +20000,LAB058_A_EVM,0.31739,5.0,P0,300,0.00725018454156723,0.09716257051432209,0.07059612353987266,0.18176138524676394,0.22087328734698583,0.0,0.9933333333333333,1.0,1.0,0.23096969839394746 +20000,LAB058_A_EVM,0.31739,5.0,P1,300,0.00427943419535743,0.058239547562242554,0.04224442793896088,0.10985470961606537,0.14007110206676987,0.0,1.0,1.0,1.0,0.23072283348499206 +20000,LAB058_A_EVM,0.31739,5.0,P2,300,0.010179994365383017,0.18143700638283017,0.12749182522934355,0.33285374926031347,0.45587261326512474,0.0,0.84,0.9933333333333333,1.0,0.23414107222937414 +20000,LAB058_A_EVM,0.31739,5.0,P3,300,0.004373475176456883,0.06004469711621499,0.04204842557757704,0.11877158248083948,0.15687507983203283,0.0,1.0,1.0,1.0,0.23073377365146466 +20000,LAB058_A_EVM,0.31739,10.0,P0,300,-18.485787583017427,18.983741983371548,19.503429475506678,19.694485822432803,19.727499823199405,0.9466666666666667,0.01,0.05333333333333334,0.05333333333333334,1.4966337930658495 +20000,LAB058_A_EVM,0.31739,10.0,P1,300,0.003395682179177205,0.05701826546500729,0.04117576489417729,0.11162606381042207,0.1300031535330226,0.0,1.0,1.0,1.0,0.2299147703846052 +20000,LAB058_A_EVM,0.31739,10.0,P2,300,0.005658662457182805,0.19248656944203182,0.14280625080422737,0.3472503819240909,0.4354986941896325,0.0,0.7933333333333333,0.9966666666666667,1.0,0.23345965679035596 +20000,LAB058_A_EVM,0.31739,10.0,P3,300,0.002595437124653574,0.057019318048096825,0.04002245378945268,0.10264353396266408,0.1404952204573941,0.0,1.0,1.0,1.0,0.22992742634458138 +20000,LAB058_A_EVM,0.31739,20.0,P0,300,-19.832644778345195,20.25081539764904,19.442774445583474,27.164364775058125,29.322895060012236,1.0,0.0,0.0,0.0,1.5745570803103843 +20000,LAB058_A_EVM,0.31739,20.0,P1,300,-8.603782456701718e-05,0.058185745413826734,0.039050683900708094,0.11467139301249409,0.14036746773622286,0.0,1.0,1.0,1.0,0.23061817657204078 +20000,LAB058_A_EVM,0.31739,20.0,P2,300,-0.015740281949292504,0.16923876903909174,0.11189784000704606,0.3381321884265598,0.4166751690476546,0.0,0.85,0.9966666666666667,1.0,0.2334276133832687 +20000,LAB058_A_EVM,0.31739,20.0,P3,300,0.00013533644224902257,0.0587065632972042,0.04187212182418776,0.11445277044319199,0.14748821726610242,0.0,1.0,1.0,1.0,0.2306294855015898 +20000,LAB058_A_EVM,0.31739,100.0,P0,300,-99.03506436262917,99.13568457698643,98.58170999137508,107.70837568516522,109.50419461443342,1.0,0.0,0.0,0.0,1.8297825507212293 +20000,LAB058_A_EVM,0.31739,100.0,P1,300,0.0011989523243022878,0.05731016750097971,0.039016776343537174,0.10618309485525618,0.14743679024906772,0.0,1.0,1.0,1.0,0.23056092836660136 +20000,LAB058_A_EVM,0.31739,100.0,P2,300,0.00832254253566172,0.18623385320851005,0.11713413345775336,0.3628044997753791,0.46521882063114084,0.0,0.8066666666666666,0.9933333333333333,1.0,0.2339990358027982 +20000,LAB058_A_EVM,0.31739,100.0,P3,300,0.0005665449354592056,0.06184064278110744,0.04440620475050849,0.12095868368032328,0.15164803258561796,0.0,1.0,1.0,1.0,0.23058330488767556 +20000,INTERMEDIATE_EVM,0.55,-100.0,P0,300,99.78933892583186,99.9298168708172,99.60757963577774,108.9406899596771,109.65417866692187,1.0,0.0,0.0,0.0,1.8137692301936674 +20000,INTERMEDIATE_EVM,0.55,-100.0,P1,300,-0.010993564431693414,0.09058988761259458,0.05986851293388895,0.1794604237082709,0.2307755483311591,0.0,1.0,1.0,1.0,0.4421229932353775 +20000,INTERMEDIATE_EVM,0.55,-100.0,P2,300,0.011833169471503643,0.3217075161311411,0.22504837453570303,0.6378521546893886,0.7917589253190113,0.0,0.5466666666666666,0.89,0.9966666666666667,0.44792675417444666 +20000,INTERMEDIATE_EVM,0.55,-100.0,P3,300,-0.010920915885013377,0.10433253849582899,0.0709468715846242,0.19571638214882658,0.271872412006045,0.0,0.98,1.0,1.0,0.44219160591758555 +20000,INTERMEDIATE_EVM,0.55,-20.0,P0,300,19.734824387359637,20.39855574922691,19.565501099928433,28.240127633171532,29.176607313443636,1.0,0.0,0.0,0.0,1.5726876900055333 +20000,INTERMEDIATE_EVM,0.55,-20.0,P1,300,0.0009167247992712765,0.09095897405997713,0.060809674976917805,0.18326135378428995,0.22032648128002916,0.0,1.0,1.0,1.0,0.44110121584578543 +20000,INTERMEDIATE_EVM,0.55,-20.0,P2,300,-0.007562949628115329,0.29281762353592966,0.19378374412580612,0.6007791766823798,0.7528595711374613,0.0,0.63,0.9066666666666666,1.0,0.4456157153686085 +20000,INTERMEDIATE_EVM,0.55,-20.0,P3,300,0.0008013360550051019,0.10105178738167492,0.07107407950858047,0.1922096168890102,0.24400710995139047,0.0,0.99,1.0,1.0,0.441171565523588 +20000,INTERMEDIATE_EVM,0.55,-10.0,P0,300,15.321538445837314,17.221570457445956,19.396356474691057,19.71879105789219,19.748723771161693,0.7833333333333333,0.013333333333333334,0.18333333333333332,0.21666666666666667,1.339361848947212 +20000,INTERMEDIATE_EVM,0.55,-10.0,P1,300,-0.0004357594294820603,0.09480909301833601,0.062113225688932516,0.18754324358241306,0.26279617765831703,0.0,0.9833333333333333,1.0,1.0,0.4428636622288235 +20000,INTERMEDIATE_EVM,0.55,-10.0,P2,300,0.025089228211327128,0.32833925254388296,0.2485281002677837,0.5610045773383339,0.881474961931649,0.0,0.5066666666666667,0.9,1.0,0.4488121554890974 +20000,INTERMEDIATE_EVM,0.55,-10.0,P3,300,-0.0036650193390161275,0.09937402896957084,0.06777927561887331,0.1880671937118871,0.25495897822077596,0.0,0.9833333333333333,1.0,1.0,0.442918002664448 +20000,INTERMEDIATE_EVM,0.55,-5.0,P0,300,0.011632692777246273,0.17969513700750528,0.12478693204421187,0.3450035786216589,0.40312343402401063,0.0,0.83,0.9966666666666667,1.0,0.4404801868181593 +20000,INTERMEDIATE_EVM,0.55,-5.0,P1,300,-0.010818579088252518,0.09268858810313144,0.06537053696820116,0.17947297533147943,0.2375667679249545,0.0,0.9966666666666667,1.0,1.0,0.4400093197671859 +20000,INTERMEDIATE_EVM,0.55,-5.0,P2,300,0.0007749549348686768,0.30599142764674386,0.18323251567606746,0.607114925294499,0.7629774418327181,0.0,0.5966666666666667,0.8966666666666666,0.9966666666666667,0.4448361126165418 +20000,INTERMEDIATE_EVM,0.55,-5.0,P3,300,-0.00858829909301313,0.10048468319579178,0.07454637217977078,0.19584655858483402,0.22890424706332818,0.0,0.9933333333333333,1.0,1.0,0.44004891269441193 +20000,INTERMEDIATE_EVM,0.55,-2.0,P0,300,-0.0005504977598855754,0.16494137246796312,0.1088562405466309,0.3274016946130414,0.41178365354086904,0.0,0.8633333333333333,1.0,1.0,0.4394219557952701 +20000,INTERMEDIATE_EVM,0.55,-2.0,P1,300,0.0035986675007019663,0.09929625784161504,0.06327596916086686,0.1969910866995084,0.23318223548645872,0.0,0.9933333333333333,1.0,1.0,0.43903016797872463 +20000,INTERMEDIATE_EVM,0.55,-2.0,P2,300,0.006498277729590451,0.3296391190176915,0.2179368124096266,0.6372558651718513,0.7498025790029392,0.0,0.5633333333333334,0.8566666666666667,0.9966666666666667,0.44494620155081177 +20000,INTERMEDIATE_EVM,0.55,-2.0,P3,300,0.0018033958219946591,0.10609626549415219,0.07290791831410215,0.20656778778605006,0.2655319928007668,0.0,0.9833333333333333,1.0,1.0,0.4390772104011169 +20000,INTERMEDIATE_EVM,0.55,-1.0,P0,300,-0.006281649142228062,0.16154213129947137,0.1052776955064591,0.3268087300997261,0.44439926961308995,0.0,0.88,0.9966666666666667,1.0,0.4415599263901412 +20000,INTERMEDIATE_EVM,0.55,-1.0,P1,300,-0.0008991910326471331,0.09545428611787225,0.06987350751314808,0.17773560862922866,0.2342673458559171,0.0,0.9933333333333333,1.0,1.0,0.44111575714324885 +20000,INTERMEDIATE_EVM,0.55,-1.0,P2,300,-0.01215508827933771,0.3378123191043573,0.23079253731853944,0.6565890830989621,0.8534808926402414,0.0,0.53,0.86,1.0,0.4472051453337628 +20000,INTERMEDIATE_EVM,0.55,-1.0,P3,300,-0.00039356351551964893,0.10025715426703753,0.07015558588296783,0.19949818111367462,0.26343447935136405,0.0,0.9866666666666667,1.0,1.0,0.44117476876651407 +20000,INTERMEDIATE_EVM,0.55,-0.5,P0,300,-1.7626026167505415e-06,0.15855460283467232,0.10026207611674773,0.3066265791226651,0.4521053781314973,0.0,0.8866666666666667,0.9966666666666667,1.0,0.440964276172174 +20000,INTERMEDIATE_EVM,0.55,-0.5,P1,300,0.004628695783378366,0.09279730154127092,0.06290518398087205,0.18639157023738134,0.25274474806332686,0.0,0.9866666666666667,1.0,1.0,0.4406043474396295 +20000,INTERMEDIATE_EVM,0.55,-0.5,P2,300,0.013815459255124854,0.32780674863441006,0.22734462272170594,0.634854464226212,0.789444153840768,0.0,0.54,0.8733333333333333,1.0,0.4463590674838459 +20000,INTERMEDIATE_EVM,0.55,-0.5,P3,300,0.007491557669245899,0.0992095164369012,0.07419389201138615,0.18790579519453662,0.24929911010105815,0.0,0.99,1.0,1.0,0.44066033142100924 +20000,INTERMEDIATE_EVM,0.55,-0.25,P0,300,-0.009310837309713459,0.16192657763619775,0.11900570943233335,0.2955850641421859,0.388388340583861,0.0,0.87,1.0,1.0,0.4427621215340521 +20000,INTERMEDIATE_EVM,0.55,-0.25,P1,300,0.0002017899381044878,0.09582734401269519,0.0645501290190045,0.19329628377688107,0.23991519050021495,0.0,0.9933333333333333,1.0,1.0,0.4423886176250219 +20000,INTERMEDIATE_EVM,0.55,-0.25,P2,300,0.01863969816740519,0.30257829859331126,0.20582745632445648,0.5903500708529645,0.6892727852935114,0.0,0.59,0.8866666666666667,1.0,0.4474367347341749 +20000,INTERMEDIATE_EVM,0.55,-0.25,P3,300,-0.001236630120466479,0.10791899878528535,0.07178895617838861,0.20853018426023429,0.25711717764783254,0.0,0.9866666666666667,1.0,1.0,0.44245562097321084 +20000,INTERMEDIATE_EVM,0.55,0.0,P0,300,0.0015889388214769572,0.15485145234424103,0.10511300182039673,0.28576915855952395,0.4069971785032862,0.0,0.9066666666666666,1.0,1.0,0.44116617094524163 +20000,INTERMEDIATE_EVM,0.55,0.0,P1,300,-0.00972840118142349,0.09454883235745459,0.06289761525748748,0.18514057111070215,0.23399027107710144,0.0,0.9933333333333333,1.0,1.0,0.4408330585449181 +20000,INTERMEDIATE_EVM,0.55,0.0,P2,300,-0.020029702111898466,0.3191769448640731,0.20029271907030688,0.6429144480063641,0.7704356410728916,0.0,0.5933333333333334,0.8666666666666667,0.9966666666666667,0.4463233468357813 +20000,INTERMEDIATE_EVM,0.55,0.0,P3,300,-0.008994302345184606,0.10264531503442488,0.07169117748696416,0.1927819294045012,0.22859086551483693,0.0,0.9933333333333333,1.0,1.0,0.44088301688814435 +20000,INTERMEDIATE_EVM,0.55,0.25,P0,300,-0.006863526547488163,0.1689521171362682,0.11473582124743222,0.307862134399819,0.42889211229417384,0.0,0.8733333333333333,0.9933333333333333,1.0,0.444096795381581 +20000,INTERMEDIATE_EVM,0.55,0.25,P1,300,-0.0034637052876158917,0.09788864526634661,0.061497842672285655,0.20411495854348372,0.26038915940877194,0.0,0.98,1.0,1.0,0.4437327452662127 +20000,INTERMEDIATE_EVM,0.55,0.25,P2,300,-0.0031526332248616117,0.29271076278130836,0.20303786477366026,0.5518951548817225,0.6594582644371509,0.0,0.59,0.91,1.0,0.44870928637480373 +20000,INTERMEDIATE_EVM,0.55,0.25,P3,300,-0.004541886622290538,0.1017611464153739,0.0668433976489549,0.21352826094959296,0.2700855321500382,0.0,0.98,1.0,1.0,0.44378689381372755 +20000,INTERMEDIATE_EVM,0.55,0.5,P0,300,-0.005322897172649228,0.15544541903726747,0.11734608065253127,0.2809008754992559,0.3775263296732149,0.0,0.9033333333333333,0.9966666666666667,1.0,0.4413233388998106 +20000,INTERMEDIATE_EVM,0.55,0.5,P1,300,0.0035418944860293095,0.08884938504983596,0.0573179893672478,0.1704310186571507,0.22844945136179812,0.0,1.0,1.0,1.0,0.440954475577945 +20000,INTERMEDIATE_EVM,0.55,0.5,P2,300,0.003825879590563826,0.3170006002474863,0.2148377092301073,0.6141556618233851,0.8501282178535678,0.0,0.58,0.8933333333333333,1.0,0.4461706355788413 +20000,INTERMEDIATE_EVM,0.55,0.5,P3,300,-0.0009111135373770259,0.09779715300072378,0.06931187903226851,0.1841915504445276,0.2552564340213247,0.0,0.9833333333333333,1.0,1.0,0.4410013252015421 +20000,INTERMEDIATE_EVM,0.55,1.0,P0,300,0.007018057325860239,0.15699284283275175,0.1050225033346841,0.3048045387412174,0.3785979797353094,0.0,0.88,1.0,1.0,0.44066766163646576 +20000,INTERMEDIATE_EVM,0.55,1.0,P1,300,0.00045559241810413893,0.10255425092538838,0.06948980016207251,0.2035030294338693,0.2567909882448531,0.0,0.9866666666666667,1.0,1.0,0.4403775577980222 +20000,INTERMEDIATE_EVM,0.55,1.0,P2,300,0.03197044989215975,0.3117721929270604,0.21207719444757311,0.5803928857505268,0.7626060240813377,0.0,0.59,0.9066666666666666,0.9933333333333333,0.44523939089889325 +20000,INTERMEDIATE_EVM,0.55,1.0,P3,300,-0.0022703890205604173,0.10896509501582054,0.07526965416500342,0.21088982184738833,0.26855614064763145,0.0,0.9766666666666667,1.0,1.0,0.4404308671935086 +20000,INTERMEDIATE_EVM,0.55,2.0,P0,300,-0.016979286681233597,0.17617739411262037,0.12006521094568301,0.3340174179524119,0.4251863606140027,0.0,0.8466666666666667,0.9966666666666667,1.0,0.44176209157634305 +20000,INTERMEDIATE_EVM,0.55,2.0,P1,300,-0.004186389302504315,0.0993968379139759,0.06290956203442533,0.21014235894994152,0.2643982977987517,0.0,0.9733333333333334,1.0,1.0,0.4413562859727048 +20000,INTERMEDIATE_EVM,0.55,2.0,P2,300,0.011383954408685799,0.31951386026677914,0.20923225949727198,0.6544836434851891,0.7828012984721608,0.0,0.5666666666666667,0.8733333333333333,1.0,0.44663672598311316 +20000,INTERMEDIATE_EVM,0.55,2.0,P3,300,-0.002631413653051536,0.10677432702431396,0.06695151557120682,0.21150740507843432,0.28356210645970703,0.0,0.9766666666666667,1.0,1.0,0.44141440226933765 +20000,INTERMEDIATE_EVM,0.55,5.0,P0,300,0.0002501666416514799,0.167794726264673,0.11443664683817101,0.31683726685199587,0.38033647786922076,0.0,0.8666666666666667,1.0,1.0,0.4416957963373967 +20000,INTERMEDIATE_EVM,0.55,5.0,P1,300,0.00021697077571882772,0.100053830255868,0.0626656148603626,0.2032800667673473,0.229018139984666,0.0,0.9933333333333333,1.0,1.0,0.44128501646079127 +20000,INTERMEDIATE_EVM,0.55,5.0,P2,300,-0.0004759137018508142,0.3252224393622562,0.20969506585403597,0.5958556565742782,0.8641780518712624,0.0,0.5533333333333333,0.8766666666666667,0.9933333333333333,0.4470134006160661 +20000,INTERMEDIATE_EVM,0.55,5.0,P3,300,-8.882376687972796e-05,0.1030467462049987,0.06027332978944466,0.21419222180270478,0.25980725174393204,0.0,0.9833333333333333,1.0,1.0,0.44133275673198663 +20000,INTERMEDIATE_EVM,0.55,10.0,P0,300,-16.023172877688395,17.619738025545878,19.42206784525522,19.706030338128606,19.732986696206655,0.82,0.01,0.15,0.18,1.3848454031224962 +20000,INTERMEDIATE_EVM,0.55,10.0,P1,300,-0.0017296252024026752,0.09734099908222679,0.07004990989273097,0.19108918548253034,0.24433429090457237,0.0,0.99,1.0,1.0,0.4417594471306707 +20000,INTERMEDIATE_EVM,0.55,10.0,P2,300,-0.030656746448576567,0.3207675219434212,0.20710236450687702,0.6443034609063883,0.7931214328548178,0.0,0.5866666666666667,0.86,1.0,0.44767099851633796 +20000,INTERMEDIATE_EVM,0.55,10.0,P3,300,0.001608282620722837,0.10537189070211295,0.074713695938323,0.20737892097788643,0.26937278639918466,0.0,0.9866666666666667,1.0,1.0,0.441804293307046 +20000,INTERMEDIATE_EVM,0.55,20.0,P0,300,-19.5760527254791,20.224688117807375,19.62348320724606,27.71180513252233,29.536186225952335,1.0,0.0,0.0,0.0,1.5722469325333446 +20000,INTERMEDIATE_EVM,0.55,20.0,P1,300,-0.005781202832059028,0.10011906840885053,0.06846900837786052,0.19429007696989714,0.2614983574862762,0.0,0.98,1.0,1.0,0.43995635919576453 +20000,INTERMEDIATE_EVM,0.55,20.0,P2,300,0.01974540313801665,0.3320179031760828,0.24174812197984608,0.6671621437875676,0.8677557478623487,0.0,0.5133333333333333,0.8833333333333333,1.0,0.4461427878940933 +20000,INTERMEDIATE_EVM,0.55,20.0,P3,300,-0.0023850132641390215,0.10822476961044342,0.07030134051273862,0.20936198489234106,0.2807035288776883,0.0,0.98,1.0,1.0,0.43999380735420196 +20000,INTERMEDIATE_EVM,0.55,100.0,P0,300,-99.50110166349664,99.6475805981187,99.02321767142172,108.73316304877763,109.43054420605304,1.0,0.0,0.0,0.0,1.8186206080610305 +20000,INTERMEDIATE_EVM,0.55,100.0,P1,300,-0.001132843287941654,0.09353730892373162,0.06403667679354186,0.1856272179959909,0.21353762728820153,0.0,0.9966666666666667,1.0,1.0,0.44155298068837556 +20000,INTERMEDIATE_EVM,0.55,100.0,P2,300,0.033090009796835226,0.3182009032872503,0.21888445445362237,0.6102626804273507,0.8239335706674358,0.0,0.5766666666666667,0.89,0.9966666666666667,0.4467844602066225 +20000,INTERMEDIATE_EVM,0.55,100.0,P3,300,-0.006154444760672059,0.102444024488707,0.06846403022442615,0.22006013862304954,0.2515645909865433,0.0,0.9866666666666667,1.0,1.0,0.44163505250828594 +20000,LAB058_B_EVM,0.84535,-100.0,P0,300,100.26692819053856,100.41877525833944,100.24068803558008,108.74712215672572,109.47296278101372,1.0,0.0,0.0,0.0,1.808910784294184 +20000,LAB058_B_EVM,0.84535,-100.0,P1,300,0.006981968961819926,0.14574778297643265,0.10584248291965537,0.2836661816352497,0.34440017474166995,0.0,0.9233333333333333,1.0,1.0,0.7396122632629605 +20000,LAB058_B_EVM,0.84535,-100.0,P2,300,-0.012845310651907861,0.47296219672058565,0.3150876188216145,0.913451728114533,1.1252437289132007,0.0,0.4066666666666667,0.6966666666666667,0.9666666666666667,0.7467437628366472 +20000,LAB058_B_EVM,0.84535,-100.0,P3,300,0.1712861084668117,1.3278440546793193,0.13619342980131677,0.3866396104836085,9.701227540483062,0.016666666666666666,0.83,0.98,0.9833333333333333,0.7496250345380002 +20000,LAB058_B_EVM,0.84535,-20.0,P0,300,19.77575550468911,20.496255211308295,19.835330408866426,28.711437846829483,29.494068905011382,1.0,0.0,0.0,0.0,1.6065193662858266 +20000,LAB058_B_EVM,0.84535,-20.0,P1,300,0.006972993568740691,0.14574306839463808,0.09254763969530977,0.2826981989350525,0.37531821124630504,0.0,0.9066666666666666,1.0,1.0,0.7397147516235116 +20000,LAB058_B_EVM,0.84535,-20.0,P2,300,0.010259540836270821,0.48161041339146493,0.3036433960939817,0.9270984997655579,1.2363199581230364,0.0,0.45,0.6933333333333334,0.97,0.747043392957908 +20000,LAB058_B_EVM,0.84535,-20.0,P3,300,0.0017606503343984296,0.17201131206529832,0.1113553897534807,0.3314136916276603,0.473176389232715,0.0,0.8466666666666667,0.9966666666666667,1.0,0.739907516720338 +20000,LAB058_B_EVM,0.84535,-10.0,P0,300,13.707605065314683,16.18673238937102,19.117235758314017,19.698964693795855,19.75201848066769,0.7033333333333334,0.0033333333333333335,0.19666666666666666,0.29333333333333333,1.3575923041108504 +20000,LAB058_B_EVM,0.84535,-10.0,P1,300,-0.002524467077371651,0.1453040789559841,0.09863292185511341,0.2813334605709106,0.381856991060929,0.0,0.92,0.9966666666666667,1.0,0.7398998987478475 +20000,LAB058_B_EVM,0.84535,-10.0,P2,300,-0.025476000253566902,0.514662919306782,0.3083074550161111,1.057180670793743,1.3083225787573112,0.0,0.42333333333333334,0.6866666666666666,0.9433333333333334,0.7483369003624568 +20000,LAB058_B_EVM,0.84535,-10.0,P3,300,0.00018976267459340927,0.16751496199927446,0.11230132691002215,0.32190981275133557,0.39827243571887827,0.0,0.86,0.9933333333333333,1.0,0.7400440353500096 +20000,LAB058_B_EVM,0.84535,-5.0,P0,300,0.002833283745190182,0.30578730905545526,0.19966020580185262,0.583332945116349,0.8620133562571219,0.0,0.61,0.9033333333333333,1.0,0.744067826850023 +20000,LAB058_B_EVM,0.84535,-5.0,P1,300,-0.006490780401472482,0.15187429276304354,0.10147050376431466,0.2950207433407029,0.3931061896524292,0.0,0.9,1.0,1.0,0.7433013897398641 +20000,LAB058_B_EVM,0.84535,-5.0,P2,300,-0.0009115864422067333,0.46413261203151723,0.33323334718598563,0.9073960879548058,1.0787526603039606,0.0,0.4033333333333333,0.7,0.9766666666666667,0.7502337140515128 +20000,LAB058_B_EVM,0.84535,-5.0,P3,300,-0.009411606712190244,0.1771006532263807,0.11700850199988633,0.3527453195007826,0.5004864818934813,0.0,0.85,0.9866666666666667,1.0,0.743461435630443 +20000,LAB058_B_EVM,0.84535,-2.0,P0,300,0.009422623931810807,0.2694172445650323,0.17583910550272086,0.5285400668815454,0.6851175844024632,0.0,0.67,0.9233333333333333,1.0,0.7427259887874269 +20000,LAB058_B_EVM,0.84535,-2.0,P1,300,0.006669465789354444,0.13332025686522944,0.09405859425561458,0.25812334184292596,0.3282117922386321,0.0,0.9433333333333334,1.0,1.0,0.7420340983945982 +20000,LAB058_B_EVM,0.84535,-2.0,P2,300,0.0017456170293780342,0.5049811572245629,0.33696752545785813,0.930766919282956,1.3613526515247412,0.0,0.39666666666666667,0.6766666666666666,0.96,0.7499495028153104 +20000,LAB058_B_EVM,0.84535,-2.0,P3,300,0.004151194466190068,0.15866920508696877,0.10573318944615906,0.30557148254399935,0.407409922011939,0.0,0.8733333333333333,1.0,1.0,0.7422131661391088 +20000,LAB058_B_EVM,0.84535,-1.0,P0,300,0.02818110460025131,0.26967065137611124,0.19347128818097914,0.5438017992053288,0.7005732652924633,0.0,0.65,0.9366666666666666,1.0,0.742316473330545 +20000,LAB058_B_EVM,0.84535,-1.0,P1,300,0.00245071555140766,0.14763522565464052,0.0963488608369476,0.2779948445744121,0.36773019599107676,0.0,0.9133333333333333,1.0,1.0,0.7416411094469972 +20000,LAB058_B_EVM,0.84535,-1.0,P2,300,0.004223207215923654,0.5137733056793763,0.318504282053404,1.0007272917961654,1.2697438111445984,0.0,0.4066666666666667,0.6333333333333333,0.9466666666666667,0.7499176173310096 +20000,LAB058_B_EVM,0.84535,-1.0,P3,300,0.0006448412035009177,0.1716481008791495,0.12701832684085584,0.3171278363869913,0.4642013857502032,0.0,0.8733333333333333,0.9933333333333333,1.0,0.7417903701971973 +20000,LAB058_B_EVM,0.84535,-0.5,P0,300,-0.007062693247565833,0.2665993889023978,0.18871727116985726,0.5114238509466409,0.6165467875919043,0.0,0.6133333333333333,0.94,1.0,0.7404735097338285 +20000,LAB058_B_EVM,0.84535,-0.5,P1,300,-0.0079948124126416,0.15998649920654504,0.11013029400890162,0.307456665914387,0.40707667232835987,0.0,0.8766666666666667,0.9966666666666667,1.0,0.7398873589679671 +20000,LAB058_B_EVM,0.84535,-0.5,P2,300,-0.05090109624402615,0.46943800723300205,0.3136743066834132,0.899519699626739,1.3580606864701128,0.0,0.41333333333333333,0.7366666666666667,0.97,0.7466209318655657 +20000,LAB058_B_EVM,0.84535,-0.5,P3,300,-0.013928412664178786,0.18782506406920674,0.13498885351382012,0.3538180953446187,0.464891060452538,0.0,0.8,0.9933333333333333,1.0,0.7400706214193804 +20000,LAB058_B_EVM,0.84535,-0.25,P0,300,-0.010042219367722349,0.28947360840614395,0.18924111482557796,0.5969511197199017,0.7507514190189534,0.0,0.64,0.9066666666666666,1.0,0.7444320359011315 +20000,LAB058_B_EVM,0.84535,-0.25,P1,300,-0.004348968341412796,0.1429258867896125,0.09257428699338344,0.2795024437240534,0.36639925888908487,0.0,0.9233333333333333,1.0,1.0,0.7437870996069197 +20000,LAB058_B_EVM,0.84535,-0.25,P2,300,-0.011133063872748952,0.503111724599926,0.3327865190217437,0.9931722666962793,1.236943553269332,0.0,0.38,0.6866666666666666,0.9566666666666667,0.75101489590691 +20000,LAB058_B_EVM,0.84535,-0.25,P3,300,-0.008698172413812592,0.1633713157091523,0.10892482751667415,0.31363779676858183,0.44550930934848054,0.0,0.88,0.9966666666666667,1.0,0.7439416196991084 +20000,LAB058_B_EVM,0.84535,0.0,P0,300,-0.003821258108430129,0.28172720424996966,0.18032439555703675,0.5711166728434713,0.7239693596437617,0.0,0.6666666666666666,0.9066666666666666,1.0,0.7432286516076333 +20000,LAB058_B_EVM,0.84535,0.0,P1,300,0.002479482091990583,0.14874633623786296,0.10053273591845338,0.2824157117541739,0.3814640906987507,0.0,0.91,1.0,1.0,0.7426199750787041 +20000,LAB058_B_EVM,0.84535,0.0,P2,300,0.029465556799777217,0.49213923472048887,0.36501451735829815,0.9250015677881767,1.1427923380073646,0.0,0.34,0.6566666666666666,0.97,0.749666907947193 +20000,LAB058_B_EVM,0.84535,0.0,P3,300,-7.765780057414684e-05,0.17164857673938014,0.11349607877226332,0.3360458797335881,0.47097671748274067,0.0,0.8733333333333333,0.9933333333333333,1.0,0.7427921846441804 +20000,LAB058_B_EVM,0.84535,0.25,P0,300,-0.025029600354817685,0.303602216289788,0.2001618487351248,0.5728811566067592,0.7911262825243556,0.0,0.5933333333333334,0.9,0.9966666666666667,0.7438294759064386 +20000,LAB058_B_EVM,0.84535,0.25,P1,300,-0.009451972532538787,0.1533249380560135,0.10371563866847276,0.3060963755965355,0.3762125182751674,0.0,0.89,0.9966666666666667,1.0,0.7430798478870261 +20000,LAB058_B_EVM,0.84535,0.25,P2,300,-0.01973338412894089,0.5227614873628291,0.3431039250327016,1.075526503204841,1.342284267110299,0.0,0.3466666666666667,0.6733333333333333,0.9366666666666666,0.7508886490017702 +20000,LAB058_B_EVM,0.84535,0.25,P3,300,-0.007513328369738764,0.18462705024921036,0.12208889913266475,0.3499476735941123,0.45968451799122845,0.0,0.8133333333333334,0.9966666666666667,1.0,0.7432615937912614 +20000,LAB058_B_EVM,0.84535,0.5,P0,300,-0.020478119439446066,0.24971239379731655,0.1688086232420298,0.48870886155067833,0.6259583035437898,0.0,0.6933333333333334,0.95,1.0,0.7447097677394933 +20000,LAB058_B_EVM,0.84535,0.5,P1,300,-0.00271675834962373,0.1434798474612228,0.10070357527847021,0.28412309744351366,0.32232136504356623,0.0,0.9233333333333333,1.0,1.0,0.74422604383193 +20000,LAB058_B_EVM,0.84535,0.5,P2,300,0.023091447668045037,0.46668026831970044,0.3138473849264319,0.9438330926656434,1.151081324796307,0.0,0.41333333333333333,0.73,0.9633333333333334,0.7506712273754683 +20000,LAB058_B_EVM,0.84535,0.5,P3,300,-0.010619292436640355,0.16036260666318766,0.10490872373891985,0.3121878320890109,0.3919183367052292,0.0,0.8833333333333333,1.0,1.0,0.744381070821291 +20000,LAB058_B_EVM,0.84535,1.0,P0,300,0.004504704497186796,0.2813233084768166,0.18639429305047422,0.5408611505776135,0.7227348605794622,0.0,0.6366666666666667,0.9133333333333333,1.0,0.7401155377603242 +20000,LAB058_B_EVM,0.84535,1.0,P1,300,-0.005873371043653206,0.14707617197787173,0.09620269921888341,0.29321445125367546,0.36417792924225845,0.0,0.9066666666666666,1.0,1.0,0.7394731585658305 +20000,LAB058_B_EVM,0.84535,1.0,P2,300,-0.045763526081813055,0.501216197473921,0.3277789961366993,0.9750075656556229,1.2915347903717596,0.0,0.39666666666666667,0.7133333333333334,0.9566666666666667,0.7474192878204683 +20000,LAB058_B_EVM,0.84535,1.0,P3,300,-0.002835835257805296,0.17652756124010827,0.10916061808347338,0.36556661243336347,0.45550237433659374,0.0,0.8533333333333334,0.9933333333333333,1.0,0.7396624156637309 +20000,LAB058_B_EVM,0.84535,2.0,P0,300,0.009785974038344412,0.2655275287681163,0.17484321422041382,0.513249589965747,0.760787604211953,0.0,0.6633333333333333,0.9433333333333334,1.0,0.7424162782813652 +20000,LAB058_B_EVM,0.84535,2.0,P1,300,-0.0032158206479625594,0.14537965209035666,0.0972067400448342,0.2845094155772598,0.35919212845697485,0.0,0.9033333333333333,1.0,1.0,0.7418111736435941 +20000,LAB058_B_EVM,0.84535,2.0,P2,300,0.030748293127301228,0.46690413249309076,0.30211374580177774,0.9577021374680528,1.2372444398242908,0.0,0.43,0.7133333333333334,0.9666666666666667,0.7485203923324857 +20000,LAB058_B_EVM,0.84535,2.0,P3,300,-0.011134415759434345,0.17973705197498124,0.12429123110112406,0.3598988139007453,0.5248031923464527,0.0,0.8466666666666667,0.9833333333333333,1.0,0.7419933967963583 +20000,LAB058_B_EVM,0.84535,5.0,P0,300,0.0005807002257305009,0.3036207000197202,0.21081377957578296,0.574765198829745,0.7989069696056544,0.0,0.5766666666666667,0.9033333333333333,0.9966666666666667,0.7398792568680852 +20000,LAB058_B_EVM,0.84535,5.0,P1,300,0.011006871348311922,0.1437625551161595,0.10925692113225383,0.2606269176573563,0.3702269509090345,0.0,0.94,1.0,1.0,0.7390774249610763 +20000,LAB058_B_EVM,0.84535,5.0,P2,300,0.006733750161460059,0.49310556325839283,0.33568811724688397,0.9759380396267808,1.2595994752720865,0.0,0.4066666666666667,0.69,0.9533333333333334,0.7462441530673277 +20000,LAB058_B_EVM,0.84535,5.0,P3,300,0.0054354228080384995,0.1704611743587452,0.12817384392617015,0.3071586493653335,0.4046795442195844,0.0,0.86,0.9966666666666667,1.0,0.7392439848505761 +20000,LAB058_B_EVM,0.84535,10.0,P0,300,-14.355312774206244,16.570406899940192,19.20281533279623,19.70209804495281,19.75888875346834,0.7366666666666667,0.013333333333333334,0.14,0.25666666666666665,1.3882519307569803 +20000,LAB058_B_EVM,0.84535,10.0,P1,300,0.019478937265927622,0.1516815250700223,0.09681820730029234,0.29277299429163783,0.3985137855588895,0.0,0.91,1.0,1.0,0.740102136013253 +20000,LAB058_B_EVM,0.84535,10.0,P2,300,0.012874612521716658,0.48382267268350654,0.3288359437536146,0.9645355034727029,1.184364713650683,0.0,0.42,0.69,0.96,0.7469826517033197 +20000,LAB058_B_EVM,0.84535,10.0,P3,300,0.024148304505328958,0.17249328601282074,0.1192803757823544,0.33929697160457917,0.42527339578141593,0.0,0.84,1.0,1.0,0.7402520128617343 +20000,LAB058_B_EVM,0.84535,20.0,P0,300,-19.996160447772063,20.68440354723199,19.80319649392019,28.339996775532054,29.45143758921377,1.0,0.0,0.0,0.0,1.5968470649366073 +20000,LAB058_B_EVM,0.84535,20.0,P1,300,-0.004357860270376695,0.1371919113727985,0.0801703005567358,0.27058629734592315,0.38232429627329323,0.0,0.94,0.9966666666666667,1.0,0.7420607480459163 +20000,LAB058_B_EVM,0.84535,20.0,P2,300,0.03785064043408844,0.4631621861445129,0.3036557378118623,0.9086507947966656,1.3611617914129122,0.0,0.4266666666666667,0.7333333333333333,0.9633333333333334,0.7483610856132223 +20000,LAB058_B_EVM,0.84535,20.0,P3,300,-0.019711242255128405,0.17626419138558164,0.11047505945803593,0.3719881367459501,0.5014029010905002,0.0,0.8733333333333333,0.9866666666666667,1.0,0.7422046915931664 +20000,LAB058_B_EVM,0.84535,100.0,P0,300,-99.8105303035775,99.96469945052958,100.04963970357998,108.8092025205615,109.53120487834255,1.0,0.0,0.0,0.0,1.8053864256294985 +20000,LAB058_B_EVM,0.84535,100.0,P1,300,0.011038943150436041,0.14556164788955436,0.10334375445827249,0.2657427956506766,0.35486331644069125,0.0,0.9166666666666666,1.0,1.0,0.7408023592302868 +20000,LAB058_B_EVM,0.84535,100.0,P2,300,0.02390649146012431,0.48102426123226255,0.3209545800433986,0.9713073926192788,1.2590419767971457,0.0,0.38333333333333336,0.7,0.9533333333333334,0.748063386866374 +20000,LAB058_B_EVM,0.84535,100.0,P3,300,-0.21872040347676783,1.5452716095839205,0.13989544969759038,0.41207627115633455,11.037440532741916,0.02,0.8066666666666666,0.9666666666666667,0.9733333333333334,0.7541605521840516 +500000,LAB058_A_EVM,0.31739,-100.0,P0,300,0.05122161546974534,2.519917360494425,1.755255870923179,4.665748165095915,6.092130540623479,0.3466666666666667,0.08333333333333333,0.16666666666666666,0.3,0.2313615287211058 +500000,LAB058_A_EVM,0.31739,-100.0,P1,300,0.12461206986382663,1.4061488510677613,0.9256403362522931,2.801959832782734,3.319096276709775,0.08666666666666667,0.15,0.2866666666666667,0.5333333333333333,0.2311085522146764 +500000,LAB058_A_EVM,0.31739,-100.0,P2,300,-0.2746563741075697,4.680334902291195,3.121060751222906,9.507562161411148,11.322666405799387,0.5866666666666667,0.03666666666666667,0.08666666666666667,0.17333333333333334,0.23463284681461494 +500000,LAB058_A_EVM,0.31739,-100.0,P3,300,0.10400638553204487,1.4414708586649905,0.9260816151756188,2.8123616687716826,3.393183496122605,0.10666666666666667,0.14,0.27666666666666667,0.5266666666666666,0.23112353251115536 +500000,LAB058_A_EVM,0.31739,-20.0,P0,300,0.06433855537277886,2.097720609800933,1.3736479553623369,4.0511100970868625,4.943385631521889,0.24333333333333335,0.08333333333333333,0.15333333333333332,0.3466666666666667,0.23060903043511588 +500000,LAB058_A_EVM,0.31739,-20.0,P1,300,0.0859135779253214,1.3523086376596956,0.9721295746628602,2.5318067774125126,3.4784846668599836,0.06666666666666667,0.18,0.28,0.5066666666666667,0.23044839501551176 +500000,LAB058_A_EVM,0.31739,-20.0,P2,300,-0.14744266563733655,4.6426424751850215,3.4743718273795885,8.42559043142293,11.415722829491221,0.6466666666666666,0.03,0.07,0.14666666666666667,0.23407349005762182 +500000,LAB058_A_EVM,0.31739,-20.0,P3,300,0.09429176699922456,1.393632158906204,0.966821776273342,2.6572318631298137,3.1952652139562336,0.08666666666666667,0.15,0.26666666666666666,0.5133333333333333,0.23045838338975236 +500000,LAB058_A_EVM,0.31739,-10.0,P0,300,0.002258358958261866,2.206795417831972,1.524885761239604,4.291556043512392,5.6656402392497185,0.2733333333333333,0.08333333333333333,0.14666666666666667,0.31666666666666665,0.23104573290863276 +500000,LAB058_A_EVM,0.31739,-10.0,P1,300,-0.048315454074910086,1.441608935916157,0.9497426831289362,2.7749966893830376,3.7596007048788675,0.09666666666666666,0.13666666666666666,0.29,0.52,0.23086759253837358 +500000,LAB058_A_EVM,0.31739,-10.0,P2,300,0.46988941956930586,4.769434390166064,2.943446820954727,9.735222998285575,13.178321471652591,0.5866666666666667,0.04,0.1,0.18666666666666668,0.2344866046261195 +500000,LAB058_A_EVM,0.31739,-10.0,P3,300,-0.06533118452615824,1.4694487349647511,1.0061254812307494,2.8745740910761204,3.611737866188518,0.1,0.11,0.24333333333333335,0.49,0.23087994086901623 +500000,LAB058_A_EVM,0.31739,-5.0,P0,300,-0.04253828276834235,2.0247733352673163,1.3108915019920055,4.138312765914601,5.548094201773074,0.20333333333333334,0.09333333333333334,0.17,0.4,0.23175191513498603 +500000,LAB058_A_EVM,0.31739,-5.0,P1,300,0.02317164103868585,1.3110841942591445,0.8720422843422577,2.611700485582801,3.1724878507109855,0.08666666666666667,0.13,0.29,0.5633333333333334,0.2315453027254665 +500000,LAB058_A_EVM,0.31739,-5.0,P2,300,-0.018580953868721675,4.443638389575177,3.013274315270551,8.869206888065374,11.872425782852355,0.5766666666666667,0.043333333333333335,0.08666666666666667,0.17,0.23480813942433248 +500000,LAB058_A_EVM,0.31739,-5.0,P3,300,0.05601494948104402,1.3639888968176774,0.91161107165146,2.6442054779581254,3.4711150550076524,0.08,0.11333333333333333,0.24666666666666667,0.5466666666666666,0.23155867426376336 +500000,LAB058_A_EVM,0.31739,-2.0,P0,300,-0.17126307168724134,2.2122588371860687,1.5724606797917453,4.48916678061039,5.346655625836759,0.2733333333333333,0.09333333333333334,0.19,0.36333333333333334,0.23124941793756004 +500000,LAB058_A_EVM,0.31739,-2.0,P1,300,-0.05556663707569771,1.414429191819362,1.000784005626641,2.655356450789155,3.596057120248646,0.07,0.12333333333333334,0.2833333333333333,0.5,0.23106128542281634 +500000,LAB058_A_EVM,0.31739,-2.0,P2,300,0.11330286211796552,4.673187978112287,3.247982442049058,9.50570528803862,11.094181615316398,0.6166666666666667,0.06,0.09333333333333334,0.15666666666666668,0.2345334302769186 +500000,LAB058_A_EVM,0.31739,-2.0,P3,300,-0.03463002704458368,1.49128736496996,1.042033284897843,2.849249201511407,3.9387402398467852,0.10333333333333333,0.13333333333333333,0.2833333333333333,0.48,0.23107688788383887 +500000,LAB058_A_EVM,0.31739,-1.0,P0,300,-0.11798417238548559,2.1586316790422018,1.5434027060131945,4.307678755992669,5.422063651947262,0.24666666666666667,0.06666666666666667,0.14333333333333334,0.31666666666666665,0.23165687107063115 +500000,LAB058_A_EVM,0.31739,-1.0,P1,300,0.044072844477794186,1.3245929297081351,0.8856547881947205,2.5793504301952117,3.332382681544819,0.08,0.15666666666666668,0.2966666666666667,0.54,0.23145989693673433 +500000,LAB058_A_EVM,0.31739,-1.0,P2,300,-0.11435609135749517,4.48962934208268,3.0481580745064996,8.720466114236068,12.903557102299027,0.5866666666666667,0.03333333333333333,0.09333333333333334,0.20333333333333334,0.23466550203999367 +500000,LAB058_A_EVM,0.31739,-1.0,P3,300,0.06925664629588738,1.3167742937775633,0.9036090127531554,2.5598443277461493,3.1771963924800244,0.07666666666666666,0.15333333333333332,0.2833333333333333,0.5433333333333333,0.23146855618081144 +500000,LAB058_A_EVM,0.31739,-0.5,P0,300,-0.14074586181280516,2.156314853011417,1.3425867362326311,4.182853949506637,5.639250410371085,0.25,0.08666666666666667,0.18666666666666668,0.37333333333333335,0.23209447676087677 +500000,LAB058_A_EVM,0.31739,-0.5,P1,300,-0.06011362359671113,1.4234341713268421,0.8953053438963952,2.7505865375491543,3.4566258984688876,0.10333333333333333,0.17333333333333334,0.3,0.5466666666666666,0.23191203776080196 +500000,LAB058_A_EVM,0.31739,-0.5,P2,300,-0.6274875052084958,4.758358556851328,3.29620376785238,8.715317563781431,12.477558552271706,0.6,0.03,0.08,0.18666666666666668,0.2356906339611066 +500000,LAB058_A_EVM,0.31739,-0.5,P3,300,-0.05648976437985539,1.4454840154947537,0.8978283104119222,2.8913156178266335,3.6651651504369513,0.11333333333333333,0.16,0.2866666666666667,0.5566666666666666,0.2319240552750501 +500000,LAB058_A_EVM,0.31739,-0.25,P0,300,0.056296440353164896,2.3594685958528463,1.4923136707465408,4.833449355294878,5.360734828623805,0.30333333333333334,0.08333333333333333,0.17,0.3466666666666667,0.23208595681253827 +500000,LAB058_A_EVM,0.31739,-0.25,P1,300,0.1285607582299895,1.4048220875079227,0.9353147328059679,2.890138079374043,3.2613296894685866,0.10333333333333333,0.11333333333333333,0.23666666666666666,0.56,0.23187020858992213 +500000,LAB058_A_EVM,0.31739,-0.25,P2,300,0.029225614298976032,4.224869791987734,3.0947847048810093,8.841941700927881,10.082081378456284,0.6033333333333334,0.03,0.08333333333333333,0.19666666666666666,0.23495611285423004 +500000,LAB058_A_EVM,0.31739,-0.25,P3,300,0.12457548317214147,1.4489127002990558,1.0311211812619496,2.8620282280892164,3.4327422229534803,0.09333333333333334,0.13666666666666666,0.24666666666666667,0.47333333333333333,0.23188442774154377 +500000,LAB058_A_EVM,0.31739,0.0,P0,300,-0.2997035622648743,2.1824305271932287,1.3015380182016654,4.304123822160383,6.209999643567065,0.25333333333333335,0.11666666666666667,0.20333333333333334,0.41,0.23128288590744026 +500000,LAB058_A_EVM,0.31739,0.0,P1,300,-0.066649074622173,1.310857595313654,0.9368317441245061,2.5470221226933503,3.5377487514046826,0.06,0.15666666666666668,0.2833333333333333,0.55,0.23110559616916238 +500000,LAB058_A_EVM,0.31739,0.0,P2,300,0.09681551019535967,4.31246447570726,2.6723417988396356,8.483470599241771,10.150179542129555,0.5366666666666666,0.03333333333333333,0.09,0.18,0.23395692307170896 +500000,LAB058_A_EVM,0.31739,0.0,P3,300,-0.07573057116118867,1.338366599993394,0.9550733424191103,2.646126375472029,3.3465205763255073,0.06666666666666667,0.16,0.2966666666666667,0.53,0.23111656812862838 +500000,LAB058_A_EVM,0.31739,0.25,P0,300,-0.046269790467493015,2.2166534475736634,1.6504712750341255,4.035325173138749,5.327228323730745,0.2866666666666667,0.08333333333333333,0.17333333333333334,0.31666666666666665,0.2315503975177367 +500000,LAB058_A_EVM,0.31739,0.25,P1,300,0.038940145008192886,1.3130195351955145,0.9263215556911947,2.691461875404777,3.2721882319332134,0.06666666666666667,0.15,0.27,0.5433333333333333,0.23133520752926898 +500000,LAB058_A_EVM,0.31739,0.25,P2,300,0.19297832024200595,4.675403755422018,3.107686842531529,9.60763561889716,12.165465668340198,0.5933333333333334,0.03666666666666667,0.08,0.17333333333333334,0.23479968117588612 +500000,LAB058_A_EVM,0.31739,0.25,P3,300,0.06355807629602388,1.3127703786761011,0.920874315332669,2.636478423808653,3.160990406869171,0.07333333333333333,0.13666666666666666,0.2833333333333333,0.5333333333333333,0.23134580198187743 +500000,LAB058_A_EVM,0.31739,0.5,P0,300,0.2618652041832924,2.184724987310229,1.4944751303306314,4.048859862563482,5.419508539788134,0.30333333333333334,0.07666666666666666,0.18333333333333332,0.36666666666666664,0.23118633436295857 +500000,LAB058_A_EVM,0.31739,0.5,P1,300,0.161993777313277,1.4277532896363994,0.874509194119932,2.817013296592218,3.774657855488738,0.09333333333333334,0.15,0.28,0.5566666666666666,0.23097519535013514 +500000,LAB058_A_EVM,0.31739,0.5,P2,300,0.6138336678296608,4.602235357458952,2.926448375643137,9.101610907895026,10.899268120231172,0.58,0.043333333333333335,0.07666666666666666,0.18,0.2343097719509584 +500000,LAB058_A_EVM,0.31739,0.5,P3,300,0.17185172625179132,1.4656158525738876,1.0170237351891303,2.8046467424139663,3.768070975498335,0.08666666666666667,0.16333333333333333,0.2733333333333333,0.49333333333333335,0.23098778751302082 +500000,LAB058_A_EVM,0.31739,1.0,P0,300,0.12511013623996917,2.35029639931282,1.576036773751381,4.6579666213506306,5.577848929513921,0.31333333333333335,0.1,0.15,0.35,0.231188951052825 +500000,LAB058_A_EVM,0.31739,1.0,P1,300,0.15619830891202072,1.4428710415986574,0.9411439897643048,2.965444475235669,3.8214021692659657,0.07666666666666666,0.16666666666666666,0.30333333333333334,0.52,0.23097610325048484 +500000,LAB058_A_EVM,0.31739,1.0,P2,300,0.3836147832172534,4.696568748599207,3.279926563920508,9.177659452142912,12.79770787625577,0.6233333333333333,0.05,0.09333333333333334,0.16666666666666666,0.2345240011238682 +500000,LAB058_A_EVM,0.31739,1.0,P3,300,0.1381809913798284,1.4965667854010625,1.0136829141053942,2.9840640553707627,3.9040674436698635,0.09333333333333334,0.13,0.2633333333333333,0.48333333333333334,0.2309917261661228 +500000,LAB058_A_EVM,0.31739,2.0,P0,300,-0.03714348673097611,2.302641668038499,1.4743925188133677,4.793051863436605,6.049997437634711,0.26,0.09666666666666666,0.17,0.3433333333333333,0.23168673894091305 +500000,LAB058_A_EVM,0.31739,2.0,P1,300,0.044542314366872164,1.2827613859678741,0.911152043485873,2.4330610582559196,2.8566348524675287,0.05,0.14333333333333334,0.25666666666666665,0.5633333333333334,0.23146862323874448 +500000,LAB058_A_EVM,0.31739,2.0,P2,300,0.29756725740716594,4.649195652087307,3.1377859330448654,8.703128202365418,12.04660482664745,0.6266666666666667,0.03666666666666667,0.07,0.14333333333333334,0.23511279891100192 +500000,LAB058_A_EVM,0.31739,2.0,P3,300,0.06837956215434693,1.3506502582929427,0.9576704516341656,2.609419931573224,3.02978003731586,0.08,0.14333333333333334,0.29333333333333333,0.5233333333333333,0.23148335269851125 +500000,LAB058_A_EVM,0.31739,5.0,P0,300,-0.1686449780447066,2.3201125322249267,1.4543846685089388,4.8283916654697485,5.5502644680572,0.27666666666666667,0.07333333333333333,0.15333333333333332,0.35,0.23156050043093102 +500000,LAB058_A_EVM,0.31739,5.0,P1,300,0.10975708404202135,1.2968160650269198,0.9052018333854495,2.5518297658230242,3.182108313884398,0.06,0.18,0.3333333333333333,0.5533333333333333,0.23137269754427284 +500000,LAB058_A_EVM,0.31739,5.0,P2,300,0.01174886783535593,4.738430596398254,3.3550279611029588,9.21396938817417,11.127400103905655,0.6333333333333333,0.03666666666666667,0.06,0.14333333333333334,0.23492070925025388 +500000,LAB058_A_EVM,0.31739,5.0,P3,300,0.10995598381889489,1.3395838349482152,0.854651941364367,2.5998071088681476,3.080309478475709,0.07333333333333333,0.19,0.33666666666666667,0.57,0.23138375214472157 +500000,LAB058_A_EVM,0.31739,10.0,P0,300,0.10476230183923779,2.254901849255385,1.4598967635675075,4.258424671304259,5.071300486566661,0.30333333333333334,0.11333333333333333,0.18666666666666668,0.38,0.23102713704011768 +500000,LAB058_A_EVM,0.31739,10.0,P1,300,0.15083227630347415,1.3531842150839062,0.850987369564022,2.5881311877935254,3.263152500979493,0.07,0.16,0.2633333333333333,0.57,0.2308244590241505 +500000,LAB058_A_EVM,0.31739,10.0,P2,300,0.08896670344034426,4.590671269378975,2.9524114372431516,8.718572787170887,12.22456329478668,0.58,0.05333333333333334,0.09,0.20333333333333334,0.23445867828419584 +500000,LAB058_A_EVM,0.31739,10.0,P3,300,0.1229571025763499,1.4020229508639173,0.9207905082137646,2.7026036287992237,3.242529141800411,0.08666666666666667,0.12666666666666668,0.27,0.54,0.23083860264052777 +500000,LAB058_A_EVM,0.31739,20.0,P0,300,0.09029103328462301,2.17809498342123,1.4117534786455685,4.10807029870817,5.693439394012294,0.25333333333333335,0.08666666666666667,0.18,0.36,0.23088262479967067 +500000,LAB058_A_EVM,0.31739,20.0,P1,300,0.11721450818834503,1.4031945176599618,0.9169468677625581,3.015530286117478,3.4396418341841435,0.08666666666666667,0.15666666666666668,0.2633333333333333,0.53,0.23069211975588483 +500000,LAB058_A_EVM,0.31739,20.0,P2,300,0.2413054533563433,4.485365880351467,2.956643034547147,9.00076365366706,11.26413444486142,0.5966666666666667,0.05333333333333334,0.12,0.2,0.23400110814019362 +500000,LAB058_A_EVM,0.31739,20.0,P3,300,0.1269592773119375,1.4298517888526052,0.9811280598038348,2.830845472481069,3.5191232641725407,0.09333333333333334,0.12333333333333334,0.2633333333333333,0.5066666666666667,0.23070460036318755 +500000,LAB058_A_EVM,0.31739,100.0,P0,300,-0.21337264260092126,2.514980785167416,1.690506785967031,4.9381953908320275,6.468796838916317,0.3233333333333333,0.06333333333333334,0.12333333333333334,0.2733333333333333,0.23054972844743607 +500000,LAB058_A_EVM,0.31739,100.0,P1,300,-0.032149983375415775,1.4601933992964982,0.9740344142102089,2.814083958252333,4.287897986372765,0.09333333333333334,0.10666666666666667,0.24666666666666667,0.5233333333333333,0.2303455442937319 +500000,LAB058_A_EVM,0.31739,100.0,P2,300,-0.24055351015880447,4.409796738575635,3.0528707005869364,8.046989862566573,11.175746722537403,0.5866666666666667,0.023333333333333334,0.07333333333333333,0.15666666666666668,0.23349464188867097 +500000,LAB058_A_EVM,0.31739,100.0,P3,300,-0.017479374231718907,1.4981538792002562,1.0095022581928959,2.874630775336984,4.227432017487666,0.09666666666666666,0.13,0.25666666666666665,0.49666666666666665,0.23035652163762213 +500000,INTERMEDIATE_EVM,0.55,-100.0,P0,300,-0.1177269274880094,4.420281682482189,2.9036331536781788,8.05629308562615,10.375947334609279,0.58,0.05,0.08666666666666667,0.20333333333333334,0.44388037774777483 +500000,INTERMEDIATE_EVM,0.55,-100.0,P1,300,-0.01197272792521512,2.268746645233593,1.6425067370699864,4.302883121747456,5.393956628907273,0.29333333333333333,0.06333333333333334,0.17,0.31666666666666665,0.44342155921078036 +500000,INTERMEDIATE_EVM,0.55,-100.0,P2,300,-0.24714297534182164,8.03199701521524,5.533316222395143,16.022360227730474,19.556613848670377,0.77,0.016666666666666666,0.04666666666666667,0.1,0.44880052736607934 +500000,INTERMEDIATE_EVM,0.55,-100.0,P3,300,0.044158384628679104,2.3533734737282397,1.6886501497923163,4.518557170264332,5.344354884962363,0.32666666666666666,0.08,0.15333333333333332,0.32666666666666666,0.4434808442889948 +500000,INTERMEDIATE_EVM,0.55,-20.0,P0,300,-0.1363518143270123,4.109101814312431,3.183817937178821,7.588807388201127,9.903606740564905,0.58,0.03666666666666667,0.08,0.16666666666666666,0.4429678570313628 +500000,INTERMEDIATE_EVM,0.55,-20.0,P1,300,0.050270310565413645,2.4234328060154358,1.4777539498341383,4.975244023030312,6.028214247508247,0.2866666666666667,0.07,0.15333333333333332,0.3466666666666667,0.4425814257997804 +500000,INTERMEDIATE_EVM,0.55,-20.0,P2,300,0.6220172035199864,8.202605466993798,5.433783976021671,15.514478085489156,23.057506036563023,0.7866666666666666,0.016666666666666666,0.04,0.07666666666666666,0.4480862365751608 +500000,INTERMEDIATE_EVM,0.55,-20.0,P3,300,0.03146113927986116,2.604687914110895,1.7464875625608958,5.522197873066208,6.225616601127421,0.32,0.09333333333333334,0.17,0.31,0.4426360132678703 +500000,INTERMEDIATE_EVM,0.55,-10.0,P0,300,-0.23328367635524164,3.9944115153659445,2.8912672437904305,7.502407771963347,9.628994014077009,0.5566666666666666,0.04,0.09333333333333334,0.18666666666666668,0.4419460470651294 +500000,INTERMEDIATE_EVM,0.55,-10.0,P1,300,0.07761710109879294,2.3019268454309425,1.4781221699541334,4.2282855271002315,5.778792600314288,0.31333333333333335,0.09,0.17,0.3433333333333333,0.4416107109027427 +500000,INTERMEDIATE_EVM,0.55,-10.0,P2,300,0.30558166946827026,8.007554094744524,5.383297573435402,15.11349439264922,18.366115421653596,0.74,0.043333333333333335,0.06666666666666667,0.12,0.4474569291962394 +500000,INTERMEDIATE_EVM,0.55,-10.0,P3,300,0.01633948836972704,2.4985142845813653,1.6922088193836906,4.86888499264816,5.842663983624661,0.32666666666666666,0.09333333333333334,0.17,0.31,0.4416552476797089 +500000,INTERMEDIATE_EVM,0.55,-5.0,P0,300,-0.029916268154184033,4.185773148285066,2.9719376101190855,8.067273262186156,10.525505679463581,0.57,0.06333333333333334,0.09666666666666666,0.23,0.4418554797196768 +500000,INTERMEDIATE_EVM,0.55,-5.0,P1,300,0.2368858644973164,2.3609858328159374,1.6509519627956002,4.669986604068011,6.517921258313888,0.31333333333333335,0.08,0.18,0.3333333333333333,0.44150543640860207 +500000,INTERMEDIATE_EVM,0.55,-5.0,P2,300,-0.060950386561768585,7.90049589855054,5.4731703974184285,15.284922653493139,19.76413278610133,0.7666666666666667,0.023333333333333334,0.056666666666666664,0.11,0.44651105487300846 +500000,INTERMEDIATE_EVM,0.55,-5.0,P3,300,0.2690961108726988,2.4462662376378486,1.624008190860131,4.817239648539091,6.4773688329085335,0.31333333333333335,0.10333333333333333,0.16666666666666666,0.3566666666666667,0.4415587409384589 +500000,INTERMEDIATE_EVM,0.55,-2.0,P0,300,-0.09065849068112576,4.179684689806211,2.9434357029594267,8.444450346284594,10.592200408236955,0.56,0.043333333333333335,0.1,0.20333333333333334,0.44075519394652246 +500000,INTERMEDIATE_EVM,0.55,-2.0,P1,300,-0.05067969647524175,2.4552852110723773,1.6082717503205743,4.809209440318981,6.334069919246753,0.3233333333333333,0.10666666666666667,0.18333333333333332,0.3333333333333333,0.44040340466707384 +500000,INTERMEDIATE_EVM,0.55,-2.0,P2,300,-0.33963260310481347,7.321958635256362,5.039456237888938,13.631646675762767,19.358261443674575,0.78,0.023333333333333334,0.05,0.10333333333333333,0.445117972630106 +500000,INTERMEDIATE_EVM,0.55,-2.0,P3,300,-0.011490326396029014,2.485898658365056,1.6114407220730222,5.123523702521569,6.249705027151985,0.32,0.08,0.17333333333333334,0.33,0.4404520618122754 +500000,INTERMEDIATE_EVM,0.55,-1.0,P0,300,0.14993790038466315,4.265530549370923,2.921925562209867,8.503703161478734,10.839887589730257,0.5766666666666667,0.04,0.07333333333333333,0.17666666666666667,0.44136374384489974 +500000,INTERMEDIATE_EVM,0.55,-1.0,P1,300,0.22356054465942127,2.4943397832990875,1.7056982878847724,4.54569597072616,6.250298044934165,0.3466666666666667,0.10666666666666667,0.17666666666666667,0.31666666666666665,0.44093994061243336 +500000,INTERMEDIATE_EVM,0.55,-1.0,P2,300,-0.05416280764007224,8.347709500383973,5.530520210914988,16.629551860241687,20.150729839636938,0.74,0.02666666666666667,0.06,0.11666666666666667,0.44719630449263775 +500000,INTERMEDIATE_EVM,0.55,-1.0,P3,300,0.12674591080626732,2.680450135022957,1.8284593811348608,5.277335847850613,6.696124527128716,0.38,0.09,0.15666666666666668,0.3,0.44100374284360666 +500000,INTERMEDIATE_EVM,0.55,-0.5,P0,300,0.5257583131074723,3.94470398256151,2.531395618527797,7.709122927365192,10.612856751349167,0.5033333333333333,0.05333333333333334,0.12,0.23666666666666666,0.4427919676479528 +500000,INTERMEDIATE_EVM,0.55,-0.5,P1,300,0.33828417973105074,2.451606757751986,1.7545451000083538,4.779651164589751,5.512883138495984,0.31666666666666665,0.06333333333333334,0.14666666666666667,0.31,0.44247046631456205 +500000,INTERMEDIATE_EVM,0.55,-0.5,P2,300,0.24818186774523796,7.276851843712817,4.588962834973035,13.981392889188745,17.633179269113693,0.74,0.016666666666666666,0.05,0.09666666666666666,0.4469606613740194 +500000,INTERMEDIATE_EVM,0.55,-0.5,P3,300,0.40734539200998665,2.59738276880862,1.8475631514911715,4.890755333688176,6.481872081701872,0.37333333333333335,0.06333333333333334,0.17,0.3,0.44253797610911744 +500000,INTERMEDIATE_EVM,0.55,-0.25,P0,300,-0.3468152576579761,4.147038011639431,2.8760293749811385,7.875576558868188,11.22521137197374,0.5633333333333334,0.04,0.10333333333333333,0.20333333333333334,0.44275141894721326 +500000,INTERMEDIATE_EVM,0.55,-0.25,P1,300,-0.20389864251133175,2.4593839729342473,1.5564150907945142,4.87625013388822,6.445875016469559,0.3,0.08666666666666667,0.16,0.31666666666666665,0.4423906309283143 +500000,INTERMEDIATE_EVM,0.55,-0.25,P2,300,-0.500776531132659,7.9666519038268815,5.381641610041399,15.662425857695908,20.717788829003425,0.77,0.016666666666666666,0.03,0.09,0.4477851758363212 +500000,INTERMEDIATE_EVM,0.55,-0.25,P3,300,-0.2248687428593419,2.574048175096518,1.7974838098542194,4.940665791162577,6.17292549373875,0.36,0.07333333333333333,0.15666666666666668,0.2866666666666667,0.44244241530397355 +500000,INTERMEDIATE_EVM,0.55,0.0,P0,300,-0.20535062617838207,4.274207595362884,2.887137627703945,7.981863270848023,10.918682426621164,0.5733333333333334,0.06666666666666667,0.08666666666666667,0.2,0.44167020632389853 +500000,INTERMEDIATE_EVM,0.55,0.0,P1,300,-0.08335823720250063,2.333744533889091,1.529027696092505,4.437490144874831,6.258121193818424,0.28,0.07,0.16333333333333333,0.34,0.44129091361732853 +500000,INTERMEDIATE_EVM,0.55,0.0,P2,300,-0.06549217461375283,7.900739214174066,4.996374045705464,16.36890014189153,20.333454437492964,0.7433333333333333,0.03,0.07,0.12666666666666668,0.4470189069534932 +500000,INTERMEDIATE_EVM,0.55,0.0,P3,300,-0.04855963202499812,2.49880889987065,1.7355561679039089,4.942808079998393,6.29855011234345,0.3233333333333333,0.07333333333333333,0.14333333333333334,0.2866666666666667,0.44134258087790385 +500000,INTERMEDIATE_EVM,0.55,0.25,P0,300,0.0008450226922921663,4.080629251933191,3.0461015997454264,7.709881488305432,9.683852240362723,0.59,0.07,0.09333333333333334,0.17333333333333334,0.4430039904369812 +500000,INTERMEDIATE_EVM,0.55,0.25,P1,300,0.11155557309306502,2.5363343269550076,1.9075800395392006,4.73515767604835,5.539975418803303,0.37,0.07333333333333333,0.13,0.2633333333333333,0.44267548485857505 +500000,INTERMEDIATE_EVM,0.55,0.25,P2,300,0.667152273834268,8.215242821277016,5.553011478177545,16.825208479956988,20.059811960628206,0.76,0.03,0.07,0.10333333333333333,0.4481759337912676 +500000,INTERMEDIATE_EVM,0.55,0.25,P3,300,0.10489874940723666,2.762574667391167,1.978749821456204,5.347323685513619,6.233486849609114,0.4,0.09,0.15333333333333332,0.26666666666666666,0.44274322818188 +500000,INTERMEDIATE_EVM,0.55,0.5,P0,300,0.09473186990501986,4.140442840192388,2.6461163702503194,8.573357046377025,11.078788015664145,0.5233333333333333,0.043333333333333335,0.11666666666666667,0.21333333333333335,0.4399851781381115 +500000,INTERMEDIATE_EVM,0.55,0.5,P1,300,0.2655419388900383,2.3273938753633505,1.4679213797744648,4.40875701836819,6.73883983496682,0.26666666666666666,0.09666666666666666,0.19,0.37666666666666665,0.43957890993210263 +500000,INTERMEDIATE_EVM,0.55,0.5,P2,300,0.5495192062992418,7.704927228354173,5.464026972149853,14.292098210288966,17.834569054980957,0.7566666666666667,0.03333333333333333,0.04666666666666667,0.11333333333333333,0.44487081880985757 +500000,INTERMEDIATE_EVM,0.55,0.5,P3,300,0.24171818666303163,2.5128547843975584,1.636205555858766,5.168911676835003,6.5340811980650075,0.30666666666666664,0.11,0.18,0.3433333333333333,0.4396356848425224 +500000,INTERMEDIATE_EVM,0.55,1.0,P0,300,0.07877620595868143,4.054397022888365,3.0109718272450996,7.781801193754141,10.060000042783777,0.5833333333333334,0.06333333333333334,0.09,0.16,0.4418384654867171 +500000,INTERMEDIATE_EVM,0.55,1.0,P1,300,0.10522544431332503,2.287613865812947,1.511995491629912,4.3618238856426235,5.556935929608789,0.2833333333333333,0.09333333333333334,0.16,0.32666666666666666,0.4414512040330919 +500000,INTERMEDIATE_EVM,0.55,1.0,P2,300,-0.4369264533388668,8.015395477951653,4.715905336071561,15.956556876453165,20.58263111673138,0.7233333333333334,0.023333333333333334,0.05333333333333334,0.10333333333333333,0.4470937307895909 +500000,INTERMEDIATE_EVM,0.55,1.0,P3,300,0.046388611582705366,2.5142417695739265,1.9086947598901596,4.723438139217773,5.815599539487542,0.37333333333333335,0.07333333333333333,0.13333333333333333,0.25666666666666665,0.44150991929897787 +500000,INTERMEDIATE_EVM,0.55,2.0,P0,300,0.5741727431227931,4.156168975632169,3.0931055082441112,8.03639920478793,9.448955545089252,0.6033333333333334,0.03666666666666667,0.09,0.17666666666666667,0.4422132659738869 +500000,INTERMEDIATE_EVM,0.55,2.0,P1,300,0.200953166374368,2.5259699577226056,1.6281168699203188,4.718020039624816,6.617376811269103,0.3466666666666667,0.07666666666666666,0.16333333333333333,0.32,0.4418247687256983 +500000,INTERMEDIATE_EVM,0.55,2.0,P2,300,0.25331098940120006,8.1811274575251,4.880707924468297,16.367264678895733,20.771627417610222,0.7766666666666666,0.016666666666666666,0.05,0.08666666666666667,0.44751125915218326 +500000,INTERMEDIATE_EVM,0.55,2.0,P3,300,0.22564545321268611,2.7136307832799282,1.8242326992102238,4.960908637129108,6.5667157079831915,0.38,0.08,0.14333333333333334,0.2833333333333333,0.4418802380206257 +500000,INTERMEDIATE_EVM,0.55,5.0,P0,300,-0.1845575521827538,4.0278280394195916,2.867728044935978,7.617134076285832,9.874456566375883,0.5633333333333334,0.05,0.09666666666666666,0.20666666666666667,0.4410107533229746 +500000,INTERMEDIATE_EVM,0.55,5.0,P1,300,-0.08008930542465352,2.433738050835882,1.7533992238233558,4.703835152427722,5.744767426180304,0.3466666666666667,0.08666666666666667,0.14333333333333334,0.29,0.44069077260324546 +500000,INTERMEDIATE_EVM,0.55,5.0,P2,300,-0.2250042327908689,7.838808757104514,5.667755381083321,14.426893583376604,16.494323695991053,0.7433333333333333,0.03,0.056666666666666664,0.11,0.446337857076364 +500000,INTERMEDIATE_EVM,0.55,5.0,P3,300,-0.1655055857797292,2.6260033183263234,1.7557264433125248,4.962064272257793,6.515493527785683,0.36666666666666664,0.09666666666666666,0.15666666666666668,0.31,0.4407613734298755 +500000,INTERMEDIATE_EVM,0.55,10.0,P0,300,-0.3496263563874214,4.0617070098623556,2.868460895992106,7.773358543205008,10.888772129918511,0.55,0.056666666666666664,0.09666666666666666,0.18666666666666668,0.4428712214113343 +500000,INTERMEDIATE_EVM,0.55,10.0,P1,300,-0.02610467551526303,2.2629223015075843,1.5626007239555904,4.484387672113315,5.787539372150551,0.29,0.08333333333333333,0.18333333333333332,0.30666666666666664,0.44248599282397816 +500000,INTERMEDIATE_EVM,0.55,10.0,P2,300,0.3137202199655378,8.458098628188614,5.621288081441904,16.818005382475686,20.896729748348505,0.7466666666666667,0.02,0.05,0.12666666666666668,0.44879751635780357 +500000,INTERMEDIATE_EVM,0.55,10.0,P3,300,-0.12845874459340423,2.4596403802405495,1.5590896586368377,4.943990516857432,5.986024321851254,0.31333333333333335,0.07666666666666666,0.16333333333333333,0.35333333333333333,0.4425344572317877 +500000,INTERMEDIATE_EVM,0.55,20.0,P0,300,-0.33476439822828724,4.060145740605996,2.8381113551716144,7.679576082021424,9.715271542422295,0.5733333333333334,0.05333333333333334,0.09333333333333334,0.18333333333333332,0.44279817030625546 +500000,INTERMEDIATE_EVM,0.55,20.0,P1,300,-0.03361509594085755,2.394773168840931,1.6749403437201664,4.613117537123626,5.321159324145952,0.30333333333333334,0.08333333333333333,0.14666666666666667,0.31666666666666665,0.4424232992987377 +500000,INTERMEDIATE_EVM,0.55,20.0,P2,300,0.0887518539622766,7.626674430983323,5.425155428527329,14.346071167330235,17.74960154711654,0.77,0.016666666666666666,0.04,0.09,0.4476891885500011 +500000,INTERMEDIATE_EVM,0.55,20.0,P3,300,-0.10576341120172818,2.5786386624795,1.7642596165420326,5.0890618919568,6.444468888519781,0.35,0.10333333333333333,0.17,0.30666666666666664,0.44247100709210674 +500000,INTERMEDIATE_EVM,0.55,100.0,P0,300,-0.05405007279701583,4.109947276364779,2.86066379436064,7.950408076904714,9.592011938137235,0.5833333333333334,0.04666666666666667,0.08333333333333333,0.18333333333333332,0.44256427558662553 +500000,INTERMEDIATE_EVM,0.55,100.0,P1,300,-0.028122060491946474,2.3070782279505804,1.4710033941694078,4.602434614924977,5.977851452457398,0.27666666666666667,0.10333333333333333,0.20333333333333334,0.3466666666666667,0.4421981573644974 +500000,INTERMEDIATE_EVM,0.55,100.0,P2,300,-0.7773607357546084,7.551457245613754,4.882908123763585,14.767348300578393,20.108802269115344,0.74,0.02,0.06,0.12,0.4472644654416031 +500000,INTERMEDIATE_EVM,0.55,100.0,P3,300,0.0015546005908080454,2.397988717590686,1.5349097821721003,4.912598903007105,6.152757012155462,0.2733333333333333,0.09666666666666666,0.21,0.3466666666666667,0.44224637928358507 +500000,LAB058_B_EVM,0.84535,-100.0,P0,300,0.46184377067710214,7.201108755138261,4.909517575440063,13.403150984918387,18.766157514326416,0.71,0.03333333333333333,0.07333333333333333,0.13333333333333333,0.7414278729219618 +500000,LAB058_B_EVM,0.84535,-100.0,P1,300,0.33810090154136657,3.7111020398205676,2.4972743310651992,7.474668256083287,9.713778245755611,0.5133333333333333,0.043333333333333335,0.08,0.17333333333333334,0.7406632891463224 +500000,LAB058_B_EVM,0.84535,-100.0,P2,300,0.1148155897225278,12.528829709893737,8.038900327688047,23.859441187180163,34.32084946111014,0.8133333333333334,0.023333333333333334,0.03,0.07333333333333333,0.7477877246068905 +500000,LAB058_B_EVM,0.84535,-100.0,P3,300,0.5395197076947017,4.24338573180543,3.053874309271791,8.00975468386298,9.992655975582204,0.6033333333333334,0.02,0.08333333333333333,0.13666666666666666,0.7408315598713561 +500000,LAB058_B_EVM,0.84535,-20.0,P0,300,0.623173180970532,6.703767244240886,4.11465374186157,13.762647194179015,16.76118903999484,0.67,0.05333333333333334,0.09333333333333334,0.15333333333333332,0.7419194555120296 +500000,LAB058_B_EVM,0.84535,-20.0,P1,300,0.6608591724713048,3.530654435057735,2.391600550516996,6.974439461059155,9.074045475514755,0.49333333333333335,0.06333333333333334,0.11,0.19333333333333333,0.7414010558737448 +500000,LAB058_B_EVM,0.84535,-20.0,P2,300,0.7419731789150971,11.231170290088702,8.197175666251876,21.122375145452917,26.09405274014135,0.8266666666666667,0.013333333333333334,0.03333333333333333,0.07,0.7474246910473203 +500000,LAB058_B_EVM,0.84535,-20.0,P3,300,0.7607566982362741,4.334615705654641,3.255858001449413,8.567134976403898,10.68854049766502,0.6366666666666667,0.05,0.08666666666666667,0.16,0.7415542008824383 +500000,LAB058_B_EVM,0.84535,-10.0,P0,300,-0.4856350535358458,6.822364227503556,4.617216881404678,12.910765989065212,16.68114859301648,0.75,0.02666666666666667,0.05333333333333334,0.09333333333333334,0.7412102900473138 +500000,LAB058_B_EVM,0.84535,-10.0,P1,300,-0.251887733413391,3.5658901631673885,2.3870151008115705,7.299587131983353,9.221766629128963,0.48,0.056666666666666664,0.12,0.25,0.7406096350384476 +500000,LAB058_B_EVM,0.84535,-10.0,P2,300,0.20983141199259914,11.693266956608152,7.32224047601013,22.603724234918054,31.615671965545435,0.8233333333333334,0.013333333333333334,0.05,0.08666666666666667,0.7471160500431064 +500000,LAB058_B_EVM,0.84535,-10.0,P3,300,-0.2303204627791349,4.241708194330632,2.912875399819538,8.573134278532256,11.611054374161682,0.5933333333333334,0.05,0.09666666666666666,0.16666666666666666,0.7407539528343111 +500000,LAB058_B_EVM,0.84535,-5.0,P0,300,-0.24380072349095688,6.446390979193839,4.257921747831913,12.594299786181598,16.288477617411505,0.7133333333333334,0.03666666666666667,0.06333333333333334,0.13666666666666666,0.7417179257523001 +500000,LAB058_B_EVM,0.84535,-5.0,P1,300,0.03371577231263617,3.7200670491589363,2.319183686937712,7.338439737781828,10.582705840203372,0.48,0.05333333333333334,0.13,0.26666666666666666,0.7412435972279833 +500000,LAB058_B_EVM,0.84535,-5.0,P2,300,-1.4301888962509475,12.163607653769265,8.511360922803313,23.73298560036813,29.375255387347035,0.8266666666666667,0.023333333333333334,0.043333333333333335,0.07,0.7485164126573779 +500000,LAB058_B_EVM,0.84535,-5.0,P3,300,0.012695486242352417,3.9349921197176907,2.5594394623033563,7.469580199865274,10.73317648031182,0.5166666666666667,0.04,0.10333333333333333,0.20666666666666667,0.7413945520682079 +500000,LAB058_B_EVM,0.84535,-2.0,P0,300,-0.40717573326996925,6.843299334217098,4.9154295950593125,13.856723900524937,16.805697501268778,0.7633333333333333,0.03666666666666667,0.06,0.10666666666666667,0.7435772493914891 +500000,LAB058_B_EVM,0.84535,-2.0,P1,300,-0.17721732104282947,3.564410070462003,2.4388775430987346,7.534241117025657,9.507718224606073,0.5,0.06,0.10666666666666667,0.22666666666666666,0.7429642809101998 +500000,LAB058_B_EVM,0.84535,-2.0,P2,300,0.33887485537330025,12.255782569945564,6.974297532985004,24.509019770619215,31.515710937922506,0.7633333333333333,0.03333333333333333,0.06333333333333334,0.11666666666666667,0.7505337919603924 +500000,LAB058_B_EVM,0.84535,-2.0,P3,300,-0.0839442201079816,4.245371832792519,2.6593887674936747,8.650504300348828,10.886955090868312,0.5433333333333333,0.03333333333333333,0.08,0.18,0.743146970410212 +500000,LAB058_B_EVM,0.84535,-1.0,P0,300,-0.16011263327218217,7.028158665159597,5.131812421504125,13.62161262188913,17.59223217441296,0.75,0.02666666666666667,0.06666666666666667,0.10666666666666667,0.7411685271612205 +500000,LAB058_B_EVM,0.84535,-1.0,P1,300,0.305682943056595,3.860294883987537,2.640883550310675,7.593424219828065,9.857154531573102,0.5366666666666666,0.03666666666666667,0.1,0.19333333333333333,0.7404580646558862 +500000,LAB058_B_EVM,0.84535,-1.0,P2,300,-0.6012037076123545,13.31699129240406,9.035546438559258,26.415477470561605,35.11208762080782,0.8466666666666667,0.01,0.023333333333333334,0.07,0.7489406190313201 +500000,LAB058_B_EVM,0.84535,-1.0,P3,300,0.29433277048044154,4.5422868021374505,2.9787129817844837,9.22986459197691,11.594841634707647,0.58,0.04,0.07,0.14,0.74061259698647 +500000,LAB058_B_EVM,0.84535,-0.5,P0,300,0.1468642736470622,6.745565517319912,4.9775902956987625,12.95577748809813,16.126340451982173,0.72,0.023333333333333334,0.03333333333333333,0.11333333333333333,0.7408084879052695 +500000,LAB058_B_EVM,0.84535,-0.5,P1,300,-0.0764152800753186,3.8579575049255554,2.656519370709595,7.793828584171155,10.71903641590755,0.5233333333333333,0.06,0.12333333333333334,0.20666666666666667,0.7401809477897753 +500000,LAB058_B_EVM,0.84535,-0.5,P2,300,0.4745087125346917,11.852031630665294,7.817247934514999,23.295978270045484,29.152270229105625,0.83,0.01,0.02666666666666667,0.06,0.7470447799557718 +500000,LAB058_B_EVM,0.84535,-0.5,P3,300,-0.21474015205877062,4.434552437394881,3.215610032382705,8.773836036157217,10.967718685797028,0.63,0.06333333333333334,0.09666666666666666,0.17333333333333334,0.7403313678177625 +500000,LAB058_B_EVM,0.84535,-0.25,P0,300,-0.009581546139921546,6.598942580493143,4.4667489387642245,13.468298620929865,17.40133716467189,0.6966666666666667,0.04666666666666667,0.07,0.13,0.7413738205810748 +500000,LAB058_B_EVM,0.84535,-0.25,P1,300,0.43425507172990724,3.787576198530825,2.7520580919132356,7.079519162490913,9.008085597016802,0.56,0.04666666666666667,0.08666666666666667,0.18666666666666668,0.7407773088227593 +500000,LAB058_B_EVM,0.84535,-0.25,P2,300,0.31920886565005313,12.469124238249803,8.277312009273476,25.787734535352033,32.70807569934739,0.8366666666666667,0.006666666666666667,0.02666666666666667,0.06,0.748682179475047 +500000,LAB058_B_EVM,0.84535,-0.25,P3,300,0.3802790586655403,4.394614605825159,2.9122457277214044,8.248963530740705,10.098955587226047,0.5866666666666667,0.06666666666666667,0.11333333333333333,0.21,0.7409372165180065 +500000,LAB058_B_EVM,0.84535,0.0,P0,300,0.272378247944396,6.843296999121639,5.221119119507653,12.713790275014736,16.28298648888772,0.7066666666666667,0.03,0.05333333333333334,0.12,0.7437189019014986 +500000,LAB058_B_EVM,0.84535,0.0,P1,300,-0.1853959422924522,3.7556175870851236,2.7119575458231404,7.171626684407676,9.822210132480768,0.5333333333333333,0.03666666666666667,0.07666666666666666,0.19666666666666666,0.7430911802243768 +500000,LAB058_B_EVM,0.84535,0.0,P2,300,0.6191216437284625,12.538628086983397,8.621184119885108,22.94127460721361,31.94353789959863,0.84,0.013333333333333334,0.04666666666666667,0.07,0.7511075380676591 +500000,LAB058_B_EVM,0.84535,0.0,P3,300,-0.07974965465851155,4.38577438545363,3.0589183058303724,8.525699205035307,9.996309450646605,0.6,0.04,0.07,0.15333333333333332,0.7432476074504546 +500000,LAB058_B_EVM,0.84535,0.25,P0,300,-0.39846863656260345,6.936993798049295,4.295433871610861,13.256375794358243,17.992983050159577,0.73,0.02666666666666667,0.04666666666666667,0.09666666666666666,0.7430984886917477 +500000,LAB058_B_EVM,0.84535,0.25,P1,300,-0.3372728213695377,4.049781173905561,2.56235878375057,8.4642480549454,10.348208669061407,0.5233333333333333,0.05,0.09666666666666666,0.18666666666666668,0.742567469159263 +500000,LAB058_B_EVM,0.84535,0.25,P2,300,-0.23872454936826903,12.151732861649839,7.949099324864463,23.49010619672682,29.399130427464144,0.8133333333333334,0.023333333333333334,0.06,0.07666666666666666,0.7495610594928303 +500000,LAB058_B_EVM,0.84535,0.25,P3,300,-0.20263992867641922,4.5080966374924465,2.9521389991432034,8.821396443565842,12.368893605439792,0.5666666666666667,0.05,0.10333333333333333,0.2,0.7427012156519661 +500000,LAB058_B_EVM,0.84535,0.5,P0,300,-0.5587657873250039,6.705125212416983,4.337753689451461,13.66848982224845,18.286574985553177,0.7133333333333334,0.01,0.05,0.10666666666666667,0.745130882853002 +500000,LAB058_B_EVM,0.84535,0.5,P1,300,-0.39199271161138044,3.762129219639765,2.552962032759932,7.524116084453883,9.730519546957394,0.5233333333333333,0.05333333333333334,0.10666666666666667,0.22666666666666666,0.7445657881286876 +500000,LAB058_B_EVM,0.84535,0.5,P2,300,0.7837222634376786,12.203083657406777,8.42018871326938,23.51683949145396,27.836854209073415,0.84,0.013333333333333334,0.03,0.06333333333333334,0.7524224371426574 +500000,LAB058_B_EVM,0.84535,0.5,P3,300,-0.6797930066850677,4.451280446184505,2.7950684092517406,8.296225646853278,13.072369789267931,0.5533333333333333,0.05333333333333334,0.1,0.18666666666666668,0.7447270870991817 +500000,LAB058_B_EVM,0.84535,1.0,P0,300,-0.19749655122649168,6.5274871774370755,4.363197947208203,12.575069263255129,18.043983735050613,0.6766666666666666,0.043333333333333335,0.07,0.13666666666666666,0.7466899413445817 +500000,LAB058_B_EVM,0.84535,1.0,P1,300,-0.005783354840477202,3.6426793732856373,2.2143091404349136,7.137312837833044,9.216680306948794,0.44666666666666666,0.05333333333333334,0.1,0.19666666666666666,0.7460272803642278 +500000,LAB058_B_EVM,0.84535,1.0,P2,300,-0.39085250811080624,12.653179739417885,8.3179219852094,25.442980586290954,31.940882807498003,0.8166666666666667,0.006666666666666667,0.04666666666666667,0.09,0.753693084074994 +500000,LAB058_B_EVM,0.84535,1.0,P3,300,-0.2235635970565556,4.181747062996724,2.6696560184357416,7.9425690205781,10.2469096046936,0.5433333333333333,0.05,0.1,0.2,0.7462046784546293 +500000,LAB058_B_EVM,0.84535,2.0,P0,300,0.5279494462437768,6.633052051242598,4.743660263888786,12.86036439828065,18.3389712067946,0.7533333333333333,0.02666666666666667,0.04,0.08666666666666667,0.7416988291919534 +500000,LAB058_B_EVM,0.84535,2.0,P1,300,0.1805378744429221,3.712136531413807,2.455173010360908,6.902318833957659,9.258404771182569,0.5033333333333333,0.05333333333333334,0.10666666666666667,0.20333333333333334,0.7411541159141763 +500000,LAB058_B_EVM,0.84535,2.0,P2,300,0.08655036851721472,12.536304774194734,8.74371369671973,24.660493827110606,32.46022382608285,0.8466666666666667,0.013333333333333334,0.02,0.06333333333333334,0.7490167538166046 +500000,LAB058_B_EVM,0.84535,2.0,P3,300,0.38340840619618083,4.528146779437369,3.1210237408119923,8.350202530646811,12.763058810071577,0.5866666666666667,0.07,0.11,0.20333333333333334,0.7413403798343513 +500000,LAB058_B_EVM,0.84535,5.0,P0,300,-0.3287617891615525,7.0589004089926775,4.308307011376538,14.056189940610459,18.079285126630765,0.6833333333333333,0.02666666666666667,0.08,0.14333333333333334,0.7443982595509906 +500000,LAB058_B_EVM,0.84535,5.0,P1,300,-0.004913188239170978,3.7921873599321088,2.438523183761134,7.506217629180869,9.54885441412075,0.5,0.06333333333333334,0.11333333333333333,0.23666666666666666,0.7437824925376901 +500000,LAB058_B_EVM,0.84535,5.0,P2,300,-0.45563711627431397,13.268833793814196,9.037750811833678,24.839404427849136,38.81429505058186,0.8666666666666667,0.016666666666666666,0.03,0.08333333333333333,0.7520027846106533 +500000,LAB058_B_EVM,0.84535,5.0,P3,300,-1.321165182278814,17.007174685047218,2.9982316050741513,8.985229020196108,12.224554595138448,0.58,0.05333333333333334,0.11666666666666667,0.19,0.7462930243470258 +500000,LAB058_B_EVM,0.84535,10.0,P0,300,0.08277224757947392,6.455828424117345,4.606893049866871,12.3417268554091,15.143175393697884,0.7066666666666667,0.03666666666666667,0.06333333333333334,0.12666666666666668,0.7456583711470456 +500000,LAB058_B_EVM,0.84535,10.0,P1,300,0.12655837520189275,3.6456474016683806,2.4358388347254247,6.966114305087162,10.436526372035285,0.5,0.07666666666666666,0.11666666666666667,0.25,0.7451294622069624 +500000,LAB058_B_EVM,0.84535,10.0,P2,300,-1.5659002932103003,11.604935573789366,8.017903602265099,22.12099069939824,26.54028860792483,0.8566666666666667,0.023333333333333334,0.03333333333333333,0.04666666666666667,0.7520835250115291 +500000,LAB058_B_EVM,0.84535,10.0,P3,300,1.195007499652665,16.804457989049794,2.8998167724527666,8.074836816697278,11.383843426253158,0.5966666666666667,0.056666666666666664,0.09,0.21,0.7478866482800567 +500000,LAB058_B_EVM,0.84535,20.0,P0,300,0.002282710072382906,6.909457160783215,4.969330016782248,12.829702575880843,17.84984687760765,0.7533333333333333,0.016666666666666666,0.043333333333333335,0.10333333333333333,0.7427238942057641 +500000,LAB058_B_EVM,0.84535,20.0,P1,300,0.0636680791465704,3.7505584403350847,2.5047631148585054,6.688728332742552,10.39432221350348,0.5233333333333333,0.03666666666666667,0.09333333333333334,0.2,0.742152968330001 +500000,LAB058_B_EVM,0.84535,20.0,P2,300,0.7736639928094108,12.076675017676733,8.741516435341984,23.612824736850154,28.357762061854555,0.8566666666666667,0.02,0.03,0.043333333333333335,0.7489397251510077 +500000,LAB058_B_EVM,0.84535,20.0,P3,300,0.12806143902729428,4.507156647056457,3.03225656687688,8.780586737210518,11.748594676028747,0.58,0.043333333333333335,0.09,0.19333333333333333,0.7422821381867188 +500000,LAB058_B_EVM,0.84535,100.0,P0,300,0.3588908667580037,7.211528957448166,4.998175294066392,14.366311780180565,16.509708888267866,0.7566666666666667,0.02,0.03666666666666667,0.08,0.7463914065418957 +500000,LAB058_B_EVM,0.84535,100.0,P1,300,0.1448171790421891,3.6299733569424366,2.54953634148999,7.438105749002398,8.881289028421191,0.5266666666666666,0.04666666666666667,0.11333333333333333,0.22333333333333333,0.7456993092865994 +500000,LAB058_B_EVM,0.84535,100.0,P2,300,1.54285884066143,11.747905063723158,7.536406931328287,22.88045567123965,30.33874664575071,0.8266666666666667,0.016666666666666666,0.03,0.08,0.7525788308306723 +500000,LAB058_B_EVM,0.84535,100.0,P3,300,0.17720134935331563,4.142834514845656,2.7763181641731904,8.561931350528344,9.791235623233316,0.5533333333333333,0.05333333333333334,0.12333333333333334,0.19333333333333333,0.7458920145712258 diff --git a/data/processed/lab059/synthetic_results.csv b/data/processed/lab059/synthetic_results.csv new file mode 100644 index 0000000..0680651 --- /dev/null +++ b/data/processed/lab059/synthetic_results.csv @@ -0,0 +1,25 @@ +symbol_rate,quality,target_evm_rms,method,trials,cfo_values,bias_hz,rmse_hz,median_abs_error_hz,p95_abs_error_hz,p99_abs_error_hz,catastrophic_error_rate,probability_abs_error_le_0p25_hz,probability_abs_error_le_0p5_hz,probability_abs_error_le_1p0_hz,validation_phase_rmse_rad +20000,LAB058_A_EVM,0.31739,P0,5100,17,-0.03994990706916153,35.27766452961887,0.11267197654994818,99.38625173694851,106.34545651090411,0.34647058823529414,0.643921568627451,0.6535294117647059,0.6535294117647059,0.7261254181729553 +20000,LAB058_A_EVM,0.31739,P1,5100,17,0.0008885471078995073,0.05694210824345046,0.03815117925418354,0.11063363868695754,0.14501118508960584,0.0,1.0,1.0,1.0,0.23064178973471747 +20000,LAB058_A_EVM,0.31739,P2,5100,17,0.001988038482725285,0.18418744251062372,0.12215923720830196,0.36075379706777216,0.47453741676652017,0.0,0.8231372549019608,0.9935294117647059,1.0,0.23407663541496893 +20000,LAB058_A_EVM,0.31739,P3,5100,17,0.0008031563449569883,0.05840036191732054,0.03955118489494858,0.11341770842686368,0.15124372519320092,0.0,1.0,1.0,1.0,0.2306551116111988 +20000,INTERMEDIATE_EVM,0.55,P0,5100,17,-0.016438006428522618,35.43683929034298,0.20009194018242737,100.74954199314566,107.89264988455928,0.3296078431372549,0.5664705882352942,0.6652941176470588,0.6703921568627451,0.8445548255499953 +20000,INTERMEDIATE_EVM,0.55,P1,5100,17,-0.0020946426691008124,0.0957624421078446,0.06350912858768698,0.1901454657377376,0.24578074270342898,0.0,0.9905882352941177,1.0,1.0,0.4412378828176002 +20000,INTERMEDIATE_EVM,0.55,P2,5100,17,0.006037261835378864,0.3180777143017349,0.21470755021954835,0.6200158671372041,0.7969293765980515,0.0,0.567843137254902,0.8841176470588236,0.9982352941176471,0.44669581880328485 +20000,INTERMEDIATE_EVM,0.55,P3,5100,17,-0.002416308397424423,0.10333416218255481,0.07048301756784267,0.20300057249194792,0.2632565055540736,0.0,0.9847058823529412,1.0,1.0,0.4412929666840979 +20000,LAB058_B_EVM,0.84535,P0,5100,17,-0.02487295673487596,35.53148619984433,0.32862427090475266,101.43123344158475,107.94186117186754,0.32,0.41352941176470587,0.6154901960784314,0.6790196078431373,1.0430413340458966 +20000,LAB058_B_EVM,0.84535,P1,5100,17,0.0011826215677020807,0.14651407576818676,0.09803260328097285,0.28537572073019823,0.3811773961719878,0.0,0.9145098039215687,0.9992156862745099,1.0,0.7413606374734285 +20000,LAB058_B_EVM,0.84535,P2,5100,17,0.0008314817399338177,0.48833634165135953,0.32478059797899206,0.9640636741241208,1.2526697998533654,0.0,0.4025490196078431,0.6947058823529412,0.9596078431372549,0.74862814469735 +20000,LAB058_B_EVM,0.84535,P3,5100,17,-0.005590240158082864,0.5201396504062407,0.11894627555568146,0.3430226441253915,0.4786715240391113,0.002156862745098039,0.8507843137254902,0.9915686274509804,0.9974509803921568,0.7428826884058787 +500000,LAB058_A_EVM,0.31739,P0,5100,17,-0.028324835474221908,2.253141535486236,1.4962503201559325,4.448489433622006,5.709437492053499,0.27725490196078434,0.08725490196078431,0.1676470588235294,0.34784313725490196,0.231339425193028 +500000,LAB058_A_EVM,0.31739,P1,5100,17,0.05429497252499488,1.3758457866823075,0.9250930671491767,2.7024857819222334,3.5664388844212724,0.07941176470588235,0.14901960784313725,0.28019607843137256,0.54,0.2311393421976552 +500000,LAB058_A_EVM,0.31739,P2,5100,17,0.06565713877478316,4.581561184769926,3.0883642545236056,8.953835433400844,11.96456273215203,0.5976470588235294,0.039411764705882354,0.08509803921568627,0.17450980392156862,0.2345544161089221 +500000,LAB058_A_EVM,0.31739,P3,5100,17,0.058842766466235895,1.4134247608333887,0.9614089281004776,2.7679878506095847,3.6337112005617693,0.0888235294117647,0.1411764705882353,0.2747058823529412,0.5180392156862745,0.23115195125818536 +500000,INTERMEDIATE_EVM,0.55,P0,5100,17,-0.03875761089802868,4.131625501040117,2.9042927999066057,7.9528339390408584,10.52341079713349,0.5666666666666667,0.05019607843137255,0.09411764705882353,0.1935294117647059,0.4421333889963128 +500000,INTERMEDIATE_EVM,0.55,P1,5100,17,0.06423845186681068,2.3913290252749078,1.6065121427546019,4.649532259708706,6.192878068670655,0.3092156862745098,0.08431372549019608,0.16607843137254902,0.32372549019607844,0.441761357535385 +500000,INTERMEDIATE_EVM,0.55,P2,5100,17,0.02004625787745806,7.921237841542093,5.269438855163791,15.620242877196675,20.258593678746344,0.756078431372549,0.02372549019607843,0.05274509803921568,0.10549019607843137,0.4472161493685728 +500000,INTERMEDIATE_EVM,0.55,P3,5100,17,0.04886503438637983,2.549592162835184,1.7274887723017696,5.021571593956331,6.353311747517625,0.3415686274509804,0.08686274509803922,0.16294117647058823,0.31019607843137254,0.4418171712060747 +500000,LAB058_B_EVM,0.84535,P0,5100,17,-0.018449630005399873,6.8080438723195575,4.64257978395003,13.265150787635067,17.80453591229988,0.7207843137254902,0.03058823529411765,0.058627450980392154,0.11607843137254902,0.7431007414530082 +500000,LAB058_B_EVM,0.84535,P1,5100,17,0.05043041270946037,3.727888844043392,2.4981252391550526,7.436680937825983,9.894508393786168,0.5098039215686274,0.05235294117647059,0.10470588235294118,0.21274509803921568,0.7424981320951237 +500000,LAB058_B_EVM,0.84535,P2,5100,17,0.07780133250091027,12.264121666056068,8.25551126333268,23.708553996717562,31.583472778910384,0.8311764705882353,0.01647058823529412,0.03666666666666667,0.07196078431372549,0.7498501168809314 +500000,LAB058_B_EVM,0.84535,P3,5100,17,0.049138012426324186,7.089259568773472,2.934776228989742,8.527851599718817,11.382887324913723,0.5794117647058824,0.049019607843137254,0.09607843137254903,0.18254901960784314,0.7429492477214338 diff --git a/docs/LABS_INDEX.md b/docs/LABS_INDEX.md index df1b4de..863a5b9 100644 --- a/docs/LABS_INDEX.md +++ b/docs/LABS_INDEX.md @@ -495,3 +495,26 @@ [JSON](../data/processed/lab058/summary.json), [CSV](../data/processed/lab058/segment_metrics.csv), [H(f)](../data/processed/lab058/channel_transfer.png). STOP; push не выполнялся. + +## Lab059 — пределы carrier recovery по одной преамбуле + +- **Запись 053; только сохранённые IQ, RF TX=0.** P0 baseline записан до P1–P3 + и численно воспроизвёл Lab057/Lab058. Активный P0 использует два блока BPSK² + по512 символов; ошибки B1/B2 +4,7307/+4,7608Гц дают SER52,4169%. +- **Лучший реальный результат P3:** после ограничения RAW-обработки только + преамбулой ошибки −0,1249/+0,3917Гц, средняя SER B 3,6170% против + whole-burst diagnostic3,4959%. A не ухудшена. +- **Предел устойчивости:** на synthetic500K/EVM0,84535 P1 имеет лучший RMSE + 3,728Гц, а P3 попадает в ±0,5Гц лишь в9,61% из5100 испытаний. AWGN CRLB + sanity check3,598Гц. Две реальные реализации недостаточны для устойчивого PASS. +- **Контроли:** Lab04736/36 у P0–P3; Lab0540/16 HEADER/FEC/CRC/packet у всех, + исторический `NOT_A, 0/16` сохранён. Независимо найденная RAW/DC-утечка + P1–P3 исправлена и закрыта регрессионным тестом; исходные IQ не изменились. +- **Вердикт:** `PREAMBLE_ONLY_INSUFFICIENT`. Следующий один кандидат — полностью + офлайн decision-directed carrier tracking через burst без payload truth и + изменения packet format. Физический предел B около3,50% SER остаётся. +- [Постановка](lab059_current_state.md), [отчёт](lab059_offline_result.md), + [JSON](../data/processed/lab059/summary.json), + [real CSV](../data/processed/lab059/real_results.csv), + [synthetic CSV](../data/processed/lab059/synthetic_results.csv). STOP; + Lab059 не коммитировалась, push не выполнялся, Lab060 не создана. diff --git a/docs/lab059_current_state.md b/docs/lab059_current_state.md new file mode 100644 index 0000000..e9f1621 --- /dev/null +++ b/docs/lab059_current_state.md @@ -0,0 +1,78 @@ +# Lab059 — границы и заранее зафиксированный план + +## Цель + +Lab059 проверяет только по сохранённым данным, достаточно ли 1280-символьной +преамбулы для оценки остаточного частотного сдвига на весь burst длительностью +около 0,2048 с. Штатный приёмник, формат пакета, преамбула, RRC, FEC и CRC не +изменяются. Оборудование не опрашивается, аппаратные команды не выполняются, +RF TX = 0. + +Исходный HEAD после отдельной фиксации Lab058: +`82f17499ace5e655991240348401b9700c7c3349`. + +## Зафиксированные методы + +- **P0 CURRENT.** Дословно воспроизводится активная ветвь штатного приёмника: + первые 1024 символа возводятся в квадрат, делятся на два блока по 512, + частота определяется по разности фаз центров блоков с делением на `4*pi`. + Последние 256 символов преамбулы в оценке частоты не участвуют. +- **P1 FULL PREAMBLE PHASE SLOPE.** Известные BPSK-знаки удаляются на всей + преамбуле. Фазы когерентных 20-символьных блоков аппроксимируются линейной + моделью с заранее заданными Huber-весами. +- **P2 SPLIT PREAMBLE.** TRAIN заранее фиксирован как индексы 32…607, + VALIDATION — 672…1247. Между ними оставлен разрыв 64 символа; по 32 символа + у начала и конца преамбулы не используются. Частота и фаза оцениваются только + по TRAIN, а VALIDATION проверяет экстраполяцию без переоценки. +- **P3 SQUARED FULL PREAMBLE.** Все 1280 символов возводятся в квадрат, + фаза 20-символьных блоков аппроксимируется той же устойчивой моделью, + частотный наклон делится на два из-за удвоения фазы BPSK. + +P0 сохраняет точную активную ветвь, включая штатное удаление среднего DC по +всему переданному в неё фрагменту: это часть воспроизводимого baseline, а не +новое решение. Для P1 и P3 удаление DC и RRC-фильтрация ограничены RAW-опорой +полной преамбулы; для P2 — RAW-опорой только TRAIN. Поэтому полезная часть RAW +не влияет на вход новых оценивателей. Все методы получают Fs, Rs, RRC, +номинальную несущую и уже найденное начало кандидата. Для изоляции carrier +recovery timing остаётся штатным P0 и не подбирается отдельно по методу. +Начальная фаза относится к `t=0`; центр символа `k` расположен в +`(k+0.5)/Rs`. + +Header, payload, magic, FEC и CRC не участвуют в оценке. Известные переданные +биты подключаются только после заморозки параметров для подсчёта ошибок, EVM и +matched/residual. Диагностическая оценка по всему burst служит только внешней +справочной величиной после расчёта preamble-only оценки. + +## Baseline и реальные данные + +До сравнения P1–P3 программа отдельно сохраняет P0 baseline для Lab056 +A1/B1/A2/B2, 16 кадров Lab054 и 36 ранее принятых кадров Lab047. Lab047 служит +положительным контролем. Исторический результат Lab054 остаётся `NOT_A, 0/16`. +Сохранённые raw-файлы открываются только для чтения; их SHA-256 проверяются до и +после расчёта. + +## Synthetic Monte Carlo + +Фиксированные частоты: `0, ±0.25, ±0.5, ±1, ±2, ±5, ±10, ±20, ±100 Гц`. +Проверяются 20 и 500 ксимв/с, Fs = 8 Мвыб/с, действующие RRC и преамбула 1280 +символов. Чистые точки решения формируются реальным TX/RX RRC-трактом, после +чего добавляется воспроизводимый комплексный гауссов шум на символьном выходе. +Уровни EVM заранее фиксированы: 0,317390 (качество A Lab058), 0,55 и 0,845350 +(среднее физическое качество B Lab058). Последний уровень не подгоняется по +исходу оценивателя. + +Для каждой комбинации используются 300 реализаций и фиксированная схема seed. +Катастрофическая ошибка заранее определена как `|frequency error| > 1/(2T)`, +то есть фазовый уход более 180° за `T = 0,2048 с`; порог равен 2,44140625 Гц. +Публикуются bias, RMSE, median/P95/P99 абсолютной ошибки, катастрофическая доля +и вероятности ошибки не более 0,25/0,5/1,0 Гц. + +## Критерий вывода + +`PREAMBLE_ONLY_SUFFICIENT` требует одновременно приблизить Lab056 B к +диагностическому результату, устойчиво пройти Monte Carlo, не ухудшить Lab056 A +и сохранить положительный контроль Lab047. Нестабильная субгерцовая точность +даёт `PREAMBLE_ONLY_MARGINAL`; принципиально недостаточная стабильность на +качестве B даёт `PREAMBLE_ONLY_INSUFFICIENT`. + +Lab059 не коммитируется. Push не выполняется. Lab060 автоматически не создаётся. diff --git a/docs/lab059_offline_result.md b/docs/lab059_offline_result.md new file mode 100644 index 0000000..95d3fdb --- /dev/null +++ b/docs/lab059_offline_result.md @@ -0,0 +1,187 @@ +# Lab059 — пределы восстановления несущей только по преамбуле + +## Что произошло простыми словами + +У штатного приёмника есть только 2,56 мс известной преамбулы, чтобы предсказать +фазу несущей на весь burst длительностью около 204,8 мс. Для ограничения ухода +фазы 30 градусами ошибка частоты должна быть не больше 0,4069 Гц. Штатная +двухблочная оценка на B1/B2 ошиблась примерно на +4,73/+4,76 Гц и поэтому +повернула решения почти на полный оборот к концу burst. + +Один из новых диагностических методов, P3, оказался очень удачным именно на +двух сохранённых B-сегментах: ошибки составили −0,125 и +0,392 Гц, а средняя +доля ошибочных символов упала с 52,4169% до 3,6170%. Это почти совпало с +диагностически достижимыми 3,4959% Lab058. Однако это две реализации, и они не +доказывают устойчивость. В 5100 синтетических испытаниях качества B P3 попадал +в ±0,5 Гц только в 9,61% случаев; лучший по RMSE метод P1 имел RMSE 3,728 Гц и +попадал в ±0,5 Гц в 10,47% случаев. + +Следовательно, текущая реализация P0 действительно слаба, и P3 может дать +хорошую начальную оценку. Одновременно 1280 символов при 500 ксимв/с и +наблюдаемом качестве B не дают надёжной субгерцовой точности сами по себе. +Для устойчивого результата требуется сопровождать фазу или частоту в ходе +самого пакета. Это задаёт следующий программный эксперимент. Физический предел B, +установленный Lab058 — около 3,50% ошибочных символов даже при диагностическом +выравнивании — остаётся отдельной задачей. + +## Границы и целостность + +Lab059 выполнялась только офлайн. HackRF Plus не опрашивался, аппаратные команды +и передачи не запускались, RF TX = 0. Прочитаны сохранённые Lab056, Lab054 и +Lab047. Размеры и SHA-256 пяти исходных IQ-файлов проверены до и после расчёта; +совпадение полное. Исторический результат Lab054 не изменён: `NOT_A, 0/16`. + +P0 baseline физически записан в `baseline_p0.json` до вычисления P1–P3. Он +воспроизвёл Lab057 для Lab054: максимальное расхождение CFO равно +`1,42e-13 Гц`, ошибки преамбулы `7767/7767`, HEADER/CRC `0/0`. Для четырёх +сегментов Lab056 различия P0 с Lab058 по CFO, BER и EVM находятся на уровне +округления floating point. + +Независимая проверка обнаружила, что первая реализация P1–P3 удаляла DC по +всему burst до выделения преамбулы. Из-за этого RAW полезной части менял вход +оценивателя, хотя правильные payload-биты ему не передавались. Исправленный +вариант ограничивает DC и FIR-опору P1/P3 полной преамбулой, а P2 — только +TRAIN. Отдельный тест изменяет RAW после преамбулы и подтверждает неизменность +P1–P3. P0 намеренно оставлен точным baseline со штатной глобальной обработкой. + +## Требуемая точность + +Использовано `delta_f_max = phase_limit / (360*T)`, где `T = 0,2048 с`. + +| Допустимый уход фазы | Максимальная ошибка частоты | +|---:|---:| +| 15° | 0,203451 Гц | +| 30° | 0,406901 Гц | +| 45° | 0,610352 Гц | +| 60° | 0,813802 Гц | +| 90° | 1,220703 Гц | + +Порог 0,4069 Гц — инженерная цель для 30°, а не новый обязательный порог +протокола. Катастрофическая ошибка Monte Carlo заранее определена как больше +2,441406 Гц, что соответствует уходу более 180° за burst. + +## Аудит штатной математики P0 + +Активный код получает точки после номинального переноса 50 кГц, RRC-фильтра и +штатного timing. Он возводит BPSK в квадрат, усредняет символы `[0,512)` и +`[512,1024)`, затем берёт разность фаз. Центры находятся в моментах `256/Rs` и +`768/Rs`, расстояние равно `512/Rs`. Формула имеет вид +`delta_phase / (4*pi*(512/Rs))`; `4*pi` правильно учитывает удвоение фазы после +BPSK². Компенсация использует отрицательный знак, gain относится к `t=0`, центр +символа k — к `(k+0.5)/Rs`. Повторной компенсации не обнаружено. + +Для 500 ксимв/с однозначный диапазон P0 равен ±244,140625 Гц, поэтому +4,7 Гц +не является алиасом. Главный практический недостаток — две фазовые точки без +избыточности; последние 256 символов преамбулы не участвуют в частотной оценке. +Для 20 ксимв/с диапазон P0 всего ±9,765625 Гц, поэтому synthetic ±20 и ±100 Гц +преднамеренно показывают алиас и увеличивают сводный RMSE P0. + +## Методы + +| Метод | Использованные символы | Оценка | Проверка | +|---|---:|---|---| +| P0 CURRENT | 1024 | два блока BPSK² по 512 | P2 VALIDATION только как диагностика | +| P1 FULL PHASE SLOPE | 1280 | Huber-fit фаз 64 despread-блоков по 20 | фиксированная преамбула | +| P2 SPLIT | 576 TRAIN | Huber-fit 36 despread-блоков по 16 | 576 VALIDATION без переоценки | +| P3 SQUARED FULL | 1280 | Huber-fit фаз 64 BPSK²-блоков по 20, наклон /2 | фиксированная преамбула | + +P2 использует TRAIN 32…607 и VALIDATION 672…1247; разбиение зафиксировано до +результата. Timing одинаков для P0–P3, чтобы эксперимент изолировал carrier +recovery. P1/P3 получают RAW-опору только полной преамбулы, P2 — только TRAIN. +Ни один новый оцениватель не получает header, magic, payload, JPEG, FEC или CRC. + +## Lab056 A/B + +Ошибки частоты ниже считаются относительно whole-burst diagnostic reference +Lab058, подключённого только после заморозки preamble-only оценки. + +| Метод | B1 ошибка CFO | B2 ошибка CFO | Средняя \|ошибка\| | B1 SER | B2 SER | Средняя SER B | +|---|---:|---:|---:|---:|---:|---:| +| P0 | +4,730655 Гц | +4,760847 Гц | 4,745751 Гц | 52,5218% | 52,3121% | 52,4169% | +| P1 | −3,318571 Гц | +2,179939 Гц | 2,749255 Гц | 61,2846% | 42,1677% | 51,7262% | +| P2 | −19,977856 Гц | +46,721234 Гц | 33,349545 Гц | 49,7775% | 50,2294% | 50,0035% | +| P3 | −0,124881 Гц | +0,391708 Гц | 0,258294 Гц | 3,3089% | 3,9250% | 3,6170% | + +P3 дал средние EVM 0,84378 и matched/residual +1,4944 дБ, практически совпав +с физической диагностикой Lab058 (0,84535 и +1,46485 дБ). Разница его средней +SER с нижней диагностической ссылкой составляет +0,1211 процентного пункта. + +Для A1/A2 все методы сохранили среднюю SER 0,01776%. P3 дал EVM 0,31283/0,32516 +и ошибки CFO −0,0171/+0,0935 Гц относительно diagnostic reference. P2 сильнее +ухудшил EVM A2 до 0,41255, что дополнительно показывает слабость короткого TRAIN. + +![Ошибка CFO](../data/processed/lab059/frequency_error_by_method.png) + +![Фазовый уход](../data/processed/lab059/burst_phase_drift.png) + +![Ошибки символов B](../data/processed/lab059/lab056_b_symbol_errors.png) + +## Synthetic Monte Carlo + +Чистая преамбула получена действующим TX/RX RRC-трактом при Fs 8 Мвыб/с: +400 отсчётов/символ и 4001 tap для 20 ксимв/с, 16 отсчётов/символ и 161 tap для +500 ксимв/с. После этого на выходе выбора символов добавлен комплексный AWGN с +заранее заданным EVM 0,317390, 0,55 или 0,845350. Поэтому тест учитывает реальный +RRC и дискретизацию в чистой форме, но не моделирует цветной или +частотно-селективный остаток реального OTA-тракта. + +Для каждой из 17 частот, каждого качества и каждой скорости выполнено 300 +реализаций. В строке качества B для 500 ксимв/с каждый метод имеет 5100 оценок. + +| Метод | Bias | RMSE | Median abs | P95 abs | P99 abs | Катастрофические | P(≤0,25 Гц) | P(≤0,5 Гц) | P(≤1 Гц) | +|---|---:|---:|---:|---:|---:|---:|---:|---:|---:| +| P0 | −0,018 Гц | 6,808 Гц | 4,643 Гц | 13,265 Гц | 17,805 Гц | 72,08% | 3,06% | 5,86% | 11,61% | +| P1 | +0,050 Гц | 3,728 Гц | 2,498 Гц | 7,437 Гц | 9,895 Гц | 50,98% | 5,24% | 10,47% | 21,27% | +| P2 | +0,078 Гц | 12,264 Гц | 8,256 Гц | 23,709 Гц | 31,583 Гц | 83,12% | 1,65% | 3,67% | 7,20% | +| P3 | +0,049 Гц | 7,089 Гц | 2,935 Гц | 8,528 Гц | 11,383 Гц | 57,94% | 4,90% | 9,61% | 18,25% | + +Модельная граница Крамера—Рао для известных символов, неизвестной постоянной +фазы и комплексного AWGN равна +`sqrt(6*EVM²*Rs² / ((2*pi)²*N*(N²−1)))`. При N=1280, Rs=500000 и +EVM=0,845350 она даёт СКО не меньше примерно 3,598 Гц. P1 с RMSE 3,728 Гц +близок к этому масштабу. Это model-dependent sanity check, а не утверждение, +что реальный OTA-остаток является AWGN. + +При 20 ксимв/с P1 на том же EVM получил RMSE 0,1465 Гц и 99,92% попаданий в +±0,5 Гц; длительность преамбулы там 64 мс. Разница показывает, что ограничение +500 ксимв/с связано прежде всего с 25-кратно более коротким временем наблюдения, +а не с ошибкой единиц или знака. + +![Распределение synthetic 500K](../data/processed/lab059/synthetic_500k_error_distribution.png) + +## Lab047 и Lab054 + +Положительный контроль Lab047 не ухудшился: P0, P1, P2 и P3 каждый получили +36/36 HEADER_ACCEPTED, 36/36 FEC_STARTED, 36/36 CRC_PASS и 36/36 PACKET_OUTPUT. +Во всех методах суммарно осталось две ошибки преамбулы и ноль ошибок заголовка. + +Lab054 осталась отрицательной для всех методов: + +| Метод | Ошибки преамбулы, сумма | Raw header errors | Voted header errors | HEADER_ACCEPTED | FEC_STARTED | CRC_PASS | PACKET_OUTPUT | +|---|---:|---:|---:|---:|---:|---:|---:| +| P0 | 7767 | 946 | 283 | 0/16 | 0/16 | 0/16 | 0/16 | +| P1 | 8264 | 1000 | 313 | 0/16 | 0/16 | 0/16 | 0/16 | +| P2 | 8871 | 1085 | 348 | 0/16 | 0/16 | 0/16 | 0/16 | +| P3 | 9020 | 1140 | 373 | 0/16 | 0/16 | 0/16 | 0/16 | + +Эти данные не превращают Lab054 в новый опыт и не меняют его исторический +вердикт. Плохое физическое качество Lab054 не исправляется заменой одной +оценки частоты. + +![Lab054](../data/processed/lab059/lab054_result_by_method.png) + +## Инженерный вывод + +`PREAMBLE_ONLY_INSUFFICIENT`. + +P3 показывает, что штатный P0 можно существенно улучшить на конкретной записи, +но ни один preamble-only метод не обеспечивает устойчивую ошибку менее 0,5 Гц +при качестве B. Следующий один шаг — полностью офлайн проверить +decision-directed carrier tracking на протяжении burst, используя решения BPSK +без знания правильного payload. Это сохраняет текущий формат пакета и позволяет +использовать P3 как начальную оценку. Costas loop остаётся разумной альтернативой, +но потребует отдельной настройки динамики петли. Periodic pilots дают явную опору, +однако меняют формат и добавляют overhead, поэтому их логично рассматривать позже. + +Lab058 commit: `82f17499ace5e655991240348401b9700c7c3349`. +Lab059 не коммитировалась. Push не выполнялся. RF TX = 0. Lab060 не создавалась. diff --git a/experiments/lab059_preamble_carrier_limits.py b/experiments/lab059_preamble_carrier_limits.py new file mode 100644 index 0000000..aa02089 --- /dev/null +++ b/experiments/lab059_preamble_carrier_limits.py @@ -0,0 +1,1056 @@ +"""Lab059: пределы preamble-only восстановления несущей по сохранённым IQ.""" + +from __future__ import annotations + +import csv +from dataclasses import asdict, dataclass, replace +import hashlib +import json +import math +from pathlib import Path +import sys +from typing import Iterable + +if __package__ in (None, ""): + sys.path.insert(0, str(Path(__file__).resolve().parents[1])) + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import numpy as np + +from experiments import lab054_hardware_control as lab054 +from experiments import lab057_symbol_diagnosis as lab057 +from experiments import lab058_abab_symbol_quality as lab058 + + +ROOT = Path(__file__).resolve().parents[1] +OUTPUT = ROOT / "data/processed/lab059" +METHODS = ("P0", "P1", "P2", "P3") +SAMPLE_RATE = 8_000_000 +PREAMBLE_SYMBOLS = 1280 +PROBE_SYMBOLS = 1424 +FULL_BLOCK_SYMBOLS = 20 +P2_BLOCK_SYMBOLS = 16 +P2_TRAIN = np.arange(32, 608) +P2_VALIDATION = np.arange(672, 1248) +BURST_DURATION_SECONDS = 0.2048 +MONTE_CARLO_TRIALS = 300 +SYNTHETIC_FREQUENCIES_HZ = np.array( + [-100, -20, -10, -5, -2, -1, -0.5, -0.25, 0, 0.25, 0.5, 1, 2, 5, 10, 20, 100], + dtype=np.float64, +) +QUALITY_LEVELS = ( + ("LAB058_A_EVM", 0.317390), + ("INTERMEDIATE_EVM", 0.55), + ("LAB058_B_EVM", 0.845350), +) +CATASTROPHIC_ERROR_HZ = 1.0 / (2.0 * BURST_DURATION_SECONDS) + + +@dataclass(frozen=True) +class CarrierEstimate: + """Оценка несущей с фазой, отнесённой к t=0.""" + + method: str + frequency_hz: float + gain: complex + estimation_symbols: int + estimation_duration_seconds: float + phase_fit_rmse_rad: float + mean_block_coherence: float + unambiguous_abs_hz: float + validation_phase_rmse_rad: float | None = None + validation_errors: int | None = None + validation_symbols: int | None = None + + +def serializable(value): + """Преобразовать numpy и complex в строгий JSON.""" + + if isinstance(value, dict): + return {str(key): serializable(item) for key, item in value.items()} + if isinstance(value, (list, tuple)): + return [serializable(item) for item in value] + if isinstance(value, np.ndarray): + return serializable(value.tolist()) + if isinstance(value, complex): + return {"real": float(value.real), "imag": float(value.imag)} + if isinstance(value, np.generic): + return serializable(value.item()) + return value + + +def write_json(path: Path, value) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text( + json.dumps(serializable(value), ensure_ascii=False, indent=2, allow_nan=False) + "\n", + encoding="utf-8", + ) + + +def sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + for block in iter(lambda: stream.read(1024 * 1024), b""): + digest.update(block) + return digest.hexdigest() + + +def phase_slope_to_hz(slope_rad_per_second: float, *, squared_bpsk: bool) -> float: + """Перевести наклон фазы в Гц с учётом удвоения при BPSK².""" + + divisor = 4.0 * np.pi if squared_bpsk else 2.0 * np.pi + return float(slope_rad_per_second / divisor) + + +def phase_drift_degrees(frequency_error_hz: float, duration_seconds: float) -> float: + """Накопленный фазовый уход от ошибки частоты.""" + + return float(360.0 * frequency_error_hz * duration_seconds) + + +def maximum_frequency_error_hz(phase_limit_degrees: float, duration_seconds: float) -> float: + """Допустимая ошибка частоты для заданного фазового ухода.""" + + return float(phase_limit_degrees / (360.0 * duration_seconds)) + + +def awgn_cfo_crlb_standard_deviation_hz( + evm_rms: float, + symbol_count: int, + symbol_rate: float, +) -> float: + """CRLB СКО CFO для известных символов, неизвестной фазы и complex AWGN. + + Здесь EVM² = E|n|²/|h|². Это модельная проверка масштаба, а не описание + частотно-селективного OTA-остатка. + """ + + variance = ( + 6.0 * evm_rms**2 * symbol_rate**2 + / ((2.0 * np.pi) ** 2 * symbol_count * (symbol_count**2 - 1)) + ) + return float(np.sqrt(variance)) + + +def _huber_phase_line( + block_values: np.ndarray, + block_times_seconds: np.ndarray, +) -> tuple[float, float, float, float]: + """Устойчиво оценить phase(t)=phi0+slope*t заранее фиксированным IRLS.""" + + values = np.asarray(block_values, dtype=np.complex128) + times = np.asarray(block_times_seconds, dtype=np.float64) + if values.ndim != 1 or times.ndim != 1 or len(values) != len(times) or len(values) < 3: + raise ValueError("Недостаточно фазовых блоков") + phases = np.unwrap(np.angle(values)) + base_weights = np.maximum(np.abs(values), 1e-12) + center_time = float(np.sum(base_weights * times) / np.sum(base_weights)) + centered = times - center_time + design = np.column_stack((np.ones(len(times)), centered)) + weights = base_weights.copy() + coefficients = np.zeros(2, dtype=np.float64) + for _iteration in range(12): + root = np.sqrt(weights / max(float(np.max(weights)), 1e-30)) + updated, *_unused = np.linalg.lstsq( + design * root[:, None], phases * root, rcond=None + ) + residual = phases - design @ updated + median = float(np.median(residual)) + scale = 1.4826 * float(np.median(np.abs(residual - median))) + 1e-9 + limit = 1.345 * scale + robust = np.ones_like(residual) + outside = np.abs(residual) > limit + robust[outside] = limit / np.abs(residual[outside]) + weights = base_weights * robust + if np.allclose(updated, coefficients, rtol=0.0, atol=1e-12): + coefficients = updated + break + coefficients = updated + residual = phases - design @ coefficients + rmse = float(np.sqrt(np.sum(base_weights * residual**2) / np.sum(base_weights))) + phase_at_zero = float(coefficients[0] - coefficients[1] * center_time) + coherence = float(abs(np.sum(values)) / max(float(np.sum(abs(values))), 1e-30)) + return phase_at_zero, float(coefficients[1]), rmse, coherence + + +def _block_values( + values: np.ndarray, + indexes: np.ndarray, + symbol_rate: int, + block_symbol_count: int, +) -> tuple[np.ndarray, np.ndarray]: + """Собрать неперекрывающиеся когерентные блоки по исходной шкале времени.""" + + values = np.asarray(values, dtype=np.complex128) + indexes = np.asarray(indexes, dtype=np.int64) + block_count = len(values) // block_symbol_count + if block_count < 3: + raise ValueError("Слишком мало когерентных блоков") + usable = block_count * block_symbol_count + reshaped_values = values[:usable].reshape(block_count, block_symbol_count) + reshaped_indexes = indexes[:usable].reshape(block_count, block_symbol_count) + return ( + np.mean(reshaped_values, axis=1), + np.mean((reshaped_indexes + 0.5) / symbol_rate, axis=1), + ) + + +def _gain_at_zero( + symbols: np.ndarray, + known_symbols: np.ndarray, + indexes: np.ndarray, + symbol_rate: int, + frequency_hz: float, +) -> complex: + times = (indexes + 0.5) / symbol_rate + return complex( + np.mean( + symbols * np.conj(known_symbols) * np.exp(-2j * np.pi * frequency_hz * times) + ) + ) + + +def _validation_metrics( + symbols: np.ndarray, + known_symbols: np.ndarray, + indexes: np.ndarray, + symbol_rate: int, + frequency_hz: float, + gain: complex, +) -> tuple[float, int]: + times = (indexes + 0.5) / symbol_rate + normalized = symbols * np.exp(-2j * np.pi * frequency_hz * times) / gain + phase_error = np.angle(normalized * np.conj(known_symbols)) + errors = int(np.count_nonzero((normalized.real >= 0) != (known_symbols.real >= 0))) + return float(np.sqrt(np.mean(phase_error**2))), errors + + +def estimate_carrier( + preamble_symbols: np.ndarray, + symbol_rate: int, + method: str, +) -> CarrierEstimate: + """Оценить частоту и фазу только по 1280 известным символам преамбулы.""" + + received = np.asarray(preamble_symbols, dtype=np.complex128) + known = lab057.EXPECTED.astype(np.complex128) + if received.shape != (PREAMBLE_SYMBOLS,): + raise ValueError("Оценивателю требуется ровно 1280 символов преамбулы") + all_indexes = np.arange(PREAMBLE_SYMBOLS, dtype=np.int64) + + if method == "P0": + statistics = lab057.squared_cfo_statistics(received, symbol_rate) + frequency = float(statistics["cfo_hz"]) + gain = _gain_at_zero(received, known, all_indexes, symbol_rate, frequency) + phase_rmse, validation_errors = _validation_metrics( + received[P2_VALIDATION], known[P2_VALIDATION], P2_VALIDATION, + symbol_rate, frequency, gain, + ) + blocks = (received[:1024] ** 2).reshape(2, 512).mean(axis=1) + return CarrierEstimate( + method, frequency, gain, 1024, 1024 / symbol_rate, + 0.0, float(abs(np.sum(blocks)) / max(float(np.sum(abs(blocks))), 1e-30)), + symbol_rate / 2048.0, phase_rmse, validation_errors, len(P2_VALIDATION), + ) + + if method == "P2": + indexes = P2_TRAIN + despread = received[indexes] * np.conj(known[indexes]) + blocks, times = _block_values(despread, indexes, symbol_rate, P2_BLOCK_SYMBOLS) + _phase0, slope, rmse, coherence = _huber_phase_line(blocks, times) + frequency = phase_slope_to_hz(slope, squared_bpsk=False) + gain = _gain_at_zero(received[indexes], known[indexes], indexes, symbol_rate, frequency) + phase_rmse, validation_errors = _validation_metrics( + received[P2_VALIDATION], known[P2_VALIDATION], P2_VALIDATION, + symbol_rate, frequency, gain, + ) + return CarrierEstimate( + method, frequency, gain, len(indexes), + (indexes[-1] - indexes[0] + 1) / symbol_rate, + rmse, coherence, symbol_rate / (2.0 * P2_BLOCK_SYMBOLS), + phase_rmse, validation_errors, len(P2_VALIDATION), + ) + + if method == "P1": + transformed = received * np.conj(known) + squared_bpsk = False + elif method == "P3": + transformed = received**2 + squared_bpsk = True + else: + raise ValueError(f"Неизвестный метод {method}") + + blocks, times = _block_values( + transformed, all_indexes, symbol_rate, FULL_BLOCK_SYMBOLS + ) + _phase0, slope, rmse, coherence = _huber_phase_line(blocks, times) + frequency = phase_slope_to_hz(slope, squared_bpsk=squared_bpsk) + gain = _gain_at_zero(received, known, all_indexes, symbol_rate, frequency) + phase_rmse, validation_errors = _validation_metrics( + received[P2_VALIDATION], known[P2_VALIDATION], P2_VALIDATION, + symbol_rate, frequency, gain, + ) + ambiguity_divisor = 4.0 if squared_bpsk else 2.0 + return CarrierEstimate( + method, frequency, gain, PREAMBLE_SYMBOLS, PREAMBLE_SYMBOLS / symbol_rate, + rmse, coherence, symbol_rate / (ambiguity_divisor * FULL_BLOCK_SYMBOLS), + phase_rmse, validation_errors, len(P2_VALIDATION), + ) + + +def estimate_from_burst( + burst_symbols: np.ndarray, + symbol_rate: int, + method: str, +) -> CarrierEstimate: + """Явная граница: оцениватель видит только prefix-преамбулу.""" + + return estimate_carrier(np.asarray(burst_symbols)[:PREAMBLE_SYMBOLS], symbol_rate, method) + + +def compensate( + symbols: np.ndarray, + symbol_rate: int, + estimate: CarrierEstimate, +) -> np.ndarray: + """Один раз компенсировать CFO и фазу по единой шкале времени.""" + + times = (np.arange(len(symbols), dtype=np.float64) + 0.5) / symbol_rate + return symbols * np.exp(-2j * np.pi * estimate.frequency_hz * times) / estimate.gain + + +def _extract_symbols( + matched: np.ndarray, + nominal: int, + timing_samples: int, + count: int, + samples_per_symbol: int, +) -> np.ndarray: + values = matched[ + nominal + timing_samples: + nominal + timing_samples + count * samples_per_symbol: + samples_per_symbol + ].astype(np.complex128) + if len(values) != count: + raise ValueError("Недостаточно отфильтрованных символов") + return values + + +def local_preamble_symbols( + raw_values: np.ndarray, + frontend: lab057.Frontend, + timing_samples: int, + selected_indexes: np.ndarray, +) -> np.ndarray: + """RRC-точки, чьи raw DC и FIR-опора ограничены выбранной преамбулой.""" + + indexes = np.asarray(selected_indexes, dtype=np.int64) + if indexes.ndim != 1 or not len(indexes) or indexes.min() < 0 or indexes.max() >= PREAMBLE_SYMBOLS: + raise ValueError("Некорректные индексы локальной преамбулы") + positions = ( + frontend.nominal + int(timing_samples) + + indexes * frontend.samples_per_symbol + ) + low = int(positions.min() - len(frontend.taps) + 1) + high = int(positions.max() + 1) + if low < 0 or high > len(raw_values): + raise ValueError("Сырая опора преамбулы выходит за окно") + local = np.asarray(raw_values[low:high], dtype=np.complex64) + rotation = lab057.packet.lab043._carrier_downconversion_vector(low, len(local)) + filtered = lab057.oaconvolve( + (local - np.mean(local)) * rotation, + frontend.taps, + mode="full", + ) + output = np.zeros(PREAMBLE_SYMBOLS, dtype=np.complex128) + output[indexes] = filtered[positions - low] + return output + + +def real_carrier_estimates( + raw_values: np.ndarray, + frontend: lab057.Frontend, + timing_samples: int, + stock_symbols: np.ndarray, + symbol_rate: int, + methods: Iterable[str], +) -> dict[str, CarrierEstimate]: + """P0 остаётся stock; P1–P3 не читают raw после своей преамбульной опоры.""" + + requested = tuple(methods) + estimates: dict[str, CarrierEstimate] = {} + if "P0" in requested: + estimates["P0"] = estimate_from_burst(stock_symbols, symbol_rate, "P0") + full_local = None + if any(method in requested for method in ("P1", "P2", "P3")): + full_local = local_preamble_symbols( + raw_values, frontend, timing_samples, np.arange(PREAMBLE_SYMBOLS) + ) + for method in ("P1", "P3"): + if method in requested: + estimates[method] = estimate_carrier(full_local, symbol_rate, method) + if "P2" in requested: + train_local = local_preamble_symbols( + raw_values, frontend, timing_samples, P2_TRAIN + ) + estimate = estimate_carrier(train_local, symbol_rate, "P2") + validation_rmse, validation_errors = _validation_metrics( + full_local[P2_VALIDATION], lab057.EXPECTED[P2_VALIDATION], P2_VALIDATION, + symbol_rate, estimate.frequency_hz, estimate.gain, + ) + estimates["P2"] = replace( + estimate, + validation_phase_rmse_rad=validation_rmse, + validation_errors=validation_errors, + ) + return {method: estimates[method] for method in requested} + + +def _estimate_dict(estimate: CarrierEstimate) -> dict: + return asdict(estimate) + + +def _lab056_inputs() -> tuple[list[dict], dict[str, float]]: + metadata = json.loads((ROOT / "data/raw/lab056/tx_metadata.json").read_text(encoding="utf-8")) + analysis = json.loads((ROOT / "data/processed/lab056/rf_analysis.json").read_text(encoding="utf-8")) + lab058_summary = json.loads((ROOT / "data/processed/lab058/summary.json").read_text(encoding="utf-8")) + measured = {row["label"]: row for row in analysis["segments"]} + oracle = {row["label"]: row["oracle"]["cfo_hz"] for row in lab058_summary["segments"]} + inputs = [] + for segment in metadata["segments"]: + inputs.append({ + "label": segment["label"], + "symbol_rate": segment["symbol_rate"], + "samples": segment["samples"], + "rx_start": measured[segment["label"]]["measurement"]["start"], + }) + return inputs, oracle + + +def analyze_lab056(methods: Iterable[str]) -> list[dict]: + """Применить оценки к полным A1/B1/A2/B2, truth только для метрик после fit.""" + + reader = lab058.Cs8File(ROOT / "data/raw/lab056/rx_stream.cs8") + inputs, oracle = _lab056_inputs() + rows: list[dict] = [] + for item in inputs: + rate = item["symbol_rate"] + expected = lab058.expected_symbols(rate) + values = reader.read(item["rx_start"], item["samples"]) + frontend = lab057.Frontend(rate) + stock = frontend.extract(values, len(expected)) + if not stock.passed: + raise RuntimeError(f"Lab056 {item['label']}: штатное извлечение {stock.reason}") + matched = frontend.filter(values) + symbols = _extract_symbols( + matched, frontend.nominal, stock.timing_offset_samples, + len(expected), frontend.samples_per_symbol, + ) + estimates = real_carrier_estimates( + values, frontend, stock.timing_offset_samples, symbols, rate, methods + ) + if "P0" in estimates: + if not np.isclose(estimates["P0"].frequency_hz, stock.carrier["cfo_hz"], atol=1e-10): + raise AssertionError("P0 Lab056 не воспроизвёл штатную оценку CFO") + selected = np.arange(len(expected)) >= PREAMBLE_SYMBOLS + for method, estimate in estimates.items(): + result = lab058.evaluate( + {"symbols": symbols, "h": estimate.gain, "cfo_hz": estimate.frequency_hz}, + expected, rate, selected, + ) + reference = float(oracle[item["label"]]) + rows.append({ + "dataset": "Lab056", + "label": item["label"], + "frame": None, + "symbol_rate": rate, + "method": method, + "timing_samples": int(stock.timing_offset_samples), + "frequency_hz": estimate.frequency_hz, + "diagnostic_reference_hz": reference, + "frequency_error_hz": estimate.frequency_hz - reference, + "estimation_symbols": estimate.estimation_symbols, + "estimation_duration_seconds": estimate.estimation_duration_seconds, + "phase_drift_to_burst_end_degrees": phase_drift_degrees( + estimate.frequency_hz - reference, BURST_DURATION_SECONDS + ), + "preamble_errors": int(np.count_nonzero( + (compensate(symbols[:PREAMBLE_SYMBOLS], rate, estimate).real >= 0) + != lab057.PREAMBLE + )), + "validation_errors": estimate.validation_errors, + "validation_symbols": estimate.validation_symbols, + "validation_phase_rmse_rad": estimate.validation_phase_rmse_rad, + "header_raw_errors": None, + "header_voted_errors": None, + "HEADER_ACCEPTED": None, + "FEC_STARTED": None, + "CRC_PASS": None, + "PACKET_OUTPUT": None, + "symbol_errors": result["errors"], + "symbols": result["symbols"], + "symbol_error_rate": result["ber"], + "evm_rms": result["evm_rms"], + "matched_residual_db": result["matched_residual_db"], + "estimate": _estimate_dict(estimate), + }) + return rows + + +def _packet_sources() -> tuple[list[dict], list[dict], lab058.Cs8File, lab058.Cs8File]: + mapping = json.loads((ROOT / "data/processed/lab057/candidate_mapping.json").read_text(encoding="utf-8")) + lab054_items = [row for row in mapping if row["true_start_frame"]] + audit = json.loads((ROOT / "data/processed/lab055/energy_audit_v2.json").read_text(encoding="utf-8")) + old_directory = Path(audit["experiments"]["Lab047"]["directory"]) + old = json.loads((old_directory / "independent_reprocess_result_corrected.json").read_text(encoding="utf-8")) + lab047_items = [row for row in old["strict"]["outcomes"] if row["accepted"]] + return ( + lab054_items, + lab047_items, + lab058.Cs8File(ROOT / "data/raw/lab054/rx_stream.cs8"), + lab058.Cs8File(old_directory / "rx_stream.cs8"), + ) + + +def _packet_rows( + reader: lab058.Cs8File, + start: int, + symbol_rate: int, + dataset: str, + frame_number: int, + expected_header: np.ndarray, + methods: Iterable[str], +) -> list[dict]: + frontend = lab057.Frontend(symbol_rate) + probe_count = PROBE_SYMBOLS + probe_values = reader.read(start, (probe_count + 42) * frontend.samples_per_symbol) + stock = frontend.extract(probe_values, probe_count) + if not stock.passed: + raise RuntimeError(f"{dataset} frame {frame_number}: {stock.reason}") + matched = frontend.filter(probe_values) + symbols = _extract_symbols( + matched, frontend.nominal, stock.timing_offset_samples, + probe_count, frontend.samples_per_symbol, + ) + estimates = real_carrier_estimates( + probe_values, frontend, stock.timing_offset_samples, symbols, symbol_rate, methods + ) + if "P0" in estimates and not np.isclose( + estimates["P0"].frequency_hz, stock.carrier["cfo_hz"], atol=1e-10 + ): + raise AssertionError(f"P0 {dataset} не воспроизвёл штатную оценку") + + rows = [] + for method, estimate in estimates.items(): + normalized_probe = compensate(symbols, symbol_rate, estimate) + header = lab057.physical.decode_phy_header_soft( + normalized_probe.real[PREAMBLE_SYMBOLS:PROBE_SYMBOLS] + ) + full_soft = normalized_probe.real[PREAMBLE_SYMBOLS:] + if header["passed"]: + packet_bytes = int(header["packet_bytes"]) + count = ( + PREAMBLE_SYMBOLS + 144 + + lab057.physical.conv.encoded_bit_count(packet_bytes * 8) + ) + full_values = reader.read(start, (count + 42) * frontend.samples_per_symbol) + if method == "P0": + full_stock = frontend.extract(full_values, count) + if not full_stock.passed: + raise RuntimeError(f"{dataset} P0 full extract: {full_stock.reason}") + full_soft = full_stock.normalized_real[PREAMBLE_SYMBOLS:] + else: + full_matched = frontend.filter(full_values) + full_symbols = _extract_symbols( + full_matched, frontend.nominal, stock.timing_offset_samples, + count, frontend.samples_per_symbol, + ) + full_soft = compensate(full_symbols, symbol_rate, estimate).real[PREAMBLE_SYMBOLS:] + decoded, _packet = lab057.decode_body(full_soft) + decisions = normalized_probe.real >= 0 + expected_header_bool = expected_header.astype(bool) + voted = normalized_probe.real[PREAMBLE_SYMBOLS:PROBE_SYMBOLS].reshape(48, 3).sum(axis=1) >= 0 + rows.append({ + "dataset": dataset, + "label": f"{dataset}_{frame_number:02d}", + "frame": frame_number, + "symbol_rate": symbol_rate, + "method": method, + "timing_samples": int(stock.timing_offset_samples), + "frequency_hz": estimate.frequency_hz, + "diagnostic_reference_hz": None, + "frequency_error_hz": None, + "estimation_symbols": estimate.estimation_symbols, + "estimation_duration_seconds": estimate.estimation_duration_seconds, + "phase_drift_to_burst_end_degrees": phase_drift_degrees( + estimate.frequency_hz, BURST_DURATION_SECONDS + ), + "preamble_errors": int(np.count_nonzero( + decisions[:PREAMBLE_SYMBOLS] != lab057.PREAMBLE + )), + "validation_errors": estimate.validation_errors, + "validation_symbols": estimate.validation_symbols, + "validation_phase_rmse_rad": estimate.validation_phase_rmse_rad, + "header_raw_errors": int(np.count_nonzero( + decisions[PREAMBLE_SYMBOLS:PROBE_SYMBOLS] != expected_header_bool + )), + "header_voted_errors": int(np.count_nonzero( + voted != expected_header_bool[::3] + )), + "HEADER_ACCEPTED": bool(decoded["HEADER_ACCEPTED"]), + "FEC_STARTED": bool(decoded["FEC_STARTED"]), + "CRC_PASS": decoded["CRC_RESULT"] == lab057.physical.CRC_PASS, + "PACKET_OUTPUT": bool(decoded["PACKET_OUTPUT"]), + "symbol_errors": None, + "symbols": None, + "symbol_error_rate": None, + "evm_rms": None, + "matched_residual_db": None, + "estimate": _estimate_dict(estimate), + }) + return rows + + +def analyze_packets(methods: Iterable[str]) -> list[dict]: + lab054_items, lab047_items, lab054_reader, lab047_reader = _packet_sources() + rows: list[dict] = [] + plans = lab054.plans() + for item in lab054_items: + frame = int(item["true_start_frame"]) + rows.extend(_packet_rows( + lab054_reader, int(item["refined_start"]), 500_000, "Lab054", frame, + plans[frame - 1].plan.phy_header_bits, methods, + )) + expected_header_047 = lab057.physical.encode_phy_header(268) + for frame, item in enumerate(lab047_items, 1): + rows.extend(_packet_rows( + lab047_reader, int(item["refined_start_sample"]), 20_000, "Lab047", frame, + expected_header_047, methods, + )) + return rows + + +def _clean_synthetic_preamble(symbol_rate: int) -> tuple[np.ndarray, dict]: + """Сформировать чистые точки через фактические Fs и TX/RX RRC.""" + + values, truth = lab057.synthetic_waveform( + symbol_rate, delay_symbols=0.0, cfo_hz=0.0, phase_rad=0.0, es_n0_db=None + ) + frontend = lab057.Frontend(symbol_rate) + probe = values[: (PROBE_SYMBOLS + 42) * frontend.samples_per_symbol] + stock = frontend.extract(probe, PROBE_SYMBOLS) + matched = frontend.filter(probe) + symbols = _extract_symbols( + matched, frontend.nominal, stock.timing_offset_samples, + PREAMBLE_SYMBOLS, frontend.samples_per_symbol, + ) + indexes = np.arange(PREAMBLE_SYMBOLS) + gain = _gain_at_zero(symbols, lab057.EXPECTED, indexes, symbol_rate, 0.0) + normalized = symbols / gain + return normalized, { + "sample_rate_hz": SAMPLE_RATE, + "symbol_rate": symbol_rate, + "samples_per_symbol": frontend.samples_per_symbol, + "rrc_taps": len(frontend.taps), + "tx_truth": truth, + "clean_evm_rms": float(np.sqrt(np.mean(abs(normalized - lab057.EXPECTED) ** 2))), + } + + +def synthetic_study() -> tuple[list[dict], list[dict], dict, dict]: + """Воспроизводимый Monte Carlo с фиксированными частотами, EVM и seed.""" + + aggregate_rows: list[dict] = [] + by_cfo_rows: list[dict] = [] + distributions: dict[tuple[int, str, str], np.ndarray] = {} + clean_metadata = {} + for symbol_rate in (20_000, 500_000): + clean, clean_info = _clean_synthetic_preamble(symbol_rate) + clean_metadata[str(symbol_rate)] = clean_info + times = (np.arange(PREAMBLE_SYMBOLS) + 0.5) / symbol_rate + for quality_index, (quality_name, evm_rms) in enumerate(QUALITY_LEVELS): + method_errors = {method: [] for method in METHODS} + method_validation = {method: [] for method in METHODS} + for frequency_index, true_frequency in enumerate(SYNTHETIC_FREQUENCIES_HZ): + seed = 59_000_000 + symbol_rate + quality_index * 100_000 + frequency_index * 1_000 + random_generator = np.random.default_rng(seed) + errors_by_method = {method: [] for method in METHODS} + validation_by_method = {method: [] for method in METHODS} + for _trial in range(MONTE_CARLO_TRIALS): + phase = random_generator.uniform(-np.pi, np.pi) + noise = evm_rms / np.sqrt(2.0) * ( + random_generator.normal(size=PREAMBLE_SYMBOLS) + + 1j * random_generator.normal(size=PREAMBLE_SYMBOLS) + ) + received = ( + clean * np.exp(1j * (phase + 2 * np.pi * true_frequency * times)) + + noise + ) + for method in METHODS: + estimate = estimate_carrier(received, symbol_rate, method) + error = estimate.frequency_hz - true_frequency + errors_by_method[method].append(error) + validation_by_method[method].append(estimate.validation_phase_rmse_rad) + for method in METHODS: + errors = np.asarray(errors_by_method[method], dtype=np.float64) + validation = np.asarray(validation_by_method[method], dtype=np.float64) + method_errors[method].extend(errors.tolist()) + method_validation[method].extend(validation.tolist()) + by_cfo_rows.append({ + "symbol_rate": symbol_rate, + "quality": quality_name, + "target_evm_rms": evm_rms, + "true_frequency_hz": float(true_frequency), + "method": method, + "trials": MONTE_CARLO_TRIALS, + **_error_statistics(errors), + "validation_phase_rmse_rad": float(np.mean(validation)), + }) + for method in METHODS: + errors = np.asarray(method_errors[method], dtype=np.float64) + validation = np.asarray(method_validation[method], dtype=np.float64) + distributions[(symbol_rate, quality_name, method)] = errors + aggregate_rows.append({ + "symbol_rate": symbol_rate, + "quality": quality_name, + "target_evm_rms": evm_rms, + "method": method, + "trials": len(errors), + "cfo_values": len(SYNTHETIC_FREQUENCIES_HZ), + **_error_statistics(errors), + "validation_phase_rmse_rad": float(np.mean(validation)), + }) + return aggregate_rows, by_cfo_rows, distributions, clean_metadata + + +def _error_statistics(errors: np.ndarray) -> dict: + absolute = np.abs(errors) + return { + "bias_hz": float(np.mean(errors)), + "rmse_hz": float(np.sqrt(np.mean(errors**2))), + "median_abs_error_hz": float(np.median(absolute)), + "p95_abs_error_hz": float(np.percentile(absolute, 95)), + "p99_abs_error_hz": float(np.percentile(absolute, 99)), + "catastrophic_error_rate": float(np.mean(absolute > CATASTROPHIC_ERROR_HZ)), + "probability_abs_error_le_0p25_hz": float(np.mean(absolute <= 0.25)), + "probability_abs_error_le_0p5_hz": float(np.mean(absolute <= 0.5)), + "probability_abs_error_le_1p0_hz": float(np.mean(absolute <= 1.0)), + } + + +def _csv_value(value): + if isinstance(value, complex): + return json.dumps(serializable(value), ensure_ascii=False) + if isinstance(value, (dict, list, tuple)): + return json.dumps(serializable(value), ensure_ascii=False, separators=(",", ":")) + return value + + +def write_csv(path: Path, rows: list[dict], exclude: tuple[str, ...] = ()) -> None: + fields: list[str] = [] + for row in rows: + fields.extend(key for key in row if key not in fields and key not in exclude) + with path.open("w", newline="", encoding="utf-8-sig") as stream: + writer = csv.DictWriter(stream, fieldnames=fields) + writer.writeheader() + for row in rows: + writer.writerow({key: _csv_value(row.get(key)) for key in fields}) + + +def summarize_real(rows: list[dict]) -> dict: + summary = {} + for dataset in ("Lab056", "Lab054", "Lab047"): + summary[dataset] = {} + for method in METHODS: + selected = [row for row in rows if row["dataset"] == dataset and row["method"] == method] + if not selected: + continue + if dataset == "Lab056": + b_rows = [row for row in selected if row["label"].startswith("B")] + a_rows = [row for row in selected if row["label"].startswith("A")] + + def mean_or_none(items: list[dict], key: str) -> float | None: + return float(np.mean([row[key] for row in items])) if items else None + + summary[dataset][method] = { + "segments": len(selected), + "mean_abs_frequency_error_hz": float(np.mean([abs(row["frequency_error_hz"]) for row in selected])), + "A_frequency_errors_hz": [row["frequency_error_hz"] for row in a_rows], + "B_frequency_errors_hz": [row["frequency_error_hz"] for row in b_rows], + "B_mean_abs_frequency_error_hz": ( + float(np.mean([abs(row["frequency_error_hz"]) for row in b_rows])) + if b_rows else None + ), + "B_mean_symbol_error_rate": mean_or_none(b_rows, "symbol_error_rate"), + "A_mean_symbol_error_rate": mean_or_none(a_rows, "symbol_error_rate"), + "B_mean_evm_rms": mean_or_none(b_rows, "evm_rms"), + "B_mean_matched_residual_db": mean_or_none(b_rows, "matched_residual_db"), + } + else: + summary[dataset][method] = { + "frames": len(selected), + "header_accepted": sum(bool(row["HEADER_ACCEPTED"]) for row in selected), + "fec_started": sum(bool(row["FEC_STARTED"]) for row in selected), + "crc_pass": sum(bool(row["CRC_PASS"]) for row in selected), + "packet_output": sum(bool(row["PACKET_OUTPUT"]) for row in selected), + "preamble_errors": sum(int(row["preamble_errors"]) for row in selected), + "header_raw_errors": sum(int(row["header_raw_errors"]) for row in selected), + "header_voted_errors": sum(int(row["header_voted_errors"]) for row in selected), + "mean_frequency_hz": float(np.mean([row["frequency_hz"] for row in selected])), + } + return summary + + +def phase_limit_table() -> list[dict]: + return [ + { + "phase_limit_degrees": limit, + "max_frequency_error_hz": maximum_frequency_error_hz(limit, BURST_DURATION_SECONDS), + } + for limit in (15, 30, 45, 60, 90) + ] + + +def mathematics_audit() -> dict: + return { + "active_input": "matched-filter symbol centers after nominal 50 kHz downconversion", + "p0_squares_bpsk": True, + "p0_symbol_ranges_half_open": [[0, 512], [512, 1024]], + "p0_discarded_preamble_symbols_half_open": [1024, 1280], + "block_center_symbol_times": [256.0, 768.0], + "center_distance_symbols": 512, + "phase_difference_formula": "angle(block1)-angle(block0), unwrapped", + "frequency_formula": "delta_phase/(4*pi*(512/Rs))", + "factor_two_after_squaring": True, + "compensation_sign": "negative complex exponential", + "reference_time": "gain phase at t=0; symbol k center at (k+0.5)/Rs", + "p0_unambiguous_abs_hz": {"20000": 20_000 / 2048, "500000": 500_000 / 2048}, + "double_compensation": False, + } + + +def choose_verdict(real_summary: dict, synthetic_rows: list[dict]) -> tuple[str, str, str]: + b_quality = { + row["method"]: row + for row in synthetic_rows + if row["symbol_rate"] == 500_000 and row["quality"] == "LAB058_B_EVM" + } + stable = { + method: b_quality[method]["probability_abs_error_le_0p5_hz"] >= 0.95 + for method in METHODS + } + best = min(METHODS, key=lambda method: real_summary["Lab056"][method]["B_mean_symbol_error_rate"]) + diagnostic = 0.03495896 + approaches_diagnostic = real_summary["Lab056"][best]["B_mean_symbol_error_rate"] <= diagnostic + 0.02 + lab047_preserved = real_summary["Lab047"][best]["packet_output"] == 36 + a_preserved = real_summary["Lab056"][best]["A_mean_symbol_error_rate"] <= 0.001 + if stable[best] and approaches_diagnostic and lab047_preserved and a_preserved: + return ( + "PREAMBLE_ONLY_SUFFICIENT", + f"{best} стабилен в Monte Carlo и сохраняет A/Lab047", + f"подготовить внедрение {best} в штатный receiver", + ) + if max(row["probability_abs_error_le_0p5_hz"] for row in b_quality.values()) >= 0.5: + return ( + "PREAMBLE_ONLY_MARGINAL", + "улучшение есть, но субгерцовая точность на качестве B достигается нестабильно", + "проверить decision-directed carrier tracking through burst", + ) + return ( + "PREAMBLE_ONLY_INSUFFICIENT", + "ни один preamble-only метод не обеспечивает устойчивую ошибку менее 0,5 Гц на качестве B", + "проверить decision-directed carrier tracking through burst", + ) + + +def make_plots( + real_rows: list[dict], + synthetic_rows: list[dict], + distributions: dict, +) -> None: + colors = {"P0": "#6c757d", "P1": "#2878b5", "P2": "#e17c05", "P3": "#54a24b"} + b_rows = [row for row in real_rows if row["dataset"] == "Lab056" and row["label"].startswith("B")] + + figure, axis = plt.subplots(figsize=(9, 5), constrained_layout=True) + x = np.arange(2) + width = 0.18 + for index, method in enumerate(METHODS): + selected = sorted((row for row in b_rows if row["method"] == method), key=lambda row: row["label"]) + axis.bar(x + (index - 1.5) * width, [row["frequency_error_hz"] for row in selected], width, + label=method, color=colors[method]) + axis.axhline(0, color="black", linewidth=0.8) + axis.set(xticks=x, xticklabels=["B1", "B2"], ylabel="Ошибка оценки, Гц", + title="Lab056 B: preamble-only CFO относительно whole-burst reference") + axis.legend(ncol=4); axis.grid(axis="y", alpha=0.25) + figure.savefig(OUTPUT / "frequency_error_by_method.png", dpi=160) + plt.close(figure) + + figure, axis = plt.subplots(figsize=(9, 5), constrained_layout=True) + bins = np.linspace(-35, 35, 141) + for method in METHODS: + values = distributions[(500_000, "LAB058_B_EVM", method)] + axis.hist(values, bins=bins, density=True, histtype="step", linewidth=1.5, + label=method, color=colors[method]) + axis.axvspan(-0.5, 0.5, color="green", alpha=0.12, label="±0,5 Гц") + axis.set(xlabel="Ошибка оценки частоты, Гц", ylabel="Плотность", + title="Synthetic 500 ксимв/с, качество Lab058 B") + axis.legend(); axis.grid(alpha=0.2) + figure.savefig(OUTPUT / "synthetic_500k_error_distribution.png", dpi=160) + plt.close(figure) + + figure, axis = plt.subplots(figsize=(9, 5), constrained_layout=True) + time = np.linspace(0, BURST_DURATION_SECONDS, 300) + for method in METHODS: + errors = [row["frequency_error_hz"] for row in b_rows if row["method"] == method] + axis.plot(time * 1000, 360 * float(np.mean(errors)) * time, + label=method, color=colors[method]) + for limit in (-30, 30): + axis.axhline(limit, color="black", linestyle="--", linewidth=0.8) + axis.set(xlabel="Время от начала burst, мс", ylabel="Фазовый уход, градусы", + title="Средняя ошибка B1/B2, экстраполированная на burst") + axis.legend(); axis.grid(alpha=0.25) + figure.savefig(OUTPUT / "burst_phase_drift.png", dpi=160) + plt.close(figure) + + figure, axis = plt.subplots(figsize=(9, 5), constrained_layout=True) + for index, method in enumerate(METHODS): + selected = sorted((row for row in b_rows if row["method"] == method), key=lambda row: row["label"]) + axis.bar(x + (index - 1.5) * width, [100 * row["symbol_error_rate"] for row in selected], width, + label=method, color=colors[method]) + axis.axhline(3.495896, color="black", linestyle="--", label="whole-burst reference") + axis.set(xticks=x, xticklabels=["B1", "B2"], ylabel="Ошибочные символы, %", + title="Lab056 B: полный burst после preamble-only оценки") + axis.legend(ncol=3); axis.grid(axis="y", alpha=0.25) + figure.savefig(OUTPUT / "lab056_b_symbol_errors.png", dpi=160) + plt.close(figure) + + lab054_rows = [row for row in real_rows if row["dataset"] == "Lab054"] + figure, axis = plt.subplots(figsize=(9, 5), constrained_layout=True) + accepted = [sum(row["HEADER_ACCEPTED"] for row in lab054_rows if row["method"] == method) for method in METHODS] + crc = [sum(row["CRC_PASS"] for row in lab054_rows if row["method"] == method) for method in METHODS] + positions = np.arange(len(METHODS)) + axis.bar(positions - 0.18, accepted, 0.36, label="HEADER_ACCEPTED") + axis.bar(positions + 0.18, crc, 0.36, label="CRC_PASS") + axis.set(xticks=positions, xticklabels=METHODS, ylabel="Кадры из 16", + title="Lab054: строгий результат по preamble-only методам", ylim=(0, 16.5)) + if max(accepted + crc) == 0: + axis.text(1.5, 8.0, "Все методы: 0/16 HEADER и CRC", ha="center", va="center") + axis.set_xlim(-0.6, 3.6) + axis.legend(); axis.grid(axis="y", alpha=0.25) + figure.savefig(OUTPUT / "lab054_result_by_method.png", dpi=160) + plt.close(figure) + + +def run_functional_tests() -> None: + """Быстрые проверки формул без файлов IQ.""" + + assert maximum_frequency_error_hz(30, BURST_DURATION_SECONDS) == 0.40690104166666663 + assert np.isclose(phase_slope_to_hz(2 * np.pi * 7, squared_bpsk=False), 7) + assert np.isclose(phase_slope_to_hz(4 * np.pi * -7, squared_bpsk=True), -7) + assert set(P2_TRAIN).isdisjoint(P2_VALIDATION) + assert len(P2_TRAIN) == len(P2_VALIDATION) == 576 + + +def main() -> None: + OUTPUT.mkdir(parents=True, exist_ok=True) + run_functional_tests() + + source_paths = [ + ROOT / "data/raw/lab056/rx_stream.cs8", + ROOT / "data/raw/lab056/tx_abab.cs8", + ROOT / "data/raw/lab054/rx_stream.cs8", + ROOT / "data/raw/lab054/tx_stream.cs8", + ] + audit = json.loads((ROOT / "data/processed/lab055/energy_audit_v2.json").read_text(encoding="utf-8")) + lab047_directory = Path(audit["experiments"]["Lab047"]["directory"]) + source_paths.append(lab047_directory / "rx_stream.cs8") + integrity_before = {str(path): {"bytes": path.stat().st_size, "sha256": sha256(path)} for path in source_paths} + + # P0 действительно завершается и сохраняется до вычисления P1/P2/P3. + baseline_rows = analyze_lab056(("P0",)) + analyze_packets(("P0",)) + baseline = { + "algorithm": "unchanged active CURRENT estimator", + "rows": baseline_rows, + "summary": summarize_real(baseline_rows), + "mathematics": mathematics_audit(), + } + write_json(OUTPUT / "baseline_p0.json", baseline) + + real_rows = analyze_lab056(METHODS) + analyze_packets(METHODS) + real_summary = summarize_real(real_rows) + synthetic_rows, by_cfo_rows, distributions, clean_metadata = synthetic_study() + verdict, reason, next_step = choose_verdict(real_summary, synthetic_rows) + integrity_after = {str(path): {"bytes": path.stat().st_size, "sha256": sha256(path)} for path in source_paths} + if integrity_before != integrity_after: + raise AssertionError("Сохранённые исходные IQ изменились") + + phase_limits = phase_limit_table() + summary = { + "status": "COMPLETED", + "lab058_commit": "82f17499ace5e655991240348401b9700c7c3349", + "rf_tx": 0, + "hardware_access": 0, + "preamble_symbols": PREAMBLE_SYMBOLS, + "preamble_duration_seconds": {"20000": PREAMBLE_SYMBOLS / 20_000, "500000": PREAMBLE_SYMBOLS / 500_000}, + "burst_duration_seconds": BURST_DURATION_SECONDS, + "phase_limits": phase_limits, + "catastrophic_error_threshold_hz": CATASTROPHIC_ERROR_HZ, + "mathematics": mathematics_audit(), + "p2_split": {"train_half_open": [32, 608], "validation_half_open": [672, 1248]}, + "real": real_summary, + "synthetic": { + "trials_per_frequency_quality_rate": MONTE_CARLO_TRIALS, + "frequency_values_hz": SYNTHETIC_FREQUENCIES_HZ, + "quality_levels": [{"name": name, "evm_rms": value} for name, value in QUALITY_LEVELS], + "clean_rrc_controls": clean_metadata, + "awgn_crlb_standard_deviation_hz": { + "formula": "sqrt(6*EVM^2*Rs^2/((2*pi)^2*N*(N^2-1)))", + "assumptions": "known symbols, unknown constant phase, complex AWGN", + "500000_lab058_b_evm": awgn_cfo_crlb_standard_deviation_hz( + 0.845350, PREAMBLE_SYMBOLS, 500_000 + ), + }, + "aggregate": synthetic_rows, + }, + "verdict": verdict, + "main_reason": reason, + "recommended_next_single_step": next_step, + "future_options": { + "decision_directed": "первый кандидат: не меняет формат и не знает payload truth", + "costas_loop": "альтернатива для слежения по всему burst; требует настройки полосы петли", + "periodic_pilots": "наиболее явная опора, но требует изменения формата и overhead", + }, + "physical_limit": { + "lab058_b_diagnostic_symbol_error_rate": 0.03495896, + "lab058_b_evm_rms": 0.845350, + "lab058_b_matched_residual_db": 1.464846, + "lab058_b_channel_ripple_db": 5.471382, + }, + "lab054_historical_result": "NOT_A, 0/16", + "lab059_commit": "NOT_PERFORMED", + "push": "NOT_PERFORMED", + "integrity": {"before": integrity_before, "after": integrity_after, "passed": True}, + } + write_csv(OUTPUT / "real_results.csv", real_rows, exclude=("estimate",)) + write_csv(OUTPUT / "synthetic_results.csv", synthetic_rows) + write_csv(OUTPUT / "synthetic_by_cfo.csv", by_cfo_rows) + write_json(OUTPUT / "summary.json", summary) + make_plots(real_rows, synthetic_rows, distributions) + print(json.dumps(serializable({ + "status": summary["status"], + "verdict": verdict, + "main_reason": reason, + "real": real_summary, + "synthetic_500k_b": [ + row for row in synthetic_rows + if row["symbol_rate"] == 500_000 and row["quality"] == "LAB058_B_EVM" + ], + "rf_tx": 0, + }), ensure_ascii=False, indent=2)) + + +if __name__ == "__main__": + main() diff --git a/tests/test_lab059_preamble_carrier_limits.py b/tests/test_lab059_preamble_carrier_limits.py new file mode 100644 index 0000000..0acfd46 --- /dev/null +++ b/tests/test_lab059_preamble_carrier_limits.py @@ -0,0 +1,155 @@ +"""Проверки математики и информационных границ Lab059.""" + +from __future__ import annotations + +import numpy as np +import pytest + +from experiments import lab059_preamble_carrier_limits as lab059 + + +@pytest.mark.parametrize("frequency_hz", [-100.0, -5.0, -0.25, 0.0, 0.5, 20.0]) +def test_phase_slope_conversion_sign_units_and_square_factor(frequency_hz): + ordinary = 2 * np.pi * frequency_hz + squared = 4 * np.pi * frequency_hz + assert lab059.phase_slope_to_hz(ordinary, squared_bpsk=False) == pytest.approx(frequency_hz) + assert lab059.phase_slope_to_hz(squared, squared_bpsk=True) == pytest.approx(frequency_hz) + if frequency_hz: + assert lab059.phase_slope_to_hz(squared, squared_bpsk=False) == pytest.approx(2 * frequency_hz) + + +def test_phase_drift_and_frequency_limit_are_inverse(): + for phase_limit in (15, 30, 45, 60, 90): + frequency = lab059.maximum_frequency_error_hz( + phase_limit, lab059.BURST_DURATION_SECONDS + ) + assert lab059.phase_drift_degrees( + frequency, lab059.BURST_DURATION_SECONDS + ) == pytest.approx(phase_limit) + assert lab059.maximum_frequency_error_hz(30, 0.2048) == pytest.approx(0.4069010416666667) + + +def test_awgn_crlb_scale_matches_rate_and_observed_b_quality(): + slow = lab059.awgn_cfo_crlb_standard_deviation_hz(0.845350, 1280, 20_000) + fast = lab059.awgn_cfo_crlb_standard_deviation_hz(0.845350, 1280, 500_000) + assert fast / slow == pytest.approx(25.0) + assert fast == pytest.approx(3.5982182026) + + +@pytest.mark.parametrize("symbol_rate", [20_000, 500_000]) +@pytest.mark.parametrize("method", lab059.METHODS) +def test_clean_known_cfo_reference_time_and_compensation(symbol_rate, method): + frequency_hz = 7.25 if symbol_rate == 20_000 else -37.5 + phase_at_zero = -0.73 + indexes = np.arange(lab059.PREAMBLE_SYMBOLS) + times = (indexes + 0.5) / symbol_rate + symbols = lab059.lab057.EXPECTED * np.exp( + 1j * (phase_at_zero + 2 * np.pi * frequency_hz * times) + ) + estimate = lab059.estimate_carrier(symbols, symbol_rate, method) + assert estimate.frequency_hz == pytest.approx(frequency_hz, abs=1e-8) + assert np.angle(estimate.gain * np.exp(-1j * phase_at_zero)) == pytest.approx(0.0, abs=1e-10) + corrected = lab059.compensate(symbols, symbol_rate, estimate) + assert np.max(abs(corrected - lab059.lab057.EXPECTED)) < 1e-9 + + +def test_p0_matches_active_two_block_formula_and_ambiguity(): + symbol_rate = 500_000 + frequency_hz = 41.25 + times = (np.arange(lab059.PREAMBLE_SYMBOLS) + 0.5) / symbol_rate + symbols = lab059.lab057.EXPECTED * np.exp(2j * np.pi * frequency_hz * times) + expected = lab059.lab057.squared_cfo_statistics(symbols, symbol_rate) + estimate = lab059.estimate_carrier(symbols, symbol_rate, "P0") + assert estimate.frequency_hz == pytest.approx(expected["cfo_hz"], abs=1e-12) + assert estimate.estimation_symbols == 1024 + assert estimate.unambiguous_abs_hz == pytest.approx(symbol_rate / 2048) + + +def test_p2_reference_time_is_global_burst_zero(): + symbol_rate = 500_000 + frequency_hz = -12.75 + phase_at_zero = 1.12 + times = (np.arange(lab059.PREAMBLE_SYMBOLS) + 0.5) / symbol_rate + symbols = lab059.lab057.EXPECTED * np.exp( + 1j * (phase_at_zero + 2 * np.pi * frequency_hz * times) + ) + estimate = lab059.estimate_carrier(symbols, symbol_rate, "P2") + assert estimate.frequency_hz == pytest.approx(frequency_hz, abs=1e-9) + assert np.angle(estimate.gain * np.exp(-1j * phase_at_zero)) == pytest.approx(0.0, abs=1e-10) + assert estimate.validation_errors == 0 + + +@pytest.mark.parametrize("method", lab059.METHODS) +def test_payload_truth_cannot_change_carrier_estimate(method): + symbol_rate = 500_000 + indexes = np.arange(4096) + expected = np.resize(lab059.lab057.EXPECTED, len(indexes)) + values = expected * np.exp(1j * (0.4 + 2 * np.pi * 3.5 * (indexes + 0.5) / symbol_rate)) + changed = values.copy() + random_generator = np.random.default_rng(5907) + changed[lab059.PREAMBLE_SYMBOLS:] = ( + random_generator.normal(size=len(changed) - lab059.PREAMBLE_SYMBOLS) + + 1j * random_generator.normal(size=len(changed) - lab059.PREAMBLE_SYMBOLS) + ) * 100 + first = lab059.estimate_from_burst(values, symbol_rate, method) + second = lab059.estimate_from_burst(changed, symbol_rate, method) + assert first == second + + +def test_raw_payload_cannot_change_new_preamble_only_estimates(): + symbol_rate = 500_000 + values, _truth = lab059.lab057.synthetic_waveform( + symbol_rate, delay_symbols=0.0, cfo_hz=3.5, phase_rad=0.4, es_n0_db=None + ) + frontend = lab059.lab057.Frontend(symbol_rate) + probe = values[: (4096 + 42) * frontend.samples_per_symbol] + stock = frontend.extract(probe, 4096) + matched = frontend.filter(probe) + symbols = lab059._extract_symbols( + matched, frontend.nominal, stock.timing_offset_samples, + 4096, frontend.samples_per_symbol, + ) + changed = probe.copy() + payload_start = ( + frontend.nominal + stock.timing_offset_samples + + lab059.PREAMBLE_SYMBOLS * frontend.samples_per_symbol + ) + changed[payload_start + len(frontend.taps):] += 10 + 7j + first = lab059.real_carrier_estimates( + probe, frontend, stock.timing_offset_samples, symbols, symbol_rate, ("P1", "P2", "P3") + ) + second = lab059.real_carrier_estimates( + changed, frontend, stock.timing_offset_samples, symbols, symbol_rate, ("P1", "P2", "P3") + ) + assert first == second + + +def test_phase_extrapolation_uses_one_compensation_only(): + symbol_rate = 500_000 + count = 102_400 + frequency_hz = 4.7 + phase = 0.8 + indexes = np.arange(count) + expected = np.resize(lab059.lab057.EXPECTED, count) + symbols = expected * np.exp(1j * (phase + 2 * np.pi * frequency_hz * (indexes + 0.5) / symbol_rate)) + estimate = lab059.estimate_from_burst(symbols, symbol_rate, "P1") + corrected = lab059.compensate(symbols, symbol_rate, estimate) + assert np.max(abs(corrected - expected)) < 1e-8 + + +def test_fixed_split_is_disjoint_and_not_result_dependent(): + assert len(lab059.P2_TRAIN) == len(lab059.P2_VALIDATION) == 576 + assert lab059.P2_TRAIN[0] == 32 and lab059.P2_TRAIN[-1] == 607 + assert lab059.P2_VALIDATION[0] == 672 and lab059.P2_VALIDATION[-1] == 1247 + assert set(lab059.P2_TRAIN).isdisjoint(lab059.P2_VALIDATION) + + +def test_partial_baseline_summary_does_not_create_nan_for_unrun_methods(): + row = { + "dataset": "Lab056", "label": "B1", "method": "P0", + "frequency_error_hz": 1.0, "symbol_error_rate": 0.5, + "evm_rms": 1.0, "matched_residual_db": 0.0, + } + summary = lab059.summarize_real([row]) + assert set(summary["Lab056"]) == {"P0"} + assert summary["Lab054"] == {} and summary["Lab047"] == {}