[{"data":1,"prerenderedAt":3348},["ShallowReactive",2],{"navigation":3,"api-navigation":126,"\u002Fnotebooks\u002Fembedding_filters\u002Fenkf_information":328,"docyard:crossref-index":3347},[4,8,38,44,48,122],{"title":5,"path":6,"stem":7},"Getting Started","\u002Fgetting-started","1.getting-started",{"title":9,"path":10,"stem":11,"children":12,"page":37},"Recipes","\u002Frecipes","2.recipes",[13,17,21,25,29,33],{"title":14,"path":15,"stem":16},"Recipe: two-stage cascade tracker","\u002Frecipes\u002Fcascade_tracker","2.recipes\u002Fcascade_tracker",{"title":18,"path":19,"stem":20},"Recipe: cosine appearance tracker","\u002Frecipes\u002Fcosine_tracker","2.recipes\u002Fcosine_tracker",{"title":22,"path":23,"stem":24},"Recipe: Kalman motion tracker","\u002Frecipes\u002Fkalman_motion_tracker","2.recipes\u002Fkalman_motion_tracker",{"title":26,"path":27,"stem":28},"Recipe: learned MOTR-style appearance tracker","\u002Frecipes\u002Flearned_motr_tracker","2.recipes\u002Flearned_motr_tracker",{"title":30,"path":31,"stem":32},"Recipe: overlap-IoU tracker (port of 1.x models.overlap)","\u002Frecipes\u002Foverlap_tracker","2.recipes\u002Foverlap_tracker",{"title":34,"path":35,"stem":36},"Recipe: SORT-style tracker on unitrack 2.0","\u002Frecipes\u002Fsort","2.recipes\u002Fsort",false,{"title":39,"path":40,"stem":41,"children":42},"API reference","\u002Fapi","3.api\u002Findex",[43],{"title":39,"path":40,"stem":41},{"title":45,"path":46,"stem":47},"Migrating from 1.x to 2.0","\u002Fmigration","4.migration",{"title":49,"path":50,"stem":51,"children":52,"page":37},"Notebooks","\u002Fnotebooks","5.notebooks",[53,84,88],{"title":54,"path":55,"stem":56,"children":57},"Embedding \u002F appearance filters","\u002Fnotebooks\u002Fembedding_filters","5.notebooks\u002Fembedding_filters\u002Findex",[58,59,64,68,72,76,80],{"title":54,"path":55,"stem":56},{"title":60,"path":61,"stem":62,"icon":63},"Embedding filters 1 — Exponential moving average (EMA)","\u002Fnotebooks\u002Fembedding_filters\u002Fema","5.notebooks\u002Fembedding_filters\u002F1.ema","i-lucide-notebook",{"title":65,"path":66,"stem":67,"icon":63},"Embedding filters 2 — Diagonal Kalman","\u002Fnotebooks\u002Fembedding_filters\u002Fkalman_diagonal","5.notebooks\u002Fembedding_filters\u002F2.kalman_diagonal",{"title":69,"path":70,"stem":71,"icon":63},"Embedding filters 3 — von Mises-Fisher (directional)","\u002Fnotebooks\u002Fembedding_filters\u002Fvmf_directional","5.notebooks\u002Fembedding_filters\u002F3.vmf_directional",{"title":73,"path":74,"stem":75,"icon":63},"Embedding filters 4 — Ensemble Kalman & information filters","\u002Fnotebooks\u002Fembedding_filters\u002Fenkf_information","5.notebooks\u002Fembedding_filters\u002F4.enkf_information",{"title":77,"path":78,"stem":79,"icon":63},"Embedding filters 5 — Memory bank & learned propagation","\u002Fnotebooks\u002Fembedding_filters\u002Fgallery_and_learned","5.notebooks\u002Fembedding_filters\u002F5.gallery_and_learned",{"title":81,"path":82,"stem":83,"icon":63},"Embedding filters 6 — summary & benchmark","\u002Fnotebooks\u002Fembedding_filters\u002Fsummary_benchmark","5.notebooks\u002Fembedding_filters\u002F6.summary_benchmark",{"title":85,"path":86,"stem":87,"icon":63},"Kalman filters for motion prediction in tracking","\u002Fnotebooks\u002Fkalman","5.notebooks\u002Fkalman",{"title":89,"path":90,"stem":91,"children":92},"Tutorial notebooks","\u002Fnotebooks\u002Ftutorials","5.notebooks\u002Ftutorials\u002Findex",[93,94,98,102,106,110,114,118],{"title":89,"path":90,"stem":91},{"title":95,"path":96,"stem":97,"icon":63},"1. Quickstart — your first tracker","\u002Fnotebooks\u002Ftutorials\u002Fquickstart","5.notebooks\u002Ftutorials\u002F1.quickstart",{"title":99,"path":100,"stem":101,"icon":63},"2. The data model — typed records that flow through a tracker","\u002Fnotebooks\u002Ftutorials\u002Fdata_model","5.notebooks\u002Ftutorials\u002F2.data_model",{"title":103,"path":104,"stem":105,"icon":63},"3. The cost & gate zoos","\u002Fnotebooks\u002Ftutorials\u002Fcosts_and_gates","5.notebooks\u002Ftutorials\u002F3.costs_and_gates",{"title":107,"path":108,"stem":109,"icon":63},"4. The composable pipeline tree","\u002Fnotebooks\u002Ftutorials\u002Fpipeline_tree","5.notebooks\u002Ftutorials\u002F4.pipeline_tree",{"title":111,"path":112,"stem":113,"icon":63},"5. State evolution and lifecycle","\u002Fnotebooks\u002Ftutorials\u002Fstates_and_lifecycle","5.notebooks\u002Ftutorials\u002F5.states_and_lifecycle",{"title":115,"path":116,"stem":117,"icon":63},"6. End-to-end: K=2 cascaded and parallel fusion","\u002Fnotebooks\u002Ftutorials\u002Fcascaded_and_parallel","5.notebooks\u002Ftutorials\u002F6.cascaded_and_parallel",{"title":119,"path":120,"stem":121,"icon":63},"7. Migration & new possibilities — driven by a real detector","\u002Fnotebooks\u002Ftutorials\u002Fmigration","5.notebooks\u002Ftutorials\u002F7.migration",{"title":123,"path":124,"stem":125},"Unitrack","\u002F","index",[127,130,133,136,139,142,145,148,151,154,157,160,163,166,169,172,175,178,181,184,187,190,193,196,199,202,205,208,211,214,217,220,223,226,229,232,235,238,241,244,247,249,252,255,258,261,263,266,269,272,274,277,280,282,285,288,290,293,296,299,302,305,308,311,313,315,318,320,323,326],{"title":128,"path":129},"assignment","\u002Fapi\u002Fassignment",{"title":131,"path":132},"associate","\u002Fapi\u002Fassignment\u002Fassociate",{"title":134,"path":135},"clip_associate","\u002Fapi\u002Fassignment\u002Fclip_associate",{"title":137,"path":138},"lap","\u002Fapi\u002Fassignment\u002Flap",{"title":140,"path":141},"lapjv","\u002Fapi\u002Fassignment\u002Flapjv",{"title":143,"path":144},"benchmarks","\u002Fapi\u002Fbenchmarks",{"title":146,"path":147},"hota","\u002Fapi\u002Fbenchmarks\u002Fhota",{"title":149,"path":150},"datasets","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Fdatasets",{"title":152,"path":153},"learned_modules","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Flearned_modules",{"title":155,"path":156},"metric","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Fmetric",{"title":158,"path":159},"models","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Fmodels",{"title":161,"path":162},"protocols","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Fprotocols",{"title":164,"path":165},"render","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Frender",{"title":167,"path":168},"report","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Freport",{"title":170,"path":171},"runner","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Frunner",{"title":173,"path":174},"tracker","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Ftracker",{"title":176,"path":177},"train_learned","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Ftrain_learned",{"title":179,"path":180},"types","\u002Fapi\u002Fbenchmarks\u002Fhota\u002Ftypes",{"title":182,"path":183},"costs","\u002Fapi\u002Fcosts",{"title":185,"path":186},"combinators","\u002Fapi\u002Fcosts\u002Fcombinators",{"title":188,"path":189},"distance","\u002Fapi\u002Fcosts\u002Fdistance",{"title":191,"path":192},"gallery","\u002Fapi\u002Fcosts\u002Fgallery",{"title":194,"path":195},"overlap","\u002Fapi\u002Fcosts\u002Foverlap",{"title":197,"path":198},"data","\u002Fapi\u002Fdata",{"title":200,"path":201},"clip","\u002Fapi\u002Fdata\u002Fclip",{"title":203,"path":204},"cost","\u002Fapi\u002Fdata\u002Fcost",{"title":206,"path":207},"detections","\u002Fapi\u002Fdata\u002Fdetections",{"title":209,"path":210},"frame","\u002Fapi\u002Fdata\u002Fframe",{"title":212,"path":213},"gate","\u002Fapi\u002Fdata\u002Fgate",{"title":215,"path":216},"match","\u002Fapi\u002Fdata\u002Fmatch",{"title":218,"path":219},"tensor_spec","\u002Fapi\u002Fdata\u002Ftensor_spec",{"title":221,"path":222},"tracklets","\u002Fapi\u002Fdata\u002Ftracklets",{"title":224,"path":225},"gates","\u002Fapi\u002Fgates",{"title":227,"path":228},"motion","\u002Fapi\u002Fgates\u002Fmotion",{"title":230,"path":231},"simple","\u002Fapi\u002Fgates\u002Fsimple",{"title":233,"path":234},"soft","\u002Fapi\u002Fgates\u002Fsoft",{"title":236,"path":237},"spatial","\u002Fapi\u002Fgates\u002Fspatial",{"title":239,"path":240},"lifecycle","\u002Fapi\u002Flifecycle",{"title":242,"path":243},"filters","\u002Fapi\u002Flifecycle\u002Ffilters",{"title":245,"path":246},"policies","\u002Fapi\u002Flifecycle\u002Fpolicies",{"title":233,"path":248},"\u002Fapi\u002Flifecycle\u002Fsoft",{"title":250,"path":251},"status","\u002Fapi\u002Flifecycle\u002Fstatus",{"title":253,"path":254},"visibility","\u002Fapi\u002Flifecycle\u002Fvisibility",{"title":256,"path":257},"pipeline","\u002Fapi\u002Fpipeline",{"title":259,"path":260},"base","\u002Fapi\u002Fpipeline\u002Fbase",{"title":185,"path":262},"\u002Fapi\u002Fpipeline\u002Fcombinators",{"title":264,"path":265},"diff","\u002Fapi\u002Fpipeline\u002Fdiff",{"title":267,"path":268},"merge","\u002Fapi\u002Fpipeline\u002Fmerge",{"title":270,"path":271},"states","\u002Fapi\u002Fstates",{"title":259,"path":273},"\u002Fapi\u002Fstates\u002Fbase",{"title":275,"path":276},"directional","\u002Fapi\u002Fstates\u002Fdirectional",{"title":278,"path":279},"ema","\u002Fapi\u002Fstates\u002Fema",{"title":191,"path":281},"\u002Fapi\u002Fstates\u002Fgallery",{"title":283,"path":284},"identity","\u002Fapi\u002Fstates\u002Fidentity",{"title":286,"path":287},"kalman","\u002Fapi\u002Fstates\u002Fkalman",{"title":259,"path":289},"\u002Fapi\u002Fstates\u002Fkalman\u002Fbase",{"title":291,"path":292},"bbox","\u002Fapi\u002Fstates\u002Fkalman\u002Fbbox",{"title":294,"path":295},"centroid","\u002Fapi\u002Fstates\u002Fkalman\u002Fcentroid",{"title":297,"path":298},"ensemble","\u002Fapi\u002Fstates\u002Fkalman\u002Fensemble",{"title":300,"path":301},"information","\u002Fapi\u002Fstates\u002Fkalman\u002Finformation",{"title":303,"path":304},"project","\u002Fapi\u002Fstates\u002Fkalman\u002Fproject",{"title":306,"path":307},"update","\u002Fapi\u002Fstates\u002Fkalman\u002Fupdate",{"title":309,"path":310},"learned","\u002Fapi\u002Fstates\u002Flearned",{"title":233,"path":312},"\u002Fapi\u002Fstates\u002Fsoft",{"title":173,"path":314},"\u002Fapi\u002Ftracker",{"title":316,"path":317},"batch","\u002Fapi\u002Ftracker\u002Fbatch",{"title":200,"path":319},"\u002Fapi\u002Ftracker\u002Fclip",{"title":321,"path":322},"memory","\u002Fapi\u002Ftracker\u002Fmemory",{"title":324,"path":325},"multistream","\u002Fapi\u002Ftracker\u002Fmultistream",{"title":173,"path":327},"\u002Fapi\u002Ftracker\u002Ftracker",{"id":329,"title":73,"body":330,"description":3341,"extension":3342,"meta":3343,"navigation":3344,"path":74,"seo":3345,"stem":75,"__hash__":3346},"content\u002F5.notebooks\u002Fembedding_filters\u002F4.enkf_information.md",{"type":331,"value":332,"toc":3338},"minimark",[333,337,355,384,1766,1771,2120,2546,2552,2557,2573,3309,3314,3334],[334,335,73],"h1",{"id":336},"embedding-filters-4-ensemble-kalman-information-filters",[338,339,340,341,345,346,350,351,354],"p",{},"Two ways to carry a ",[342,343,344],"em",{},"full"," covariance on a high-dimensional embedding\nwithout the ",[347,348,349],"code",{},"O(D^2)","-",[347,352,353],{},"O(D^3)"," cost of a dense Kalman filter:",[356,357,358,370],"ul",{},[359,360,361,365,366,369],"li",{},[362,363,364],"strong",{},"Information filter"," — the exact Kalman dual. It stores the\n",[342,367,368],{},"inverse"," covariance, which turns the measurement update into a\nplain addition. Its posterior is identical to the Kalman filter's\n(the library test asserts this to 1e-4).",[359,371,372,375,376,379,380,383],{},[362,373,374],{},"Ensemble Kalman filter (EnKF)"," — represents the covariance\n",[342,377,378],{},"implicitly"," by an ensemble of sample states. Cost scales with the\nensemble size, not ",[347,381,382],{},"D","-squared; this is the method built for very\nhigh-dimensional filtering. unitrack uses a deterministic ETKF\ntransform, so the step is reproducible.",[385,386,391],"pre",{"className":387,"code":388,"language":389,"meta":390,"style":390},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","import torch\nimport matplotlib.pyplot as plt\n\nimport unitrack\nfrom unitrack.assignment import Associate, Jonker\nfrom unitrack.costs import Cosine\nfrom unitrack.data import Detections, FrameContext, TensorSpec\nfrom unitrack.lifecycle import IncludeAll, NoLifecycle\nfrom unitrack.pipeline import Pipe\n\ntorch.manual_seed(0)\n\nD = 16          # embedding dimensionality (256+ in practice; 16 plots fast)\nT = 44          # frames\n\ndef make_clip(noise=0.15, seed=0, switch=None):\n    \"\"\"\n    A unit embedding that rotates slowly in the (e0, e1) plane plus\n    per-frame noise in all D dims. Rotating in a known plane means\n    projecting onto dims (0, 1) shows the true path as a circle arc.\n    `switch` optionally rotates the plane mid-clip (an appearance change).\n    \"\"\"\n    g = torch.Generator().manual_seed(seed)\n    t = torch.arange(T).float()\n    theta = 0.10 * t\n    truth = torch.zeros(T, D)\n    truth[:, 0] = torch.cos(theta)\n    truth[:, 1] = torch.sin(theta)\n    if switch is not None:\n        # after `switch`, swap appearance into the (e2, e3) plane.\n        truth[switch:, :] = 0.0\n        truth[switch:, 2] = torch.cos(theta[switch:])\n        truth[switch:, 3] = torch.sin(theta[switch:])\n    obs = truth + noise * torch.randn(T, D, generator=g)\n    obs = torch.nn.functional.normalize(obs, dim=-1)\n    dets = [Detections(index=torch.tensor([0]), emb=obs[k:k + 1].clone(),\n                       batch_size=[1]) for k in range(T)]\n    return t, truth, obs, dets\n\ndef run(tracker, dets, fields=(\"emb\",)):\n    \"\"\"Run a single-object clip through a real Tracker; collect snapshot fields.\"\"\"\n    ms = unitrack.MultiStream(tracker)\n    rec = {f: [] for f in fields}\n    for k, d in enumerate(dets):\n        ctx = FrameContext.make(frame_idx=k, delta=1.0, fps=1.0, stream_key=0)\n        res = ms.step(stream_key=0, detections=d, ctx=ctx)\n        for f in fields:\n            rec[f].append(getattr(res.snapshot, f)[0].clone())\n    return {f: torch.stack(v) for f, v in rec.items()}\n\ndef cos_to_truth(est, truth):\n    e = torch.nn.functional.normalize(est, dim=-1)\n    u = torch.nn.functional.normalize(truth, dim=-1)\n    return (e * u).sum(-1)\n\nt, truth, obs, dets = make_clip()\nprint(f\"clip: {T} frames, D={D}; raw-detection mean cosine-to-truth \"\n      f\"= {cos_to_truth(obs, truth).mean():.3f}\")\n\n","python","",[347,392,393,406,428,435,443,468,485,512,534,551,556,578,583,600,614,619,664,671,678,684,690,696,701,729,758,775,801,833,860,881,887,910,945,979,1027,1069,1135,1170,1194,1199,1238,1250,1271,1302,1328,1382,1429,1443,1490,1538,1543,1562,1598,1635,1664,1669,1694,1727],{"__ignoreMap":390},[394,395,398,402],"span",{"class":396,"line":397},"line",1,[394,399,401],{"class":400},"sVHd0","import",[394,403,405],{"class":404},"su5hD"," torch\n",[394,407,409,411,414,418,422,425],{"class":396,"line":408},2,[394,410,401],{"class":400},[394,412,413],{"class":404}," matplotlib",[394,415,417],{"class":416},"sP7_E",".",[394,419,421],{"class":420},"skxfh","pyplot",[394,423,424],{"class":400}," as",[394,426,427],{"class":404}," plt\n",[394,429,431],{"class":396,"line":430},3,[394,432,434],{"emptyLinePlaceholder":433},true,"\n",[394,436,438,440],{"class":396,"line":437},4,[394,439,401],{"class":400},[394,441,442],{"class":404}," unitrack\n",[394,444,446,449,452,454,457,459,462,465],{"class":396,"line":445},5,[394,447,448],{"class":400},"from",[394,450,451],{"class":404}," unitrack",[394,453,417],{"class":416},[394,455,456],{"class":404},"assignment ",[394,458,401],{"class":400},[394,460,461],{"class":404}," Associate",[394,463,464],{"class":416},",",[394,466,467],{"class":404}," Jonker\n",[394,469,471,473,475,477,480,482],{"class":396,"line":470},6,[394,472,448],{"class":400},[394,474,451],{"class":404},[394,476,417],{"class":416},[394,478,479],{"class":404},"costs ",[394,481,401],{"class":400},[394,483,484],{"class":404}," Cosine\n",[394,486,488,490,492,494,497,499,502,504,507,509],{"class":396,"line":487},7,[394,489,448],{"class":400},[394,491,451],{"class":404},[394,493,417],{"class":416},[394,495,496],{"class":404},"data ",[394,498,401],{"class":400},[394,500,501],{"class":404}," Detections",[394,503,464],{"class":416},[394,505,506],{"class":404}," FrameContext",[394,508,464],{"class":416},[394,510,511],{"class":404}," TensorSpec\n",[394,513,515,517,519,521,524,526,529,531],{"class":396,"line":514},8,[394,516,448],{"class":400},[394,518,451],{"class":404},[394,520,417],{"class":416},[394,522,523],{"class":404},"lifecycle ",[394,525,401],{"class":400},[394,527,528],{"class":404}," IncludeAll",[394,530,464],{"class":416},[394,532,533],{"class":404}," NoLifecycle\n",[394,535,537,539,541,543,546,548],{"class":396,"line":536},9,[394,538,448],{"class":400},[394,540,451],{"class":404},[394,542,417],{"class":416},[394,544,545],{"class":404},"pipeline ",[394,547,401],{"class":400},[394,549,550],{"class":404}," Pipe\n",[394,552,554],{"class":396,"line":553},10,[394,555,434],{"emptyLinePlaceholder":433},[394,557,559,562,564,568,571,575],{"class":396,"line":558},11,[394,560,561],{"class":404},"torch",[394,563,417],{"class":416},[394,565,567],{"class":566},"slqww","manual_seed",[394,569,570],{"class":416},"(",[394,572,574],{"class":573},"srdBf","0",[394,576,577],{"class":416},")\n",[394,579,581],{"class":396,"line":580},12,[394,582,434],{"emptyLinePlaceholder":433},[394,584,586,589,593,596],{"class":396,"line":585},13,[394,587,588],{"class":404},"D ",[394,590,592],{"class":591},"smGrS","=",[394,594,595],{"class":573}," 16",[394,597,599],{"class":598},"sutJx","          # embedding dimensionality (256+ in practice; 16 plots fast)\n",[394,601,603,606,608,611],{"class":396,"line":602},14,[394,604,605],{"class":404},"T ",[394,607,592],{"class":591},[394,609,610],{"class":573}," 44",[394,612,613],{"class":598},"          # frames\n",[394,615,617],{"class":396,"line":616},15,[394,618,434],{"emptyLinePlaceholder":433},[394,620,622,626,630,632,636,638,641,643,646,648,650,652,655,657,661],{"class":396,"line":621},16,[394,623,625],{"class":624},"sbsja","def",[394,627,629],{"class":628},"sGLFI"," make_clip",[394,631,570],{"class":416},[394,633,635],{"class":634},"sFwrP","noise",[394,637,592],{"class":591},[394,639,640],{"class":573},"0.15",[394,642,464],{"class":416},[394,644,645],{"class":634}," seed",[394,647,592],{"class":591},[394,649,574],{"class":573},[394,651,464],{"class":416},[394,653,654],{"class":634}," switch",[394,656,592],{"class":591},[394,658,660],{"class":659},"s39Yj","None",[394,662,663],{"class":416},"):\n",[394,665,667],{"class":396,"line":666},17,[394,668,670],{"class":669},"s2W-s","    \"\"\"\n",[394,672,674],{"class":396,"line":673},18,[394,675,677],{"class":676},"sithA","    A unit embedding that rotates slowly in the (e0, e1) plane plus\n",[394,679,681],{"class":396,"line":680},19,[394,682,683],{"class":676},"    per-frame noise in all D dims. Rotating in a known plane means\n",[394,685,687],{"class":396,"line":686},20,[394,688,689],{"class":676},"    projecting onto dims (0, 1) shows the true path as a circle arc.\n",[394,691,693],{"class":396,"line":692},21,[394,694,695],{"class":676},"    `switch` optionally rotates the plane mid-clip (an appearance change).\n",[394,697,699],{"class":396,"line":698},22,[394,700,670],{"class":669},[394,702,704,707,709,712,714,717,720,722,724,727],{"class":396,"line":703},23,[394,705,706],{"class":404},"    g ",[394,708,592],{"class":591},[394,710,711],{"class":404}," torch",[394,713,417],{"class":416},[394,715,716],{"class":566},"Generator",[394,718,719],{"class":416},"().",[394,721,567],{"class":566},[394,723,570],{"class":416},[394,725,726],{"class":566},"seed",[394,728,577],{"class":416},[394,730,732,735,737,739,741,744,746,749,752,755],{"class":396,"line":731},24,[394,733,734],{"class":404},"    t ",[394,736,592],{"class":591},[394,738,711],{"class":404},[394,740,417],{"class":416},[394,742,743],{"class":566},"arange",[394,745,570],{"class":416},[394,747,748],{"class":566},"T",[394,750,751],{"class":416},").",[394,753,754],{"class":566},"float",[394,756,757],{"class":416},"()\n",[394,759,761,764,766,769,772],{"class":396,"line":760},25,[394,762,763],{"class":404},"    theta ",[394,765,592],{"class":591},[394,767,768],{"class":573}," 0.10",[394,770,771],{"class":591}," *",[394,773,774],{"class":404}," t\n",[394,776,778,781,783,785,787,790,792,794,796,799],{"class":396,"line":777},26,[394,779,780],{"class":404},"    truth ",[394,782,592],{"class":591},[394,784,711],{"class":404},[394,786,417],{"class":416},[394,788,789],{"class":566},"zeros",[394,791,570],{"class":416},[394,793,748],{"class":566},[394,795,464],{"class":416},[394,797,798],{"class":566}," D",[394,800,577],{"class":416},[394,802,804,807,810,813,816,819,821,823,826,828,831],{"class":396,"line":803},27,[394,805,806],{"class":404},"    truth",[394,808,809],{"class":416},"[:,",[394,811,812],{"class":573}," 0",[394,814,815],{"class":416},"]",[394,817,818],{"class":591}," =",[394,820,711],{"class":404},[394,822,417],{"class":416},[394,824,825],{"class":566},"cos",[394,827,570],{"class":416},[394,829,830],{"class":566},"theta",[394,832,577],{"class":416},[394,834,836,838,840,843,845,847,849,851,854,856,858],{"class":396,"line":835},28,[394,837,806],{"class":404},[394,839,809],{"class":416},[394,841,842],{"class":573}," 1",[394,844,815],{"class":416},[394,846,818],{"class":591},[394,848,711],{"class":404},[394,850,417],{"class":416},[394,852,853],{"class":566},"sin",[394,855,570],{"class":416},[394,857,830],{"class":566},[394,859,577],{"class":416},[394,861,863,866,869,872,875,878],{"class":396,"line":862},29,[394,864,865],{"class":400},"    if",[394,867,868],{"class":404}," switch ",[394,870,871],{"class":591},"is",[394,873,874],{"class":591}," not",[394,876,877],{"class":659}," None",[394,879,880],{"class":416},":\n",[394,882,884],{"class":396,"line":883},30,[394,885,886],{"class":598},"        # after `switch`, swap appearance into the (e2, e3) plane.\n",[394,888,890,893,896,899,902,905,907],{"class":396,"line":889},31,[394,891,892],{"class":404},"        truth",[394,894,895],{"class":416},"[",[394,897,898],{"class":404},"switch",[394,900,901],{"class":416},":,",[394,903,904],{"class":416}," :]",[394,906,818],{"class":591},[394,908,909],{"class":573}," 0.0\n",[394,911,913,915,917,919,921,924,926,928,930,932,934,936,938,940,942],{"class":396,"line":912},32,[394,914,892],{"class":404},[394,916,895],{"class":416},[394,918,898],{"class":404},[394,920,901],{"class":416},[394,922,923],{"class":573}," 2",[394,925,815],{"class":416},[394,927,818],{"class":591},[394,929,711],{"class":404},[394,931,417],{"class":416},[394,933,825],{"class":566},[394,935,570],{"class":416},[394,937,830],{"class":566},[394,939,895],{"class":416},[394,941,898],{"class":566},[394,943,944],{"class":416},":])\n",[394,946,948,950,952,954,956,959,961,963,965,967,969,971,973,975,977],{"class":396,"line":947},33,[394,949,892],{"class":404},[394,951,895],{"class":416},[394,953,898],{"class":404},[394,955,901],{"class":416},[394,957,958],{"class":573}," 3",[394,960,815],{"class":416},[394,962,818],{"class":591},[394,964,711],{"class":404},[394,966,417],{"class":416},[394,968,853],{"class":566},[394,970,570],{"class":416},[394,972,830],{"class":566},[394,974,895],{"class":416},[394,976,898],{"class":566},[394,978,944],{"class":416},[394,980,982,985,987,990,993,996,999,1001,1003,1006,1008,1010,1012,1014,1016,1020,1022,1025],{"class":396,"line":981},34,[394,983,984],{"class":404},"    obs ",[394,986,592],{"class":591},[394,988,989],{"class":404}," truth ",[394,991,992],{"class":591},"+",[394,994,995],{"class":404}," noise ",[394,997,998],{"class":591},"*",[394,1000,711],{"class":404},[394,1002,417],{"class":416},[394,1004,1005],{"class":566},"randn",[394,1007,570],{"class":416},[394,1009,748],{"class":566},[394,1011,464],{"class":416},[394,1013,798],{"class":566},[394,1015,464],{"class":416},[394,1017,1019],{"class":1018},"s99_P"," generator",[394,1021,592],{"class":591},[394,1023,1024],{"class":566},"g",[394,1026,577],{"class":416},[394,1028,1030,1032,1034,1036,1038,1041,1043,1046,1048,1051,1053,1056,1058,1061,1064,1067],{"class":396,"line":1029},35,[394,1031,984],{"class":404},[394,1033,592],{"class":591},[394,1035,711],{"class":404},[394,1037,417],{"class":416},[394,1039,1040],{"class":420},"nn",[394,1042,417],{"class":416},[394,1044,1045],{"class":420},"functional",[394,1047,417],{"class":416},[394,1049,1050],{"class":566},"normalize",[394,1052,570],{"class":416},[394,1054,1055],{"class":566},"obs",[394,1057,464],{"class":416},[394,1059,1060],{"class":1018}," dim",[394,1062,1063],{"class":591},"=-",[394,1065,1066],{"class":573},"1",[394,1068,577],{"class":416},[394,1070,1072,1075,1077,1080,1083,1085,1087,1089,1091,1093,1096,1099,1101,1104,1107,1109,1111,1113,1116,1119,1122,1124,1126,1129,1132],{"class":396,"line":1071},36,[394,1073,1074],{"class":404},"    dets ",[394,1076,592],{"class":591},[394,1078,1079],{"class":416}," [",[394,1081,1082],{"class":566},"Detections",[394,1084,570],{"class":416},[394,1086,125],{"class":1018},[394,1088,592],{"class":591},[394,1090,561],{"class":566},[394,1092,417],{"class":416},[394,1094,1095],{"class":566},"tensor",[394,1097,1098],{"class":416},"([",[394,1100,574],{"class":573},[394,1102,1103],{"class":416},"]),",[394,1105,1106],{"class":1018}," emb",[394,1108,592],{"class":591},[394,1110,1055],{"class":566},[394,1112,895],{"class":416},[394,1114,1115],{"class":566},"k",[394,1117,1118],{"class":416},":",[394,1120,1121],{"class":566},"k ",[394,1123,992],{"class":591},[394,1125,842],{"class":573},[394,1127,1128],{"class":416},"].",[394,1130,1131],{"class":566},"clone",[394,1133,1134],{"class":416},"(),\n",[394,1136,1138,1141,1143,1145,1147,1150,1153,1156,1159,1163,1165,1167],{"class":396,"line":1137},37,[394,1139,1140],{"class":1018},"                       batch_size",[394,1142,592],{"class":591},[394,1144,895],{"class":416},[394,1146,1066],{"class":573},[394,1148,1149],{"class":416},"])",[394,1151,1152],{"class":400}," for",[394,1154,1155],{"class":404}," k ",[394,1157,1158],{"class":400},"in",[394,1160,1162],{"class":1161},"sptTA"," range",[394,1164,570],{"class":416},[394,1166,748],{"class":566},[394,1168,1169],{"class":416},")]\n",[394,1171,1173,1176,1179,1181,1184,1186,1189,1191],{"class":396,"line":1172},38,[394,1174,1175],{"class":400},"    return",[394,1177,1178],{"class":404}," t",[394,1180,464],{"class":416},[394,1182,1183],{"class":404}," truth",[394,1185,464],{"class":416},[394,1187,1188],{"class":404}," obs",[394,1190,464],{"class":416},[394,1192,1193],{"class":404}," dets\n",[394,1195,1197],{"class":396,"line":1196},39,[394,1198,434],{"emptyLinePlaceholder":433},[394,1200,1202,1204,1207,1209,1211,1213,1216,1218,1221,1223,1225,1229,1233,1235],{"class":396,"line":1201},40,[394,1203,625],{"class":624},[394,1205,1206],{"class":628}," run",[394,1208,570],{"class":416},[394,1210,173],{"class":634},[394,1212,464],{"class":416},[394,1214,1215],{"class":634}," dets",[394,1217,464],{"class":416},[394,1219,1220],{"class":634}," fields",[394,1222,592],{"class":591},[394,1224,570],{"class":416},[394,1226,1228],{"class":1227},"sjJ54","\"",[394,1230,1232],{"class":1231},"s_sjI","emb",[394,1234,1228],{"class":1227},[394,1236,1237],{"class":416},",)):\n",[394,1239,1241,1244,1247],{"class":396,"line":1240},41,[394,1242,1243],{"class":669},"    \"\"\"",[394,1245,1246],{"class":676},"Run a single-object clip through a real Tracker; collect snapshot fields.",[394,1248,1249],{"class":669},"\"\"\"\n",[394,1251,1253,1256,1258,1260,1262,1265,1267,1269],{"class":396,"line":1252},42,[394,1254,1255],{"class":404},"    ms ",[394,1257,592],{"class":591},[394,1259,451],{"class":404},[394,1261,417],{"class":416},[394,1263,1264],{"class":566},"MultiStream",[394,1266,570],{"class":416},[394,1268,173],{"class":566},[394,1270,577],{"class":416},[394,1272,1274,1277,1279,1282,1285,1287,1290,1292,1295,1297,1299],{"class":396,"line":1273},43,[394,1275,1276],{"class":404},"    rec ",[394,1278,592],{"class":591},[394,1280,1281],{"class":416}," {",[394,1283,1284],{"class":404},"f",[394,1286,1118],{"class":416},[394,1288,1289],{"class":416}," []",[394,1291,1152],{"class":400},[394,1293,1294],{"class":404}," f ",[394,1296,1158],{"class":400},[394,1298,1220],{"class":404},[394,1300,1301],{"class":416},"}\n",[394,1303,1305,1308,1311,1313,1316,1318,1321,1323,1326],{"class":396,"line":1304},44,[394,1306,1307],{"class":400},"    for",[394,1309,1310],{"class":404}," k",[394,1312,464],{"class":416},[394,1314,1315],{"class":404}," d ",[394,1317,1158],{"class":400},[394,1319,1320],{"class":1161}," enumerate",[394,1322,570],{"class":416},[394,1324,1325],{"class":566},"dets",[394,1327,663],{"class":416},[394,1329,1331,1334,1336,1338,1340,1343,1345,1348,1350,1352,1354,1357,1359,1362,1364,1367,1369,1371,1373,1376,1378,1380],{"class":396,"line":1330},45,[394,1332,1333],{"class":404},"        ctx ",[394,1335,592],{"class":591},[394,1337,506],{"class":404},[394,1339,417],{"class":416},[394,1341,1342],{"class":566},"make",[394,1344,570],{"class":416},[394,1346,1347],{"class":1018},"frame_idx",[394,1349,592],{"class":591},[394,1351,1115],{"class":566},[394,1353,464],{"class":416},[394,1355,1356],{"class":1018}," delta",[394,1358,592],{"class":591},[394,1360,1361],{"class":573},"1.0",[394,1363,464],{"class":416},[394,1365,1366],{"class":1018}," fps",[394,1368,592],{"class":591},[394,1370,1361],{"class":573},[394,1372,464],{"class":416},[394,1374,1375],{"class":1018}," stream_key",[394,1377,592],{"class":591},[394,1379,574],{"class":573},[394,1381,577],{"class":416},[394,1383,1385,1388,1390,1393,1395,1398,1400,1403,1405,1407,1409,1412,1414,1417,1419,1422,1424,1427],{"class":396,"line":1384},46,[394,1386,1387],{"class":404},"        res ",[394,1389,592],{"class":591},[394,1391,1392],{"class":404}," ms",[394,1394,417],{"class":416},[394,1396,1397],{"class":566},"step",[394,1399,570],{"class":416},[394,1401,1402],{"class":1018},"stream_key",[394,1404,592],{"class":591},[394,1406,574],{"class":573},[394,1408,464],{"class":416},[394,1410,1411],{"class":1018}," detections",[394,1413,592],{"class":591},[394,1415,1416],{"class":566},"d",[394,1418,464],{"class":416},[394,1420,1421],{"class":1018}," ctx",[394,1423,592],{"class":591},[394,1425,1426],{"class":566},"ctx",[394,1428,577],{"class":416},[394,1430,1432,1435,1437,1439,1441],{"class":396,"line":1431},47,[394,1433,1434],{"class":400},"        for",[394,1436,1294],{"class":404},[394,1438,1158],{"class":400},[394,1440,1220],{"class":404},[394,1442,880],{"class":416},[394,1444,1446,1449,1451,1453,1455,1458,1460,1463,1465,1468,1470,1473,1475,1478,1481,1483,1485,1487],{"class":396,"line":1445},48,[394,1447,1448],{"class":404},"            rec",[394,1450,895],{"class":416},[394,1452,1284],{"class":404},[394,1454,1128],{"class":416},[394,1456,1457],{"class":566},"append",[394,1459,570],{"class":416},[394,1461,1462],{"class":1161},"getattr",[394,1464,570],{"class":416},[394,1466,1467],{"class":566},"res",[394,1469,417],{"class":416},[394,1471,1472],{"class":420},"snapshot",[394,1474,464],{"class":416},[394,1476,1477],{"class":566}," f",[394,1479,1480],{"class":416},")[",[394,1482,574],{"class":573},[394,1484,1128],{"class":416},[394,1486,1131],{"class":566},[394,1488,1489],{"class":416},"())\n",[394,1491,1493,1495,1497,1499,1501,1503,1505,1508,1510,1513,1516,1518,1520,1522,1525,1527,1530,1532,1535],{"class":396,"line":1492},49,[394,1494,1175],{"class":400},[394,1496,1281],{"class":416},[394,1498,1284],{"class":404},[394,1500,1118],{"class":416},[394,1502,711],{"class":404},[394,1504,417],{"class":416},[394,1506,1507],{"class":566},"stack",[394,1509,570],{"class":416},[394,1511,1512],{"class":566},"v",[394,1514,1515],{"class":416},")",[394,1517,1152],{"class":400},[394,1519,1477],{"class":404},[394,1521,464],{"class":416},[394,1523,1524],{"class":404}," v ",[394,1526,1158],{"class":400},[394,1528,1529],{"class":404}," rec",[394,1531,417],{"class":416},[394,1533,1534],{"class":566},"items",[394,1536,1537],{"class":416},"()}\n",[394,1539,1541],{"class":396,"line":1540},50,[394,1542,434],{"emptyLinePlaceholder":433},[394,1544,1546,1548,1551,1553,1556,1558,1560],{"class":396,"line":1545},51,[394,1547,625],{"class":624},[394,1549,1550],{"class":628}," cos_to_truth",[394,1552,570],{"class":416},[394,1554,1555],{"class":634},"est",[394,1557,464],{"class":416},[394,1559,1183],{"class":634},[394,1561,663],{"class":416},[394,1563,1565,1568,1570,1572,1574,1576,1578,1580,1582,1584,1586,1588,1590,1592,1594,1596],{"class":396,"line":1564},52,[394,1566,1567],{"class":404},"    e ",[394,1569,592],{"class":591},[394,1571,711],{"class":404},[394,1573,417],{"class":416},[394,1575,1040],{"class":420},[394,1577,417],{"class":416},[394,1579,1045],{"class":420},[394,1581,417],{"class":416},[394,1583,1050],{"class":566},[394,1585,570],{"class":416},[394,1587,1555],{"class":566},[394,1589,464],{"class":416},[394,1591,1060],{"class":1018},[394,1593,1063],{"class":591},[394,1595,1066],{"class":573},[394,1597,577],{"class":416},[394,1599,1601,1604,1606,1608,1610,1612,1614,1616,1618,1620,1622,1625,1627,1629,1631,1633],{"class":396,"line":1600},53,[394,1602,1603],{"class":404},"    u ",[394,1605,592],{"class":591},[394,1607,711],{"class":404},[394,1609,417],{"class":416},[394,1611,1040],{"class":420},[394,1613,417],{"class":416},[394,1615,1045],{"class":420},[394,1617,417],{"class":416},[394,1619,1050],{"class":566},[394,1621,570],{"class":416},[394,1623,1624],{"class":566},"truth",[394,1626,464],{"class":416},[394,1628,1060],{"class":1018},[394,1630,1063],{"class":591},[394,1632,1066],{"class":573},[394,1634,577],{"class":416},[394,1636,1638,1640,1643,1646,1648,1651,1653,1656,1658,1660,1662],{"class":396,"line":1637},54,[394,1639,1175],{"class":400},[394,1641,1642],{"class":416}," (",[394,1644,1645],{"class":404},"e ",[394,1647,998],{"class":591},[394,1649,1650],{"class":404}," u",[394,1652,751],{"class":416},[394,1654,1655],{"class":566},"sum",[394,1657,570],{"class":416},[394,1659,350],{"class":591},[394,1661,1066],{"class":573},[394,1663,577],{"class":416},[394,1665,1667],{"class":396,"line":1666},55,[394,1668,434],{"emptyLinePlaceholder":433},[394,1670,1672,1675,1677,1679,1681,1683,1685,1688,1690,1692],{"class":396,"line":1671},56,[394,1673,1674],{"class":404},"t",[394,1676,464],{"class":416},[394,1678,1183],{"class":404},[394,1680,464],{"class":416},[394,1682,1188],{"class":404},[394,1684,464],{"class":416},[394,1686,1687],{"class":404}," dets ",[394,1689,592],{"class":591},[394,1691,629],{"class":566},[394,1693,757],{"class":416},[394,1695,1697,1700,1702,1704,1707,1710,1712,1715,1718,1720,1722,1724],{"class":396,"line":1696},57,[394,1698,1699],{"class":1161},"print",[394,1701,570],{"class":416},[394,1703,1284],{"class":624},[394,1705,1706],{"class":1231},"\"clip: ",[394,1708,1709],{"class":573},"{",[394,1711,748],{"class":566},[394,1713,1714],{"class":573},"}",[394,1716,1717],{"class":1231}," frames, D=",[394,1719,1709],{"class":573},[394,1721,382],{"class":566},[394,1723,1714],{"class":573},[394,1725,1726],{"class":1231},"; raw-detection mean cosine-to-truth \"\n",[394,1728,1730,1733,1736,1738,1741,1743,1745,1747,1749,1751,1754,1757,1760,1762,1764],{"class":396,"line":1729},58,[394,1731,1732],{"class":624},"      f",[394,1734,1735],{"class":1231},"\"= ",[394,1737,1709],{"class":573},[394,1739,1740],{"class":566},"cos_to_truth",[394,1742,570],{"class":416},[394,1744,1055],{"class":566},[394,1746,464],{"class":416},[394,1748,1183],{"class":566},[394,1750,751],{"class":416},[394,1752,1753],{"class":566},"mean",[394,1755,1756],{"class":416},"()",[394,1758,1759],{"class":624},":.3f",[394,1761,1714],{"class":573},[394,1763,1228],{"class":1231},[394,1765,577],{"class":416},[1767,1768],"docyard-notebook-output",{"data":1769,"kind":1770},"Y2xpcDogNDQgZnJhbWVzLCBEPTE2OyByYXctZGV0ZWN0aW9uIG1lYW4gY29zaW5lLXRvLXRydXRoID0gMC44NTUK","stream",[385,1772,1774],{"className":387,"code":1773,"language":389,"meta":390,"style":390},"from unitrack.states import enkf_state_entries, information_state_entries\n\ndef tracker_for(states):\n    return unitrack.Tracker(\n        root=Pipe(cost=Cosine(\"emb\"), assoc=Associate(Jonker(threshold=0.6))),\n        states=states, lifecycle=NoLifecycle(), visibility=IncludeAll(),\n    )\n\ninfo = run(tracker_for(information_state_entries(\"emb\", dim=D, q=0.02, r=0.2)),\n           dets, fields=(\"emb\", \"emb_infomat\"))\nenkf = run(tracker_for(enkf_state_entries(\"emb\", dim=D, ensemble_size=24,\n                                          q=0.02, r=0.2, init_std=0.4)),\n           dets, fields=(\"emb\", \"emb_ensemble\"))\n\n",[347,1775,1776,1797,1801,1814,1828,1884,1916,1921,1925,1983,2015,2062,2091],{"__ignoreMap":390},[394,1777,1778,1780,1782,1784,1787,1789,1792,1794],{"class":396,"line":397},[394,1779,448],{"class":400},[394,1781,451],{"class":404},[394,1783,417],{"class":416},[394,1785,1786],{"class":404},"states ",[394,1788,401],{"class":400},[394,1790,1791],{"class":404}," enkf_state_entries",[394,1793,464],{"class":416},[394,1795,1796],{"class":404}," information_state_entries\n",[394,1798,1799],{"class":396,"line":408},[394,1800,434],{"emptyLinePlaceholder":433},[394,1802,1803,1805,1808,1810,1812],{"class":396,"line":430},[394,1804,625],{"class":624},[394,1806,1807],{"class":628}," tracker_for",[394,1809,570],{"class":416},[394,1811,270],{"class":634},[394,1813,663],{"class":416},[394,1815,1816,1818,1820,1822,1825],{"class":396,"line":437},[394,1817,1175],{"class":400},[394,1819,451],{"class":404},[394,1821,417],{"class":416},[394,1823,1824],{"class":566},"Tracker",[394,1826,1827],{"class":416},"(\n",[394,1829,1830,1833,1835,1838,1840,1842,1844,1847,1849,1851,1853,1855,1858,1861,1863,1866,1868,1871,1873,1876,1878,1881],{"class":396,"line":445},[394,1831,1832],{"class":1018},"        root",[394,1834,592],{"class":591},[394,1836,1837],{"class":566},"Pipe",[394,1839,570],{"class":416},[394,1841,203],{"class":1018},[394,1843,592],{"class":591},[394,1845,1846],{"class":566},"Cosine",[394,1848,570],{"class":416},[394,1850,1228],{"class":1227},[394,1852,1232],{"class":1231},[394,1854,1228],{"class":1227},[394,1856,1857],{"class":416},"),",[394,1859,1860],{"class":1018}," assoc",[394,1862,592],{"class":591},[394,1864,1865],{"class":566},"Associate",[394,1867,570],{"class":416},[394,1869,1870],{"class":566},"Jonker",[394,1872,570],{"class":416},[394,1874,1875],{"class":1018},"threshold",[394,1877,592],{"class":591},[394,1879,1880],{"class":573},"0.6",[394,1882,1883],{"class":416},"))),\n",[394,1885,1886,1889,1891,1893,1895,1898,1900,1903,1906,1909,1911,1914],{"class":396,"line":470},[394,1887,1888],{"class":1018},"        states",[394,1890,592],{"class":591},[394,1892,270],{"class":566},[394,1894,464],{"class":416},[394,1896,1897],{"class":1018}," lifecycle",[394,1899,592],{"class":591},[394,1901,1902],{"class":566},"NoLifecycle",[394,1904,1905],{"class":416},"(),",[394,1907,1908],{"class":1018}," visibility",[394,1910,592],{"class":591},[394,1912,1913],{"class":566},"IncludeAll",[394,1915,1134],{"class":416},[394,1917,1918],{"class":396,"line":487},[394,1919,1920],{"class":416},"    )\n",[394,1922,1923],{"class":396,"line":514},[394,1924,434],{"emptyLinePlaceholder":433},[394,1926,1927,1930,1932,1934,1936,1939,1941,1944,1946,1948,1950,1952,1954,1956,1958,1960,1962,1965,1967,1970,1972,1975,1977,1980],{"class":396,"line":536},[394,1928,1929],{"class":404},"info ",[394,1931,592],{"class":591},[394,1933,1206],{"class":566},[394,1935,570],{"class":416},[394,1937,1938],{"class":566},"tracker_for",[394,1940,570],{"class":416},[394,1942,1943],{"class":566},"information_state_entries",[394,1945,570],{"class":416},[394,1947,1228],{"class":1227},[394,1949,1232],{"class":1231},[394,1951,1228],{"class":1227},[394,1953,464],{"class":416},[394,1955,1060],{"class":1018},[394,1957,592],{"class":591},[394,1959,382],{"class":566},[394,1961,464],{"class":416},[394,1963,1964],{"class":1018}," q",[394,1966,592],{"class":591},[394,1968,1969],{"class":573},"0.02",[394,1971,464],{"class":416},[394,1973,1974],{"class":1018}," r",[394,1976,592],{"class":591},[394,1978,1979],{"class":573},"0.2",[394,1981,1982],{"class":416},")),\n",[394,1984,1985,1988,1990,1992,1994,1996,1998,2000,2002,2004,2007,2010,2012],{"class":396,"line":553},[394,1986,1987],{"class":566},"           dets",[394,1989,464],{"class":416},[394,1991,1220],{"class":1018},[394,1993,592],{"class":591},[394,1995,570],{"class":416},[394,1997,1228],{"class":1227},[394,1999,1232],{"class":1231},[394,2001,1228],{"class":1227},[394,2003,464],{"class":416},[394,2005,2006],{"class":1227}," \"",[394,2008,2009],{"class":1231},"emb_infomat",[394,2011,1228],{"class":1227},[394,2013,2014],{"class":416},"))\n",[394,2016,2017,2020,2022,2024,2026,2028,2030,2033,2035,2037,2039,2041,2043,2045,2047,2049,2051,2054,2056,2059],{"class":396,"line":558},[394,2018,2019],{"class":404},"enkf ",[394,2021,592],{"class":591},[394,2023,1206],{"class":566},[394,2025,570],{"class":416},[394,2027,1938],{"class":566},[394,2029,570],{"class":416},[394,2031,2032],{"class":566},"enkf_state_entries",[394,2034,570],{"class":416},[394,2036,1228],{"class":1227},[394,2038,1232],{"class":1231},[394,2040,1228],{"class":1227},[394,2042,464],{"class":416},[394,2044,1060],{"class":1018},[394,2046,592],{"class":591},[394,2048,382],{"class":566},[394,2050,464],{"class":416},[394,2052,2053],{"class":1018}," ensemble_size",[394,2055,592],{"class":591},[394,2057,2058],{"class":573},"24",[394,2060,2061],{"class":416},",\n",[394,2063,2064,2067,2069,2071,2073,2075,2077,2079,2081,2084,2086,2089],{"class":396,"line":580},[394,2065,2066],{"class":1018},"                                          q",[394,2068,592],{"class":591},[394,2070,1969],{"class":573},[394,2072,464],{"class":416},[394,2074,1974],{"class":1018},[394,2076,592],{"class":591},[394,2078,1979],{"class":573},[394,2080,464],{"class":416},[394,2082,2083],{"class":1018}," init_std",[394,2085,592],{"class":591},[394,2087,2088],{"class":573},"0.4",[394,2090,1982],{"class":416},[394,2092,2093,2095,2097,2099,2101,2103,2105,2107,2109,2111,2113,2116,2118],{"class":396,"line":585},[394,2094,1987],{"class":566},[394,2096,464],{"class":416},[394,2098,1220],{"class":1018},[394,2100,592],{"class":591},[394,2102,570],{"class":416},[394,2104,1228],{"class":1227},[394,2106,1232],{"class":1231},[394,2108,1228],{"class":1227},[394,2110,464],{"class":416},[394,2112,2006],{"class":1227},[394,2114,2115],{"class":1231},"emb_ensemble",[394,2117,1228],{"class":1227},[394,2119,2014],{"class":416},[385,2121,2123],{"className":387,"code":2122,"language":389,"meta":390,"style":390},"# Both track the drift; compare to raw.\nfig, ax = plt.subplots(figsize=(8, 4))\nax.plot(t, cos_to_truth(obs, truth), color=\"0.6\", ls=\":\", label=\"raw detections\")\nax.plot(t, cos_to_truth(info[\"emb\"], truth), color=\"tab:blue\",\n        label=f\"information filter ({cos_to_truth(info['emb'], truth).mean():.3f})\")\nax.plot(t, cos_to_truth(enkf[\"emb\"], truth), color=\"tab:orange\",\n        label=f\"EnKF ({cos_to_truth(enkf['emb'], truth).mean():.3f})\")\nax.set_title(\"Information filter vs EnKF — cosine to truth\")\nax.set_xlabel(\"frame\"); ax.set_ylabel(\"cosine\"); ax.legend(fontsize=8)\nax.grid(alpha=0.3)\nplt.tight_layout(); plt.show()\n\n",[347,2124,2125,2130,2169,2237,2286,2334,2382,2427,2447,2503,2524],{"__ignoreMap":390},[394,2126,2127],{"class":396,"line":397},[394,2128,2129],{"class":598},"# Both track the drift; compare to raw.\n",[394,2131,2132,2135,2137,2140,2142,2145,2147,2150,2152,2155,2157,2159,2162,2164,2167],{"class":396,"line":408},[394,2133,2134],{"class":404},"fig",[394,2136,464],{"class":416},[394,2138,2139],{"class":404}," ax ",[394,2141,592],{"class":591},[394,2143,2144],{"class":404}," plt",[394,2146,417],{"class":416},[394,2148,2149],{"class":566},"subplots",[394,2151,570],{"class":416},[394,2153,2154],{"class":1018},"figsize",[394,2156,592],{"class":591},[394,2158,570],{"class":416},[394,2160,2161],{"class":573},"8",[394,2163,464],{"class":416},[394,2165,2166],{"class":573}," 4",[394,2168,2014],{"class":416},[394,2170,2171,2174,2176,2179,2181,2183,2185,2187,2189,2191,2193,2195,2197,2200,2202,2204,2206,2208,2210,2213,2215,2217,2219,2221,2223,2226,2228,2230,2233,2235],{"class":396,"line":430},[394,2172,2173],{"class":404},"ax",[394,2175,417],{"class":416},[394,2177,2178],{"class":566},"plot",[394,2180,570],{"class":416},[394,2182,1674],{"class":566},[394,2184,464],{"class":416},[394,2186,1550],{"class":566},[394,2188,570],{"class":416},[394,2190,1055],{"class":566},[394,2192,464],{"class":416},[394,2194,1183],{"class":566},[394,2196,1857],{"class":416},[394,2198,2199],{"class":1018}," color",[394,2201,592],{"class":591},[394,2203,1228],{"class":1227},[394,2205,1880],{"class":1231},[394,2207,1228],{"class":1227},[394,2209,464],{"class":416},[394,2211,2212],{"class":1018}," ls",[394,2214,592],{"class":591},[394,2216,1228],{"class":1227},[394,2218,1118],{"class":1231},[394,2220,1228],{"class":1227},[394,2222,464],{"class":416},[394,2224,2225],{"class":1018}," label",[394,2227,592],{"class":591},[394,2229,1228],{"class":1227},[394,2231,2232],{"class":1231},"raw detections",[394,2234,1228],{"class":1227},[394,2236,577],{"class":416},[394,2238,2239,2241,2243,2245,2247,2249,2251,2253,2255,2258,2260,2262,2264,2266,2269,2271,2273,2275,2277,2279,2282,2284],{"class":396,"line":437},[394,2240,2173],{"class":404},[394,2242,417],{"class":416},[394,2244,2178],{"class":566},[394,2246,570],{"class":416},[394,2248,1674],{"class":566},[394,2250,464],{"class":416},[394,2252,1550],{"class":566},[394,2254,570],{"class":416},[394,2256,2257],{"class":566},"info",[394,2259,895],{"class":416},[394,2261,1228],{"class":1227},[394,2263,1232],{"class":1231},[394,2265,1228],{"class":1227},[394,2267,2268],{"class":416},"],",[394,2270,1183],{"class":566},[394,2272,1857],{"class":416},[394,2274,2199],{"class":1018},[394,2276,592],{"class":591},[394,2278,1228],{"class":1227},[394,2280,2281],{"class":1231},"tab:blue",[394,2283,1228],{"class":1227},[394,2285,2061],{"class":416},[394,2287,2288,2291,2293,2295,2298,2300,2302,2304,2306,2308,2311,2313,2315,2317,2319,2321,2323,2325,2327,2329,2332],{"class":396,"line":445},[394,2289,2290],{"class":1018},"        label",[394,2292,592],{"class":591},[394,2294,1284],{"class":624},[394,2296,2297],{"class":1231},"\"information filter (",[394,2299,1709],{"class":573},[394,2301,1740],{"class":566},[394,2303,570],{"class":416},[394,2305,2257],{"class":566},[394,2307,895],{"class":416},[394,2309,2310],{"class":1227},"'",[394,2312,1232],{"class":1231},[394,2314,2310],{"class":1227},[394,2316,2268],{"class":416},[394,2318,1183],{"class":566},[394,2320,751],{"class":416},[394,2322,1753],{"class":566},[394,2324,1756],{"class":416},[394,2326,1759],{"class":624},[394,2328,1714],{"class":573},[394,2330,2331],{"class":1231},")\"",[394,2333,577],{"class":416},[394,2335,2336,2338,2340,2342,2344,2346,2348,2350,2352,2355,2357,2359,2361,2363,2365,2367,2369,2371,2373,2375,2378,2380],{"class":396,"line":470},[394,2337,2173],{"class":404},[394,2339,417],{"class":416},[394,2341,2178],{"class":566},[394,2343,570],{"class":416},[394,2345,1674],{"class":566},[394,2347,464],{"class":416},[394,2349,1550],{"class":566},[394,2351,570],{"class":416},[394,2353,2354],{"class":566},"enkf",[394,2356,895],{"class":416},[394,2358,1228],{"class":1227},[394,2360,1232],{"class":1231},[394,2362,1228],{"class":1227},[394,2364,2268],{"class":416},[394,2366,1183],{"class":566},[394,2368,1857],{"class":416},[394,2370,2199],{"class":1018},[394,2372,592],{"class":591},[394,2374,1228],{"class":1227},[394,2376,2377],{"class":1231},"tab:orange",[394,2379,1228],{"class":1227},[394,2381,2061],{"class":416},[394,2383,2384,2386,2388,2390,2393,2395,2397,2399,2401,2403,2405,2407,2409,2411,2413,2415,2417,2419,2421,2423,2425],{"class":396,"line":487},[394,2385,2290],{"class":1018},[394,2387,592],{"class":591},[394,2389,1284],{"class":624},[394,2391,2392],{"class":1231},"\"EnKF (",[394,2394,1709],{"class":573},[394,2396,1740],{"class":566},[394,2398,570],{"class":416},[394,2400,2354],{"class":566},[394,2402,895],{"class":416},[394,2404,2310],{"class":1227},[394,2406,1232],{"class":1231},[394,2408,2310],{"class":1227},[394,2410,2268],{"class":416},[394,2412,1183],{"class":566},[394,2414,751],{"class":416},[394,2416,1753],{"class":566},[394,2418,1756],{"class":416},[394,2420,1759],{"class":624},[394,2422,1714],{"class":573},[394,2424,2331],{"class":1231},[394,2426,577],{"class":416},[394,2428,2429,2431,2433,2436,2438,2440,2443,2445],{"class":396,"line":514},[394,2430,2173],{"class":404},[394,2432,417],{"class":416},[394,2434,2435],{"class":566},"set_title",[394,2437,570],{"class":416},[394,2439,1228],{"class":1227},[394,2441,2442],{"class":1231},"Information filter vs EnKF — cosine to truth",[394,2444,1228],{"class":1227},[394,2446,577],{"class":416},[394,2448,2449,2451,2453,2456,2458,2460,2462,2464,2466,2469,2471,2474,2476,2478,2481,2483,2485,2487,2489,2492,2494,2497,2499,2501],{"class":396,"line":536},[394,2450,2173],{"class":404},[394,2452,417],{"class":416},[394,2454,2455],{"class":566},"set_xlabel",[394,2457,570],{"class":416},[394,2459,1228],{"class":1227},[394,2461,209],{"class":1231},[394,2463,1228],{"class":1227},[394,2465,1515],{"class":416},[394,2467,2468],{"class":404},"; ax",[394,2470,417],{"class":416},[394,2472,2473],{"class":566},"set_ylabel",[394,2475,570],{"class":416},[394,2477,1228],{"class":1227},[394,2479,2480],{"class":1231},"cosine",[394,2482,1228],{"class":1227},[394,2484,1515],{"class":416},[394,2486,2468],{"class":404},[394,2488,417],{"class":416},[394,2490,2491],{"class":566},"legend",[394,2493,570],{"class":416},[394,2495,2496],{"class":1018},"fontsize",[394,2498,592],{"class":591},[394,2500,2161],{"class":573},[394,2502,577],{"class":416},[394,2504,2505,2507,2509,2512,2514,2517,2519,2522],{"class":396,"line":553},[394,2506,2173],{"class":404},[394,2508,417],{"class":416},[394,2510,2511],{"class":566},"grid",[394,2513,570],{"class":416},[394,2515,2516],{"class":1018},"alpha",[394,2518,592],{"class":591},[394,2520,2521],{"class":573},"0.3",[394,2523,577],{"class":416},[394,2525,2526,2529,2531,2534,2536,2539,2541,2544],{"class":396,"line":558},[394,2527,2528],{"class":404},"plt",[394,2530,417],{"class":416},[394,2532,2533],{"class":566},"tight_layout",[394,2535,1756],{"class":416},[394,2537,2538],{"class":404},"; plt",[394,2540,417],{"class":416},[394,2542,2543],{"class":566},"show",[394,2545,757],{"class":416},[338,2547,2548],{},[2549,2550],"img",{"alt":390,"src":2551},"\u002F_nb\u002F4de6846fae36a7ef.png",[2553,2554,2556],"h2",{"id":2555},"two-views-of-the-same-shrinking-uncertainty","Two views of the same shrinking uncertainty",[338,2558,2559,2560,2562,2563,2565,2566,2568,2569,2572],{},"Left: the EnKF ensemble, projected to 2-D — the cloud of members\ncontracts as measurements arrive (that contraction ",[342,2561,871],{}," the\ncovariance update; no ",[347,2564,382],{},"-by-",[347,2567,382],{}," matrix is ever formed). Right: the\ninformation filter's covariance trace (",[347,2570,2571],{},"tr(Y^{-1})",") falling in\nlockstep — the explicit dual of the same belief.",[385,2574,2576],{"className":387,"code":2575,"language":389,"meta":390,"style":390},"fig, (axe, axt) = plt.subplots(1, 2, figsize=(12, 4))\ncmap = plt.get_cmap(\"viridis\")\nfor k in range(0, T, 6):\n    members = enkf[\"emb_ensemble\"][k]  # (E, D)\n    axe.scatter(members[:, 0], members[:, 1], s=14, color=cmap(k \u002F T),\n                alpha=0.6)\naxe.plot(enkf[\"emb\"][:, 0], enkf[\"emb\"][:, 1], \"-\", color=\"0.3\", lw=1,\n         label=\"ensemble mean\")\naxe.set_title(\"EnKF ensemble (proj. to dims 0,1) contracts over time\\n\"\n              \"(purple = early, yellow = late)\")\naxe.set_xlabel(\"dim 0\"); axe.set_ylabel(\"dim 1\"); axe.legend(fontsize=8)\naxe.grid(alpha=0.3)\n\ncov_trace = torch.stack([\n    torch.linalg.inv(info[\"emb_infomat\"][k]).diagonal().sum() for k in range(T)])\nens_trace = torch.stack([enkf[\"emb_ensemble\"][k].var(dim=0).sum() for k in range(T)])\naxt.plot(t, cov_trace, color=\"tab:blue\", label=\"information filter  tr(P)\")\naxt.plot(t, ens_trace, color=\"tab:orange\", label=\"EnKF ensemble spread\")\naxt.set_title(\"Total uncertainty falls under measurements\")\naxt.set_xlabel(\"frame\"); axt.set_ylabel(\"trace \u002F spread\"); axt.legend(fontsize=8)\naxt.grid(alpha=0.3)\nplt.tight_layout(); plt.show()\n\n",[347,2577,2578,2630,2655,2682,2710,2768,2779,2851,2867,2889,2901,2954,2972,2976,2992,3050,3113,3158,3202,3221,3273,3291],{"__ignoreMap":390},[394,2579,2580,2582,2584,2586,2589,2591,2594,2596,2598,2600,2602,2604,2606,2608,2610,2612,2614,2617,2619,2621,2624,2626,2628],{"class":396,"line":397},[394,2581,2134],{"class":404},[394,2583,464],{"class":416},[394,2585,1642],{"class":416},[394,2587,2588],{"class":404},"axe",[394,2590,464],{"class":416},[394,2592,2593],{"class":404}," axt",[394,2595,1515],{"class":416},[394,2597,818],{"class":591},[394,2599,2144],{"class":404},[394,2601,417],{"class":416},[394,2603,2149],{"class":566},[394,2605,570],{"class":416},[394,2607,1066],{"class":573},[394,2609,464],{"class":416},[394,2611,923],{"class":573},[394,2613,464],{"class":416},[394,2615,2616],{"class":1018}," figsize",[394,2618,592],{"class":591},[394,2620,570],{"class":416},[394,2622,2623],{"class":573},"12",[394,2625,464],{"class":416},[394,2627,2166],{"class":573},[394,2629,2014],{"class":416},[394,2631,2632,2635,2637,2639,2641,2644,2646,2648,2651,2653],{"class":396,"line":408},[394,2633,2634],{"class":404},"cmap ",[394,2636,592],{"class":591},[394,2638,2144],{"class":404},[394,2640,417],{"class":416},[394,2642,2643],{"class":566},"get_cmap",[394,2645,570],{"class":416},[394,2647,1228],{"class":1227},[394,2649,2650],{"class":1231},"viridis",[394,2652,1228],{"class":1227},[394,2654,577],{"class":416},[394,2656,2657,2660,2662,2664,2666,2668,2670,2672,2675,2677,2680],{"class":396,"line":430},[394,2658,2659],{"class":400},"for",[394,2661,1155],{"class":404},[394,2663,1158],{"class":400},[394,2665,1162],{"class":1161},[394,2667,570],{"class":416},[394,2669,574],{"class":573},[394,2671,464],{"class":416},[394,2673,2674],{"class":566}," T",[394,2676,464],{"class":416},[394,2678,2679],{"class":573}," 6",[394,2681,663],{"class":416},[394,2683,2684,2687,2689,2692,2694,2696,2698,2700,2703,2705,2707],{"class":396,"line":437},[394,2685,2686],{"class":404},"    members ",[394,2688,592],{"class":591},[394,2690,2691],{"class":404}," enkf",[394,2693,895],{"class":416},[394,2695,1228],{"class":1227},[394,2697,2115],{"class":1231},[394,2699,1228],{"class":1227},[394,2701,2702],{"class":416},"][",[394,2704,1115],{"class":404},[394,2706,815],{"class":416},[394,2708,2709],{"class":598},"  # (E, D)\n",[394,2711,2712,2715,2717,2720,2722,2725,2727,2729,2731,2734,2736,2738,2740,2743,2745,2748,2750,2752,2754,2757,2759,2761,2763,2765],{"class":396,"line":445},[394,2713,2714],{"class":404},"    axe",[394,2716,417],{"class":416},[394,2718,2719],{"class":566},"scatter",[394,2721,570],{"class":416},[394,2723,2724],{"class":566},"members",[394,2726,809],{"class":416},[394,2728,812],{"class":573},[394,2730,2268],{"class":416},[394,2732,2733],{"class":566}," members",[394,2735,809],{"class":416},[394,2737,842],{"class":573},[394,2739,2268],{"class":416},[394,2741,2742],{"class":1018}," s",[394,2744,592],{"class":591},[394,2746,2747],{"class":573},"14",[394,2749,464],{"class":416},[394,2751,2199],{"class":1018},[394,2753,592],{"class":591},[394,2755,2756],{"class":566},"cmap",[394,2758,570],{"class":416},[394,2760,1121],{"class":566},[394,2762,124],{"class":591},[394,2764,2674],{"class":566},[394,2766,2767],{"class":416},"),\n",[394,2769,2770,2773,2775,2777],{"class":396,"line":470},[394,2771,2772],{"class":1018},"                alpha",[394,2774,592],{"class":591},[394,2776,1880],{"class":573},[394,2778,577],{"class":416},[394,2780,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2802,2804,2806,2808,2810,2812,2814,2816,2818,2820,2822,2824,2826,2828,2830,2832,2834,2836,2838,2840,2842,2845,2847,2849],{"class":396,"line":487},[394,2782,2588],{"class":404},[394,2784,417],{"class":416},[394,2786,2178],{"class":566},[394,2788,570],{"class":416},[394,2790,2354],{"class":566},[394,2792,895],{"class":416},[394,2794,1228],{"class":1227},[394,2796,1232],{"class":1231},[394,2798,1228],{"class":1227},[394,2800,2801],{"class":416},"][:,",[394,2803,812],{"class":573},[394,2805,2268],{"class":416},[394,2807,2691],{"class":566},[394,2809,895],{"class":416},[394,2811,1228],{"class":1227},[394,2813,1232],{"class":1231},[394,2815,1228],{"class":1227},[394,2817,2801],{"class":416},[394,2819,842],{"class":573},[394,2821,2268],{"class":416},[394,2823,2006],{"class":1227},[394,2825,350],{"class":1231},[394,2827,1228],{"class":1227},[394,2829,464],{"class":416},[394,2831,2199],{"class":1018},[394,2833,592],{"class":591},[394,2835,1228],{"class":1227},[394,2837,2521],{"class":1231},[394,2839,1228],{"class":1227},[394,2841,464],{"class":416},[394,2843,2844],{"class":1018}," lw",[394,2846,592],{"class":591},[394,2848,1066],{"class":573},[394,2850,2061],{"class":416},[394,2852,2853,2856,2858,2860,2863,2865],{"class":396,"line":514},[394,2854,2855],{"class":1018},"         label",[394,2857,592],{"class":591},[394,2859,1228],{"class":1227},[394,2861,2862],{"class":1231},"ensemble mean",[394,2864,1228],{"class":1227},[394,2866,577],{"class":416},[394,2868,2869,2871,2873,2875,2877,2879,2882,2886],{"class":396,"line":536},[394,2870,2588],{"class":404},[394,2872,417],{"class":416},[394,2874,2435],{"class":566},[394,2876,570],{"class":416},[394,2878,1228],{"class":1227},[394,2880,2881],{"class":1231},"EnKF ensemble (proj. to dims 0,1) contracts over time",[394,2883,2885],{"class":2884},"s_hVV","\\n",[394,2887,2888],{"class":1227},"\"\n",[394,2890,2891,2894,2897,2899],{"class":396,"line":553},[394,2892,2893],{"class":1227},"              \"",[394,2895,2896],{"class":1231},"(purple = early, yellow = late)",[394,2898,1228],{"class":1227},[394,2900,577],{"class":416},[394,2902,2903,2905,2907,2909,2911,2913,2916,2918,2920,2923,2925,2927,2929,2931,2934,2936,2938,2940,2942,2944,2946,2948,2950,2952],{"class":396,"line":558},[394,2904,2588],{"class":404},[394,2906,417],{"class":416},[394,2908,2455],{"class":566},[394,2910,570],{"class":416},[394,2912,1228],{"class":1227},[394,2914,2915],{"class":1231},"dim 0",[394,2917,1228],{"class":1227},[394,2919,1515],{"class":416},[394,2921,2922],{"class":404},"; axe",[394,2924,417],{"class":416},[394,2926,2473],{"class":566},[394,2928,570],{"class":416},[394,2930,1228],{"class":1227},[394,2932,2933],{"class":1231},"dim 1",[394,2935,1228],{"class":1227},[394,2937,1515],{"class":416},[394,2939,2922],{"class":404},[394,2941,417],{"class":416},[394,2943,2491],{"class":566},[394,2945,570],{"class":416},[394,2947,2496],{"class":1018},[394,2949,592],{"class":591},[394,2951,2161],{"class":573},[394,2953,577],{"class":416},[394,2955,2956,2958,2960,2962,2964,2966,2968,2970],{"class":396,"line":580},[394,2957,2588],{"class":404},[394,2959,417],{"class":416},[394,2961,2511],{"class":566},[394,2963,570],{"class":416},[394,2965,2516],{"class":1018},[394,2967,592],{"class":591},[394,2969,2521],{"class":573},[394,2971,577],{"class":416},[394,2973,2974],{"class":396,"line":585},[394,2975,434],{"emptyLinePlaceholder":433},[394,2977,2978,2981,2983,2985,2987,2989],{"class":396,"line":602},[394,2979,2980],{"class":404},"cov_trace ",[394,2982,592],{"class":591},[394,2984,711],{"class":404},[394,2986,417],{"class":416},[394,2988,1507],{"class":566},[394,2990,2991],{"class":416},"([\n",[394,2993,2994,2997,2999,3002,3004,3007,3009,3011,3013,3015,3017,3019,3021,3023,3026,3029,3031,3033,3035,3037,3039,3041,3043,3045,3047],{"class":396,"line":616},[394,2995,2996],{"class":566},"    torch",[394,2998,417],{"class":416},[394,3000,3001],{"class":420},"linalg",[394,3003,417],{"class":416},[394,3005,3006],{"class":566},"inv",[394,3008,570],{"class":416},[394,3010,2257],{"class":566},[394,3012,895],{"class":416},[394,3014,1228],{"class":1227},[394,3016,2009],{"class":1231},[394,3018,1228],{"class":1227},[394,3020,2702],{"class":416},[394,3022,1115],{"class":566},[394,3024,3025],{"class":416},"]).",[394,3027,3028],{"class":566},"diagonal",[394,3030,719],{"class":416},[394,3032,1655],{"class":566},[394,3034,1756],{"class":416},[394,3036,1152],{"class":400},[394,3038,1155],{"class":566},[394,3040,1158],{"class":400},[394,3042,1162],{"class":1161},[394,3044,570],{"class":416},[394,3046,748],{"class":566},[394,3048,3049],{"class":416},")])\n",[394,3051,3052,3055,3057,3059,3061,3063,3065,3067,3069,3071,3073,3075,3077,3079,3081,3084,3086,3089,3091,3093,3095,3097,3099,3101,3103,3105,3107,3109,3111],{"class":396,"line":621},[394,3053,3054],{"class":404},"ens_trace ",[394,3056,592],{"class":591},[394,3058,711],{"class":404},[394,3060,417],{"class":416},[394,3062,1507],{"class":566},[394,3064,1098],{"class":416},[394,3066,2354],{"class":566},[394,3068,895],{"class":416},[394,3070,1228],{"class":1227},[394,3072,2115],{"class":1231},[394,3074,1228],{"class":1227},[394,3076,2702],{"class":416},[394,3078,1115],{"class":566},[394,3080,1128],{"class":416},[394,3082,3083],{"class":566},"var",[394,3085,570],{"class":416},[394,3087,3088],{"class":1018},"dim",[394,3090,592],{"class":591},[394,3092,574],{"class":573},[394,3094,751],{"class":416},[394,3096,1655],{"class":566},[394,3098,1756],{"class":416},[394,3100,1152],{"class":400},[394,3102,1155],{"class":566},[394,3104,1158],{"class":400},[394,3106,1162],{"class":1161},[394,3108,570],{"class":416},[394,3110,748],{"class":566},[394,3112,3049],{"class":416},[394,3114,3115,3118,3120,3122,3124,3126,3128,3131,3133,3135,3137,3139,3141,3143,3145,3147,3149,3151,3154,3156],{"class":396,"line":666},[394,3116,3117],{"class":404},"axt",[394,3119,417],{"class":416},[394,3121,2178],{"class":566},[394,3123,570],{"class":416},[394,3125,1674],{"class":566},[394,3127,464],{"class":416},[394,3129,3130],{"class":566}," cov_trace",[394,3132,464],{"class":416},[394,3134,2199],{"class":1018},[394,3136,592],{"class":591},[394,3138,1228],{"class":1227},[394,3140,2281],{"class":1231},[394,3142,1228],{"class":1227},[394,3144,464],{"class":416},[394,3146,2225],{"class":1018},[394,3148,592],{"class":591},[394,3150,1228],{"class":1227},[394,3152,3153],{"class":1231},"information filter  tr(P)",[394,3155,1228],{"class":1227},[394,3157,577],{"class":416},[394,3159,3160,3162,3164,3166,3168,3170,3172,3175,3177,3179,3181,3183,3185,3187,3189,3191,3193,3195,3198,3200],{"class":396,"line":673},[394,3161,3117],{"class":404},[394,3163,417],{"class":416},[394,3165,2178],{"class":566},[394,3167,570],{"class":416},[394,3169,1674],{"class":566},[394,3171,464],{"class":416},[394,3173,3174],{"class":566}," ens_trace",[394,3176,464],{"class":416},[394,3178,2199],{"class":1018},[394,3180,592],{"class":591},[394,3182,1228],{"class":1227},[394,3184,2377],{"class":1231},[394,3186,1228],{"class":1227},[394,3188,464],{"class":416},[394,3190,2225],{"class":1018},[394,3192,592],{"class":591},[394,3194,1228],{"class":1227},[394,3196,3197],{"class":1231},"EnKF ensemble spread",[394,3199,1228],{"class":1227},[394,3201,577],{"class":416},[394,3203,3204,3206,3208,3210,3212,3214,3217,3219],{"class":396,"line":680},[394,3205,3117],{"class":404},[394,3207,417],{"class":416},[394,3209,2435],{"class":566},[394,3211,570],{"class":416},[394,3213,1228],{"class":1227},[394,3215,3216],{"class":1231},"Total uncertainty falls under measurements",[394,3218,1228],{"class":1227},[394,3220,577],{"class":416},[394,3222,3223,3225,3227,3229,3231,3233,3235,3237,3239,3242,3244,3246,3248,3250,3253,3255,3257,3259,3261,3263,3265,3267,3269,3271],{"class":396,"line":686},[394,3224,3117],{"class":404},[394,3226,417],{"class":416},[394,3228,2455],{"class":566},[394,3230,570],{"class":416},[394,3232,1228],{"class":1227},[394,3234,209],{"class":1231},[394,3236,1228],{"class":1227},[394,3238,1515],{"class":416},[394,3240,3241],{"class":404},"; axt",[394,3243,417],{"class":416},[394,3245,2473],{"class":566},[394,3247,570],{"class":416},[394,3249,1228],{"class":1227},[394,3251,3252],{"class":1231},"trace \u002F spread",[394,3254,1228],{"class":1227},[394,3256,1515],{"class":416},[394,3258,3241],{"class":404},[394,3260,417],{"class":416},[394,3262,2491],{"class":566},[394,3264,570],{"class":416},[394,3266,2496],{"class":1018},[394,3268,592],{"class":591},[394,3270,2161],{"class":573},[394,3272,577],{"class":416},[394,3274,3275,3277,3279,3281,3283,3285,3287,3289],{"class":396,"line":692},[394,3276,3117],{"class":404},[394,3278,417],{"class":416},[394,3280,2511],{"class":566},[394,3282,570],{"class":416},[394,3284,2516],{"class":1018},[394,3286,592],{"class":591},[394,3288,2521],{"class":573},[394,3290,577],{"class":416},[394,3292,3293,3295,3297,3299,3301,3303,3305,3307],{"class":396,"line":698},[394,3294,2528],{"class":404},[394,3296,417],{"class":416},[394,3298,2533],{"class":566},[394,3300,1756],{"class":416},[394,3302,2538],{"class":404},[394,3304,417],{"class":416},[394,3306,2543],{"class":566},[394,3308,757],{"class":416},[338,3310,3311],{},[2549,3312],{"alt":390,"src":3313},"\u002F_nb\u002Fb4a055aab87f59e0.png",[338,3315,3316,3319,3320,3323,3324,3326,3327,3330,3331,3333],{},[362,3317,3318],{},"Takeaway."," Use the ",[362,3321,3322],{},"information filter"," when you want the exact\nGaussian posterior and ",[347,3325,382],{}," is moderate (its update is a cheap\naddition, ideal for fusing many cues). Use the ",[362,3328,3329],{},"EnKF"," when ",[347,3332,382],{}," is\nlarge enough that a dense covariance is impractical — the ensemble\nbuys you covariance information at a cost set by the ensemble size.",[3335,3336,3337],"style",{},"html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sFwrP, html code.shiki .sFwrP{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#24292E;--shiki-default-font-style:inherit;--shiki-dark:#E1E4E8;--shiki-dark-font-style:inherit}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s2W-s, html code.shiki .s2W-s{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#032F62;--shiki-default-font-style:inherit;--shiki-dark:#9ECBFF;--shiki-dark-font-style:inherit}html pre.shiki code .sithA, html code.shiki .sithA{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#032F62;--shiki-default-font-style:inherit;--shiki-dark:#9ECBFF;--shiki-dark-font-style:inherit}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":390,"searchDepth":430,"depth":430,"links":3339},[3340],{"id":2555,"depth":408,"text":2556},"Two ways to carry a full covariance on a high-dimensional embedding\nwithout the O(D^2)-O(D^3) cost of a dense Kalman filter:","md",{"notebook":433},{"icon":63},{"title":73,"description":3341},"O-R8H82taIYNLA9XRGhaU7dFXufvB71wCWpjqEssEZY",{},1785139890275]