diff --git a/vna_system/binary_input/sweep_example/example.json b/vna_system/binary_input/sweep_example/example.json new file mode 100644 index 0000000..fe6dcf5 --- /dev/null +++ b/vna_system/binary_input/sweep_example/example.json @@ -0,0 +1,4007 @@ +{ + "sweep_number": 50, + "timestamp": 1758800474.7658994, + "points": [ + [ + 0.00011530049960128963, + -3.646380719146691e-05 + ], + [ + 0.0001547646097606048, + 1.3271062925923616e-05 + ], + [ + 9.263205720344558e-05, + -2.477719317539595e-05 + ], + [ + 0.00011107375758001581, + 2.327580477867741e-05 + ], + [ + 8.545240416424349e-05, + 6.452835350501118e-06 + ], + [ + 0.00015776556392665952, + 0.00010731354996096343 + ], + [ + 0.0001602150296093896, + 9.17403885978274e-05 + ], + [ + 0.0002642860636115074, + 4.546686977846548e-05 + ], + [ + 7.91085694800131e-05, + -7.171036122599617e-05 + ], + [ + 4.505639662966132e-05, + 6.207797559909523e-05 + ], + [ + 6.701951497234404e-05, + -0.00015854122466407716 + ], + [ + 8.323958900291473e-05, + -3.169844421790913e-05 + ], + [ + 0.00020263764599803835, + 1.664467890805099e-05 + ], + [ + 2.953433431684971e-05, + -4.510977305471897e-06 + ], + [ + 3.887499769916758e-05, + -1.339894879492931e-05 + ], + [ + 0.00015488159260712564, + -5.412819155026227e-05 + ], + [ + -6.463602039730176e-05, + -5.9493289882084355e-05 + ], + [ + 0.000113986614451278, + -6.742681307514431e-06 + ], + [ + 0.00017253785335924476, + 1.4293553249444813e-05 + ], + [ + 5.319682531990111e-05, + -1.1635373084573075e-05 + ], + [ + 3.739305611816235e-05, + 0.00011188806820427999 + ], + [ + 5.39939574082382e-05, + 9.991689148591831e-05 + ], + [ + 0.00012238188355695456, + 0.00012132679694332182 + ], + [ + -8.157116099027917e-05, + -2.8022082915413193e-05 + ], + [ + 5.6301378208445385e-05, + 8.282306953333318e-05 + ], + [ + -5.605917249340564e-05, + 2.798883360810578e-05 + ], + [ + 2.8578091587405652e-05, + -5.657008659909479e-05 + ], + [ + 0.00010246937745250762, + 1.0899844710365869e-05 + ], + [ + 8.073562639765441e-05, + -5.41983827133663e-05 + ], + [ + 1.0439671314088628e-05, + 3.641795046860352e-05 + ], + [ + 7.047240796964616e-05, + 0.00012107361544622108 + ], + [ + 3.858578929794021e-05, + 7.677506073378026e-05 + ], + [ + 0.00023057725047692657, + 4.4042888475814834e-05 + ], + [ + 8.056355000007898e-05, + 1.0444839972478803e-05 + ], + [ + 0.00010464256774866953, + -3.210046634194441e-05 + ], + [ + 0.00012366415467113256, + 0.00011096092202933505 + ], + [ + 0.00030877735116519034, + -5.120248533785343e-05 + ], + [ + 5.2395964303286746e-05, + -0.00013780749577563256 + ], + [ + 7.942825322970748e-05, + 0.000163398843142204 + ], + [ + -5.425828476290917e-06, + -0.00013761773880105466 + ], + [ + 6.601081986445934e-05, + 1.7684556951280683e-05 + ], + [ + 0.0002076589153148234, + -7.526911940658465e-05 + ], + [ + 0.00011178779823239893, + -0.00019154345500282943 + ], + [ + 0.00014221442688722163, + 2.6556049306236673e-06 + ], + [ + 0.00011995705426670611, + 3.331583502586e-05 + ], + [ + 6.02799846092239e-05, + 0.0001587715814821422 + ], + [ + 0.00014022371033206582, + -4.52821514045354e-05 + ], + [ + -6.707726424792781e-05, + 0.0001234556402778253 + ], + [ + -2.0539739125524648e-05, + -1.003048600978218e-05 + ], + [ + 8.99730293895118e-05, + -3.872895467793569e-05 + ], + [ + 6.872956873849034e-05, + -9.829103510128334e-05 + ], + [ + 0.00020777733880095184, + 0.00012431851064320654 + ], + [ + 7.640158582944423e-05, + -0.00012750321184284985 + ], + [ + 0.0001242409780388698, + -8.134636300383136e-05 + ], + [ + 0.00021889095660299063, + -8.853993494994938e-05 + ], + [ + 0.0002522641443647444, + -5.046409114584094e-06 + ], + [ + 0.00010959948849631473, + -3.6941724829375744e-05 + ], + [ + 0.00011368638661224395, + -0.00011237056605750695 + ], + [ + 5.118840272189118e-05, + -0.00011314774747006595 + ], + [ + -3.116794323432259e-05, + -0.00023659651924390346 + ], + [ + 3.9078135159797966e-05, + -8.521152631146833e-05 + ], + [ + 9.341181430500001e-05, + -1.4175070646160748e-05 + ], + [ + 7.655985973542556e-05, + -6.260118243517354e-05 + ], + [ + -8.355620229849592e-05, + -0.0001345423806924373 + ], + [ + -1.699167478363961e-05, + -8.18747648736462e-05 + ], + [ + -7.097581601556158e-06, + -9.349693573312834e-05 + ], + [ + -0.00011157570406794548, + 7.546567940153182e-05 + ], + [ + 0.00011757006723200902, + 8.815102046355605e-05 + ], + [ + 4.288386116968468e-05, + -6.211375148268417e-05 + ], + [ + 0.00015164280193857849, + 0.00011065861326642334 + ], + [ + 0.00017845831462182105, + -6.242457311600447e-05 + ], + [ + -4.0081871702568606e-05, + 7.9968391219154e-05 + ], + [ + 0.00020363536896184087, + 0.00010864450450753793 + ], + [ + 9.412787767359987e-05, + 2.4890321583370678e-05 + ], + [ + 0.0001409673859598115, + -0.000168627651873976 + ], + [ + 0.0002470679464749992, + 4.5157226850278676e-05 + ], + [ + 0.00023180317657534033, + 3.497389116091654e-05 + ], + [ + 1.4714189092046581e-05, + -6.726715218974277e-05 + ], + [ + -4.945691398461349e-05, + -5.4924763389863074e-05 + ], + [ + 0.00018736059428192675, + 6.285002746153623e-05 + ], + [ + 0.0003565224469639361, + 0.00010498626943444833 + ], + [ + 0.0001742645399644971, + 0.0002002005639951676 + ], + [ + 0.00017189359641633928, + 7.729716890025884e-05 + ], + [ + 0.00023148072068579495, + -0.00011803050438174978 + ], + [ + 0.00011229751544306055, + 3.956279397243634e-05 + ], + [ + 0.00027033762307837605, + 8.722456550458446e-05 + ], + [ + 0.00012663287634495646, + -8.020726090762764e-05 + ], + [ + 0.00023095674987416714, + -7.550472219008952e-05 + ], + [ + 0.00012767792213708162, + 0.00015305615670513362 + ], + [ + 0.0002965192834381014, + 6.193531589815393e-05 + ], + [ + 0.00021775501954834908, + 3.548544555087574e-05 + ], + [ + 0.00012114409764762968, + -1.0841761650226545e-05 + ], + [ + 0.00024530437076464295, + 1.4345293493533973e-05 + ], + [ + 0.000253668607911095, + -7.272363291122019e-05 + ], + [ + 0.0002602151071187109, + -3.1481315090786666e-05 + ], + [ + 0.00017305508663412184, + -0.00023558063548989594 + ], + [ + 1.509689445811091e-05, + -3.079148882534355e-05 + ], + [ + 0.00021803467825520784, + -6.636665784753859e-05 + ], + [ + 0.0001543516991659999, + -9.043898899108171e-05 + ], + [ + 0.00015458140114787966, + 4.951149458065629e-05 + ], + [ + 8.351831638719887e-05, + -3.882740929839201e-05 + ], + [ + 0.00012741083628498018, + -0.00015264008834492415 + ], + [ + 0.0002785071555990726, + -0.00013357537682168186 + ], + [ + 0.00021723359532188624, + -3.847144398605451e-05 + ], + [ + 3.5343268791621085e-06, + -9.88701794994995e-05 + ], + [ + 0.0001632142229937017, + 4.524778705672361e-05 + ], + [ + 3.229347385058645e-06, + 2.4844708605087362e-05 + ], + [ + 9.396403038408607e-05, + -0.00014346373791340739 + ], + [ + 0.000175290580955334, + -6.981052592891501e-06 + ], + [ + 0.0001457369071431458, + -0.00017897720681503415 + ], + [ + 8.667835936648771e-05, + 8.403304673265666e-05 + ], + [ + 0.00012577864981722087, + -7.381828618235886e-05 + ], + [ + 0.00011330959387123585, + -0.0001598932285560295 + ], + [ + 2.639456397446338e-05, + -0.00011582735169213265 + ], + [ + 0.00028204743284732103, + -0.00010128250141860917 + ], + [ + 8.45097383717075e-06, + -0.00010852538980543613 + ], + [ + -0.0001335698034381494, + -0.00014033292245585471 + ], + [ + -4.3498068407643586e-05, + -0.00023364339722320437 + ], + [ + -2.0919278540532105e-05, + -0.00011110940249636769 + ], + [ + 0.0001884332305053249, + -0.0001067068733391352 + ], + [ + 8.374391472898424e-05, + -0.00031674097408540547 + ], + [ + -8.874786726664752e-05, + -8.052795601543039e-05 + ], + [ + -0.00017662654863670468, + 2.2809538222645642e-06 + ], + [ + 2.3111848349799402e-05, + -0.00018632065621204674 + ], + [ + 3.546266452758573e-05, + -0.00014216815179679543 + ], + [ + -2.508251327526523e-06, + -5.4075575462775305e-05 + ], + [ + -8.307464304380119e-05, + -3.118084714515135e-05 + ], + [ + -2.7725989639293402e-05, + -8.442046237178147e-05 + ], + [ + 1.1974833796557505e-05, + -5.85914749535732e-05 + ], + [ + 3.461955930106342e-05, + 8.591904770582914e-05 + ], + [ + 3.0898398108547553e-05, + -0.00018044738681055605 + ], + [ + -0.00011867046123370528, + -0.0001230950583703816 + ], + [ + -2.6044470359920524e-05, + 6.846272299299017e-05 + ], + [ + -0.00012131969560869038, + 2.707455678319093e-05 + ], + [ + -0.00015011972573120147, + -3.8763198972446844e-05 + ], + [ + -5.923795833950862e-05, + 1.570347376400605e-05 + ], + [ + -0.00012484152102842927, + 8.253673149738461e-05 + ], + [ + 7.351665408350527e-05, + -1.6273543224087916e-06 + ], + [ + -0.00018924102187156677, + 1.6522883015568368e-05 + ], + [ + -0.00012528114893939346, + 0.00011369791172910482 + ], + [ + -0.00013341690646484494, + 0.00010240166011499241 + ], + [ + -8.947827154770494e-05, + 0.00024297159689012915 + ], + [ + 9.24638588912785e-05, + 0.00013230196782387793 + ], + [ + -1.5816580344107933e-05, + 5.821174636366777e-05 + ], + [ + -9.470982331549749e-05, + 8.05352465249598e-05 + ], + [ + -5.24154347658623e-05, + 0.00020531495101749897 + ], + [ + -5.4335261665983126e-05, + 6.532522093039006e-05 + ], + [ + -0.00016835449787322432, + 2.5252777049900033e-05 + ], + [ + -1.930291546159424e-05, + 0.0001391541154589504 + ], + [ + 5.5970729590626433e-05, + 0.0002556243271101266 + ], + [ + 5.433190381154418e-05, + 0.0003195074968971312 + ], + [ + 2.2606749553233385e-05, + 0.0001360370370093733 + ], + [ + 1.2206664905534126e-05, + 0.00023173201770987362 + ], + [ + 0.0001417613384546712, + 0.0003469166695140302 + ], + [ + 0.00017462001414969563, + 0.0003287328581791371 + ], + [ + 5.316428723745048e-05, + 0.00043166466639377177 + ], + [ + 0.00027434530784375966, + 0.00025074571021832526 + ], + [ + 0.0001225324667757377, + 0.00021164611098356545 + ], + [ + 0.0001507347187725827, + 0.0003471960953902453 + ], + [ + 0.00017334529547952116, + 0.0003274360788054764 + ], + [ + 5.844273982802406e-05, + 0.00028924093930982053 + ], + [ + 8.072974742390215e-05, + 0.00044660980347543955 + ], + [ + 0.0001780718012014404, + 0.0004640214319806546 + ], + [ + 9.189418778987601e-05, + 0.0004889767151325941 + ], + [ + 0.00033719840575940907, + 0.0005435643834061921 + ], + [ + 0.0003147540846839547, + 0.0005612726672552526 + ], + [ + 0.0002694925351534039, + 0.0006687808781862259 + ], + [ + 0.00048392321332357824, + 0.0006170335109345615 + ], + [ + 0.0005186388734728098, + 0.0006197305046953261 + ], + [ + 0.0008242904441431165, + 0.0007194650243036449 + ], + [ + 0.0008652667747810483, + 0.0008114285301417112 + ], + [ + 0.0010292009683325887, + 0.0006062138127163053 + ], + [ + 0.0014150794595479965, + 0.0004557458159979433 + ], + [ + 0.0015624177176505327, + 0.00021975468553137034 + ], + [ + 0.0017702683107927442, + -0.0002415591588942334 + ], + [ + 0.0016638068482279778, + -0.0006321680848486722 + ], + [ + 0.0014114441582933068, + -0.0010435397271066904 + ], + [ + 0.0010857089655473828, + -0.0011651086388155818 + ], + [ + 0.0007056377362459898, + -0.0011386532569304109 + ], + [ + 0.0004612570919562131, + -0.0011735272128134966 + ], + [ + 0.0003479450533632189, + -0.0010133126052096486 + ], + [ + 0.00012721327948383987, + -0.0010257114190608263 + ], + [ + 0.00019056674500461668, + -0.0008295546867884696 + ], + [ + -4.8703917855164036e-05, + -0.0008259104215539992 + ], + [ + -9.180213965009898e-05, + -0.000753801956307143 + ], + [ + -1.9090150090050884e-05, + -0.0005654814885929227 + ], + [ + -0.0002226837386842817, + -0.0005469375173561275 + ], + [ + -0.00018615536100696772, + -0.0005543736042454839 + ], + [ + -0.00010507548722671345, + -0.0005314997397363186 + ], + [ + -0.00024025572929531336, + -0.0005440686363726854 + ], + [ + -0.00011270276445429772, + -0.0003774442011490464 + ], + [ + -0.00019747664919123054, + -0.0005275770672596991 + ], + [ + -9.04357511899434e-05, + -0.0002752280270215124 + ], + [ + -0.00024884569575078785, + -0.0001886969112092629 + ], + [ + -0.00023473045439459383, + -0.0002085089508909732 + ], + [ + -0.00026358856121078134, + -0.00021613620629068464 + ], + [ + -0.00011553957301657647, + -0.00013244515866972506 + ], + [ + -0.00011890615860465914, + -0.00017041021783370525 + ], + [ + -7.632752385688946e-05, + -0.00021375773940235376 + ], + [ + -0.00016474809672217816, + -9.794427751330659e-05 + ], + [ + 6.731947451044107e-06, + -9.324418351752684e-05 + ], + [ + 0.00017705689242575318, + -0.00020848153508268297 + ], + [ + 0.0002813788305502385, + -8.620354492450133e-05 + ], + [ + 0.0002434320776956156, + -0.0004743700847029686 + ], + [ + 0.00018576954607851803, + -0.0005814784090034664 + ], + [ + -6.707974534947425e-05, + -0.0006593560683541 + ], + [ + -0.00034505678922869265, + -0.0005284716025926173 + ], + [ + -0.0004481654323171824, + -0.0004911813302896917 + ], + [ + -0.0005259643658064306, + -0.00040889394585974514 + ], + [ + -0.00045516638783738017, + -0.0002692798734642565 + ], + [ + -0.0005364666576497257, + -0.000213407794944942 + ], + [ + -0.00043520060717128217, + 1.3447409401123878e-05 + ], + [ + -0.0004069422429893166, + 1.1993941370747052e-05 + ], + [ + -0.0005096862441860139, + 1.3433144886221271e-05 + ], + [ + -0.0006096059223636985, + 3.163456858601421e-05 + ], + [ + -0.0005536325625143945, + 0.00015425989113282412 + ], + [ + -0.0005291858105920255, + 7.437691238010302e-05 + ], + [ + -0.0005320590571500361, + 0.00012662712833844125 + ], + [ + -0.0005198814906179905, + 0.0003774277865886688 + ], + [ + -0.00033146710484288633, + 0.00021767219004686922 + ], + [ + -0.0003887157654389739, + 0.00022123446979094297 + ], + [ + -0.0004434663860592991, + 0.00026239335420541465 + ], + [ + -0.0002620837767608464, + 0.0003385671298019588 + ], + [ + -0.00028471433324739337, + 0.00023729715030640364 + ], + [ + -0.0002640082675497979, + 0.0003296942450106144 + ], + [ + -0.0002489913604222238, + 0.0003692628815770149 + ], + [ + -0.00027029585908167064, + 0.00047393934801220894 + ], + [ + -0.00013080686039756984, + 0.0004813353007193655 + ], + [ + -0.0001147630246123299, + 0.0005195637932047248 + ], + [ + -0.00023347564274445176, + 0.0005091914790682495 + ], + [ + -0.00015952478861436248, + 0.00048122668522410095 + ], + [ + -2.6359699404565617e-05, + 0.000529611308593303 + ], + [ + -2.6715793865150772e-05, + 0.0006889069336466491 + ], + [ + -3.979156099376269e-05, + 0.0005183117464184761 + ], + [ + 5.150394281372428e-05, + 0.0004850835248362273 + ], + [ + 5.575527757173404e-05, + 0.0006006287876516581 + ], + [ + 7.161161192925647e-05, + 0.0006172577268444002 + ], + [ + -2.9470627850969322e-05, + 0.0005255999276414514 + ], + [ + 4.5857857912778854e-05, + 0.0006040598964318633 + ], + [ + 8.568806515540928e-05, + 0.0006040566368028522 + ], + [ + 0.00010236026719212532, + 0.000523533730302006 + ], + [ + 0.00015470624202862382, + 0.0006434533861465752 + ], + [ + 0.0002547996991779655, + 0.0005899668904021382 + ], + [ + 0.00039091231883503497, + 0.0006604752270504832 + ], + [ + 0.00045621179742738605, + 0.0005950038903392851 + ], + [ + 0.00048538303235545754, + 0.0005672930274158716 + ], + [ + 0.0005508169415406883, + 0.0005541019490920007 + ], + [ + 0.0005139088607393205, + 0.0006252257153391838 + ], + [ + 0.0006021962617523968, + 0.0006011438090354204 + ], + [ + 0.0007869645487517118, + 0.0007335554691962898 + ], + [ + 0.000854598474688828, + 0.000613181502558291 + ], + [ + 0.0009294537012465298, + 0.0005846100393682718 + ], + [ + 0.0009855751413851976, + 0.0005680512986145914 + ], + [ + 0.0010812716791406274, + 0.0004892848082818091 + ], + [ + 0.00112615164835006, + 0.00040666363202035427 + ], + [ + 0.0011689496459439397, + 0.00026917277136817575 + ], + [ + 0.0011927677551284432, + 0.00017122161807492375 + ], + [ + 0.0012545579811558127, + 6.294490594882518e-05 + ], + [ + 0.0012788308085873723, + -5.606841659755446e-05 + ], + [ + 0.0012714636977761984, + -0.0002810666337609291 + ], + [ + 0.0013228199677541852, + -0.00047933170571923256 + ], + [ + 0.0012388979084789753, + -0.0005234646378085017 + ], + [ + 0.0012709565926343203, + -0.0006478445720858872 + ], + [ + 0.0012236725306138396, + -0.0008336812607012689 + ], + [ + 0.0011329107219353318, + -0.000988235231488943 + ], + [ + 0.0010321795707568526, + -0.0011385605903342366 + ], + [ + 0.0009362398996017873, + -0.001143771456554532 + ], + [ + 0.0006930490490049124, + -0.0013770060613751411 + ], + [ + 0.0005694470601156354, + -0.0013606708962470293 + ], + [ + 0.00035566824954003096, + -0.0012862615985795856 + ], + [ + 0.0002597278216853738, + -0.0013205643044784665 + ], + [ + 0.00021357530204113573, + -0.001293489709496498 + ], + [ + 0.000167580132256262, + -0.0013317925622686744 + ], + [ + 0.00011830482253571972, + -0.0013580986997112632 + ], + [ + -4.910390998702496e-05, + -0.001473579672165215 + ], + [ + -0.000241258749156259, + -0.0015073202084749937 + ], + [ + -0.000505536503624171, + -0.0014224014012143016 + ], + [ + -0.0006457361741922796, + -0.0013467384269461036 + ], + [ + -0.0008647317299619317, + -0.0011376242619007826 + ], + [ + -0.0009368619648739696, + -0.0010120858205482364 + ], + [ + -0.0010955878533422947, + -0.0008175665279850364 + ], + [ + -0.0010768539505079389, + -0.0005740101332776248 + ], + [ + -0.0011166938347741961, + -0.0005009974702261388 + ], + [ + -0.0010660281404852867, + -0.00042198027949780226 + ], + [ + -0.0011178463464602828, + -0.00018937040294986218 + ], + [ + -0.0010796671267598867, + -0.00010412775736767799 + ], + [ + -0.0010543247917667031, + 6.496027344837785e-05 + ], + [ + -0.0010352343088015914, + 0.0001512266753707081 + ], + [ + -0.0009446665062569082, + 0.0002555176615715027 + ], + [ + -0.0008784193196333945, + 0.0003427061310503632 + ], + [ + -0.0008644345216453075, + 0.0003610769344959408 + ], + [ + -0.0006938559818081558, + 0.0005825193948112428 + ], + [ + -0.0006280444795265794, + 0.0007403810741379857 + ], + [ + -0.0003684788243845105, + 0.0007465055678039789 + ], + [ + -0.00021401970298029482, + 0.0006840425776317716 + ], + [ + -0.00026152731152251363, + 0.0005489250761456788 + ], + [ + -0.00016053576837293804, + 0.0004627954913303256 + ], + [ + -0.00012718922516796738, + 0.000512791215442121 + ], + [ + -0.00018369051394984126, + 0.000553369231056422 + ], + [ + -2.939874138974119e-05, + 0.0004817867302335799 + ], + [ + -0.00014777261822018772, + 0.0005565339815802872 + ], + [ + -0.00015527669165749103, + 0.0005997820408083498 + ], + [ + -7.399629248538986e-05, + 0.000609048584010452 + ], + [ + -9.393566870130599e-05, + 0.0006632916047237813 + ], + [ + 1.6671474440954626e-05, + 0.0006827664328739047 + ], + [ + 5.93424956605304e-05, + 0.0006577587337233126 + ], + [ + 0.00010897206084337085, + 0.0007173236808739603 + ], + [ + 4.737056951853447e-05, + 0.0006196901667863131 + ], + [ + 0.00020818770281039178, + 0.0006930588860996068 + ], + [ + 0.0002999946882482618, + 0.00065512431319803 + ], + [ + 0.0003920901217497885, + 0.0005999291897751391 + ], + [ + 0.0003916056884918362, + 0.0005298159667290747 + ], + [ + 0.0005037125083617866, + 0.0005075567169114947 + ], + [ + 0.0005411443416960537, + 0.000501019589137286 + ], + [ + 0.0005362433730624616, + 0.00038792824489064515 + ], + [ + 0.0006095512071624398, + 0.0003390763304196298 + ], + [ + 0.0005978186964057386, + 0.00030593815608881414 + ], + [ + 0.0006689679576084018, + 0.00022965020616538823 + ], + [ + 0.0007021501660346985, + 0.00016942883667070419 + ], + [ + 0.0005487410817295313, + 9.621965728001669e-05 + ], + [ + 0.0006762350094504654, + -2.7420681362855248e-05 + ], + [ + 0.0006436765543185174, + -1.514297673566034e-05 + ], + [ + 0.0006248305435292423, + -0.00012997855083085597 + ], + [ + 0.0006683830870315433, + -0.00010545827535679564 + ], + [ + 0.0005566630279645324, + -0.00012731169408652931 + ], + [ + 0.0005099255358800292, + -0.00018129848467651755 + ], + [ + 0.0004934549797326326, + -0.00026379432529211044 + ], + [ + 0.0005960666458122432, + -0.00023521562980022281 + ], + [ + 0.0004687027249019593, + -0.00032199593260884285 + ], + [ + 0.00040995024028234184, + -0.00035161981941200793 + ], + [ + 0.0003221253282390535, + -0.0002561977016739547 + ], + [ + 0.00036716030444949865, + -0.0003957172157242894 + ], + [ + 0.00018920519505627453, + -0.00029108242597430944 + ], + [ + 0.00021363529958762228, + -0.00032903687679208815 + ], + [ + 0.00015267373237293214, + -0.00032445674878545105 + ], + [ + 0.00019766016339417547, + -0.00018410875054541975 + ], + [ + 8.23366644908674e-05, + -0.0002720456977840513 + ], + [ + 0.00011298662138869986, + -0.00033362829708494246 + ], + [ + 0.00011044393613701686, + -0.0002794598403852433 + ], + [ + 6.811692583141848e-05, + -0.00032806425588205457 + ], + [ + 5.59862055524718e-05, + -0.00014902447583153844 + ], + [ + -1.531274028820917e-05, + -0.00027057528495788574 + ], + [ + 9.746065916260704e-05, + -0.00018742651445791125 + ], + [ + 3.7948473618598655e-05, + -0.0002246617223136127 + ], + [ + 8.698776218807325e-05, + -0.0001522709644632414 + ], + [ + -3.941175600630231e-05, + -0.00011063311831094325 + ], + [ + -3.281071985838935e-05, + -0.00013639465032611042 + ], + [ + -6.47137057967484e-05, + -0.0001403467613272369 + ], + [ + 6.03104563197121e-05, + -3.135324368486181e-05 + ], + [ + -1.3939235941506922e-05, + 2.386859523539897e-05 + ], + [ + 1.7270805983571336e-05, + -6.953181582503021e-05 + ], + [ + 2.5251300030504353e-05, + -0.00013694260269403458 + ], + [ + 3.267208012402989e-05, + -3.829713386949152e-05 + ], + [ + -3.251232101320056e-07, + -0.00010014746658271179 + ], + [ + -1.62760479724966e-05, + 4.066645851708017e-05 + ], + [ + -5.179992149351165e-05, + -4.936126424581744e-05 + ], + [ + -1.660434099903796e-05, + 2.2316608010441996e-05 + ], + [ + 6.82564641465433e-05, + 6.861495785415173e-05 + ], + [ + 9.38836546993116e-06, + -4.432005880516954e-05 + ], + [ + -3.9863378333393484e-05, + 3.16164041578304e-05 + ], + [ + -1.057444023899734e-05, + -2.0253209243037418e-07 + ], + [ + 8.195433474611491e-05, + -1.1520035513967741e-05 + ], + [ + 0.00011095001536887139, + -1.059957139659673e-05 + ], + [ + 8.337744657183066e-05, + 1.5067332242324483e-05 + ], + [ + 0.00017606880282983184, + -5.604907073575305e-06 + ], + [ + 8.989534399006516e-05, + -7.171631750679808e-07 + ], + [ + 4.765128323924728e-05, + 4.413989154272713e-05 + ], + [ + 5.755214715463808e-06, + 4.9294758355244994e-05 + ], + [ + 0.00010074985766550526, + 7.105463737389073e-05 + ], + [ + 0.00014992499200161546, + 2.9478112992364913e-05 + ], + [ + 9.346340812044218e-05, + 5.0182647100882605e-05 + ], + [ + 7.420429028570652e-05, + 4.2477946408325806e-05 + ], + [ + 0.00012406971654854715, + 7.608429586980492e-05 + ], + [ + 0.0001226847234647721, + 9.487816714681685e-05 + ], + [ + 5.767882612417452e-05, + -1.7013957403833047e-05 + ], + [ + -2.355688229727093e-05, + -7.824073691153899e-05 + ], + [ + 6.133164424682036e-05, + 3.526428554323502e-05 + ], + [ + 6.259474321268499e-05, + -1.0072585610032547e-05 + ], + [ + 0.00011449033627286553, + -2.9021266527706757e-05 + ], + [ + 0.0001347274665022269, + -8.885367606126238e-06 + ], + [ + 0.00012137123121647164, + -8.569598139729351e-05 + ], + [ + 1.66738209372852e-05, + -8.697310840943828e-05 + ], + [ + 0.00010836692672455683, + -7.558638753835112e-05 + ], + [ + 0.00018751085735857487, + -3.050160921702627e-05 + ], + [ + 6.086621215217747e-05, + -7.810431270627305e-05 + ], + [ + 3.7773210351588205e-05, + -2.261154259031173e-05 + ], + [ + 0.00014447861758526415, + -7.990384619915858e-05 + ], + [ + 0.00015396956587210298, + 1.7868058421299793e-05 + ], + [ + 3.334482607897371e-05, + 6.223251693882048e-05 + ], + [ + 8.136503311106935e-05, + -2.966910324175842e-05 + ], + [ + 9.750761091709137e-05, + 9.648648301663343e-06 + ], + [ + 5.242007773631485e-06, + 1.6848732684593415e-06 + ], + [ + 3.022654345841147e-05, + 3.965796349802986e-05 + ], + [ + 0.00014042522525414824, + -5.529642294277437e-05 + ], + [ + 0.00015334939234890044, + 3.02395383187104e-05 + ], + [ + 8.827181591186672e-05, + 1.4103292414802127e-05 + ], + [ + 0.00012786526349373162, + 1.575983151269611e-05 + ], + [ + 3.085629577981308e-05, + 2.2254103896557353e-05 + ], + [ + 0.00010250949708279222, + 7.037012983346358e-05 + ], + [ + 0.00012112142576370388, + 3.888261198881082e-05 + ], + [ + 0.00010147179273189977, + 1.838143475652032e-06 + ], + [ + 0.00011561848077690229, + -7.861761332605965e-06 + ], + [ + 0.00013902390492148697, + -7.845462096156552e-05 + ], + [ + 0.0001607080630492419, + -7.142432878026739e-05 + ], + [ + 4.747317507280968e-05, + -3.56140335497912e-05 + ], + [ + 0.00013006258814129978, + -0.00010222307901130989 + ], + [ + 0.00015986671496648341, + -5.3726213081972674e-05 + ], + [ + 0.00010183953418163583, + -2.755099194473587e-05 + ], + [ + 0.00016701863205526024, + -5.6202730775112286e-05 + ], + [ + 0.00018564399215392768, + -0.0001029378836392425 + ], + [ + 0.0001399498723912984, + -6.696507625747472e-05 + ], + [ + 0.00017419214418623596, + 1.1945911865041126e-05 + ], + [ + 0.0001854930305853486, + -4.362500112620182e-05 + ], + [ + 9.467615018365905e-05, + 5.5310183597612195e-06 + ], + [ + 3.800391641561873e-05, + 6.231994484551251e-05 + ], + [ + 8.804297976894304e-05, + 1.0908977856161073e-05 + ], + [ + 8.508133032592013e-05, + 3.6624031054088846e-05 + ], + [ + 0.00011309607361909002, + 3.613677472458221e-05 + ], + [ + 0.0001394839637214318, + 1.5198705114016775e-05 + ], + [ + 0.00011522071872605011, + -1.5142897609621286e-05 + ], + [ + 0.00014747038949280977, + 2.922484782175161e-05 + ], + [ + 0.000141178781632334, + 4.9312682676827535e-05 + ], + [ + 0.00019254282233305275, + -4.1524759581079707e-05 + ], + [ + 0.00015310279559344053, + -1.639160473132506e-05 + ], + [ + 0.00014042538532521576, + -4.675748277804814e-05 + ], + [ + 7.724640454398468e-05, + -6.929063965799287e-05 + ], + [ + 8.24694216134958e-05, + 2.2166905182530172e-06 + ], + [ + 0.0001054295789799653, + -1.648426587053109e-05 + ], + [ + 7.587159052491188e-05, + -5.4988595366012305e-06 + ], + [ + 0.0001388622767990455, + 3.624122109613381e-05 + ], + [ + 9.167673124466091e-05, + -5.995632818667218e-05 + ], + [ + 0.0001151424803538248, + -6.630576535826549e-05 + ], + [ + 5.248317393125035e-05, + -7.435764564434066e-05 + ], + [ + 6.177969044074416e-05, + -7.963784446474165e-05 + ], + [ + 3.722184192156419e-05, + 2.3684016923652962e-05 + ], + [ + 5.7931942137656733e-05, + -8.239352609962225e-05 + ], + [ + 3.598071270971559e-05, + 3.6926336179021746e-05 + ], + [ + 5.790386785520241e-05, + -5.1690156396944076e-05 + ], + [ + 8.468055602861568e-05, + -7.448687028954737e-06 + ], + [ + 0.00013229917385615408, + 9.79340711637633e-06 + ], + [ + 6.043354733265005e-05, + -6.8558533712348435e-06 + ], + [ + 6.701536767650396e-05, + -4.440799602889456e-05 + ], + [ + 6.09125527262222e-05, + 6.017462965246523e-06 + ], + [ + -8.703228786544059e-07, + -5.038428207626566e-05 + ], + [ + 4.558325235848315e-05, + -1.2676126971200574e-05 + ], + [ + 6.635545287281275e-05, + 1.2571221304824576e-05 + ], + [ + 3.807308530667797e-05, + 1.281204185943352e-05 + ], + [ + 8.742984209675342e-05, + -5.3701380238635466e-05 + ], + [ + -1.9512828657752834e-05, + -1.5547553630312905e-05 + ], + [ + 0.00013862371270079166, + -1.5722072930657305e-05 + ], + [ + 7.309925422305241e-05, + -2.069264701276552e-05 + ], + [ + 7.788795483065769e-05, + 4.8664140194887295e-05 + ], + [ + -2.7421778213465586e-05, + 3.1682247936259955e-05 + ], + [ + 5.445412898552604e-05, + 6.806022429373115e-05 + ], + [ + -7.287721473403508e-06, + 2.4947401470853947e-05 + ], + [ + 5.570230769080808e-06, + 5.8510620874585584e-05 + ], + [ + 5.7361718063475564e-05, + 1.4183396160660777e-05 + ], + [ + 5.613458779407665e-05, + 4.184594945400022e-05 + ], + [ + -8.573761078878306e-06, + 2.1715517505072057e-05 + ], + [ + 6.721395038766786e-05, + 5.089958358439617e-05 + ], + [ + 3.053363980143331e-05, + 2.011881224461831e-05 + ], + [ + 5.651637547998689e-05, + 5.5682583479210734e-05 + ], + [ + 4.117904609302059e-05, + 1.9339211576152593e-05 + ], + [ + 0.00010340898734284565, + 4.985295527148992e-05 + ], + [ + 6.813739310018718e-05, + 4.478945265873335e-05 + ], + [ + 4.968335997546092e-05, + 0.00010435593139845878 + ], + [ + 7.24894052837044e-05, + 4.1106421122094616e-05 + ], + [ + 5.409263030742295e-05, + 5.213939948589541e-05 + ], + [ + 3.167701288475655e-05, + 7.572573667857796e-05 + ], + [ + 0.00010718471457948908, + 0.00013546708214562386 + ], + [ + 6.604434747714549e-05, + 0.00012977964070159942 + ], + [ + 6.150898843770847e-05, + 7.060065399855375e-05 + ], + [ + 0.00014067110896576196, + 0.00014074399950914085 + ], + [ + 0.00012152236740803346, + 0.00014919847308192402 + ], + [ + 0.0001699929853202775, + 0.00018860406999010593 + ], + [ + 0.00018172212003264576, + 0.00014113742508925498 + ], + [ + 0.0001811923284549266, + 0.00013552149175666273 + ], + [ + 0.00022097289911471307, + 0.00013165174459572881 + ], + [ + 0.00020332248823251575, + 0.00015280533989425749 + ], + [ + 0.000319731974741444, + 0.00013100914657115936 + ], + [ + 0.0003134380385745317, + 0.00019236774824094027 + ], + [ + 0.00029284224729053676, + 6.63962127873674e-05 + ], + [ + 0.00036063636071048677, + 7.179773092502728e-05 + ], + [ + 0.0003499164595268667, + 6.390141061274335e-05 + ], + [ + 0.00039556092815473676, + 4.310891745262779e-05 + ], + [ + 0.0003719819651450962, + 3.8387926906580105e-05 + ], + [ + 0.0004723378224298358, + -0.00011365430691512302 + ], + [ + 0.0004860356275457889, + -0.00010590978490654379 + ], + [ + 0.00040268912562169135, + -0.00014374047168530524 + ], + [ + 0.0005009335000067949, + -0.00026816598256118596 + ], + [ + 0.00046177496551536024, + -0.00027108279755339026 + ], + [ + 0.0004575960338115692, + -0.0004840891342610121 + ], + [ + 0.0005042399279773235, + -0.0006457368726842105 + ], + [ + 0.0004627674934454262, + -0.0006337413797155023 + ], + [ + 0.00028662433032877743, + -1.90680225387041e-06 + ], + [ + 0.00030454524676315486, + -1.9111676010652445e-05 + ], + [ + 0.0003421177971176803, + -5.2830378990620375e-05 + ], + [ + 0.0003017013950739056, + -0.00012347834126558155 + ], + [ + 0.0002539001579862088, + -0.00014035908679943532 + ], + [ + 0.00021081608429085463, + -0.00018194100994151086 + ], + [ + 0.0001777371799107641, + -0.00019166705897077918 + ], + [ + 0.0001242455473402515, + -0.0001959251967491582 + ], + [ + 0.00012219586642459035, + -0.0001647164608584717 + ], + [ + 4.676024036598392e-05, + -0.00018546651699580252 + ], + [ + 2.233386112493463e-05, + -0.00018155999714508653 + ], + [ + -1.1564942724362481e-05, + -0.0001359039597446099 + ], + [ + 2.4983326511573978e-05, + -3.528924207785167e-05 + ], + [ + -1.0752582966233604e-06, + -2.999546268256381e-05 + ], + [ + 3.576920062187128e-05, + -1.825657454901375e-05 + ], + [ + 7.761972483422142e-06, + 7.05993841165764e-07 + ], + [ + -6.719344582961639e-06, + 2.5007613658090122e-05 + ], + [ + -2.4045742975431494e-05, + 8.35513710626401e-05 + ], + [ + 7.096929766703397e-05, + 9.931833483278751e-05 + ], + [ + 8.403114770771936e-05, + 0.00017586724425200373 + ], + [ + 0.00012270234583411366, + 0.00015530220116488636 + ], + [ + 0.00014409951108973473, + 0.00012754516501445323 + ], + [ + 0.00016537582268938422, + 0.00012710242299363017 + ], + [ + 0.00022311275824904442, + 0.00014245050260797143 + ], + [ + 0.0002087163447868079, + 0.0001131083263317123 + ], + [ + 0.00021309246949385852, + 0.00012498752039391547 + ], + [ + 0.00025084023945964873, + 5.299424447002821e-05 + ], + [ + 0.0002608357463032007, + 2.7135462005389854e-05 + ], + [ + 0.0002763443626463413, + -2.8653032131842338e-05 + ], + [ + 0.00029611808713525534, + 3.55801239493303e-05 + ], + [ + 0.00030846084700897336, + 1.3655275324708782e-05 + ], + [ + 0.0003166685637552291, + 1.60012914420804e-05 + ], + [ + 0.0002153668610844761, + 2.3139011318562552e-05 + ], + [ + 0.0003025938640348613, + -3.0828559829387814e-06 + ], + [ + 0.0003358719404786825, + -2.496509114280343e-05 + ], + [ + 0.0003637029731180519, + 1.405021976097487e-06 + ], + [ + 0.0004018870531581342, + 1.5212600374070462e-05 + ], + [ + 0.0004636181110981852, + -5.0011098210234195e-05 + ], + [ + 0.0004385429492685944, + -0.00013543908426072448 + ], + [ + 0.0004323543980717659, + -0.00016160232189577073 + ], + [ + 0.0004019680491182953, + -0.0002750568091869354 + ], + [ + 0.0004719514399766922, + -0.00027932028751820326 + ], + [ + 0.0004686187021434307, + -0.0003434975806158036 + ], + [ + 0.00036839526728726923, + -0.00039121517329476774 + ], + [ + 0.00038924504769966006, + -0.00041312092798762023 + ], + [ + 0.0003309195162728429, + -0.00047630094923079014 + ], + [ + 0.0002666111395228654, + -0.00048062633140943944 + ], + [ + 0.0002154722751583904, + -0.0005181439919397235 + ], + [ + 0.00018532403919380158, + -0.0005790647119283676 + ], + [ + 0.00010379481682321057, + -0.0005707485834136605 + ], + [ + 8.058117236942053e-05, + -0.0006319577805697918 + ], + [ + 2.8907790692755952e-05, + -0.0005854147020727396 + ], + [ + -6.427567132050171e-05, + -0.0005376053159125149 + ], + [ + -6.421432044589892e-05, + -0.0005096140666864812 + ], + [ + -0.00010459296026965603, + -0.0005729905678890646 + ], + [ + -0.0001612132036825642, + -0.0005682211485691369 + ], + [ + -0.00013797471183352172, + -0.00048077767132781446 + ], + [ + -0.000209187637665309, + -0.0004137754440307617 + ], + [ + -0.0002073528157779947, + -0.0005211715470068157 + ], + [ + -0.00020200060680508614, + -0.0005895804497413337 + ], + [ + -0.00031371155637316406, + -0.0005497562815435231 + ], + [ + -0.00030186629737727344, + -0.0005346519174054265 + ], + [ + -0.0002727466926444322, + -0.0005638363072648644 + ], + [ + -0.00035572124761529267, + -0.0005300894845277071 + ], + [ + -0.0003876102564390749, + -0.0005431145546026528 + ], + [ + -0.00044469957356341183, + -0.0006252997554838657 + ], + [ + -0.0005636935238726437, + -0.0006069358787499368 + ], + [ + -0.0007311307126656175, + -0.0005002734251320362 + ], + [ + -0.0008275651489384472, + -0.0006015338003635406 + ], + [ + -0.0008904770365916193, + -0.0005547030013985932 + ], + [ + -0.0009559242171235383, + -0.00041976821376010776 + ], + [ + -0.0010875267907977104, + -0.00038394128205254674 + ], + [ + -0.0011636452982202172, + -0.0002814203326124698 + ], + [ + -0.001283421297557652, + -0.00018143179477192461 + ], + [ + -0.0013424284989014268, + -0.00011655214620986953 + ], + [ + -0.001432287972420454, + 0.00013305118773132563 + ], + [ + -0.0014072058256715536, + 0.00012943697220180184 + ], + [ + -0.001567431609146297, + 0.0003342333366163075 + ], + [ + -0.0016721317078918219, + 0.0005040077958256006 + ], + [ + -0.001720612752251327, + 0.0006403350853361189 + ], + [ + -0.0016977599589154124, + 0.0008992531802505255 + ], + [ + -0.001731579890474677, + 0.0010714279487729073 + ], + [ + -0.001754898577928543, + 0.0013992756139487028 + ], + [ + -0.0015821709530428052, + 0.001742251100949943 + ], + [ + -0.0014265980571508408, + 0.001982392743229866 + ], + [ + -0.0012310458114370704, + 0.0022947785910218954 + ], + [ + -0.001056540641002357, + 0.0024502906017005444 + ], + [ + -0.0007174683851189911, + 0.0026621785946190357 + ], + [ + -0.0004795708227902651, + 0.002672571921721101 + ], + [ + -0.0002717252355068922, + 0.0027686329558491707 + ], + [ + -1.3133144705079758e-07, + 0.002929314272478223 + ], + [ + 0.00025021348847076297, + 0.002974224742501974 + ], + [ + 0.0005334011511877179, + 0.0031565744429826736 + ], + [ + 0.0007464135414920747, + 0.003299398347735405 + ], + [ + 0.0012000263668596745, + 0.0033474816009402275 + ], + [ + 0.0016840293537825346, + 0.0033533149398863316 + ], + [ + 0.0020424623508006334, + 0.0032274513505399227 + ], + [ + 0.0024406544398516417, + 0.0030743652023375034 + ], + [ + 0.0028979210183024406, + 0.0030444359872490168 + ], + [ + 0.003363208845257759, + 0.002844679169356823 + ], + [ + 0.0038125473074615, + 0.0024983214680105448 + ], + [ + 0.004250954370945692, + 0.0020760942716151476 + ], + [ + 0.0046110600233078, + 0.0016937474720180035 + ], + [ + 0.004875716287642717, + 0.0011554440716281533 + ], + [ + 0.005152030847966671, + 0.0005268891691230237 + ], + [ + 0.005369127262383699, + -4.924636959913187e-05 + ], + [ + 0.005527344532310963, + -0.0007594573544338346 + ], + [ + 0.0056267790496349335, + -0.0013599272351711988 + ], + [ + 0.005568897817283869, + -0.002194231143221259 + ], + [ + 0.00535617396235466, + -0.002960532670840621 + ], + [ + 0.0049422914162278175, + -0.0037353846710175276 + ], + [ + 0.004450547508895397, + -0.004355332348495722 + ], + [ + 0.003921043127775192, + -0.005007309839129448 + ], + [ + 0.0033193002454936504, + -0.005481666419655085 + ], + [ + 0.0024664851371198893, + -0.0059072417207062244 + ], + [ + 0.0018313314067199826, + -0.006342379376292229 + ], + [ + 0.0009014217648655176, + -0.006351500283926725 + ], + [ + 0.00016503028746228665, + -0.006455926690250635 + ], + [ + -0.0006953343981876969, + -0.006371926516294479 + ], + [ + -0.0015099381562322378, + -0.006221710704267025 + ], + [ + -0.002199425594881177, + -0.006033947691321373 + ], + [ + -0.0028915656730532646, + -0.005694058258086443 + ], + [ + -0.0034954920411109924, + -0.005141569767147303 + ], + [ + -0.004043262917548418, + -0.004632364492863417 + ], + [ + -0.004531036131083965, + -0.004052793141454458 + ], + [ + -0.004871174693107605, + -0.003405197523534298 + ], + [ + -0.005153139587491751, + -0.002770850667729974 + ], + [ + -0.005412174388766289, + -0.0021658947225660086 + ], + [ + -0.005502344109117985, + -0.0015664884122088552 + ], + [ + -0.00566920917481184, + -0.0009738137596286833 + ], + [ + -0.005614024121314287, + -0.00019035511650145054 + ], + [ + -0.005526029504835606, + 0.00036499174893833697 + ], + [ + -0.005362239666283131, + 0.0009286891436204314 + ], + [ + -0.005185924004763365, + 0.001564373029395938 + ], + [ + -0.00493655214086175, + 0.0020667575299739838 + ], + [ + -0.004500051494687796, + 0.0025835251435637474 + ], + [ + -0.00413368409499526, + 0.002958666766062379 + ], + [ + -0.0036826469004154205, + 0.0034298808313906193 + ], + [ + -0.0031737934332340956, + 0.0035719876177608967 + ], + [ + -0.0027505187317728996, + 0.0037968019023537636 + ], + [ + -0.0022788397036492825, + 0.003968153148889542 + ], + [ + -0.0019234416540712118, + 0.004053422249853611 + ], + [ + -0.0014926772564649582, + 0.0042281667701900005 + ], + [ + -0.0010921360226348042, + 0.004221515264362097 + ], + [ + -0.0006919415318407118, + 0.004230254329741001 + ], + [ + -0.00030746226548217237, + 0.004196871537715197 + ], + [ + 4.742267992696725e-05, + 0.004305101931095123 + ], + [ + 0.00044075155165046453, + 0.004339936189353466 + ], + [ + 0.0008886155555956066, + 0.004220751114189625 + ], + [ + 0.0012931018136441708, + 0.004008661024272442 + ], + [ + 0.0017801228677853942, + 0.003859599120914936 + ], + [ + 0.002204119460657239, + 0.0036667846143245697 + ], + [ + 0.002534181112423539, + 0.0034529876429587603 + ], + [ + 0.002982158213853836, + 0.0031030760146677494 + ], + [ + 0.003204381326213479, + 0.0026998782996088266 + ], + [ + 0.0034985782112926245, + 0.0023150681518018246 + ], + [ + 0.0036087397020310163, + 0.0018406417220830917 + ], + [ + 0.003736075945198536, + 0.001370020559988916 + ], + [ + 0.003881625598296523, + 0.0009743761620484293 + ], + [ + 0.003879844443872571, + 0.000514528714120388 + ], + [ + 0.0038233951199799776, + 6.181152275530621e-05 + ], + [ + 0.003661785740405321, + -0.00035873008891940117 + ], + [ + 0.0035923654213547707, + -0.0008448782609775662 + ], + [ + 0.0033961099106818438, + -0.00103192706592381 + ], + [ + 0.0031824856996536255, + -0.0012866719625890255 + ], + [ + 0.0029754466377198696, + -0.001683895941823721 + ], + [ + 0.0027190311811864376, + -0.002010615775361657 + ], + [ + 0.0024862331338226795, + -0.0022396519780158997 + ], + [ + 0.0020728756207972765, + -0.002418370684608817 + ], + [ + 0.0016947572585195303, + -0.0025763947051018476 + ], + [ + 0.0012900506844744086, + -0.0027082546148449183 + ], + [ + 0.0009370669140480459, + -0.002632505027577281 + ], + [ + 0.0005042011034674942, + -0.0026034200564026833 + ], + [ + 0.00021046653273515403, + -0.002487980527803302 + ], + [ + -0.00014165358152240515, + -0.0023027483839541674 + ], + [ + -0.00035576222580857575, + -0.002035568468272686 + ], + [ + -0.0006159085896797478, + -0.0018630496924743056 + ], + [ + -0.0007071301806718111, + -0.0015120262978598475 + ], + [ + -0.0007641097763553262, + -0.0012090231757611036 + ], + [ + -0.0007059669587761164, + -0.0009808744071051478 + ], + [ + -0.0006589337135665119, + -0.0007310816436074674 + ], + [ + -0.0004351520037744194, + -0.0005833892500959337 + ], + [ + -0.0002488021564204246, + -0.00043030965025536716 + ], + [ + -9.863742161542177e-05, + -0.000516578322276473 + ], + [ + 8.18302360130474e-05, + -0.00045096955727785826 + ], + [ + 0.0002443165867589414, + -0.0005034085479564965 + ], + [ + 0.000359629571903497, + -0.0006325927679426968 + ], + [ + 0.0004884273512288928, + -0.0007248519686982036 + ], + [ + 0.0004150996101088822, + -0.0008944777655415237 + ], + [ + 0.00041216303361579776, + -0.001006535952910781 + ], + [ + 0.0004912072326987982, + -0.0013879712205380201 + ], + [ + 0.0003993469581473619, + -0.0014757810859009624 + ], + [ + 0.00025947988615371287, + -0.0016049359692260623 + ], + [ + 6.736376963090152e-05, + -0.0016925119562074542 + ], + [ + -0.00016880346811376512, + -0.0017351574497297406 + ], + [ + -0.00028569131973199546, + -0.0017058715457096696 + ], + [ + -0.0005201714811846614, + -0.0017065800493583083 + ], + [ + -0.0006977381417527795, + -0.001517267432063818 + ], + [ + -0.0009965798817574978, + -0.0013612149050459266 + ], + [ + -0.0010607762960717082, + -0.001161788241006434 + ], + [ + -0.0011547842295840383, + -0.0008807272533886135 + ], + [ + -0.001466301386244595, + -0.0008188107749447227 + ], + [ + -0.0015436348039656878, + -0.0005799944628961384 + ], + [ + -0.0015133272390812635, + -0.00018731862655840814 + ], + [ + -0.0015263463137671351, + 0.00015786562289576977 + ], + [ + -0.0012021625880151987, + 0.0004399884201120585 + ], + [ + -0.0010685777524486184, + 0.0008206398342736065 + ], + [ + -0.0008704621577635407, + 0.0011772210709750652 + ], + [ + -0.0005692276172339916, + 0.0015355543000623584 + ], + [ + -0.0003069634549319744, + 0.0018457019468769431 + ], + [ + 0.00015590197290293872, + 0.001824130187742412 + ], + [ + -0.0001228966866619885, + -0.00019190204329788685 + ], + [ + -0.0006531634135171771, + -0.0018301213858649135 + ], + [ + -0.0012375119840726256, + -0.0029094384517520666 + ], + [ + -0.0017487980658188462, + -0.0033185905776917934 + ], + [ + -0.002246473915874958, + -0.0032699902076274157 + ], + [ + -0.002831117482855916, + -0.003065943019464612 + ], + [ + -0.0033100878354161978, + -0.002698566997423768 + ], + [ + -0.003407267155125737, + -0.002154268091544509 + ], + [ + -0.0033814129419624805, + -0.0016892596613615751 + ], + [ + -0.0032977573573589325, + -0.001157331746071577 + ], + [ + -0.0031159198842942715, + -0.0008537080138921738 + ], + [ + -0.003191532101482153, + -0.00044633884681388736 + ], + [ + -0.0032275437843054533, + -0.0001462185027776286 + ], + [ + -0.003012145636603236, + 0.0002604536712169647 + ], + [ + -0.0028381317388266325, + 0.0003776380908675492 + ], + [ + -0.0022613995242863894, + 0.0005238885059952736 + ], + [ + -0.0014560137642547488, + 0.00047036170144565403 + ], + [ + -0.00086206168634817, + 0.0002817233616951853 + ], + [ + -0.0006032038363628089, + 0.00021159778407309204 + ], + [ + -0.00011340891796862707, + -5.3295600082492456e-05 + ], + [ + 0.00016124517424032092, + -0.0002651084796525538 + ], + [ + -4.5957862312207e-05, + -0.0003323914424981922 + ], + [ + -0.00022391343372873962, + -0.0003602452343329787 + ], + [ + -0.00013345830666366965, + -0.0002926751913037151 + ], + [ + -0.0002729710831772536, + -0.00012529313971754164 + ], + [ + -0.00043890750384889543, + -4.015295780845918e-05 + ], + [ + -0.0005086606834083796, + 0.0002020557876676321 + ], + [ + -0.0007041674689389765, + 0.0005602953024208546 + ], + [ + -0.0006086999201215804, + 0.0008286058437079191 + ], + [ + -0.0007030234555713832, + 0.001030842657200992 + ], + [ + -0.0006760492105968297, + 0.0014989720657467842 + ], + [ + -0.00036269836709834635, + 0.0018198189791291952 + ], + [ + -0.00032333645503968, + 0.0021750524174422026 + ], + [ + -9.333108027931303e-05, + 0.0023572880309075117 + ], + [ + 0.0003160211490467191, + 0.0024389068130403757 + ], + [ + 0.00018318541697226465, + 0.002301475265994668 + ], + [ + 0.00041946209967136383, + 0.002359693171456456 + ], + [ + 0.0009064091136679053, + 0.0022039671894162893 + ], + [ + 0.0011411780724301934, + 0.00206999434158206 + ], + [ + 0.0013993309112265706, + 0.0018565738573670387 + ], + [ + 0.0015599073376506567, + 0.0016837783623486757 + ], + [ + 0.001594425062648952, + 0.0012232037261128426 + ], + [ + 0.0016965734539553523, + 0.0011039305245503783 + ], + [ + 0.0018039975548163056, + 0.0005264365463517606 + ], + [ + 0.0015977645525708795, + 0.00028628698782995343 + ], + [ + 0.0014952659839764237, + -0.0001961258822120726 + ], + [ + 0.0011417244095355272, + -0.0005251590046100318 + ], + [ + 0.0007416370790451765, + -0.0006010454380884767 + ], + [ + 0.0008490909240208566, + -0.0005089117330498993 + ], + [ + 0.0006121544283814728, + -0.0003955411375500262 + ], + [ + 0.0003290566382929683, + -0.0005107056931592524 + ], + [ + -7.652054591744673e-06, + -0.0003248360881116241 + ], + [ + -0.00029056394123472273, + -0.00031828609644435346 + ], + [ + -0.0006744918064214289, + -0.00024974107509478927 + ], + [ + -0.0009550356771796942, + 9.840988786891103e-05 + ], + [ + -0.0010883377399295568, + 0.00031872879480943084 + ], + [ + -0.0012434649979695678, + 0.000525184441357851 + ], + [ + -0.001327025005593896, + 0.0008552265935577452 + ], + [ + -0.0012681226944550872, + 0.00100162613671273 + ], + [ + -0.0010116997873410583, + 0.0014383252710103989 + ], + [ + -0.0002676947333384305, + 0.000906943459995091 + ], + [ + -0.000262223940808326, + 0.0009606724488548934 + ], + [ + -0.00020758266327902675, + 0.0009924713522195816 + ], + [ + 3.639547503553331e-05, + 0.0009198096813634038 + ], + [ + 0.00014087957970332354, + 0.0010359972948208451 + ], + [ + 0.00025531480787321925, + 0.0011834887554869056 + ], + [ + 0.0004969460424035788, + 0.0010802416363731027 + ], + [ + 0.0005574465030804276, + 0.0011028971057385206 + ], + [ + 0.0007809874368831515, + 0.0012242062948644161 + ], + [ + 0.0009507303475402296, + 0.001025813864544034 + ], + [ + 0.0011338663753122091, + 0.0008358638151548803 + ], + [ + 0.0011173631064593792, + 0.0008234403212554753 + ], + [ + 0.001420484040863812, + 0.0005145404720678926 + ], + [ + 0.0011715302243828773, + -0.0003230587753932923 + ], + [ + 0.0011529120383784175, + -0.00030502749723382294 + ], + [ + 0.0011868983274325728, + -0.0005829521105624735 + ], + [ + 0.0011103765573352575, + -0.0009321459219790995 + ], + [ + 0.0011787881376221776, + -0.0010479441843926907 + ], + [ + 0.0011224375339224935, + -0.001426337636075914 + ], + [ + 0.0009603378712199628, + -0.001681984169408679 + ], + [ + 0.0008374579483643174, + -0.0021777243819087744 + ], + [ + 0.000288566283416003, + -0.0028178521897643805 + ], + [ + -0.00019930850248783827, + -0.0029444177635014057 + ], + [ + -0.0011246999492868781, + -0.003018423682078719 + ], + [ + -0.0019383453764021397, + -0.0025894027203321457 + ], + [ + -0.0024563537444919348, + -0.0019084711093455553 + ], + [ + -0.0027788644656538963, + -0.0013454993022605777 + ], + [ + -0.0014947355957701802, + -0.0001219289333675988 + ], + [ + -0.0011841484811156988, + 0.0001096077321562916 + ], + [ + -0.0009568059467710555, + 8.207877544919029e-05 + ], + [ + -0.0008069266914390028, + -0.0001539430086268112 + ], + [ + -0.0008208288927562535, + -0.00015092593093868345 + ], + [ + -0.0008348810370080173, + -0.00024482139269821346 + ], + [ + -0.0010183034464716911, + -0.00027860834961757064 + ], + [ + -0.0009855502285063267, + -0.00026855256874114275 + ], + [ + -0.0012584890937432647, + -0.00014391027798410505 + ], + [ + -0.0013039478799328208, + 6.126395601313561e-05 + ], + [ + -0.0013860112521797419, + 0.0001767454668879509 + ], + [ + -0.0015753115294501185, + 0.00028656015638262033 + ], + [ + -0.0017558954423293471, + 0.00023889947624411434 + ], + [ + -0.0017644587205722928, + 0.0005148178897798061 + ], + [ + -0.0016515195602551103, + 0.00029904942493885756 + ], + [ + -0.0016849254025146365, + 0.0003558616735972464 + ], + [ + -0.0016616820357739925, + 0.0005842125974595547 + ], + [ + -0.0018813112983480096, + 0.0008099281694740057 + ], + [ + -0.001989802112802863, + 0.000976811395958066 + ], + [ + -0.002122934442013502, + 0.0014173361705616117 + ], + [ + -0.0021649328991770744, + 0.0016961190849542618 + ], + [ + -0.0021361438557505608, + 0.0021034919191151857 + ], + [ + -0.0021578026935458183, + 0.0025610916782170534 + ], + [ + -0.0020549865439534187, + 0.0033173596020787954 + ], + [ + -0.0017680260352790356, + 0.0038842125795781612 + ], + [ + -0.0013716709800064564, + 0.0046292077749967575 + ], + [ + -0.0005029086023569107, + 0.005155065096914768 + ], + [ + 0.00045500046689994633, + 0.005736964289098978 + ], + [ + 0.0013454307336360216, + 0.005701947957277298 + ], + [ + 0.0025502091739326715, + 0.005694045685231686 + ], + [ + 0.003646074328571558, + 0.005261705722659826 + ], + [ + 0.004745731130242348, + 0.0044685541652143 + ], + [ + 0.005372700747102499, + 0.003537070704624057 + ], + [ + 0.005995138548314571, + 0.002577391220256686 + ], + [ + 0.006121416110545397, + 0.0014807075494900346 + ], + [ + 0.005986968986690044, + 0.0004454606678336859 + ], + [ + 0.005732550285756588, + -0.000511878402903676 + ], + [ + 0.00543525256216526, + -0.001323349424637854 + ], + [ + 0.004944028332829475, + -0.0018570158863440156 + ], + [ + 0.004517220426350832, + -0.0024148309603333473 + ], + [ + 0.004024025052785873, + -0.0029137202072888613 + ], + [ + 0.0034751819912344217, + -0.0031573951710015535 + ], + [ + 0.0030113463290035725, + -0.0034185685217380524 + ], + [ + 0.0022511265706270933, + -0.0033668463584035635 + ], + [ + 0.0016678101383149624, + -0.003506302135065198 + ], + [ + 0.001307767117395997, + -0.003552040783688426 + ], + [ + 0.0007208664319477975, + -0.003659888170659542 + ], + [ + 0.0003613158187363297, + -0.0035573544446378946 + ], + [ + -0.00011986550089204684, + -0.003345959587022662 + ], + [ + -0.0005137895932421088, + -0.0030765333212912083 + ], + [ + -0.0008103484869934618, + -0.0030175538267940283 + ], + [ + -0.001011849963106215, + -0.002712815534323454 + ], + [ + -0.0014460805105045438, + -0.002305984031409025 + ], + [ + -0.0015727415448054671, + -0.0020340806804597378 + ], + [ + -0.0016723884036764503, + -0.0016466756351292133 + ], + [ + -0.0017286984948441386, + -0.00136860110796988 + ], + [ + -0.0017989694606512785, + -0.0011287853121757507 + ], + [ + -0.001734469668008387, + -0.000835832383017987 + ], + [ + -0.0016105783870443702, + -0.0004979585064575076 + ], + [ + -0.001498743542470038, + -0.0002969675697386265 + ], + [ + -0.0013381985481828451, + -9.721787500893697e-05 + ], + [ + -0.0013639607932418585, + 9.035745461005718e-05 + ], + [ + -0.001249913708306849, + 0.00020961173868272454 + ], + [ + -0.0009967738296836615, + 0.00038923919782973826 + ], + [ + -0.0008952004136517644, + 0.00035610253689810634 + ], + [ + -0.0008429278386756778, + 0.0004332589451223612 + ], + [ + -0.0006760049727745354, + 0.00042631730320863426 + ], + [ + -0.00047092619934119284, + 0.000550663738977164 + ], + [ + -0.0004366882494650781, + 0.00046092376578599215 + ], + [ + -0.0004004412912763655, + 0.0004943646490573883 + ], + [ + -0.00024359925009775907, + 0.0005222581094130874 + ], + [ + -0.0002129172789864242, + 0.00046470618690364063 + ], + [ + -9.998010500567034e-05, + 0.0004051532887388021 + ], + [ + -0.00021373177878558636, + 0.0003795860684476793 + ], + [ + -0.00015298821381293237, + 0.0004434835573192686 + ], + [ + -0.00020355767628643662, + 0.00035099787055514753 + ], + [ + -6.787067832192406e-05, + 0.00038139152457006276 + ], + [ + -4.368196096038446e-05, + 0.0002784410899039358 + ], + [ + -5.0729278882499784e-05, + 0.00033073322265408933 + ], + [ + -1.8950631783809513e-05, + 0.00036135080154053867 + ], + [ + -4.60226547147613e-05, + 0.0002550317149143666 + ], + [ + -4.9753443818190135e-06, + 0.0002943126601167023 + ], + [ + 3.667740020318888e-05, + 0.00033814861671999097 + ], + [ + 3.0372415494639426e-05, + 0.00019494850130286068 + ], + [ + 5.7489360187901184e-05, + 0.0002018155064433813 + ], + [ + 6.616293831029907e-05, + 0.00024862951249815524 + ], + [ + 3.569247928680852e-05, + 0.0002290619449922815 + ], + [ + 4.6027067583054304e-05, + 0.00018797694065142423 + ], + [ + 0.00011523268767632544, + 0.0002520679263398051 + ], + [ + 0.00019119241915177554, + 0.0001887301041278988 + ], + [ + 1.963181421160698e-05, + 0.00023372970463242382 + ], + [ + 4.907522816210985e-05, + 0.0002623464388307184 + ], + [ + 0.0001160443207481876, + 0.00013599739759229124 + ], + [ + 5.1320315833436325e-05, + 0.0003299501840956509 + ], + [ + 9.119144669966772e-05, + 0.0002581499284133315 + ], + [ + 0.00017873440810944885, + 0.0001950178120750934 + ], + [ + 0.0002246685471618548, + 0.00019706103194039315 + ], + [ + 0.0001559338707011193, + 0.00017631787341088057 + ], + [ + 7.933386950753629e-05, + 0.0002380117803113535 + ], + [ + 0.00011564185115275905, + 0.00020408336422406137 + ], + [ + 0.00019758340204134583, + 7.177110819611698e-05 + ], + [ + 0.00019391992827877402, + 0.00010407812806079164 + ], + [ + 0.00022520490165334195, + 8.579453424317762e-05 + ], + [ + 0.00016923068324103951, + 0.00010937576735159382 + ], + [ + 0.00013766785559710115, + 0.0001538667274871841 + ], + [ + 9.134950960287824e-05, + 0.00015858327969908714 + ], + [ + 0.00011745499796234071, + 0.00013500810018740594 + ], + [ + -3.824380110017955e-05, + 0.00014808817650191486 + ], + [ + 3.8634265365544707e-05, + 0.00018870820349548012 + ], + [ + 0.0002255616564070806, + 5.902284465264529e-05 + ], + [ + 0.00010114470205735415, + 9.682199015514925e-05 + ], + [ + 0.0002862330002244562, + 0.00013255098019726574 + ], + [ + 0.00024776009377092123, + 3.481244857539423e-05 + ], + [ + 2.3148753825807944e-05, + 9.506038622930646e-05 + ], + [ + 0.0002670097746886313, + 8.401592640439048e-05 + ], + [ + 0.0001987678842851892, + 0.00010504567035241053 + ], + [ + 6.743526319041848e-05, + 0.00024751058663241565 + ], + [ + 0.00029025328694842756, + 0.0001857235620263964 + ], + [ + 0.0001983236870728433, + 0.00019350553338881582 + ], + [ + 0.00013808326912112534, + 0.0002099911798723042 + ], + [ + 0.00020198861602693796, + 0.00021240056958049536 + ], + [ + 0.00011322669888613746, + 0.00010049615957541391 + ], + [ + 0.00014189658395480365, + 0.0001872979773906991 + ], + [ + 0.0003604701778385788, + 9.940413292497396e-05 + ], + [ + 0.0002825631818268448, + -0.00013672317436430603 + ], + [ + 0.00033368790172971785, + -0.00010625823051668704 + ], + [ + 0.0003222878440283239, + 0.00015314373013097793 + ], + [ + 0.0003864019236061722, + 9.940662130247802e-05 + ], + [ + 0.0005687772645615041, + -0.00016956732724793255 + ], + [ + 0.0004775998822879046, + -9.155445877695456e-05 + ], + [ + 0.000298536557238549, + -0.00011266092769801617 + ], + [ + 0.00048634945414960384, + -0.0002687525993678719 + ], + [ + 0.0004725925100501627, + -0.00013922897051088512 + ], + [ + 0.0004984108381904662, + -0.0004769994702655822 + ], + [ + 0.0007588288281112909, + -0.00016838876763358712 + ], + [ + 0.001029319828376174, + -0.0003297104558441788 + ], + [ + 0.0006125936633907259, + -0.0007844512001611292 + ], + [ + 0.00046529644168913364, + -0.0006260887021198869 + ], + [ + 0.0004708615888375789, + -0.0006605982198379934 + ], + [ + 0.00043017190182581544, + -0.0009181486675515771 + ], + [ + 0.0004611682961694896, + -0.000866751535795629 + ], + [ + 0.0004915079334750772, + -0.0006079974700696766 + ], + [ + 0.00037738081300631166, + -0.0009400053531862795 + ], + [ + 0.00019310510833747685, + -0.0007922975346446037 + ], + [ + 0.0003301291726529598, + -0.0010884335497394204 + ], + [ + 0.0005347576225176454, + -0.0012515961425378919 + ], + [ + 0.00044525248813442886, + -0.001237173331901431 + ], + [ + 0.0002049403265118599, + -0.0014737347373738885 + ], + [ + 0.0006259393994696438, + -0.0018042773008346558 + ], + [ + 0.00044931023148819804, + -0.0025834429543465376 + ], + [ + -0.0002388909342698753, + -0.0015313772018998861 + ], + [ + -0.0005217522848397493, + -0.0011369726853445172 + ], + [ + -0.00045011803740635514, + -0.0014445470878854394 + ], + [ + -0.0007649653707630932, + -0.0010153109906241298 + ], + [ + -0.0008399365469813347, + -0.0012224232777953148 + ], + [ + -0.0005345265963114798, + -0.0013694459339603782 + ], + [ + -0.0006330999312922359, + -0.0012520735617727041 + ], + [ + -0.0007280901772901416, + -0.0010761554585769773 + ], + [ + -0.0009217592305503786, + -0.0009558111196383834 + ], + [ + -0.001081267255358398, + -0.00031484721694141626 + ], + [ + -0.0012302096001803875, + -0.0007458669133484364 + ], + [ + -0.0016944983508437872, + -0.0008735618903301656 + ], + [ + -0.003650585189461708, + -0.001607439829967916 + ], + [ + -0.004094173666089773, + -0.00180875847581774 + ], + [ + -0.002533932449296117, + 0.00016556821356061846 + ], + [ + -0.002488949103280902, + 5.241473263595253e-05 + ], + [ + -0.002333409385755658, + 0.00077130610588938 + ], + [ + -0.0020680162124335766, + 0.0007700799033045769 + ], + [ + -0.0015857625985518098, + 0.0009944558842107654 + ], + [ + -0.0014850037405267358, + 0.001286727492697537 + ], + [ + -0.0011459465604275465, + 0.0011765117524191737 + ], + [ + -0.0007777121500112116, + 0.0014583771117031574 + ], + [ + -0.0008000337984412909, + 0.0018266979604959488 + ], + [ + -0.0009740700479596853, + 0.0022710177581757307 + ], + [ + -0.0002672994160093367, + 0.002068726811558008 + ], + [ + -0.0005208143847994506, + 0.0020830719731748104 + ], + [ + -0.0018717662896960974, + 0.003007944906130433 + ], + [ + -0.0010693584335967898, + 0.0030956293921917677 + ], + [ + 0.0004783102194778621, + 0.0020338341128081083 + ], + [ + 3.914970511686988e-05, + 0.002390749752521515 + ], + [ + 0.0013152945321053267, + 0.0020755871664732695 + ], + [ + 0.0010854083811864257, + 0.0014486514264717698 + ], + [ + 0.0016178804216906428, + 0.002506934106349945 + ], + [ + 0.0014162956504151225, + 0.0007748946081846952 + ], + [ + 0.0016683050198480487, + 0.0013800835004076362 + ], + [ + 0.0009737486834637821, + 0.0005410646554082632 + ], + [ + 0.001907138037495315, + 0.0005282413912937045 + ], + [ + 0.0021120659075677395, + 0.0010347977513447404 + ], + [ + 0.001385138719342649, + -4.6002824092283845e-05 + ], + [ + 0.002209632657468319, + -0.0004110128211323172 + ], + [ + 0.0021208934485912323, + 3.876421760651283e-05 + ], + [ + 0.001899477792903781, + 0.0004085125110577792 + ], + [ + 0.0017430849839001894, + -6.226101686479524e-05 + ], + [ + 0.0015900093130767345, + -0.0014757534954696894 + ], + [ + 0.001302627963013947, + -0.0010400869650766253 + ], + [ + 0.0009553904528729618, + -0.0016644648276269436 + ], + [ + 0.0007697956170886755, + -0.001371526625007391 + ], + [ + 0.0010051612043753266, + -0.0017974695656448603 + ], + [ + 0.00013481295900419354, + -0.0007941773510538042 + ], + [ + 0.0001293059322051704, + -0.0011632631067186594 + ], + [ + 0.0001342183240922168, + -0.0017161972355097532 + ], + [ + 0.0007037981995381415, + -0.001687468378804624 + ], + [ + 0.00031602519447915256, + -0.0019189275335520506 + ], + [ + 0.00019035414152313024, + -0.00016808028158266097 + ], + [ + -0.0006904809270054102, + -0.0015655288007110357 + ], + [ + -0.0001150473763118498, + -0.0032739785965532064 + ], + [ + -0.0005176039412617683, + -0.003064983757212758 + ], + [ + -0.0027701123617589474, + -0.0013210291508585215 + ] + ], + "total_points": 1000 +} \ No newline at end of file diff --git a/vna_system/core/acquisition/data_acquisition.py b/vna_system/core/acquisition/data_acquisition.py index b2c49a8..795b405 100644 --- a/vna_system/core/acquisition/data_acquisition.py +++ b/vna_system/core/acquisition/data_acquisition.py @@ -12,8 +12,15 @@ import serial from vna_system.core import config as cfg from vna_system.core.acquisition.port_manager import VNAPortLocator from vna_system.core.acquisition.sweep_buffer import SweepBuffer +from vna_system.core.acquisition.sound_player import SoundPlayer from vna_system.core.logging.logger import get_component_logger +# Import simulator if enabled +if cfg.USE_SIMULATOR: + from vna_system.core.acquisition.simulator import VNASimulator +else: + VNASimulator = None # type: ignore + logger = get_component_logger(__file__) @@ -30,6 +37,16 @@ class VNADataAcquisition: self.vna_port_locator = VNAPortLocator() self._sweep_buffer = SweepBuffer() + # Sound player for sweep notifications + sound_file = Path(cfg.BASE_DIR) / "core" / "sound_sample.mp3" + self._sound_player = SoundPlayer(sound_file) + + # Simulator mode + self._simulator = None + if cfg.USE_SIMULATOR: + self._simulator = VNASimulator() + logger.info("VNA Simulator mode enabled") + # Control flags self._running: bool = False self._thread: threading.Thread | None = None @@ -45,7 +62,7 @@ class VNADataAcquisition: self._collected_rx_payloads: list[bytes] = [] self._meas_cmds_in_sweep: int = 0 - logger.debug("VNADataAcquisition initialized", baud=self.baud) + logger.debug("VNADataAcquisition initialized", baud=self.baud, simulator_mode=cfg.USE_SIMULATOR) def _get_current_bin_path(self) -> Path | None: """Get the path to the current binary input file from JSON config.""" @@ -175,8 +192,55 @@ class VNADataAcquisition: # --------------------------------------------------------------------- # # Acquisition loop # --------------------------------------------------------------------- # + def _simulator_acquisition_loop(self) -> None: + """Simplified acquisition loop for simulator mode.""" + logger.info("Starting simulator acquisition loop") + + while self._running and not self._stop_event.is_set(): + try: + # Honor pause + if self._paused: + time.sleep(0.1) + continue + + # Get simulated sweep with noise + points, timestamp = self._simulator.get_sweep() + + # Add sweep to buffer + sweep_number = self._sweep_buffer.add_sweep(points, timestamp=timestamp) + logger.info( + "Simulated sweep collected", + sweep_number=sweep_number, + points=len(points), + timestamp=timestamp + ) + + # Play sweep notification sound + self._sound_player.play() + + # Handle single-sweep mode transitions + if not self._continuous_mode: + if self._single_sweep_requested: + self._single_sweep_requested = False + logger.info("Single simulated sweep completed; pausing acquisition") + self.pause() + else: + self.pause() + else: + # In continuous mode, add a small delay between sweeps + time.sleep(0.1) + + except Exception as exc: # noqa: BLE001 + logger.error("Simulator acquisition loop error", error=repr(exc)) + time.sleep(1.0) + def _acquisition_loop(self) -> None: """Main acquisition loop executed by the background thread.""" + # Use simulator loop if simulator is enabled + if self._simulator is not None: + self._simulator_acquisition_loop() + return + while self._running and not self._stop_event.is_set(): try: # Honor pause @@ -305,6 +369,9 @@ class VNADataAcquisition: expected=cfg.EXPECTED_POINTS_PER_SWEEP, actual=len(all_points), ) + + # Play sweep notification sound + self._sound_player.play() else: logger.warning("No points parsed for sweep") diff --git a/vna_system/core/acquisition/simulator.py b/vna_system/core/acquisition/simulator.py new file mode 100644 index 0000000..f9fb73f --- /dev/null +++ b/vna_system/core/acquisition/simulator.py @@ -0,0 +1,150 @@ +""" +VNA Simulator Module + +This module provides a simulator mode that loads sweep data from a JSON file +and adds configurable Gaussian noise to simulate real device behavior. +""" + +import json +import logging +import time +from pathlib import Path +from typing import List, Tuple, Optional +import numpy as np + +from vna_system.core import config + +logger = logging.getLogger(__name__) + + +class VNASimulator: + """ + Simulator for VNA device that loads sweep data from file and adds noise. + + This simulator reads a reference sweep from a JSON file and adds Gaussian + noise to the real and imaginary components to simulate measurement variations. + """ + + def __init__( + self, + sweep_file: Optional[Path] = None, + noise_level: Optional[float] = None + ): + """ + Initialize the VNA simulator. + + Args: + sweep_file: Path to JSON file containing sweep data. + If None, uses config.SIMULATOR_SWEEP_FILE + noise_level: Standard deviation of Gaussian noise to add. + If None, uses config.SIMULATOR_NOISE_LEVEL + """ + self.sweep_file = sweep_file or config.SIMULATOR_SWEEP_FILE + self.noise_level = noise_level if noise_level is not None else config.SIMULATOR_NOISE_LEVEL + + self._reference_points: List[Tuple[float, float]] = [] + self._sweep_counter = 0 + self._load_reference_sweep() + + logger.info( + f"VNA Simulator initialized with file: {self.sweep_file}, " + f"noise level: {self.noise_level}" + ) + + def _load_reference_sweep(self) -> None: + """Load reference sweep data from JSON file.""" + try: + with open(self.sweep_file, 'r') as f: + data = json.load(f) + + # Extract points from JSON structure + # Expected format: {"sweep_number": N, "timestamp": T, "points": [[real, imag], ...]} + if 'points' not in data: + raise ValueError(f"JSON file missing 'points' field: {self.sweep_file}") + + self._reference_points = [ + (float(point[0]), float(point[1])) + for point in data['points'] + ] + + logger.info( + f"Loaded {len(self._reference_points)} points from reference sweep " + f"(sweep_number: {data.get('sweep_number', 'N/A')})" + ) + + except FileNotFoundError: + logger.error(f"Simulator sweep file not found: {self.sweep_file}") + raise + except json.JSONDecodeError as e: + logger.error(f"Failed to parse JSON file {self.sweep_file}: {e}") + raise + except Exception as e: + logger.error(f"Failed to load reference sweep: {e}") + raise + + def get_sweep(self) -> Tuple[List[Tuple[float, float]], float]: + """ + Generate a simulated sweep with added noise. + + Returns: + Tuple of (points, timestamp) where: + - points: List of (real, imag) tuples with added noise + - timestamp: Current Unix timestamp + """ + time.sleep(1) + timestamp = time.time() + self._sweep_counter += 1 + + # Add Gaussian noise to each point + noisy_points = [] + for real, imag in self._reference_points: + # Add independent noise to real and imaginary parts + noise_real = np.random.normal(0, self.noise_level) + noise_imag = np.random.normal(0, self.noise_level) + noisy_real = real + noise_real + noisy_imag = imag + noise_imag + noisy_points.append((noisy_real, noisy_imag)) + + # Log statistics about the noise added + if len(noisy_points) > 0: + first_orig = self._reference_points[0] + first_noisy = noisy_points[0] + logger.debug( + f"Simulated sweep #{self._sweep_counter}: " + f"noise_level={self.noise_level:.2e}, " + f"first_point: orig=({first_orig[0]:.6e}, {first_orig[1]:.6e}), " + f"noisy=({first_noisy[0]:.6e}, {first_noisy[1]:.6e})" + ) + + logger.debug( + f"Generated simulated sweep #{self._sweep_counter} with " + f"{len(noisy_points)} points at timestamp {timestamp:.6f}" + ) + + return noisy_points, timestamp + + def get_point_count(self) -> int: + """ + Get the number of points in the reference sweep. + + Returns: + Number of points in each simulated sweep + """ + return len(self._reference_points) + + def reset_counter(self) -> None: + """Reset the internal sweep counter.""" + self._sweep_counter = 0 + logger.debug("Simulator sweep counter reset") + + +def create_simulator() -> VNASimulator: + """ + Factory function to create a VNA simulator instance. + + Uses configuration from config module. + + Returns: + Configured VNASimulator instance + """ + return VNASimulator() diff --git a/vna_system/core/acquisition/sound_player.py b/vna_system/core/acquisition/sound_player.py new file mode 100644 index 0000000..31094bc --- /dev/null +++ b/vna_system/core/acquisition/sound_player.py @@ -0,0 +1,101 @@ +""" +Cross-platform sound player for sweep notifications. + +Supports Windows and Linux platforms. +""" + +import platform +import threading +from pathlib import Path + +from vna_system.core.logging.logger import get_component_logger + +logger = get_component_logger(__file__) + + +class SoundPlayer: + """Cross-platform sound player using system-specific APIs.""" + + def __init__(self, sound_file: Path): + """ + Initialize sound player with a sound file. + + Args: + sound_file: Path to the sound file (mp3, wav, etc.) + """ + self.sound_file = sound_file + self.system = platform.system() + self._player = None + + # Validate sound file exists + if not sound_file.exists(): + logger.warning("Sound file not found", path=str(sound_file)) + return + + # Initialize platform-specific player + if self.system == "Windows": + self._init_windows_player() + elif self.system == "Linux": + self._init_linux_player() + else: + logger.warning("Unsupported platform for sound playback", platform=self.system) + + def _init_windows_player(self): + """Initialize Windows-specific sound player using winsound.""" + try: + import winsound + self._player = lambda: winsound.PlaySound( + str(self.sound_file), + winsound.SND_FILENAME | winsound.SND_ASYNC | winsound.SND_NODEFAULT + ) + logger.debug("Windows sound player initialized") + except ImportError: + logger.warning("winsound not available on Windows") + self._player = None + + def _init_linux_player(self): + """Initialize Linux-specific sound player using subprocess.""" + import subprocess + import shutil + + # Try to find available audio players + players = ["paplay", "aplay", "mpg123", "ffplay"] + available_player = None + + for player in players: + if shutil.which(player): + available_player = player + break + + if available_player: + def linux_play(): + try: + # Run player silently in background + subprocess.Popen( + [available_player, str(self.sound_file)], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL + ) + except Exception as exc: + logger.error("Failed to play sound on Linux", error=repr(exc)) + + self._player = linux_play + logger.debug("Linux sound player initialized", player=available_player) + else: + logger.warning("No audio player found on Linux", tried=players) + self._player = None + + def play(self): + """Play the sound asynchronously (non-blocking).""" + if self._player is None: + return + + # Play in a background thread to avoid blocking + thread = threading.Thread(target=self._player, daemon=True, name="SoundPlayer") + thread.start() + + def play_sync(self): + """Play the sound synchronously (blocking).""" + if self._player is None: + return + self._player() diff --git a/vna_system/core/acquisition/sweep_buffer.py b/vna_system/core/acquisition/sweep_buffer.py index ff5f712..756d7ba 100644 --- a/vna_system/core/acquisition/sweep_buffer.py +++ b/vna_system/core/acquisition/sweep_buffer.py @@ -65,7 +65,7 @@ class SweepBuffer: # ------------------------------ # Core API # ------------------------------ - def add_sweep(self, points: list[Point]) -> int: + def add_sweep(self, points: list[Point], timestamp: float | None = None) -> int: """ Add a new sweep to the buffer. @@ -73,13 +73,16 @@ class SweepBuffer: ---------- points: Sequence of (real, imag) tuples representing a sweep. + timestamp: + Optional UNIX timestamp. If None, current time is used. Returns ------- int The assigned sweep number for the newly added sweep. """ - timestamp = time.time() + if timestamp is None: + timestamp = time.time() with self._lock: self._sweep_counter += 1 sweep = SweepData( diff --git a/vna_system/core/config.py b/vna_system/core/config.py index b989d84..723b3f7 100644 --- a/vna_system/core/config.py +++ b/vna_system/core/config.py @@ -32,6 +32,13 @@ TX_CHUNK_SIZE = 64 * 1024 VNA_VID = 0x0483 # STMicroelectronics VNA_PID = 0x5740 # STM32 Virtual ComPort +# ----------------------------------------------------------------------------- +# Simulator mode settings +# ----------------------------------------------------------------------------- +USE_SIMULATOR = True # Set to True to use simulator instead of real device +SIMULATOR_SWEEP_FILE = BASE_DIR / "binary_input" / "sweep_example" / "example.json" +SIMULATOR_NOISE_LEVEL = 100 # Standard deviation of Gaussian noise to add to real and imaginary parts + # ----------------------------------------------------------------------------- # Sweep detection and parsing constants # ----------------------------------------------------------------------------- diff --git a/vna_system/core/processors/base_processor.py b/vna_system/core/processors/base_processor.py index 48a941a..fce4aa1 100644 --- a/vna_system/core/processors/base_processor.py +++ b/vna_system/core/processors/base_processor.py @@ -299,7 +299,7 @@ class BaseProcessor: # --------------------------------------------------------------------- # # Data path: accept new sweep, recompute, produce result # --------------------------------------------------------------------- # - def add_sweep_data(self, sweep_data: Any, calibrated_data: Any, vna_config: ConfigPreset | None, reference_data: Any = None): + def add_sweep_data(self, sweep_data: Any, calibrated_data: Any, vna_config: ConfigPreset | None, reference_data: Any = None, reference_info: Any = None): """ Add the latest sweep to the in-memory history and trigger recalculation. @@ -313,6 +313,8 @@ class BaseProcessor: Snapshot of VNA settings (dataclass or pydantic model supported). reference_data: Open air reference sweep data for background subtraction/normalization. + reference_info: + ReferenceInfo object with metadata (name, description, etc.) about the reference. Returns ------- @@ -326,6 +328,7 @@ class BaseProcessor: "calibrated_data": calibrated_data, "vna_config": self._snapshot_vna_config(vna_config), "reference_data": reference_data, + "reference_info": reference_info, "timestamp": datetime.now().timestamp(), } ) @@ -614,7 +617,6 @@ class BaseProcessor: reference_data = entry.get("reference_data") exported.append({ - "sweep_number": sweep_data.sweep_number if sweep_data else None, "timestamp": float(entry.get("timestamp")) if entry.get("timestamp") is not None else None, "sweep_points": self._points_to_list(getattr(sweep_data, "points", [])), "calibrated_points": self._points_to_list(getattr(calibrated_data, "points", [])), @@ -639,28 +641,29 @@ class BaseProcessor: with self._lock: self._sweep_history.clear() - for entry in history_data: + for idx, entry in enumerate(history_data): sweep_points = entry.get("sweep_points", []) calibrated_points = entry.get("calibrated_points", []) reference_points = entry.get("reference_points", []) # Reconstruct SweepData objects + # Use sequential index as sweep_number since it's not stored sweep_data = SweepData( - sweep_number=entry.get("sweep_number", 0), + sweep_number=idx, timestamp=entry.get("timestamp", 0.0), points=sweep_points, total_points=len(sweep_points) ) if sweep_points else None calibrated_data = SweepData( - sweep_number=entry.get("sweep_number", 0), + sweep_number=idx, timestamp=entry.get("timestamp", 0.0), points=calibrated_points, total_points=len(calibrated_points) ) if calibrated_points else None reference_data = SweepData( - sweep_number=entry.get("sweep_number", 0), + sweep_number=idx, timestamp=entry.get("timestamp", 0.0), points=reference_points, total_points=len(reference_points) @@ -731,16 +734,33 @@ class BaseProcessor: def get_full_state(self) -> dict[str, Any]: """ - Return complete processor state including sweep history. + Return complete processor state including sweep history and active reference. This should be called explicitly when needed (e.g., for export/download), not on every broadcast. """ with self._lock: + # Get active reference info from the latest history entry + active_reference = None + if self._sweep_history: + latest_entry = self._sweep_history[-1] + reference_info = latest_entry.get("reference_info") + reference_data = latest_entry.get("reference_data") + + if reference_info is not None: + # Export full ReferenceInfo metadata using its to_dict() method + active_reference = reference_info.to_dict() + # Also include the sweep data points + if reference_data is not None: + active_reference["points"] = self._points_to_list(getattr(reference_data, "points", [])) + active_reference["total_points"] = getattr(reference_data, "total_points", 0) + active_reference["sweep_timestamp"] = getattr(reference_data, "timestamp", None) + return { "processor_id": self.processor_id, "config": self._config.copy(), "history_count": len(self._sweep_history), "max_history": self._max_history, "sweep_history": self.export_history_data(), + "active_reference": active_reference, } diff --git a/vna_system/core/processors/configs/bscan_config.json b/vna_system/core/processors/configs/bscan_config.json index c357de9..9cc209b 100644 --- a/vna_system/core/processors/configs/bscan_config.json +++ b/vna_system/core/processors/configs/bscan_config.json @@ -1,6 +1,6 @@ { - "open_air": false, - "axis": "phase", + "open_air": true, + "axis": "abs", "cut": 0.266, "max": 2.3, "gain": 0.3, diff --git a/vna_system/core/processors/configs/magnitude_config.json b/vna_system/core/processors/configs/magnitude_config.json index 75db2aa..1f03cac 100644 --- a/vna_system/core/processors/configs/magnitude_config.json +++ b/vna_system/core/processors/configs/magnitude_config.json @@ -1,7 +1,7 @@ { - "y_min": -80, + "y_min": -45, "y_max": 40, "autoscale": true, "show_magnitude": true, - "show_phase": true + "show_phase": false } \ No newline at end of file diff --git a/vna_system/core/processors/implementations/bscan_processor.py b/vna_system/core/processors/implementations/bscan_processor.py index 349557d..061834e 100644 --- a/vna_system/core/processors/implementations/bscan_processor.py +++ b/vna_system/core/processors/implementations/bscan_processor.py @@ -138,12 +138,11 @@ class BScanProcessor(BaseProcessor): super().update_config(updates) def _clear_plot_history(self) -> None: - """Clear the accumulated plot history.""" + """Clear the accumulated plot and sweep history completely.""" with self._lock: - latest = self._sweep_history[-1] self._sweep_history.clear() - self._sweep_history.append(latest) - logger.info("Plot history cleared", processor_id=self.processor_id) + self._plot_history.clear() + logger.info("Plot and sweep history cleared completely", processor_id=self.processor_id) # ------------------------------------------------------------------------- # Processing @@ -206,7 +205,6 @@ class BScanProcessor(BaseProcessor): plot_record = { "time_domain_data": analysis["time_data"].tolist(), "distance_data": analysis["distance"].tolist(), - "sweep_number": sweep_data.sweep_number, "timestamp": sweep_data.timestamp, "frequency_range": analysis["freq_range"], } @@ -220,7 +218,8 @@ class BScanProcessor(BaseProcessor): with self._lock: all_time_domain = [record["time_domain_data"] for record in self._plot_history] all_distance = [record["distance_data"] for record in self._plot_history] - all_sweep_numbers = [record["sweep_number"] for record in self._plot_history] + # Generate sequential sweep numbers starting from 1 + all_sweep_numbers = list(range(1, len(self._plot_history) + 1)) all_timestamps = [record["timestamp"] for record in self._plot_history] return { @@ -292,13 +291,12 @@ class BScanProcessor(BaseProcessor): y_coords: list[float] = [] z_values: list[float] = [] - for item in history: - sweep_num = item["sweep_number"] + for sweep_index, item in enumerate(history, start=1): depths = item["distance_data"] amps = item["time_domain_data"] for d, a in zip(depths, amps, strict=False): - x_coords.append(sweep_num) + x_coords.append(sweep_index) y_coords.append(d) z_values.append(a) @@ -368,8 +366,32 @@ class BScanProcessor(BaseProcessor): """ with self._lock: if not self._sweep_history: - logger.debug("Recalculate skipped; sweep history empty") - return None + logger.debug("Recalculate with empty history; returning empty result") + # Return empty result with proper structure + empty_data = { + "time_domain_data": [], + "distance_data": [], + "frequency_range": [0.0, 0.0], + "reference_used": False, + "axis_type": self._config["axis"], + "points_processed": 0, + "plot_history_count": 0, + "all_time_domain_data": [], + "all_distance_data": [], + "all_sweep_numbers": [], + "all_timestamps": [], + } + plotly_conf = self.generate_plotly_config(empty_data, {}) + ui_params = self.get_ui_parameters() + + return ProcessedResult( + processor_id=self.processor_id, + timestamp=datetime.now().timestamp(), + data=empty_data, + plotly_config=plotly_conf, + ui_parameters=ui_params, + metadata=self._get_metadata(), + ) # Clear existing plot history to rebuild from scratch self._plot_history.clear() @@ -657,3 +679,22 @@ class BScanProcessor(BaseProcessor): except Exception as exc: # noqa: BLE001 logger.error("Depth processing failed", error=repr(exc)) return depth_m, response + + # ------------------------------------------------------------------------- + # State export override + # ------------------------------------------------------------------------- + + def get_full_state(self) -> dict[str, Any]: + """ + Return complete processor state including BScan-specific data. + + Extends base implementation with plot history count. + """ + # Get base state (includes active_reference) + state = super().get_full_state() + + # Add BScan-specific information + with self._lock: + state["plot_history_count"] = len(self._plot_history) + + return state diff --git a/vna_system/core/processors/implementations/magnitude_processor.py b/vna_system/core/processors/implementations/magnitude_processor.py index 3be9637..120133b 100644 --- a/vna_system/core/processors/implementations/magnitude_processor.py +++ b/vna_system/core/processors/implementations/magnitude_processor.py @@ -59,6 +59,20 @@ class MagnitudeProcessor(BaseProcessor): logger.warning("Calibrated sweep contains zero points") return {"error": "Empty calibrated sweep"} + # Apply open air reference subtraction if enabled + reference_data = None + if self._config["open_air"] and self._sweep_history: + latest_history = self._sweep_history[-1] + reference_data = latest_history.get("reference_data") + if reference_data is None: + logger.warning("Open air subtraction cannot be done: reference_data is None") + self._config["open_air"] = False + + if self._config["open_air"] and reference_data is not None: + reference_points = getattr(reference_data, "points", None) + if reference_points: + points = self._subtract_reference(points, reference_points) + # Frequency axis from VNA config (defaults if not provided) start_freq = float(vna_config.get("start_freq", 100e6)) stop_freq = float(vna_config.get("stop_freq", 8.8e9)) @@ -228,6 +242,12 @@ class MagnitudeProcessor(BaseProcessor): type="toggle", value=self._config.get("show_phase", False), ), + UIParameter( + name="open_air", + label="Вычесть Open Air", + type="toggle", + value=self._config.get("open_air", False), + ), UIParameter( name="autoscale", label="Автомасштаб оси Y", @@ -258,6 +278,7 @@ class MagnitudeProcessor(BaseProcessor): "autoscale": False, "show_magnitude": True, "show_phase": False, + "open_air": False, } def update_config(self, updates: dict[str, Any]) -> None: @@ -287,3 +308,35 @@ class MagnitudeProcessor(BaseProcessor): logger.info("Adjusted y_max to maintain y_max > y_min", y_min=self._config["y_min"], y_max=self._config["y_max"]) + + def _subtract_reference( + self, + signal: list[tuple[float, float]], + reference: list[tuple[float, float]] + ) -> list[tuple[float, float]]: + """ + Subtract reference from signal (complex subtraction). + + Args: + signal: List of (real, imag) tuples + reference: List of (real, imag) tuples + + Returns: + List of (real, imag) tuples after subtraction + """ + try: + n = min(len(signal), len(reference)) + if n == 0: + return signal + + result = [] + for i in range(n): + sig_real, sig_imag = signal[i] + ref_real, ref_imag = reference[i] + result.append((sig_real - ref_real, sig_imag - ref_imag)) + + logger.debug("Reference subtraction completed", points=n) + return result + except Exception as exc: + logger.error("Reference subtraction failed", error=repr(exc)) + return signal diff --git a/vna_system/core/processors/manager.py b/vna_system/core/processors/manager.py index eb6007b..465f8f6 100644 --- a/vna_system/core/processors/manager.py +++ b/vna_system/core/processors/manager.py @@ -100,7 +100,7 @@ class ProcessorManager: # --------------------------------------------------------------------- # # Main processing actions # --------------------------------------------------------------------- # - def process_sweep(self, sweep_data: SweepData, calibrated_data: Any, vna_config: ConfigPreset | None, reference_data: Any = None) -> dict[str, ProcessedResult]: + def process_sweep(self, sweep_data: SweepData, calibrated_data: Any, vna_config: ConfigPreset | None, reference_data: Any = None, reference_info: Any = None) -> dict[str, ProcessedResult]: """ Feed a sweep into all processors and dispatch results to callbacks. @@ -114,7 +114,7 @@ class ProcessorManager: for processor_id, processor in processors_items: try: - result = processor.add_sweep_data(sweep_data, calibrated_data, vna_config, reference_data) + result = processor.add_sweep_data(sweep_data, calibrated_data, vna_config, reference_data, reference_info) if result: results[processor_id] = result for cb in callbacks: @@ -280,7 +280,8 @@ class ProcessorManager: calibrated = self._apply_calibration(latest) vna_cfg = self.settings_manager.get_current_preset() reference_data = self._apply_calibration(self.settings_manager.get_current_reference_sweep(vna_cfg)) - self.process_sweep(latest, calibrated, vna_cfg, reference_data) + reference_info = self.settings_manager.get_current_reference(vna_cfg) + self.process_sweep(latest, calibrated, vna_cfg, reference_data, reference_info) self._last_processed_sweep = latest.sweep_number # Light-duty polling to reduce wakeups diff --git a/vna_system/core/settings/settings_manager.py b/vna_system/core/settings/settings_manager.py index d1854c3..b88bc20 100644 --- a/vna_system/core/settings/settings_manager.py +++ b/vna_system/core/settings/settings_manager.py @@ -287,12 +287,26 @@ class VNASettingsManager: if not current_preset: raise ValueError("No current preset available") + # Get current calibration info to store in metadata + current_calibration = self.get_current_calibration() + calibration_info = None + if current_calibration: + calibration_info = { + "calibration_name": current_calibration.name, + "preset_filename": current_calibration.preset.filename + } + + # Merge calibration info into metadata + merged_metadata = metadata or {} + if calibration_info: + merged_metadata["calibration"] = calibration_info + reference_info = self.reference_manager.create_reference( name=reference_name, preset=current_preset, sweep_data=latest, description=description, - metadata=metadata or {} + metadata=merged_metadata ) logger.info( diff --git a/vna_system/core/sound_sample.mp3 b/vna_system/core/sound_sample.mp3 new file mode 100644 index 0000000..5e67df9 Binary files /dev/null and b/vna_system/core/sound_sample.mp3 differ diff --git a/vna_system/web_ui/static/js/modules/charts.js b/vna_system/web_ui/static/js/modules/charts.js index fed2333..3862dfd 100644 --- a/vna_system/web_ui/static/js/modules/charts.js +++ b/vna_system/web_ui/static/js/modules/charts.js @@ -380,7 +380,8 @@ export class ChartManager { plotly_config: safeClone(current_data.plotly_config), timestamp: current_data.timestamp } : null, - sweep_history: state.sweep_history || [] + sweep_history: state.sweep_history || [], + active_reference: state.active_reference || null }; } diff --git a/vna_system/web_ui/static/js/modules/settings.js b/vna_system/web_ui/static/js/modules/settings.js index 64d39c6..6f15839 100644 --- a/vna_system/web_ui/static/js/modules/settings.js +++ b/vna_system/web_ui/static/js/modules/settings.js @@ -98,6 +98,7 @@ export class SettingsManager { currentReferenceName: document.getElementById('currentReferenceName'), currentReferenceTimestamp: document.getElementById('currentReferenceTimestamp'), currentReferenceDescription: document.getElementById('currentReferenceDescription'), + currentReferenceCalibration: document.getElementById('currentReferenceCalibration'), // Status presetCount: document.getElementById('presetCount'), diff --git a/vna_system/web_ui/static/js/modules/settings/reference-manager.js b/vna_system/web_ui/static/js/modules/settings/reference-manager.js index 3930626..e9d027e 100644 --- a/vna_system/web_ui/static/js/modules/settings/reference-manager.js +++ b/vna_system/web_ui/static/js/modules/settings/reference-manager.js @@ -203,6 +203,18 @@ export class ReferenceManager { this.elements.currentReferenceDescription.textContent = reference.description || '—'; } + // Show calibration info if available + if (this.elements.currentReferenceCalibration) { + const calibrationInfo = reference.metadata?.calibration; + if (calibrationInfo && calibrationInfo.calibration_name) { + this.elements.currentReferenceCalibration.textContent = calibrationInfo.calibration_name; + this.elements.currentReferenceCalibration.parentElement.style.display = 'flex'; + } else { + this.elements.currentReferenceCalibration.textContent = '—'; + this.elements.currentReferenceCalibration.parentElement.style.display = 'none'; + } + } + this.onReferenceUpdated?.(reference); this.updateButtons(); } @@ -239,8 +251,20 @@ export class ReferenceManager { ); } - handleReferenceChange() { + async handleReferenceChange() { this.updateButtons(); + + // Show info for selected reference immediately + const selectedName = this.elements.referenceDropdown?.value; + if (selectedName) { + const selectedRef = this.availableReferences.find(r => r.name === selectedName); + if (selectedRef) { + this.updateInfo(selectedRef); + } + } else { + // If no selection, show current reference info + this.updateInfo(this.currentReference); + } } async handlePreviewReference() { diff --git a/vna_system/web_ui/templates/index.html b/vna_system/web_ui/templates/index.html index a6823b8..95ba47d 100644 --- a/vna_system/web_ui/templates/index.html +++ b/vna_system/web_ui/templates/index.html @@ -316,6 +316,10 @@ Описание: — +