From e16ec23fdb57e95ade46e9b6abc215502fca0686 Mon Sep 17 00:00:00 2001 From: LittleSam129 <1qwe432@gmail.com> Date: Fri, 11 Sep 2026 13:08:32 +0300 Subject: [PATCH] Lab059: establish limits of preamble-only carrier estimation --- PROJECT_LOG.md | 46 + data/processed/lab059/baseline_p0.json | 2605 +++++++++++++++++ data/processed/lab059/burst_phase_drift.png | Bin 0 -> 71577 bytes .../lab059/frequency_error_by_method.png | Bin 0 -> 34099 bytes .../lab059/lab054_result_by_method.png | Bin 0 -> 37840 bytes .../lab059/lab056_b_symbol_errors.png | Bin 0 -> 37603 bytes data/processed/lab059/real_results.csv | 225 ++ data/processed/lab059/summary.json | 823 ++++++ .../synthetic_500k_error_distribution.png | Bin 0 -> 51112 bytes data/processed/lab059/synthetic_by_cfo.csv | 409 +++ data/processed/lab059/synthetic_results.csv | 25 + docs/LABS_INDEX.md | 23 + docs/lab059_current_state.md | 78 + docs/lab059_offline_result.md | 187 ++ experiments/lab059_preamble_carrier_limits.py | 1056 +++++++ tests/test_lab059_preamble_carrier_limits.py | 155 + 16 files changed, 5632 insertions(+) create mode 100644 data/processed/lab059/baseline_p0.json create mode 100644 data/processed/lab059/burst_phase_drift.png create mode 100644 data/processed/lab059/frequency_error_by_method.png create mode 100644 data/processed/lab059/lab054_result_by_method.png create mode 100644 data/processed/lab059/lab056_b_symbol_errors.png create mode 100644 data/processed/lab059/real_results.csv create mode 100644 data/processed/lab059/summary.json create mode 100644 data/processed/lab059/synthetic_500k_error_distribution.png create mode 100644 data/processed/lab059/synthetic_by_cfo.csv create mode 100644 data/processed/lab059/synthetic_results.csv create mode 100644 docs/lab059_current_state.md create mode 100644 docs/lab059_offline_result.md create mode 100644 experiments/lab059_preamble_carrier_limits.py create mode 100644 tests/test_lab059_preamble_carrier_limits.py 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 0000000000000000000000000000000000000000..3847e3c3d50465db60e63bc955af3f655febfce0 GIT binary patch literal 71577 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..ce0d47f02b63b01ba4e8156c3ea9995316087eab GIT binary patch literal 34099 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

OA6Pf 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 S?7v2TZMEV0Z&MAn|L|W{BZ;>F literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..40ff8314fcd692634c642c98f58c1c3ece2da1ef GIT binary patch literal 37840 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�JRJR+p9Cfc_M4^2@a(W4?$6p5P7r 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 u^6I-cwuv literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..617cf3d80953463f3294f149cb67e88d144a3112 GIT binary patch literal 51112 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 SqFu-jm2Yd@dVj+r@V@|w2gl_A literal 0 HcmV?d00001 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"] == {}