--- Starting Daily Update for Season 20232024 ---
[1/4] Updating Game Data...
_season: starting fetch for season=20232024, team=all, games=2187, workers=4, use_cache=True
Fetching feeds: 1/2187
Fetching feeds: 2/2187
Fetching feeds: 3/2187
Fetching feeds: 4/2187
Fetching feeds: 5/2187
Fetching feeds: 6/2187
Fetching feeds: 7/2187
Fetching feeds: 8/2187
Fetching feeds: 9/2187
Fetching feeds: 10/2187
Fetching feeds: 11/2187
Fetching feeds: 12/2187
Fetching feeds: 13/2187
Fetching feeds: 14/2187
Fetching feeds: 15/2187
Fetching feeds: 16/2187
Fetching feeds: 17/2187
Fetching feeds: 18/2187
Fetching feeds: 19/2187
Fetching feeds: 20/2187
Fetching feeds: 21/2187
Fetching feeds: 22/2187
Fetching feeds: 23/2187
Fetching feeds: 24/2187
Fetching feeds: 25/2187
Fetching feeds: 26/2187
Fetching feeds: 27/2187
Fetching feeds: 28/2187
Fetching feeds: 29/2187
Fetching feeds: 30/2187
Fetching feeds: 31/2187
Fetching feeds: 32/2187
Fetching feeds: 33/2187
Fetching feeds: 34/2187
Fetching feeds: 35/2187
Fetching feeds: 36/2187
Fetching feeds: 37/2187
Fetching feeds: 38/2187
Fetching feeds: 39/2187
Fetching feeds: 40/2187
Fetching feeds: 41/2187
Fetching feeds: 42/2187
Fetching feeds: 43/2187
Fetching feeds: 44/2187
Fetching feeds: 45/2187
Fetching feeds: 46/2187
Fetching feeds: 47/2187
Fetching feeds: 48/2187
Fetching feeds: 49/2187
Fetching feeds: 50/2187
Fetching feeds: 51/2187
Fetching feeds: 52/2187
Fetching feeds: 53/2187
Fetching feeds: 54/2187
Fetching feeds: 55/2187
Fetching feeds: 56/2187
Fetching feeds: 57/2187
Fetching feeds: 58/2187
Fetching feeds: 59/2187
Fetching feeds: 60/2187
Fetching feeds: 61/2187
Fetching feeds: 62/2187
Fetching feeds: 63/2187
Fetching feeds: 64/2187
Fetching feeds: 65/2187
Fetching feeds: 66/2187
Fetching feeds: 67/2187
Fetching feeds: 68/2187
Fetching feeds: 69/2187
Fetching feeds: 70/2187
Fetching feeds: 71/2187
Fetching feeds: 72/2187
Fetching feeds: 73/2187
Fetching feeds: 74/2187
Fetching feeds: 75/2187
Fetching feeds: 76/2187
Fetching feeds: 77/2187
Fetching feeds: 78/2187
Fetching feeds: 79/2187
Fetching feeds: 80/2187
Fetching feeds: 81/2187
Fetching feeds: 82/2187
Fetching feeds: 83/2187
Fetching feeds: 84/2187
Fetching feeds: 85/2187
Fetching feeds: 86/2187
Fetching feeds: 87/2187
Fetching feeds: 88/2187
Fetching feeds: 89/2187
Fetching feeds: 90/2187
Fetching feeds: 91/2187
Fetching feeds: 92/2187
Fetching feeds: 93/2187
Fetching feeds: 94/2187
Fetching feeds: 95/2187
Fetching feeds: 96/2187
Fetching feeds: 97/2187
Fetching feeds: 98/2187
Fetching feeds: 99/2187
Fetching feeds: 100/2187
Fetching feeds: 101/2187
Fetching feeds: 102/2187
Fetching feeds: 103/2187
Fetching feeds: 104/2187
Fetching feeds: 105/2187
Fetching feeds: 106/2187
Fetching feeds: 107/2187
Fetching feeds: 108/2187
Fetching feeds: 109/2187
Fetching feeds: 110/2187
Fetching feeds: 111/2187
Fetching feeds: 112/2187
Fetching feeds: 113/2187
Fetching feeds: 114/2187
Fetching feeds: 115/2187
Fetching feeds: 116/2187
Fetching feeds: 117/2187
Fetching feeds: 118/2187
Fetching feeds: 119/2187
Fetching feeds: 120/2187
Fetching feeds: 121/2187
Fetching feeds: 122/2187
Fetching feeds: 123/2187
Fetching feeds: 124/2187
Fetching feeds: 125/2187
Fetching feeds: 126/2187
Fetching feeds: 127/2187
Fetching feeds: 128/2187
Fetching feeds: 129/2187
Fetching feeds: 130/2187
Fetching feeds: 131/2187
Fetching feeds: 132/2187
Fetching feeds: 133/2187
Fetching feeds: 134/2187
Fetching feeds: 135/2187
Fetching feeds: 136/2187
Fetching feeds: 137/2187
Fetching feeds: 138/2187
Fetching feeds: 139/2187
Fetching feeds: 140/2187
Fetching feeds: 141/2187
Fetching feeds: 142/2187
Fetching feeds: 143/2187
Fetching feeds: 144/2187
Fetching feeds: 145/2187
Fetching feeds: 146/2187
Fetching feeds: 147/2187
Fetching feeds: 148/2187
Fetching feeds: 149/2187
Fetching feeds: 150/2187
Fetching feeds: 151/2187
Fetching feeds: 152/2187
Fetching feeds: 153/2187
Fetching feeds: 154/2187
Fetching feeds: 155/2187
Fetching feeds: 156/2187
Fetching feeds: 157/2187
Fetching feeds: 158/2187
Fetching feeds: 159/2187
Fetching feeds: 160/2187
Fetching feeds: 161/2187
Fetching feeds: 162/2187
Fetching feeds: 163/2187
Fetching feeds: 164/2187
Fetching feeds: 165/2187
Fetching feeds: 166/2187
Fetching feeds: 167/2187
Fetching feeds: 168/2187
Fetching feeds: 169/2187
Fetching feeds: 170/2187
Fetching feeds: 171/2187
Fetching feeds: 172/2187
Fetching feeds: 173/2187
Fetching feeds: 174/2187
Fetching feeds: 175/2187
Fetching feeds: 176/2187
Fetching feeds: 177/2187
Fetching feeds: 178/2187
Fetching feeds: 179/2187
Fetching feeds: 180/2187
Fetching feeds: 181/2187
Fetching feeds: 182/2187
Fetching feeds: 183/2187
Fetching feeds: 184/2187
Fetching feeds: 185/2187
Fetching feeds: 186/2187
Fetching feeds: 187/2187
Fetching feeds: 188/2187
Fetching feeds: 189/2187
Fetching feeds: 190/2187
Fetching feeds: 191/2187
Fetching feeds: 192/2187
Fetching feeds: 193/2187
Fetching feeds: 194/2187
Fetching feeds: 195/2187
Fetching feeds: 196/2187
Fetching feeds: 197/2187
Fetching feeds: 198/2187
Fetching feeds: 199/2187
Fetching feeds: 200/2187
Fetching feeds: 201/2187
Fetching feeds: 202/2187
Fetching feeds: 203/2187
Fetching feeds: 204/2187
Fetching feeds: 205/2187
Fetching feeds: 206/2187
Fetching feeds: 207/2187
Fetching feeds: 208/2187
Fetching feeds: 209/2187
Fetching feeds: 210/2187
Fetching feeds: 211/2187
Fetching feeds: 212/2187
Fetching feeds: 213/2187
Fetching feeds: 214/2187
Fetching feeds: 215/2187
Fetching feeds: 216/2187
Fetching feeds: 217/2187
Fetching feeds: 218/2187
Fetching feeds: 219/2187
Fetching feeds: 220/2187
Fetching feeds: 221/2187
Fetching feeds: 222/2187
Fetching feeds: 223/2187
Fetching feeds: 224/2187
Fetching feeds: 225/2187
Fetching feeds: 226/2187
Fetching feeds: 227/2187
Fetching feeds: 228/2187
Fetching feeds: 229/2187
Fetching feeds: 230/2187
Fetching feeds: 231/2187
Fetching feeds: 232/2187
Fetching feeds: 233/2187
Fetching feeds: 234/2187
Fetching feeds: 235/2187
Fetching feeds: 236/2187
Fetching feeds: 237/2187
Fetching feeds: 238/2187
Fetching feeds: 239/2187
Fetching feeds: 240/2187
Fetching feeds: 241/2187
Fetching feeds: 242/2187
Fetching feeds: 243/2187
Fetching feeds: 244/2187
Fetching feeds: 245/2187
Fetching feeds: 246/2187
Fetching feeds: 247/2187
Fetching feeds: 248/2187
Fetching feeds: 249/2187
Fetching feeds: 250/2187
Fetching feeds: 251/2187
Fetching feeds: 252/2187
Fetching feeds: 253/2187
Fetching feeds: 254/2187
Fetching feeds: 255/2187
Fetching feeds: 256/2187
Fetching feeds: 257/2187
Fetching feeds: 258/2187
Fetching feeds: 259/2187
Fetching feeds: 260/2187
Fetching feeds: 261/2187
Fetching feeds: 262/2187
Fetching feeds: 263/2187
Fetching feeds: 264/2187
Fetching feeds: 265/2187
Fetching feeds: 266/2187
Fetching feeds: 267/2187
Fetching feeds: 268/2187
Fetching feeds: 269/2187
Fetching feeds: 270/2187
Fetching feeds: 271/2187
Fetching feeds: 272/2187
Fetching feeds: 273/2187
Fetching feeds: 274/2187
Fetching feeds: 275/2187
Fetching feeds: 276/2187
Fetching feeds: 277/2187
Fetching feeds: 278/2187
Fetching feeds: 279/2187
Fetching feeds: 280/2187
Fetching feeds: 281/2187
Fetching feeds: 282/2187
Fetching feeds: 283/2187
Fetching feeds: 284/2187
Fetching feeds: 285/2187
Fetching feeds: 286/2187
Fetching feeds: 287/2187
Fetching feeds: 288/2187
Fetching feeds: 289/2187
Fetching feeds: 290/2187
Fetching feeds: 291/2187
Fetching feeds: 292/2187
Fetching feeds: 293/2187
Fetching feeds: 294/2187
Fetching feeds: 295/2187
Fetching feeds: 296/2187
Fetching feeds: 297/2187
Fetching feeds: 298/2187
Fetching feeds: 299/2187
Fetching feeds: 300/2187
Fetching feeds: 301/2187
Fetching feeds: 302/2187
Fetching feeds: 303/2187
Fetching feeds: 304/2187
Fetching feeds: 305/2187
Fetching feeds: 306/2187
Fetching feeds: 307/2187
Fetching feeds: 308/2187
Fetching feeds: 309/2187
Fetching feeds: 310/2187
Fetching feeds: 311/2187
Fetching feeds: 312/2187
Fetching feeds: 313/2187
Fetching feeds: 314/2187
Fetching feeds: 315/2187
Fetching feeds: 316/2187
Fetching feeds: 317/2187
Fetching feeds: 318/2187
Fetching feeds: 319/2187
Fetching feeds: 320/2187
Fetching feeds: 321/2187
Fetching feeds: 322/2187
Fetching feeds: 323/2187
Fetching feeds: 324/2187
Fetching feeds: 325/2187
Fetching feeds: 326/2187
Fetching feeds: 327/2187
Fetching feeds: 328/2187
Fetching feeds: 329/2187
Fetching feeds: 330/2187
Fetching feeds: 331/2187
Fetching feeds: 332/2187
Fetching feeds: 333/2187
Fetching feeds: 334/2187
Fetching feeds: 335/2187
Fetching feeds: 336/2187
Fetching feeds: 337/2187
Fetching feeds: 338/2187
Fetching feeds: 339/2187
Fetching feeds: 340/2187
Fetching feeds: 341/2187
Fetching feeds: 342/2187
Fetching feeds: 343/2187
Fetching feeds: 344/2187
Fetching feeds: 345/2187
Fetching feeds: 346/2187
Fetching feeds: 347/2187
Fetching feeds: 348/2187
Fetching feeds: 349/2187
Fetching feeds: 350/2187
Fetching feeds: 351/2187
Fetching feeds: 352/2187
Fetching feeds: 353/2187
Fetching feeds: 354/2187
Fetching feeds: 355/2187
Fetching feeds: 356/2187
Fetching feeds: 357/2187
Fetching feeds: 358/2187
Fetching feeds: 359/2187
Fetching feeds: 360/2187
Fetching feeds: 361/2187
Fetching feeds: 362/2187
Fetching feeds: 363/2187
Fetching feeds: 364/2187
Fetching feeds: 365/2187
Fetching feeds: 366/2187
Fetching feeds: 367/2187
Fetching feeds: 368/2187
Fetching feeds: 369/2187
Fetching feeds: 370/2187
Fetching feeds: 371/2187
Fetching feeds: 372/2187
Fetching feeds: 373/2187
Fetching feeds: 374/2187
Fetching feeds: 375/2187
Fetching feeds: 376/2187
Fetching feeds: 377/2187
Fetching feeds: 378/2187
Fetching feeds: 379/2187
Fetching feeds: 380/2187
Fetching feeds: 381/2187
Fetching feeds: 382/2187
Fetching feeds: 383/2187
Fetching feeds: 384/2187
Fetching feeds: 385/2187
Fetching feeds: 386/2187
Fetching feeds: 387/2187
Fetching feeds: 388/2187
Fetching feeds: 389/2187
Fetching feeds: 390/2187
Fetching feeds: 391/2187
Fetching feeds: 392/2187
Fetching feeds: 393/2187
Fetching feeds: 394/2187
Fetching feeds: 395/2187
Fetching feeds: 396/2187
Fetching feeds: 397/2187
Fetching feeds: 398/2187
Fetching feeds: 399/2187
Fetching feeds: 400/2187
Fetching feeds: 401/2187
Fetching feeds: 402/2187
Fetching feeds: 403/2187
Fetching feeds: 404/2187
Fetching feeds: 405/2187
Fetching feeds: 406/2187
Fetching feeds: 407/2187
Fetching feeds: 408/2187
Fetching feeds: 409/2187
Fetching feeds: 410/2187
Fetching feeds: 411/2187
Fetching feeds: 412/2187
Fetching feeds: 413/2187
Fetching feeds: 414/2187
Fetching feeds: 415/2187
Fetching feeds: 416/2187
Fetching feeds: 417/2187
Fetching feeds: 418/2187
Fetching feeds: 419/2187
Fetching feeds: 420/2187
Fetching feeds: 421/2187
Fetching feeds: 422/2187
Fetching feeds: 423/2187
Fetching feeds: 424/2187
Fetching feeds: 425/2187
Fetching feeds: 426/2187
Fetching feeds: 427/2187
Fetching feeds: 428/2187
Fetching feeds: 429/2187
Fetching feeds: 430/2187
Fetching feeds: 431/2187
Fetching feeds: 432/2187
Fetching feeds: 433/2187
Fetching feeds: 434/2187
Fetching feeds: 435/2187
Fetching feeds: 436/2187
Fetching feeds: 437/2187
Fetching feeds: 438/2187
Fetching feeds: 439/2187
Fetching feeds: 440/2187
Fetching feeds: 441/2187
Fetching feeds: 442/2187
Fetching feeds: 443/2187
Fetching feeds: 444/2187
Fetching feeds: 445/2187
Fetching feeds: 446/2187
Fetching feeds: 447/2187
Fetching feeds: 448/2187
Fetching feeds: 449/2187
Fetching feeds: 450/2187
Fetching feeds: 451/2187
Fetching feeds: 452/2187
Fetching feeds: 453/2187
Fetching feeds: 454/2187
Fetching feeds: 455/2187
Fetching feeds: 456/2187
Fetching feeds: 457/2187
Fetching feeds: 458/2187
Fetching feeds: 459/2187
Fetching feeds: 460/2187
Fetching feeds: 461/2187
Fetching feeds: 462/2187
Fetching feeds: 463/2187
Fetching feeds: 464/2187
Fetching feeds: 465/2187
Fetching feeds: 466/2187
Fetching feeds: 467/2187
Fetching feeds: 468/2187
Fetching feeds: 469/2187
Fetching feeds: 470/2187
Fetching feeds: 471/2187
Fetching feeds: 472/2187
Fetching feeds: 473/2187
Fetching feeds: 474/2187
Fetching feeds: 475/2187
Fetching feeds: 476/2187
Fetching feeds: 477/2187
Fetching feeds: 478/2187
Fetching feeds: 479/2187
Fetching feeds: 480/2187
Fetching feeds: 481/2187
Fetching feeds: 482/2187
Fetching feeds: 483/2187
Fetching feeds: 484/2187
Fetching feeds: 485/2187
Fetching feeds: 486/2187
Fetching feeds: 487/2187
Fetching feeds: 488/2187
Fetching feeds: 489/2187
Fetching feeds: 490/2187
Fetching feeds: 491/2187
Fetching feeds: 492/2187
Fetching feeds: 493/2187
Fetching feeds: 494/2187
Fetching feeds: 495/2187
Fetching feeds: 496/2187
Fetching feeds: 497/2187
Fetching feeds: 498/2187
Fetching feeds: 499/2187
Fetching feeds: 500/2187
Fetching feeds: 501/2187
Fetching feeds: 502/2187
Fetching feeds: 503/2187
Fetching feeds: 504/2187
Fetching feeds: 505/2187
Fetching feeds: 506/2187
Fetching feeds: 507/2187
Fetching feeds: 508/2187
Fetching feeds: 509/2187
Fetching feeds: 510/2187
Fetching feeds: 511/2187
Fetching feeds: 512/2187
Fetching feeds: 513/2187
Fetching feeds: 514/2187
Fetching feeds: 515/2187
Fetching feeds: 516/2187
Fetching feeds: 517/2187
Fetching feeds: 518/2187
Fetching feeds: 519/2187
Fetching feeds: 520/2187
Fetching feeds: 521/2187
Fetching feeds: 522/2187
Fetching feeds: 523/2187
Fetching feeds: 524/2187
Fetching feeds: 525/2187
Fetching feeds: 526/2187
Fetching feeds: 527/2187
Fetching feeds: 528/2187
Fetching feeds: 529/2187
Fetching feeds: 530/2187
Fetching feeds: 531/2187
Fetching feeds: 532/2187
Fetching feeds: 533/2187
Fetching feeds: 534/2187
Fetching feeds: 535/2187
Fetching feeds: 536/2187
Fetching feeds: 537/2187
Fetching feeds: 538/2187
Fetching feeds: 539/2187
Fetching feeds: 540/2187
Fetching feeds: 541/2187
Fetching feeds: 542/2187
Fetching feeds: 543/2187
Fetching feeds: 544/2187
Fetching feeds: 545/2187
Fetching feeds: 546/2187
Fetching feeds: 547/2187
Fetching feeds: 548/2187
Fetching feeds: 549/2187
Fetching feeds: 550/2187
Fetching feeds: 551/2187
Fetching feeds: 552/2187
Fetching feeds: 553/2187
Fetching feeds: 554/2187
Fetching feeds: 555/2187
Fetching feeds: 556/2187
Fetching feeds: 557/2187
Fetching feeds: 558/2187
Fetching feeds: 559/2187
Fetching feeds: 560/2187
Fetching feeds: 561/2187
Fetching feeds: 562/2187
Fetching feeds: 563/2187
Fetching feeds: 564/2187
Fetching feeds: 565/2187
Fetching feeds: 566/2187
Fetching feeds: 567/2187
Fetching feeds: 568/2187
Fetching feeds: 569/2187
Fetching feeds: 570/2187
Fetching feeds: 571/2187
Fetching feeds: 572/2187
Fetching feeds: 573/2187
Fetching feeds: 574/2187
Fetching feeds: 575/2187
Fetching feeds: 576/2187
Fetching feeds: 577/2187
Fetching feeds: 578/2187
Fetching feeds: 579/2187
Fetching feeds: 580/2187
Fetching feeds: 581/2187
Fetching feeds: 582/2187
Fetching feeds: 583/2187
Fetching feeds: 584/2187
Fetching feeds: 585/2187
Fetching feeds: 586/2187
Fetching feeds: 587/2187
Fetching feeds: 588/2187
Fetching feeds: 589/2187
Fetching feeds: 590/2187
Fetching feeds: 591/2187
Fetching feeds: 592/2187
Fetching feeds: 593/2187
Fetching feeds: 594/2187
Fetching feeds: 595/2187
Fetching feeds: 596/2187
Fetching feeds: 597/2187
Fetching feeds: 598/2187
Fetching feeds: 599/2187
Fetching feeds: 600/2187
Fetching feeds: 601/2187
Fetching feeds: 602/2187
Fetching feeds: 603/2187
Fetching feeds: 604/2187
Fetching feeds: 605/2187
Fetching feeds: 606/2187
Fetching feeds: 607/2187
Fetching feeds: 608/2187
Fetching feeds: 609/2187
Fetching feeds: 610/2187
Fetching feeds: 611/2187
Fetching feeds: 612/2187
Fetching feeds: 613/2187
Fetching feeds: 614/2187
Fetching feeds: 615/2187
Fetching feeds: 616/2187
Fetching feeds: 617/2187
Fetching feeds: 618/2187
Fetching feeds: 619/2187
Fetching feeds: 620/2187
Fetching feeds: 621/2187
Fetching feeds: 622/2187
Fetching feeds: 623/2187
Fetching feeds: 624/2187
Fetching feeds: 625/2187
Fetching feeds: 626/2187
Fetching feeds: 627/2187
Fetching feeds: 628/2187
Fetching feeds: 629/2187
Fetching feeds: 630/2187
Fetching feeds: 631/2187
Fetching feeds: 632/2187
Fetching feeds: 633/2187
Fetching feeds: 634/2187
Fetching feeds: 635/2187
Fetching feeds: 636/2187
Fetching feeds: 637/2187
Fetching feeds: 638/2187
Fetching feeds: 639/2187
Fetching feeds: 640/2187
Fetching feeds: 641/2187
Fetching feeds: 642/2187
Fetching feeds: 643/2187
Fetching feeds: 644/2187
Fetching feeds: 645/2187
Fetching feeds: 646/2187
Fetching feeds: 647/2187
Fetching feeds: 648/2187
Fetching feeds: 649/2187
Fetching feeds: 650/2187
Fetching feeds: 651/2187
Fetching feeds: 652/2187
Fetching feeds: 653/2187
Fetching feeds: 654/2187
Fetching feeds: 655/2187
Fetching feeds: 656/2187
Fetching feeds: 657/2187
Fetching feeds: 658/2187
Fetching feeds: 659/2187
Fetching feeds: 660/2187
Fetching feeds: 661/2187
Fetching feeds: 662/2187
Fetching feeds: 663/2187
Fetching feeds: 664/2187
Fetching feeds: 665/2187
Fetching feeds: 666/2187
Fetching feeds: 667/2187
Fetching feeds: 668/2187
Fetching feeds: 669/2187
Fetching feeds: 670/2187
Fetching feeds: 671/2187
Fetching feeds: 672/2187
Fetching feeds: 673/2187
Fetching feeds: 674/2187
Fetching feeds: 675/2187
Fetching feeds: 676/2187
Fetching feeds: 677/2187
Fetching feeds: 678/2187
Fetching feeds: 679/2187
Fetching feeds: 680/2187
Fetching feeds: 681/2187
Fetching feeds: 682/2187
Fetching feeds: 683/2187
Fetching feeds: 684/2187
Fetching feeds: 685/2187
Fetching feeds: 686/2187
Fetching feeds: 687/2187
Fetching feeds: 688/2187
Fetching feeds: 689/2187
Fetching feeds: 690/2187
Fetching feeds: 691/2187
Fetching feeds: 692/2187
Fetching feeds: 693/2187
Fetching feeds: 694/2187
Fetching feeds: 695/2187
Fetching feeds: 696/2187
Fetching feeds: 697/2187
Fetching feeds: 698/2187
Fetching feeds: 699/2187
Fetching feeds: 700/2187
Fetching feeds: 701/2187
Fetching feeds: 702/2187
Fetching feeds: 703/2187
Fetching feeds: 704/2187
Fetching feeds: 705/2187
Fetching feeds: 706/2187
Fetching feeds: 707/2187
Fetching feeds: 708/2187
Fetching feeds: 709/2187
Fetching feeds: 710/2187
Fetching feeds: 711/2187
Fetching feeds: 712/2187
Fetching feeds: 713/2187
Fetching feeds: 714/2187
Fetching feeds: 715/2187
Fetching feeds: 716/2187
Fetching feeds: 717/2187
Fetching feeds: 718/2187
Fetching feeds: 719/2187
Fetching feeds: 720/2187
Fetching feeds: 721/2187
Fetching feeds: 722/2187
Fetching feeds: 723/2187
Fetching feeds: 724/2187
Fetching feeds: 725/2187
Fetching feeds: 726/2187
Fetching feeds: 727/2187
Fetching feeds: 728/2187
Fetching feeds: 729/2187
Fetching feeds: 730/2187
Fetching feeds: 731/2187
Fetching feeds: 732/2187
Fetching feeds: 733/2187
Fetching feeds: 734/2187
Fetching feeds: 735/2187
Fetching feeds: 736/2187
Fetching feeds: 737/2187
Fetching feeds: 738/2187
Fetching feeds: 739/2187
Fetching feeds: 740/2187
Fetching feeds: 741/2187
Fetching feeds: 742/2187
Fetching feeds: 743/2187
Fetching feeds: 744/2187
Fetching feeds: 745/2187
Fetching feeds: 746/2187
Fetching feeds: 747/2187
Fetching feeds: 748/2187
Fetching feeds: 749/2187
Fetching feeds: 750/2187
Fetching feeds: 751/2187
Fetching feeds: 752/2187
Fetching feeds: 753/2187
Fetching feeds: 754/2187
Fetching feeds: 755/2187
Fetching feeds: 756/2187
Fetching feeds: 757/2187
Fetching feeds: 758/2187
Fetching feeds: 759/2187
Fetching feeds: 760/2187
Fetching feeds: 761/2187
Fetching feeds: 762/2187
Fetching feeds: 763/2187
Fetching feeds: 764/2187
Fetching feeds: 765/2187
Fetching feeds: 766/2187
Fetching feeds: 767/2187
Fetching feeds: 768/2187
Fetching feeds: 769/2187
Fetching feeds: 770/2187
Fetching feeds: 771/2187
Fetching feeds: 772/2187
Fetching feeds: 773/2187
Fetching feeds: 774/2187
Fetching feeds: 775/2187
Fetching feeds: 776/2187
Fetching feeds: 777/2187
Fetching feeds: 778/2187
Fetching feeds: 779/2187
Fetching feeds: 780/2187
Fetching feeds: 781/2187
Fetching feeds: 782/2187
Fetching feeds: 783/2187
Fetching feeds: 784/2187
Fetching feeds: 785/2187
Fetching feeds: 786/2187
Fetching feeds: 787/2187
Fetching feeds: 788/2187
Fetching feeds: 789/2187
Fetching feeds: 790/2187
Fetching feeds: 791/2187
Fetching feeds: 792/2187
Fetching feeds: 793/2187
Fetching feeds: 794/2187
Fetching feeds: 795/2187
Fetching feeds: 796/2187
Fetching feeds: 797/2187
Fetching feeds: 798/2187
Fetching feeds: 799/2187
Fetching feeds: 800/2187
Fetching feeds: 801/2187
Fetching feeds: 802/2187
Fetching feeds: 803/2187
Fetching feeds: 804/2187
Fetching feeds: 805/2187
Fetching feeds: 806/2187
Fetching feeds: 807/2187
Fetching feeds: 808/2187
Fetching feeds: 809/2187
Fetching feeds: 810/2187
Fetching feeds: 811/2187
Fetching feeds: 812/2187
Fetching feeds: 813/2187
Fetching feeds: 814/2187
Fetching feeds: 815/2187
Fetching feeds: 816/2187
Fetching feeds: 817/2187
Fetching feeds: 818/2187
Fetching feeds: 819/2187
Fetching feeds: 820/2187
Fetching feeds: 821/2187
Fetching feeds: 822/2187
Fetching feeds: 823/2187
Fetching feeds: 824/2187
Fetching feeds: 825/2187
Fetching feeds: 826/2187
Fetching feeds: 827/2187
Fetching feeds: 828/2187
Fetching feeds: 829/2187
Fetching feeds: 830/2187
Fetching feeds: 831/2187
Fetching feeds: 832/2187
Fetching feeds: 833/2187
Fetching feeds: 834/2187
Fetching feeds: 835/2187
Fetching feeds: 836/2187
Fetching feeds: 837/2187
Fetching feeds: 838/2187
Fetching feeds: 839/2187
Fetching feeds: 840/2187
Fetching feeds: 841/2187
Fetching feeds: 842/2187
Fetching feeds: 843/2187
Fetching feeds: 844/2187
Fetching feeds: 845/2187
Fetching feeds: 846/2187
Fetching feeds: 847/2187
Fetching feeds: 848/2187
Fetching feeds: 849/2187
Fetching feeds: 850/2187
Fetching feeds: 851/2187
Fetching feeds: 852/2187
Fetching feeds: 853/2187
Fetching feeds: 854/2187
Fetching feeds: 855/2187
Fetching feeds: 856/2187
Fetching feeds: 857/2187
Fetching feeds: 858/2187
Fetching feeds: 859/2187
Fetching feeds: 860/2187
Fetching feeds: 861/2187
Fetching feeds: 862/2187
Fetching feeds: 863/2187
Fetching feeds: 864/2187
Fetching feeds: 865/2187
Fetching feeds: 866/2187
Fetching feeds: 867/2187
Fetching feeds: 868/2187
Fetching feeds: 869/2187
Fetching feeds: 870/2187
Fetching feeds: 871/2187
Fetching feeds: 872/2187
Fetching feeds: 873/2187
Fetching feeds: 874/2187
Fetching feeds: 875/2187
Fetching feeds: 876/2187
Fetching feeds: 877/2187
Fetching feeds: 878/2187
Fetching feeds: 879/2187
Fetching feeds: 880/2187
Fetching feeds: 881/2187
Fetching feeds: 882/2187
Fetching feeds: 883/2187
Fetching feeds: 884/2187
Fetching feeds: 885/2187
Fetching feeds: 886/2187
Fetching feeds: 887/2187
Fetching feeds: 888/2187
Fetching feeds: 889/2187
Fetching feeds: 890/2187
Fetching feeds: 891/2187
Fetching feeds: 892/2187
Fetching feeds: 893/2187
Fetching feeds: 894/2187
Fetching feeds: 895/2187
Fetching feeds: 896/2187
Fetching feeds: 897/2187
Fetching feeds: 898/2187
Fetching feeds: 899/2187
Fetching feeds: 900/2187
Fetching feeds: 901/2187
Fetching feeds: 902/2187
Fetching feeds: 903/2187
Fetching feeds: 904/2187
Fetching feeds: 905/2187
Fetching feeds: 906/2187
Fetching feeds: 907/2187
Fetching feeds: 908/2187
Fetching feeds: 909/2187
Fetching feeds: 910/2187
Fetching feeds: 911/2187
Fetching feeds: 912/2187
Fetching feeds: 913/2187
Fetching feeds: 914/2187
Fetching feeds: 915/2187
Fetching feeds: 916/2187
Fetching feeds: 917/2187
Fetching feeds: 918/2187
Fetching feeds: 919/2187
Fetching feeds: 920/2187
Fetching feeds: 921/2187
Fetching feeds: 922/2187
Fetching feeds: 923/2187
Fetching feeds: 924/2187
Fetching feeds: 925/2187
Fetching feeds: 926/2187
Fetching feeds: 927/2187
Fetching feeds: 928/2187
Fetching feeds: 929/2187
Fetching feeds: 930/2187
Fetching feeds: 931/2187
Fetching feeds: 932/2187
Fetching feeds: 933/2187
Fetching feeds: 934/2187
Fetching feeds: 935/2187
Fetching feeds: 936/2187
Fetching feeds: 937/2187
Fetching feeds: 938/2187
Fetching feeds: 939/2187
Fetching feeds: 940/2187
Fetching feeds: 941/2187
Fetching feeds: 942/2187
Fetching feeds: 943/2187
Fetching feeds: 944/2187
Fetching feeds: 945/2187
Fetching feeds: 946/2187
Fetching feeds: 947/2187
Fetching feeds: 948/2187
Fetching feeds: 949/2187
Fetching feeds: 950/2187
Fetching feeds: 951/2187
Fetching feeds: 952/2187
Fetching feeds: 953/2187
Fetching feeds: 954/2187
Fetching feeds: 955/2187
Fetching feeds: 956/2187
Fetching feeds: 957/2187
Fetching feeds: 958/2187
Fetching feeds: 959/2187
Fetching feeds: 960/2187
Fetching feeds: 961/2187
Fetching feeds: 962/2187
Fetching feeds: 963/2187
Fetching feeds: 964/2187
Fetching feeds: 965/2187
Fetching feeds: 966/2187
Fetching feeds: 967/2187
Fetching feeds: 968/2187
Fetching feeds: 969/2187
Fetching feeds: 970/2187
Fetching feeds: 971/2187
Fetching feeds: 972/2187
Fetching feeds: 973/2187
Fetching feeds: 974/2187
Fetching feeds: 975/2187
Fetching feeds: 976/2187
Fetching feeds: 977/2187
Fetching feeds: 978/2187
Fetching feeds: 979/2187
Fetching feeds: 980/2187
Fetching feeds: 981/2187
Fetching feeds: 982/2187
Fetching feeds: 983/2187
Fetching feeds: 984/2187
Fetching feeds: 985/2187
Fetching feeds: 986/2187
Fetching feeds: 987/2187
Fetching feeds: 988/2187
Fetching feeds: 989/2187
Fetching feeds: 990/2187
Fetching feeds: 991/2187
Fetching feeds: 992/2187
Fetching feeds: 993/2187
Fetching feeds: 994/2187
Fetching feeds: 995/2187
Fetching feeds: 996/2187
Fetching feeds: 997/2187
Fetching feeds: 998/2187
Fetching feeds: 999/2187
Fetching feeds: 1000/2187
Fetching feeds: 1001/2187
Fetching feeds: 1002/2187
Fetching feeds: 1003/2187
Fetching feeds: 1004/2187
Fetching feeds: 1005/2187
Fetching feeds: 1006/2187
Fetching feeds: 1007/2187
Fetching feeds: 1008/2187
Fetching feeds: 1009/2187
Fetching feeds: 1010/2187
Fetching feeds: 1011/2187
Fetching feeds: 1012/2187
Fetching feeds: 1013/2187
Fetching feeds: 1014/2187
Fetching feeds: 1015/2187
Fetching feeds: 1016/2187
Fetching feeds: 1017/2187
Fetching feeds: 1018/2187
Fetching feeds: 1019/2187
Fetching feeds: 1020/2187
Fetching feeds: 1021/2187
Fetching feeds: 1022/2187
Fetching feeds: 1023/2187
Fetching feeds: 1024/2187
Fetching feeds: 1025/2187
Fetching feeds: 1026/2187
Fetching feeds: 1027/2187
Fetching feeds: 1028/2187
Fetching feeds: 1029/2187
Fetching feeds: 1030/2187
Fetching feeds: 1031/2187
Fetching feeds: 1032/2187
Fetching feeds: 1033/2187
Fetching feeds: 1034/2187
Fetching feeds: 1035/2187
Fetching feeds: 1036/2187
Fetching feeds: 1037/2187
Fetching feeds: 1038/2187
Fetching feeds: 1039/2187
Fetching feeds: 1040/2187
Fetching feeds: 1041/2187
Fetching feeds: 1042/2187
Fetching feeds: 1043/2187
Fetching feeds: 1044/2187
Fetching feeds: 1045/2187
Fetching feeds: 1046/2187
Fetching feeds: 1047/2187
Fetching feeds: 1048/2187
Fetching feeds: 1049/2187
Fetching feeds: 1050/2187
Fetching feeds: 1051/2187
Fetching feeds: 1052/2187
Fetching feeds: 1053/2187
Fetching feeds: 1054/2187
Fetching feeds: 1055/2187
Fetching feeds: 1056/2187
Fetching feeds: 1057/2187
Fetching feeds: 1058/2187
Fetching feeds: 1059/2187
Fetching feeds: 1060/2187
Fetching feeds: 1061/2187
Fetching feeds: 1062/2187
Fetching feeds: 1063/2187
Fetching feeds: 1064/2187
Fetching feeds: 1065/2187
Fetching feeds: 1066/2187
Fetching feeds: 1067/2187
Fetching feeds: 1068/2187
Fetching feeds: 1069/2187
Fetching feeds: 1070/2187
Fetching feeds: 1071/2187
Fetching feeds: 1072/2187
Fetching feeds: 1073/2187
Fetching feeds: 1074/2187
Fetching feeds: 1075/2187
Fetching feeds: 1076/2187
Fetching feeds: 1077/2187
Fetching feeds: 1078/2187
Fetching feeds: 1079/2187
Fetching feeds: 1080/2187
Fetching feeds: 1081/2187
Fetching feeds: 1082/2187
Fetching feeds: 1083/2187
Fetching feeds: 1084/2187
Fetching feeds: 1085/2187
Fetching feeds: 1086/2187
Fetching feeds: 1087/2187
Fetching feeds: 1088/2187
Fetching feeds: 1089/2187
Fetching feeds: 1090/2187
Fetching feeds: 1091/2187
Fetching feeds: 1092/2187
Fetching feeds: 1093/2187
Fetching feeds: 1094/2187
Fetching feeds: 1095/2187
Fetching feeds: 1096/2187
Fetching feeds: 1097/2187
Fetching feeds: 1098/2187
Fetching feeds: 1099/2187
Fetching feeds: 1100/2187
Fetching feeds: 1101/2187
Fetching feeds: 1102/2187
Fetching feeds: 1103/2187
Fetching feeds: 1104/2187
Fetching feeds: 1105/2187
Fetching feeds: 1106/2187
Fetching feeds: 1107/2187
Fetching feeds: 1108/2187
Fetching feeds: 1109/2187
Fetching feeds: 1110/2187
Fetching feeds: 1111/2187
Fetching feeds: 1112/2187
Fetching feeds: 1113/2187
Fetching feeds: 1114/2187
Fetching feeds: 1115/2187
Fetching feeds: 1116/2187
Fetching feeds: 1117/2187
Fetching feeds: 1118/2187
Fetching feeds: 1119/2187
Fetching feeds: 1120/2187
Fetching feeds: 1121/2187
Fetching feeds: 1122/2187
Fetching feeds: 1123/2187
Fetching feeds: 1124/2187
Fetching feeds: 1125/2187
Fetching feeds: 1126/2187
Fetching feeds: 1127/2187
Fetching feeds: 1128/2187
Fetching feeds: 1129/2187
Fetching feeds: 1130/2187
Fetching feeds: 1131/2187
Fetching feeds: 1132/2187
Fetching feeds: 1133/2187
Fetching feeds: 1134/2187
Fetching feeds: 1135/2187
Fetching feeds: 1136/2187
Fetching feeds: 1137/2187
Fetching feeds: 1138/2187
Fetching feeds: 1139/2187
Fetching feeds: 1140/2187
Fetching feeds: 1141/2187
Fetching feeds: 1142/2187
Fetching feeds: 1143/2187
Fetching feeds: 1144/2187
Fetching feeds: 1145/2187
Fetching feeds: 1146/2187
Fetching feeds: 1147/2187
Fetching feeds: 1148/2187
Fetching feeds: 1149/2187
Fetching feeds: 1150/2187
Fetching feeds: 1151/2187
Fetching feeds: 1152/2187
Fetching feeds: 1153/2187
Fetching feeds: 1154/2187
Fetching feeds: 1155/2187
Fetching feeds: 1156/2187
Fetching feeds: 1157/2187
Fetching feeds: 1158/2187
Fetching feeds: 1159/2187
Fetching feeds: 1160/2187
Fetching feeds: 1161/2187
Fetching feeds: 1162/2187
Fetching feeds: 1163/2187
Fetching feeds: 1164/2187
Fetching feeds: 1165/2187
Fetching feeds: 1166/2187
Fetching feeds: 1167/2187
Fetching feeds: 1168/2187
Fetching feeds: 1169/2187
Fetching feeds: 1170/2187
Fetching feeds: 1171/2187
Fetching feeds: 1172/2187
Fetching feeds: 1173/2187
Fetching feeds: 1174/2187
Fetching feeds: 1175/2187
Fetching feeds: 1176/2187
Fetching feeds: 1177/2187
Fetching feeds: 1178/2187
Fetching feeds: 1179/2187
Fetching feeds: 1180/2187
Fetching feeds: 1181/2187
Fetching feeds: 1182/2187
Fetching feeds: 1183/2187
Fetching feeds: 1184/2187
Fetching feeds: 1185/2187
Fetching feeds: 1186/2187
Fetching feeds: 1187/2187
Fetching feeds: 1188/2187
Fetching feeds: 1189/2187
Fetching feeds: 1190/2187
Fetching feeds: 1191/2187
Fetching feeds: 1192/2187
Fetching feeds: 1193/2187
Fetching feeds: 1194/2187
Fetching feeds: 1195/2187
Fetching feeds: 1196/2187
Fetching feeds: 1197/2187
Fetching feeds: 1198/2187
Fetching feeds: 1199/2187
Fetching feeds: 1200/2187
Fetching feeds: 1201/2187
Fetching feeds: 1202/2187
Fetching feeds: 1203/2187
Fetching feeds: 1204/2187
Fetching feeds: 1205/2187
Fetching feeds: 1206/2187
Fetching feeds: 1207/2187
Fetching feeds: 1208/2187
Fetching feeds: 1209/2187
Fetching feeds: 1210/2187
Fetching feeds: 1211/2187
Fetching feeds: 1212/2187
Fetching feeds: 1213/2187
Fetching feeds: 1214/2187
Fetching feeds: 1215/2187
Fetching feeds: 1216/2187
Fetching feeds: 1217/2187
Fetching feeds: 1218/2187
Fetching feeds: 1219/2187
Fetching feeds: 1220/2187
Fetching feeds: 1221/2187
Fetching feeds: 1222/2187
Fetching feeds: 1223/2187
Fetching feeds: 1224/2187
Fetching feeds: 1225/2187
Fetching feeds: 1226/2187
Fetching feeds: 1227/2187
Fetching feeds: 1228/2187
Fetching feeds: 1229/2187
Fetching feeds: 1230/2187
Fetching feeds: 1231/2187
Fetching feeds: 1232/2187
Fetching feeds: 1233/2187
Fetching feeds: 1234/2187
Fetching feeds: 1235/2187
Fetching feeds: 1236/2187
Fetching feeds: 1237/2187
Fetching feeds: 1238/2187
Fetching feeds: 1239/2187
Fetching feeds: 1240/2187
Fetching feeds: 1241/2187
Fetching feeds: 1242/2187
Fetching feeds: 1243/2187
Fetching feeds: 1244/2187
Fetching feeds: 1245/2187
Fetching feeds: 1246/2187
Fetching feeds: 1247/2187
Fetching feeds: 1248/2187
Fetching feeds: 1249/2187
Fetching feeds: 1250/2187
Fetching feeds: 1251/2187
Fetching feeds: 1252/2187
Fetching feeds: 1253/2187
Fetching feeds: 1254/2187
Fetching feeds: 1255/2187
Fetching feeds: 1256/2187
Fetching feeds: 1257/2187
Fetching feeds: 1258/2187
Fetching feeds: 1259/2187
Fetching feeds: 1260/2187
Fetching feeds: 1261/2187
Fetching feeds: 1262/2187
Fetching feeds: 1263/2187
Fetching feeds: 1264/2187
Fetching feeds: 1265/2187
Fetching feeds: 1266/2187
Fetching feeds: 1267/2187
Fetching feeds: 1268/2187
Fetching feeds: 1269/2187
Fetching feeds: 1270/2187
Fetching feeds: 1271/2187
Fetching feeds: 1272/2187
Fetching feeds: 1273/2187
Fetching feeds: 1274/2187
Fetching feeds: 1275/2187
Fetching feeds: 1276/2187
Fetching feeds: 1277/2187
Fetching feeds: 1278/2187
Fetching feeds: 1279/2187
Fetching feeds: 1280/2187
Fetching feeds: 1281/2187
Fetching feeds: 1282/2187
Fetching feeds: 1283/2187
Fetching feeds: 1284/2187
Fetching feeds: 1285/2187
Fetching feeds: 1286/2187
Fetching feeds: 1287/2187
Fetching feeds: 1288/2187
Fetching feeds: 1289/2187
Fetching feeds: 1290/2187
Fetching feeds: 1291/2187
Fetching feeds: 1292/2187
Fetching feeds: 1293/2187
Fetching feeds: 1294/2187
Fetching feeds: 1295/2187
Fetching feeds: 1296/2187
Fetching feeds: 1297/2187
Fetching feeds: 1298/2187
Fetching feeds: 1299/2187
Fetching feeds: 1300/2187
Fetching feeds: 1301/2187
Fetching feeds: 1302/2187
Fetching feeds: 1303/2187
Fetching feeds: 1304/2187
Fetching feeds: 1305/2187
Fetching feeds: 1306/2187
Fetching feeds: 1307/2187
Fetching feeds: 1308/2187
Fetching feeds: 1309/2187
Fetching feeds: 1310/2187
Fetching feeds: 1311/2187
Fetching feeds: 1312/2187
Fetching feeds: 1313/2187
Fetching feeds: 1314/2187
Fetching feeds: 1315/2187
Fetching feeds: 1316/2187
Fetching feeds: 1317/2187
Fetching feeds: 1318/2187
Fetching feeds: 1319/2187
Fetching feeds: 1320/2187
Fetching feeds: 1321/2187
Fetching feeds: 1322/2187
Fetching feeds: 1323/2187
Fetching feeds: 1324/2187
Fetching feeds: 1325/2187
Fetching feeds: 1326/2187
Fetching feeds: 1327/2187
Fetching feeds: 1328/2187
Fetching feeds: 1329/2187
Fetching feeds: 1330/2187
Fetching feeds: 1331/2187
Fetching feeds: 1332/2187
Fetching feeds: 1333/2187
Fetching feeds: 1334/2187
Fetching feeds: 1335/2187
Fetching feeds: 1336/2187
Fetching feeds: 1337/2187
Fetching feeds: 1338/2187
Fetching feeds: 1339/2187
Fetching feeds: 1340/2187
Fetching feeds: 1341/2187
Fetching feeds: 1342/2187
Fetching feeds: 1343/2187
Fetching feeds: 1344/2187
Fetching feeds: 1345/2187
Fetching feeds: 1346/2187
Fetching feeds: 1347/2187
Fetching feeds: 1348/2187
Fetching feeds: 1349/2187
Fetching feeds: 1350/2187
Fetching feeds: 1351/2187
Fetching feeds: 1352/2187
Fetching feeds: 1353/2187
Fetching feeds: 1354/2187
Fetching feeds: 1355/2187
Fetching feeds: 1356/2187
Fetching feeds: 1357/2187
Fetching feeds: 1358/2187
Fetching feeds: 1359/2187
Fetching feeds: 1360/2187
Fetching feeds: 1361/2187
Fetching feeds: 1362/2187
Fetching feeds: 1363/2187
Fetching feeds: 1364/2187
Fetching feeds: 1365/2187
Fetching feeds: 1366/2187
Fetching feeds: 1367/2187
Fetching feeds: 1368/2187
Fetching feeds: 1369/2187
Fetching feeds: 1370/2187
Fetching feeds: 1371/2187
Fetching feeds: 1372/2187
Fetching feeds: 1373/2187
Fetching feeds: 1374/2187
Fetching feeds: 1375/2187
Fetching feeds: 1376/2187
Fetching feeds: 1377/2187
Fetching feeds: 1378/2187
Fetching feeds: 1379/2187
Fetching feeds: 1380/2187
Fetching feeds: 1381/2187
Fetching feeds: 1382/2187
Fetching feeds: 1383/2187
Fetching feeds: 1384/2187
Fetching feeds: 1385/2187
Fetching feeds: 1386/2187
Fetching feeds: 1387/2187
Fetching feeds: 1388/2187
Fetching feeds: 1389/2187
Fetching feeds: 1390/2187
Fetching feeds: 1391/2187
Fetching feeds: 1392/2187
Fetching feeds: 1393/2187
Fetching feeds: 1394/2187
Fetching feeds: 1395/2187
Fetching feeds: 1396/2187
Fetching feeds: 1397/2187
Fetching feeds: 1398/2187
Fetching feeds: 1399/2187
Fetching feeds: 1400/2187
Fetching feeds: 1401/2187
Fetching feeds: 1402/2187
Fetching feeds: 1403/2187
Fetching feeds: 1404/2187
Fetching feeds: 1405/2187
Fetching feeds: 1406/2187
Fetching feeds: 1407/2187
Fetching feeds: 1408/2187
Fetching feeds: 1409/2187
Fetching feeds: 1410/2187
Fetching feeds: 1411/2187
Fetching feeds: 1412/2187
Fetching feeds: 1413/2187
Fetching feeds: 1414/2187
Fetching feeds: 1415/2187
Fetching feeds: 1416/2187
Fetching feeds: 1417/2187
Fetching feeds: 1418/2187
Fetching feeds: 1419/2187
Fetching feeds: 1420/2187
Fetching feeds: 1421/2187
Fetching feeds: 1422/2187
Fetching feeds: 1423/2187
Fetching feeds: 1424/2187
Fetching feeds: 1425/2187
Fetching feeds: 1426/2187
Fetching feeds: 1427/2187
Fetching feeds: 1428/2187
Fetching feeds: 1429/2187
Fetching feeds: 1430/2187
Fetching feeds: 1431/2187
Fetching feeds: 1432/2187
Fetching feeds: 1433/2187
Fetching feeds: 1434/2187
Fetching feeds: 1435/2187
Fetching feeds: 1436/2187
Fetching feeds: 1437/2187
Fetching feeds: 1438/2187
Fetching feeds: 1439/2187
Fetching feeds: 1440/2187
Fetching feeds: 1441/2187
Fetching feeds: 1442/2187
Fetching feeds: 1443/2187
Fetching feeds: 1444/2187
Fetching feeds: 1445/2187
Fetching feeds: 1446/2187
Fetching feeds: 1447/2187
Fetching feeds: 1448/2187
Fetching feeds: 1449/2187
Fetching feeds: 1450/2187
Fetching feeds: 1451/2187
Fetching feeds: 1452/2187
Fetching feeds: 1453/2187
Fetching feeds: 1454/2187
Fetching feeds: 1455/2187
Fetching feeds: 1456/2187
Fetching feeds: 1457/2187
Fetching feeds: 1458/2187
Fetching feeds: 1459/2187
Fetching feeds: 1460/2187
Fetching feeds: 1461/2187
Fetching feeds: 1462/2187
Fetching feeds: 1463/2187
Fetching feeds: 1464/2187
Fetching feeds: 1465/2187
Fetching feeds: 1466/2187
Fetching feeds: 1467/2187
Fetching feeds: 1468/2187
Fetching feeds: 1469/2187
Fetching feeds: 1470/2187
Fetching feeds: 1471/2187
Fetching feeds: 1472/2187
Fetching feeds: 1473/2187
Fetching feeds: 1474/2187
Fetching feeds: 1475/2187
Fetching feeds: 1476/2187
Fetching feeds: 1477/2187
Fetching feeds: 1478/2187
Fetching feeds: 1479/2187
Fetching feeds: 1480/2187
Fetching feeds: 1481/2187
Fetching feeds: 1482/2187
Fetching feeds: 1483/2187
Fetching feeds: 1484/2187
Fetching feeds: 1485/2187
Fetching feeds: 1486/2187
Fetching feeds: 1487/2187
Fetching feeds: 1488/2187
Fetching feeds: 1489/2187
Fetching feeds: 1490/2187
Fetching feeds: 1491/2187
Fetching feeds: 1492/2187
Fetching feeds: 1493/2187
Fetching feeds: 1494/2187
Fetching feeds: 1495/2187
Fetching feeds: 1496/2187
Fetching feeds: 1497/2187
Fetching feeds: 1498/2187
Fetching feeds: 1499/2187
Fetching feeds: 1500/2187
Fetching feeds: 1501/2187
Fetching feeds: 1502/2187
Fetching feeds: 1503/2187
Fetching feeds: 1504/2187
Fetching feeds: 1505/2187
Fetching feeds: 1506/2187
Fetching feeds: 1507/2187
Fetching feeds: 1508/2187
Fetching feeds: 1509/2187
Fetching feeds: 1510/2187
Fetching feeds: 1511/2187
Fetching feeds: 1512/2187
Fetching feeds: 1513/2187
Fetching feeds: 1514/2187
Fetching feeds: 1515/2187
Fetching feeds: 1516/2187
Fetching feeds: 1517/2187
Fetching feeds: 1518/2187
Fetching feeds: 1519/2187
Fetching feeds: 1520/2187
Fetching feeds: 1521/2187
Fetching feeds: 1522/2187
Fetching feeds: 1523/2187
Fetching feeds: 1524/2187
Fetching feeds: 1525/2187
Fetching feeds: 1526/2187
Fetching feeds: 1527/2187
Fetching feeds: 1528/2187
Fetching feeds: 1529/2187
Fetching feeds: 1530/2187
Fetching feeds: 1531/2187
Fetching feeds: 1532/2187
Fetching feeds: 1533/2187
Fetching feeds: 1534/2187
Fetching feeds: 1535/2187
Fetching feeds: 1536/2187
Fetching feeds: 1537/2187
Fetching feeds: 1538/2187
Fetching feeds: 1539/2187
Fetching feeds: 1540/2187
Fetching feeds: 1541/2187
Fetching feeds: 1542/2187
Fetching feeds: 1543/2187
Fetching feeds: 1544/2187
Fetching feeds: 1545/2187
Fetching feeds: 1546/2187
Fetching feeds: 1547/2187
Fetching feeds: 1548/2187
Fetching feeds: 1549/2187
Fetching feeds: 1550/2187
Fetching feeds: 1551/2187
Fetching feeds: 1552/2187
Fetching feeds: 1553/2187
Fetching feeds: 1554/2187
Fetching feeds: 1555/2187
Fetching feeds: 1556/2187
Fetching feeds: 1557/2187
Fetching feeds: 1558/2187
Fetching feeds: 1559/2187
Fetching feeds: 1560/2187
Fetching feeds: 1561/2187
Fetching feeds: 1562/2187
Fetching feeds: 1563/2187
Fetching feeds: 1564/2187
Fetching feeds: 1565/2187
Fetching feeds: 1566/2187
Fetching feeds: 1567/2187
Fetching feeds: 1568/2187
Fetching feeds: 1569/2187
Fetching feeds: 1570/2187
Fetching feeds: 1571/2187
Fetching feeds: 1572/2187
Fetching feeds: 1573/2187
Fetching feeds: 1574/2187
Fetching feeds: 1575/2187
Fetching feeds: 1576/2187
Fetching feeds: 1577/2187
Fetching feeds: 1578/2187
Fetching feeds: 1579/2187
Fetching feeds: 1580/2187
Fetching feeds: 1581/2187
Fetching feeds: 1582/2187
Fetching feeds: 1583/2187
Fetching feeds: 1584/2187
Fetching feeds: 1585/2187
Fetching feeds: 1586/2187
Fetching feeds: 1587/2187
Fetching feeds: 1588/2187
Fetching feeds: 1589/2187
Fetching feeds: 1590/2187
Fetching feeds: 1591/2187
Fetching feeds: 1592/2187
Fetching feeds: 1593/2187
Fetching feeds: 1594/2187
Fetching feeds: 1595/2187
Fetching feeds: 1596/2187
Fetching feeds: 1597/2187
Fetching feeds: 1598/2187
Fetching feeds: 1599/2187
Fetching feeds: 1600/2187
Fetching feeds: 1601/2187
Fetching feeds: 1602/2187
Fetching feeds: 1603/2187
Fetching feeds: 1604/2187
Fetching feeds: 1605/2187
Fetching feeds: 1606/2187
Fetching feeds: 1607/2187
Fetching feeds: 1608/2187
Fetching feeds: 1609/2187
Fetching feeds: 1610/2187
Fetching feeds: 1611/2187
Fetching feeds: 1612/2187
Fetching feeds: 1613/2187
Fetching feeds: 1614/2187
Fetching feeds: 1615/2187
Fetching feeds: 1616/2187
Fetching feeds: 1617/2187
Fetching feeds: 1618/2187
Fetching feeds: 1619/2187
Fetching feeds: 1620/2187
Fetching feeds: 1621/2187
Fetching feeds: 1622/2187
Fetching feeds: 1623/2187
Fetching feeds: 1624/2187
Fetching feeds: 1625/2187
Fetching feeds: 1626/2187
Fetching feeds: 1627/2187
Fetching feeds: 1628/2187
Fetching feeds: 1629/2187
Fetching feeds: 1630/2187
Fetching feeds: 1631/2187
Fetching feeds: 1632/2187
Fetching feeds: 1633/2187
Fetching feeds: 1634/2187
Fetching feeds: 1635/2187
Fetching feeds: 1636/2187
Fetching feeds: 1637/2187
Fetching feeds: 1638/2187
Fetching feeds: 1639/2187
Fetching feeds: 1640/2187
Fetching feeds: 1641/2187
Fetching feeds: 1642/2187
Fetching feeds: 1643/2187
Fetching feeds: 1644/2187
Fetching feeds: 1645/2187
Fetching feeds: 1646/2187
Fetching feeds: 1647/2187
Fetching feeds: 1648/2187
Fetching feeds: 1649/2187
Fetching feeds: 1650/2187
Fetching feeds: 1651/2187
Fetching feeds: 1652/2187
Fetching feeds: 1653/2187
Fetching feeds: 1654/2187
Fetching feeds: 1655/2187
Fetching feeds: 1656/2187
Fetching feeds: 1657/2187
Fetching feeds: 1658/2187
Fetching feeds: 1659/2187
Fetching feeds: 1660/2187
Fetching feeds: 1661/2187
Fetching feeds: 1662/2187
Fetching feeds: 1663/2187
Fetching feeds: 1664/2187
Fetching feeds: 1665/2187
Fetching feeds: 1666/2187
Fetching feeds: 1667/2187
Fetching feeds: 1668/2187
Fetching feeds: 1669/2187
Fetching feeds: 1670/2187
Fetching feeds: 1671/2187
Fetching feeds: 1672/2187
Fetching feeds: 1673/2187
Fetching feeds: 1674/2187
Fetching feeds: 1675/2187
Fetching feeds: 1676/2187
Fetching feeds: 1677/2187
Fetching feeds: 1678/2187
Fetching feeds: 1679/2187
Fetching feeds: 1680/2187
Fetching feeds: 1681/2187
Fetching feeds: 1682/2187
Fetching feeds: 1683/2187
Fetching feeds: 1684/2187
Fetching feeds: 1685/2187
Fetching feeds: 1686/2187
Fetching feeds: 1687/2187
Fetching feeds: 1688/2187
Fetching feeds: 1689/2187
Fetching feeds: 1690/2187
Fetching feeds: 1691/2187
Fetching feeds: 1692/2187
Fetching feeds: 1693/2187
Fetching feeds: 1694/2187
Fetching feeds: 1695/2187
Fetching feeds: 1696/2187
Fetching feeds: 1697/2187
Fetching feeds: 1698/2187
Fetching feeds: 1699/2187
Fetching feeds: 1700/2187
Fetching feeds: 1701/2187
Fetching feeds: 1702/2187
Fetching feeds: 1703/2187
Fetching feeds: 1704/2187
Fetching feeds: 1705/2187
Fetching feeds: 1706/2187
Fetching feeds: 1707/2187
Fetching feeds: 1708/2187
Fetching feeds: 1709/2187
Fetching feeds: 1710/2187
Fetching feeds: 1711/2187
Fetching feeds: 1712/2187
Fetching feeds: 1713/2187
Fetching feeds: 1714/2187
Fetching feeds: 1715/2187
Fetching feeds: 1716/2187
Fetching feeds: 1717/2187
Fetching feeds: 1718/2187
Fetching feeds: 1719/2187
Fetching feeds: 1720/2187
Fetching feeds: 1721/2187
Fetching feeds: 1722/2187
Fetching feeds: 1723/2187
Fetching feeds: 1724/2187
Fetching feeds: 1725/2187
Fetching feeds: 1726/2187
Fetching feeds: 1727/2187
Fetching feeds: 1728/2187
Fetching feeds: 1729/2187
Fetching feeds: 1730/2187
Fetching feeds: 1731/2187
Fetching feeds: 1732/2187
Fetching feeds: 1733/2187
Fetching feeds: 1734/2187
Fetching feeds: 1735/2187
Fetching feeds: 1736/2187
Fetching feeds: 1737/2187
Fetching feeds: 1738/2187
Fetching feeds: 1739/2187
Fetching feeds: 1740/2187
Fetching feeds: 1741/2187
Fetching feeds: 1742/2187
Fetching feeds: 1743/2187
Fetching feeds: 1744/2187
Fetching feeds: 1745/2187
Fetching feeds: 1746/2187
Fetching feeds: 1747/2187
Fetching feeds: 1748/2187
Fetching feeds: 1749/2187
Fetching feeds: 1750/2187
Fetching feeds: 1751/2187
Fetching feeds: 1752/2187
Fetching feeds: 1753/2187
Fetching feeds: 1754/2187
Fetching feeds: 1755/2187
Fetching feeds: 1756/2187
Fetching feeds: 1757/2187
Fetching feeds: 1758/2187
Fetching feeds: 1759/2187
Fetching feeds: 1760/2187
Fetching feeds: 1761/2187
Fetching feeds: 1762/2187
Fetching feeds: 1763/2187
Fetching feeds: 1764/2187
Fetching feeds: 1765/2187
Fetching feeds: 1766/2187
Fetching feeds: 1767/2187
Fetching feeds: 1768/2187
Fetching feeds: 1769/2187
Fetching feeds: 1770/2187
Fetching feeds: 1771/2187
Fetching feeds: 1772/2187
Fetching feeds: 1773/2187
Fetching feeds: 1774/2187
Fetching feeds: 1775/2187
Fetching feeds: 1776/2187
Fetching feeds: 1777/2187
Fetching feeds: 1778/2187
Fetching feeds: 1779/2187
Fetching feeds: 1780/2187
Fetching feeds: 1781/2187
Fetching feeds: 1782/2187
Fetching feeds: 1783/2187
Fetching feeds: 1784/2187
Fetching feeds: 1785/2187
Fetching feeds: 1786/2187
Fetching feeds: 1787/2187
Fetching feeds: 1788/2187
Fetching feeds: 1789/2187
Fetching feeds: 1790/2187
Fetching feeds: 1791/2187
Fetching feeds: 1792/2187
Fetching feeds: 1793/2187
Fetching feeds: 1794/2187
Fetching feeds: 1795/2187
Fetching feeds: 1796/2187
Fetching feeds: 1797/2187
Fetching feeds: 1798/2187
Fetching feeds: 1799/2187
Fetching feeds: 1800/2187
Fetching feeds: 1801/2187
Fetching feeds: 1802/2187
Fetching feeds: 1803/2187
Fetching feeds: 1804/2187
Fetching feeds: 1805/2187
Fetching feeds: 1806/2187
Fetching feeds: 1807/2187
Fetching feeds: 1808/2187
Fetching feeds: 1809/2187
Fetching feeds: 1810/2187
Fetching feeds: 1811/2187
Fetching feeds: 1812/2187
Fetching feeds: 1813/2187
Fetching feeds: 1814/2187
Fetching feeds: 1815/2187
Fetching feeds: 1816/2187
Fetching feeds: 1817/2187
Fetching feeds: 1818/2187
Fetching feeds: 1819/2187
Fetching feeds: 1820/2187
Fetching feeds: 1821/2187
Fetching feeds: 1822/2187
Fetching feeds: 1823/2187
Fetching feeds: 1824/2187
Fetching feeds: 1825/2187
Fetching feeds: 1826/2187
Fetching feeds: 1827/2187
Fetching feeds: 1828/2187
Fetching feeds: 1829/2187
Fetching feeds: 1830/2187
Fetching feeds: 1831/2187
Fetching feeds: 1832/2187
Fetching feeds: 1833/2187
Fetching feeds: 1834/2187
Fetching feeds: 1835/2187
Fetching feeds: 1836/2187
Fetching feeds: 1837/2187
Fetching feeds: 1838/2187
Fetching feeds: 1839/2187
Fetching feeds: 1840/2187
Fetching feeds: 1841/2187
Fetching feeds: 1842/2187
Fetching feeds: 1843/2187
Fetching feeds: 1844/2187
Fetching feeds: 1845/2187
Fetching feeds: 1846/2187
Fetching feeds: 1847/2187
Fetching feeds: 1848/2187
Fetching feeds: 1849/2187
Fetching feeds: 1850/2187
Fetching feeds: 1851/2187
Fetching feeds: 1852/2187
Fetching feeds: 1853/2187
Fetching feeds: 1854/2187
Fetching feeds: 1855/2187
Fetching feeds: 1856/2187
Fetching feeds: 1857/2187
Fetching feeds: 1858/2187
Fetching feeds: 1859/2187
Fetching feeds: 1860/2187
Fetching feeds: 1861/2187
Fetching feeds: 1862/2187
Fetching feeds: 1863/2187
Fetching feeds: 1864/2187
Fetching feeds: 1865/2187
Fetching feeds: 1866/2187
Fetching feeds: 1867/2187
Fetching feeds: 1868/2187
Fetching feeds: 1869/2187
Fetching feeds: 1870/2187
Fetching feeds: 1871/2187
Fetching feeds: 1872/2187
Fetching feeds: 1873/2187
Fetching feeds: 1874/2187
Fetching feeds: 1875/2187
Fetching feeds: 1876/2187
Fetching feeds: 1877/2187
Fetching feeds: 1878/2187
Fetching feeds: 1879/2187
Fetching feeds: 1880/2187
Fetching feeds: 1881/2187
Fetching feeds: 1882/2187
Fetching feeds: 1883/2187
Fetching feeds: 1884/2187
Fetching feeds: 1885/2187
Fetching feeds: 1886/2187
Fetching feeds: 1887/2187
Fetching feeds: 1888/2187
Fetching feeds: 1889/2187
Fetching feeds: 1890/2187
Fetching feeds: 1891/2187
Fetching feeds: 1892/2187
Fetching feeds: 1893/2187
Fetching feeds: 1894/2187
Fetching feeds: 1895/2187
Fetching feeds: 1896/2187
Fetching feeds: 1897/2187
Fetching feeds: 1898/2187
Fetching feeds: 1899/2187
Fetching feeds: 1900/2187
Fetching feeds: 1901/2187
Fetching feeds: 1902/2187
Fetching feeds: 1903/2187
Fetching feeds: 1904/2187
Fetching feeds: 1905/2187
Fetching feeds: 1906/2187
Fetching feeds: 1907/2187
Fetching feeds: 1908/2187
Fetching feeds: 1909/2187
Fetching feeds: 1910/2187
Fetching feeds: 1911/2187
Fetching feeds: 1912/2187
Fetching feeds: 1913/2187
Fetching feeds: 1914/2187
Fetching feeds: 1915/2187
Fetching feeds: 1916/2187
Fetching feeds: 1917/2187
Fetching feeds: 1918/2187
Fetching feeds: 1919/2187
Fetching feeds: 1920/2187
Fetching feeds: 1921/2187
Fetching feeds: 1922/2187
Fetching feeds: 1923/2187
Fetching feeds: 1924/2187
Fetching feeds: 1925/2187
Fetching feeds: 1926/2187
Fetching feeds: 1927/2187
Fetching feeds: 1928/2187
Fetching feeds: 1929/2187
Fetching feeds: 1930/2187
Fetching feeds: 1931/2187
Fetching feeds: 1932/2187
Fetching feeds: 1933/2187
Fetching feeds: 1934/2187
Fetching feeds: 1935/2187
Fetching feeds: 1936/2187
Fetching feeds: 1937/2187
Fetching feeds: 1938/2187
Fetching feeds: 1939/2187
Fetching feeds: 1940/2187
Fetching feeds: 1941/2187
Fetching feeds: 1942/2187
Fetching feeds: 1943/2187
Fetching feeds: 1944/2187
Fetching feeds: 1945/2187
Fetching feeds: 1946/2187
Fetching feeds: 1947/2187
Fetching feeds: 1948/2187
Fetching feeds: 1949/2187
Fetching feeds: 1950/2187
Fetching feeds: 1951/2187
Fetching feeds: 1952/2187
Fetching feeds: 1953/2187
Fetching feeds: 1954/2187
Fetching feeds: 1955/2187
Fetching feeds: 1956/2187
Fetching feeds: 1957/2187
Fetching feeds: 1958/2187
Fetching feeds: 1959/2187
Fetching feeds: 1960/2187
Fetching feeds: 1961/2187
Fetching feeds: 1962/2187
Fetching feeds: 1963/2187
Fetching feeds: 1964/2187
Fetching feeds: 1965/2187
Fetching feeds: 1966/2187
Fetching feeds: 1967/2187
Fetching feeds: 1968/2187
Fetching feeds: 1969/2187
Fetching feeds: 1970/2187
Fetching feeds: 1971/2187
Fetching feeds: 1972/2187
Fetching feeds: 1973/2187
Fetching feeds: 1974/2187
Fetching feeds: 1975/2187
Fetching feeds: 1976/2187
Fetching feeds: 1977/2187
Fetching feeds: 1978/2187
Fetching feeds: 1979/2187
Fetching feeds: 1980/2187
Fetching feeds: 1981/2187
Fetching feeds: 1982/2187
Fetching feeds: 1983/2187
Fetching feeds: 1984/2187
Fetching feeds: 1985/2187
Fetching feeds: 1986/2187
Fetching feeds: 1987/2187
Fetching feeds: 1988/2187
Fetching feeds: 1989/2187
Fetching feeds: 1990/2187
Fetching feeds: 1991/2187
Fetching feeds: 1992/2187
Fetching feeds: 1993/2187
Fetching feeds: 1994/2187
Fetching feeds: 1995/2187
Fetching feeds: 1996/2187
Fetching feeds: 1997/2187
Fetching feeds: 1998/2187
Fetching feeds: 1999/2187
Fetching feeds: 2000/2187
Fetching feeds: 2001/2187
Fetching feeds: 2002/2187
Fetching feeds: 2003/2187
Fetching feeds: 2004/2187
Fetching feeds: 2005/2187
Fetching feeds: 2006/2187
Fetching feeds: 2007/2187
Fetching feeds: 2008/2187
Fetching feeds: 2009/2187
Fetching feeds: 2010/2187
Fetching feeds: 2011/2187
Fetching feeds: 2012/2187
Fetching feeds: 2013/2187
Fetching feeds: 2014/2187
Fetching feeds: 2015/2187
Fetching feeds: 2016/2187
Fetching feeds: 2017/2187
Fetching feeds: 2018/2187
Fetching feeds: 2019/2187
Fetching feeds: 2020/2187
Fetching feeds: 2021/2187
Fetching feeds: 2022/2187
Fetching feeds: 2023/2187
Fetching feeds: 2024/2187
Fetching feeds: 2025/2187
Fetching feeds: 2026/2187
Fetching feeds: 2027/2187
Fetching feeds: 2028/2187
Fetching feeds: 2029/2187
Fetching feeds: 2030/2187
Fetching feeds: 2031/2187
Fetching feeds: 2032/2187
Fetching feeds: 2033/2187
Fetching feeds: 2034/2187
Fetching feeds: 2035/2187
Fetching feeds: 2036/2187
Fetching feeds: 2037/2187
Fetching feeds: 2038/2187
Fetching feeds: 2039/2187
Fetching feeds: 2040/2187
Fetching feeds: 2041/2187
Fetching feeds: 2042/2187
Fetching feeds: 2043/2187
Fetching feeds: 2044/2187
Fetching feeds: 2045/2187
Fetching feeds: 2046/2187
Fetching feeds: 2047/2187
Fetching feeds: 2048/2187
Fetching feeds: 2049/2187
Fetching feeds: 2050/2187
Fetching feeds: 2051/2187
Fetching feeds: 2052/2187
Fetching feeds: 2053/2187
Fetching feeds: 2054/2187
Fetching feeds: 2055/2187
Fetching feeds: 2056/2187
Fetching feeds: 2057/2187
Fetching feeds: 2058/2187
Fetching feeds: 2059/2187
Fetching feeds: 2060/2187
Fetching feeds: 2061/2187
Fetching feeds: 2062/2187
Fetching feeds: 2063/2187
Fetching feeds: 2064/2187
Fetching feeds: 2065/2187
Fetching feeds: 2066/2187
Fetching feeds: 2067/2187
Fetching feeds: 2068/2187
Fetching feeds: 2069/2187
Fetching feeds: 2070/2187
Fetching feeds: 2071/2187
Fetching feeds: 2072/2187
Fetching feeds: 2073/2187
Fetching feeds: 2074/2187
Fetching feeds: 2075/2187
Fetching feeds: 2076/2187
Fetching feeds: 2077/2187
Fetching feeds: 2078/2187
Fetching feeds: 2079/2187
Fetching feeds: 2080/2187
Fetching feeds: 2081/2187
Fetching feeds: 2082/2187
Fetching feeds: 2083/2187
Fetching feeds: 2084/2187
Fetching feeds: 2085/2187
Fetching feeds: 2086/2187
Fetching feeds: 2087/2187
Fetching feeds: 2088/2187
Fetching feeds: 2089/2187
Fetching feeds: 2090/2187
Fetching feeds: 2091/2187
Fetching feeds: 2092/2187
Fetching feeds: 2093/2187
Fetching feeds: 2094/2187
Fetching feeds: 2095/2187
Fetching feeds: 2096/2187
Fetching feeds: 2097/2187
Fetching feeds: 2098/2187
Fetching feeds: 2099/2187
Fetching feeds: 2100/2187
Fetching feeds: 2101/2187
Fetching feeds: 2102/2187
Fetching feeds: 2103/2187
Fetching feeds: 2104/2187
Fetching feeds: 2105/2187
Fetching feeds: 2106/2187
Fetching feeds: 2107/2187
Fetching feeds: 2108/2187
Fetching feeds: 2109/2187
Fetching feeds: 2110/2187
Fetching feeds: 2111/2187
Fetching feeds: 2112/2187
Fetching feeds: 2113/2187
Fetching feeds: 2114/2187
Fetching feeds: 2115/2187
Fetching feeds: 2116/2187
Fetching feeds: 2117/2187
Fetching feeds: 2118/2187
Fetching feeds: 2119/2187
Fetching feeds: 2120/2187
Fetching feeds: 2121/2187
Fetching feeds: 2122/2187
Fetching feeds: 2123/2187
Fetching feeds: 2124/2187
Fetching feeds: 2125/2187
Fetching feeds: 2126/2187
Fetching feeds: 2127/2187
Fetching feeds: 2128/2187
Fetching feeds: 2129/2187
Fetching feeds: 2130/2187
Fetching feeds: 2131/2187
Fetching feeds: 2132/2187
Fetching feeds: 2133/2187
Fetching feeds: 2134/2187
Fetching feeds: 2135/2187
Fetching feeds: 2136/2187
Fetching feeds: 2137/2187
Fetching feeds: 2138/2187
Fetching feeds: 2139/2187
Fetching feeds: 2140/2187
Fetching feeds: 2141/2187
Fetching feeds: 2142/2187
Fetching feeds: 2143/2187
Fetching feeds: 2144/2187
Fetching feeds: 2145/2187
Fetching feeds: 2146/2187
Fetching feeds: 2147/2187
Fetching feeds: 2148/2187
Fetching feeds: 2149/2187
Fetching feeds: 2150/2187
Fetching feeds: 2151/2187
Fetching feeds: 2152/2187
Fetching feeds: 2153/2187
Fetching feeds: 2154/2187
Fetching feeds: 2155/2187
Fetching feeds: 2156/2187
Fetching feeds: 2157/2187
Fetching feeds: 2158/2187
Fetching feeds: 2159/2187
Fetching feeds: 2160/2187
Fetching feeds: 2161/2187
Fetching feeds: 2162/2187
Fetching feeds: 2163/2187
Fetching feeds: 2164/2187
Fetching feeds: 2165/2187
Fetching feeds: 2166/2187
Fetching feeds: 2167/2187
Fetching feeds: 2168/2187
Fetching feeds: 2169/2187
Fetching feeds: 2170/2187
Fetching feeds: 2171/2187
Fetching feeds: 2172/2187
Fetching feeds: 2173/2187
Fetching feeds: 2174/2187
Fetching feeds: 2175/2187
Fetching feeds: 2176/2187
Fetching feeds: 2177/2187
Fetching feeds: 2178/2187
Fetching feeds: 2179/2187
Fetching feeds: 2180/2187
Fetching feeds: 2181/2187
Fetching feeds: 2182/2187
Fetching feeds: 2183/2187
Fetching feeds: 2184/2187
Fetching feeds: 2185/2187
Fetching feeds: 2186/2187
Fetching feeds: 2187/2187
Finished fetching feeds: 2187/2187
INFO:root:Saved raw game feeds JSON to data/20232024_raw_game_feeds.json
INFO:root:Saved raw game feeds CSV to data/20232024_raw_game_feeds.csv
Parsing feeds: 1/2187
Parsing feeds: 2/2187
Parsing feeds: 3/2187
Parsing feeds: 4/2187
Parsing feeds: 5/2187
Parsing feeds: 6/2187
Parsing feeds: 7/2187
Parsing feeds: 8/2187
Parsing feeds: 9/2187
Parsing feeds: 10/2187
Parsing feeds: 11/2187
Parsing feeds: 12/2187
Parsing feeds: 13/2187
Parsing feeds: 14/2187
Parsing feeds: 15/2187
Parsing feeds: 16/2187
Parsing feeds: 17/2187
Parsing feeds: 18/2187
Parsing feeds: 19/2187
Parsing feeds: 20/2187
Parsing feeds: 21/2187
Parsing feeds: 22/2187
Parsing feeds: 23/2187
Parsing feeds: 24/2187
Parsing feeds: 25/2187
Parsing feeds: 26/2187
Parsing feeds: 27/2187
Parsing feeds: 28/2187
Parsing feeds: 29/2187
Parsing feeds: 30/2187
Parsing feeds: 31/2187
Parsing feeds: 32/2187
Parsing feeds: 33/2187
Parsing feeds: 34/2187
Parsing feeds: 35/2187
Parsing feeds: 36/2187
Parsing feeds: 37/2187
Parsing feeds: 38/2187
Parsing feeds: 39/2187
Parsing feeds: 40/2187
Parsing feeds: 41/2187
Parsing feeds: 42/2187
Parsing feeds: 43/2187
Parsing feeds: 44/2187
Parsing feeds: 45/2187
Parsing feeds: 46/2187
Parsing feeds: 47/2187
Parsing feeds: 48/2187
Parsing feeds: 49/2187
Parsing feeds: 50/2187
Parsing feeds: 51/2187
Parsing feeds: 52/2187
Parsing feeds: 53/2187
Parsing feeds: 54/2187
Parsing feeds: 55/2187
Parsing feeds: 56/2187
Parsing feeds: 57/2187
Parsing feeds: 58/2187
Parsing feeds: 59/2187
Parsing feeds: 60/2187
Parsing feeds: 61/2187
Parsing feeds: 62/2187
Parsing feeds: 63/2187
Parsing feeds: 64/2187
Parsing feeds: 65/2187
Parsing feeds: 66/2187
Parsing feeds: 67/2187
Parsing feeds: 68/2187
Parsing feeds: 69/2187
Parsing feeds: 70/2187
Parsing feeds: 71/2187
Parsing feeds: 72/2187
Parsing feeds: 73/2187
Parsing feeds: 74/2187
Parsing feeds: 75/2187
Parsing feeds: 76/2187
Parsing feeds: 77/2187
Parsing feeds: 78/2187
Parsing feeds: 79/2187
Parsing feeds: 80/2187
Parsing feeds: 81/2187
Parsing feeds: 82/2187
Parsing feeds: 83/2187
Parsing feeds: 84/2187
Parsing feeds: 85/2187
Parsing feeds: 86/2187
Parsing feeds: 87/2187
Parsing feeds: 88/2187
Parsing feeds: 89/2187
Parsing feeds: 90/2187
Parsing feeds: 91/2187
Parsing feeds: 92/2187
Parsing feeds: 93/2187
Parsing feeds: 94/2187
Parsing feeds: 95/2187
Parsing feeds: 96/2187
Parsing feeds: 97/2187
Parsing feeds: 98/2187
Parsing feeds: 99/2187
Parsing feeds: 100/2187
Parsing feeds: 101/2187
Parsing feeds: 102/2187
Parsing feeds: 103/2187
Parsing feeds: 104/2187
Parsing feeds: 105/2187
Parsing feeds: 106/2187
Parsing feeds: 107/2187
Parsing feeds: 108/2187
Parsing feeds: 109/2187
Parsing feeds: 110/2187
Parsing feeds: 111/2187
Parsing feeds: 112/2187
Parsing feeds: 113/2187
Parsing feeds: 114/2187
Parsing feeds: 115/2187
Parsing feeds: 116/2187
Parsing feeds: 117/2187
Parsing feeds: 118/2187
Parsing feeds: 119/2187
Parsing feeds: 120/2187
Parsing feeds: 121/2187
Parsing feeds: 122/2187
Parsing feeds: 123/2187
Parsing feeds: 124/2187
Parsing feeds: 125/2187
Parsing feeds: 126/2187
Parsing feeds: 127/2187
Parsing feeds: 128/2187
Parsing feeds: 129/2187
Parsing feeds: 130/2187
Parsing feeds: 131/2187
Parsing feeds: 132/2187
Parsing feeds: 133/2187
Parsing feeds: 134/2187
Parsing feeds: 135/2187
Parsing feeds: 136/2187
Parsing feeds: 137/2187
Parsing feeds: 138/2187
Parsing feeds: 139/2187
Parsing feeds: 140/2187
Parsing feeds: 141/2187
Parsing feeds: 142/2187
Parsing feeds: 143/2187
Parsing feeds: 144/2187
Parsing feeds: 145/2187
Parsing feeds: 146/2187
Parsing feeds: 147/2187
Parsing feeds: 148/2187
Parsing feeds: 149/2187
Parsing feeds: 150/2187
Parsing feeds: 151/2187
Parsing feeds: 152/2187
Parsing feeds: 153/2187
Parsing feeds: 154/2187
Parsing feeds: 155/2187
Parsing feeds: 156/2187
Parsing feeds: 157/2187
Parsing feeds: 158/2187
Parsing feeds: 159/2187
Parsing feeds: 160/2187
Parsing feeds: 161/2187
Parsing feeds: 162/2187
Parsing feeds: 163/2187
Parsing feeds: 164/2187
Parsing feeds: 165/2187
Parsing feeds: 166/2187
Parsing feeds: 167/2187
Parsing feeds: 168/2187
Parsing feeds: 169/2187
Parsing feeds: 170/2187
Parsing feeds: 171/2187
Parsing feeds: 172/2187
Parsing feeds: 173/2187
Parsing feeds: 174/2187
Parsing feeds: 175/2187
Parsing feeds: 176/2187
Parsing feeds: 177/2187
Parsing feeds: 178/2187
Parsing feeds: 179/2187
Parsing feeds: 180/2187
Parsing feeds: 181/2187
Parsing feeds: 182/2187
Parsing feeds: 183/2187
Parsing feeds: 184/2187
Parsing feeds: 185/2187
Parsing feeds: 186/2187
Parsing feeds: 187/2187
Parsing feeds: 188/2187
Parsing feeds: 189/2187
Parsing feeds: 190/2187
Parsing feeds: 191/2187
Parsing feeds: 192/2187
Parsing feeds: 193/2187
Parsing feeds: 194/2187
Parsing feeds: 195/2187
Parsing feeds: 196/2187
Parsing feeds: 197/2187
Parsing feeds: 198/2187
Parsing feeds: 199/2187
Parsing feeds: 200/2187
Parsing feeds: 201/2187
Parsing feeds: 202/2187
Parsing feeds: 203/2187
Parsing feeds: 204/2187
Parsing feeds: 205/2187
Parsing feeds: 206/2187
Parsing feeds: 207/2187
Parsing feeds: 208/2187
Parsing feeds: 209/2187
Parsing feeds: 210/2187
Parsing feeds: 211/2187
Parsing feeds: 212/2187
Parsing feeds: 213/2187
Parsing feeds: 214/2187
Parsing feeds: 215/2187
Parsing feeds: 216/2187
Parsing feeds: 217/2187
Parsing feeds: 218/2187
Parsing feeds: 219/2187
Parsing feeds: 220/2187
Parsing feeds: 221/2187
Parsing feeds: 222/2187
Parsing feeds: 223/2187
Parsing feeds: 224/2187
Parsing feeds: 225/2187
Parsing feeds: 226/2187
Parsing feeds: 227/2187
Parsing feeds: 228/2187
Parsing feeds: 229/2187
Parsing feeds: 230/2187
Parsing feeds: 231/2187
Parsing feeds: 232/2187
Parsing feeds: 233/2187
Parsing feeds: 234/2187
Parsing feeds: 235/2187
Parsing feeds: 236/2187
Parsing feeds: 237/2187
Parsing feeds: 238/2187
Parsing feeds: 239/2187
Parsing feeds: 240/2187
Parsing feeds: 241/2187
Parsing feeds: 242/2187
Parsing feeds: 243/2187
Parsing feeds: 244/2187
Parsing feeds: 245/2187
Parsing feeds: 246/2187
Parsing feeds: 247/2187
Parsing feeds: 248/2187
Parsing feeds: 249/2187
Parsing feeds: 250/2187
Parsing feeds: 251/2187
Parsing feeds: 252/2187
Parsing feeds: 253/2187
Parsing feeds: 254/2187
Parsing feeds: 255/2187
Parsing feeds: 256/2187
Parsing feeds: 257/2187
Parsing feeds: 258/2187
Parsing feeds: 259/2187
Parsing feeds: 260/2187
Parsing feeds: 261/2187
Parsing feeds: 262/2187
Parsing feeds: 263/2187
Parsing feeds: 264/2187
Parsing feeds: 265/2187
Parsing feeds: 266/2187
Parsing feeds: 267/2187
Parsing feeds: 268/2187
Parsing feeds: 269/2187
Parsing feeds: 270/2187
Parsing feeds: 271/2187
Parsing feeds: 272/2187
Parsing feeds: 273/2187
Parsing feeds: 274/2187
Parsing feeds: 275/2187
Parsing feeds: 276/2187
Parsing feeds: 277/2187
Parsing feeds: 278/2187
Parsing feeds: 279/2187
Parsing feeds: 280/2187
Parsing feeds: 281/2187
Parsing feeds: 282/2187
Parsing feeds: 283/2187
Parsing feeds: 284/2187
Parsing feeds: 285/2187
Parsing feeds: 286/2187
Parsing feeds: 287/2187
Parsing feeds: 288/2187
Parsing feeds: 289/2187
Parsing feeds: 290/2187
Parsing feeds: 291/2187
Parsing feeds: 292/2187
Parsing feeds: 293/2187
Parsing feeds: 294/2187
Parsing feeds: 295/2187
Parsing feeds: 296/2187
Parsing feeds: 297/2187
Parsing feeds: 298/2187
Parsing feeds: 299/2187
Parsing feeds: 300/2187
Parsing feeds: 301/2187
Parsing feeds: 302/2187
Parsing feeds: 303/2187
Parsing feeds: 304/2187
Parsing feeds: 305/2187
Parsing feeds: 306/2187
Parsing feeds: 307/2187
Parsing feeds: 308/2187
Parsing feeds: 309/2187
Parsing feeds: 310/2187
Parsing feeds: 311/2187
Parsing feeds: 312/2187
Parsing feeds: 313/2187
Parsing feeds: 314/2187
Parsing feeds: 315/2187
Parsing feeds: 316/2187
Parsing feeds: 317/2187
Parsing feeds: 318/2187
Parsing feeds: 319/2187
Parsing feeds: 320/2187
Parsing feeds: 321/2187
Parsing feeds: 322/2187
Parsing feeds: 323/2187
Parsing feeds: 324/2187
Parsing feeds: 325/2187
Parsing feeds: 326/2187
Parsing feeds: 327/2187
Parsing feeds: 328/2187
Parsing feeds: 329/2187
Parsing feeds: 330/2187
Parsing feeds: 331/2187
Parsing feeds: 332/2187
Parsing feeds: 333/2187
Parsing feeds: 334/2187
Parsing feeds: 335/2187
Parsing feeds: 336/2187
Parsing feeds: 337/2187
Parsing feeds: 338/2187
Parsing feeds: 339/2187
Parsing feeds: 340/2187
Parsing feeds: 341/2187
Parsing feeds: 342/2187
Parsing feeds: 343/2187
Parsing feeds: 344/2187
Parsing feeds: 345/2187
Parsing feeds: 346/2187
Parsing feeds: 347/2187
Parsing feeds: 348/2187
Parsing feeds: 349/2187
Parsing feeds: 350/2187
Parsing feeds: 351/2187
Parsing feeds: 352/2187
Parsing feeds: 353/2187
Parsing feeds: 354/2187
Parsing feeds: 355/2187
Parsing feeds: 356/2187
Parsing feeds: 357/2187
Parsing feeds: 358/2187
Parsing feeds: 359/2187
Parsing feeds: 360/2187
Parsing feeds: 361/2187
Parsing feeds: 362/2187
Parsing feeds: 363/2187
Parsing feeds: 364/2187
Parsing feeds: 365/2187
Parsing feeds: 366/2187
Parsing feeds: 367/2187
Parsing feeds: 368/2187
Parsing feeds: 369/2187
Parsing feeds: 370/2187
Parsing feeds: 371/2187
Parsing feeds: 372/2187
Parsing feeds: 373/2187
Parsing feeds: 374/2187
Parsing feeds: 375/2187
Parsing feeds: 376/2187
Parsing feeds: 377/2187
Parsing feeds: 378/2187
Parsing feeds: 379/2187
Parsing feeds: 380/2187
Parsing feeds: 381/2187
Parsing feeds: 382/2187
Parsing feeds: 383/2187
Parsing feeds: 384/2187
Parsing feeds: 385/2187
Parsing feeds: 386/2187
Parsing feeds: 387/2187
Parsing feeds: 388/2187
Parsing feeds: 389/2187
Parsing feeds: 390/2187
Parsing feeds: 391/2187
Parsing feeds: 392/2187
Parsing feeds: 393/2187
Parsing feeds: 394/2187
Parsing feeds: 395/2187
Parsing feeds: 396/2187
Parsing feeds: 397/2187
Parsing feeds: 398/2187
Parsing feeds: 399/2187
Parsing feeds: 400/2187
Parsing feeds: 401/2187
Parsing feeds: 402/2187
Parsing feeds: 403/2187
Parsing feeds: 404/2187
Parsing feeds: 405/2187
Parsing feeds: 406/2187
Parsing feeds: 407/2187
Parsing feeds: 408/2187
Parsing feeds: 409/2187
Parsing feeds: 410/2187
Parsing feeds: 411/2187
Parsing feeds: 412/2187
Parsing feeds: 413/2187
Parsing feeds: 414/2187
Parsing feeds: 415/2187
Parsing feeds: 416/2187
Parsing feeds: 417/2187
Parsing feeds: 418/2187
Parsing feeds: 419/2187
Parsing feeds: 420/2187
Parsing feeds: 421/2187
Parsing feeds: 422/2187
Parsing feeds: 423/2187
Parsing feeds: 424/2187
Parsing feeds: 425/2187
Parsing feeds: 426/2187
Parsing feeds: 427/2187
Parsing feeds: 428/2187
Parsing feeds: 429/2187
Parsing feeds: 430/2187
Parsing feeds: 431/2187
Parsing feeds: 432/2187
Parsing feeds: 433/2187
Parsing feeds: 434/2187
Parsing feeds: 435/2187
Parsing feeds: 436/2187
Parsing feeds: 437/2187
Parsing feeds: 438/2187
Parsing feeds: 439/2187
Parsing feeds: 440/2187
Parsing feeds: 441/2187
Parsing feeds: 442/2187
Parsing feeds: 443/2187
Parsing feeds: 444/2187
Parsing feeds: 445/2187
Parsing feeds: 446/2187
Parsing feeds: 447/2187
Parsing feeds: 448/2187
Parsing feeds: 449/2187
Parsing feeds: 450/2187
Parsing feeds: 451/2187
Parsing feeds: 452/2187
Parsing feeds: 453/2187
Parsing feeds: 454/2187
Parsing feeds: 455/2187
Parsing feeds: 456/2187
Parsing feeds: 457/2187
Parsing feeds: 458/2187
Parsing feeds: 459/2187
Parsing feeds: 460/2187
Parsing feeds: 461/2187
Parsing feeds: 462/2187
Parsing feeds: 463/2187
Parsing feeds: 464/2187
Parsing feeds: 465/2187
Parsing feeds: 466/2187
Parsing feeds: 467/2187
Parsing feeds: 468/2187
Parsing feeds: 469/2187
Parsing feeds: 470/2187
Parsing feeds: 471/2187
Parsing feeds: 472/2187
Parsing feeds: 473/2187
Parsing feeds: 474/2187
Parsing feeds: 475/2187
Parsing feeds: 476/2187
Parsing feeds: 477/2187
Parsing feeds: 478/2187
Parsing feeds: 479/2187
Parsing feeds: 480/2187
Parsing feeds: 481/2187
Parsing feeds: 482/2187
Parsing feeds: 483/2187
Parsing feeds: 484/2187
Parsing feeds: 485/2187
Parsing feeds: 486/2187
Parsing feeds: 487/2187
Parsing feeds: 488/2187
Parsing feeds: 489/2187
Parsing feeds: 490/2187
Parsing feeds: 491/2187
Parsing feeds: 492/2187
Parsing feeds: 493/2187
Parsing feeds: 494/2187
Parsing feeds: 495/2187
Parsing feeds: 496/2187
Parsing feeds: 497/2187
Parsing feeds: 498/2187
Parsing feeds: 499/2187
Parsing feeds: 500/2187
Parsing feeds: 501/2187
Parsing feeds: 502/2187
Parsing feeds: 503/2187
Parsing feeds: 504/2187
Parsing feeds: 505/2187
Parsing feeds: 506/2187
Parsing feeds: 507/2187
Parsing feeds: 508/2187
Parsing feeds: 509/2187
Parsing feeds: 510/2187
Parsing feeds: 511/2187
Parsing feeds: 512/2187
Parsing feeds: 513/2187
Parsing feeds: 514/2187
Parsing feeds: 515/2187
Parsing feeds: 516/2187
Parsing feeds: 517/2187
Parsing feeds: 518/2187
Parsing feeds: 519/2187
Parsing feeds: 520/2187
Parsing feeds: 521/2187
Parsing feeds: 522/2187
Parsing feeds: 523/2187
Parsing feeds: 524/2187
Parsing feeds: 525/2187
Parsing feeds: 526/2187
Parsing feeds: 527/2187
Parsing feeds: 528/2187
Parsing feeds: 529/2187
Parsing feeds: 530/2187
Parsing feeds: 531/2187
Parsing feeds: 532/2187
Parsing feeds: 533/2187
Parsing feeds: 534/2187
Parsing feeds: 535/2187
Parsing feeds: 536/2187
Parsing feeds: 537/2187
Parsing feeds: 538/2187
Parsing feeds: 539/2187
Parsing feeds: 540/2187
Parsing feeds: 541/2187
Parsing feeds: 542/2187
Parsing feeds: 543/2187
Parsing feeds: 544/2187
Parsing feeds: 545/2187
Parsing feeds: 546/2187
Parsing feeds: 547/2187
Parsing feeds: 548/2187
Parsing feeds: 549/2187
Parsing feeds: 550/2187
Parsing feeds: 551/2187
Parsing feeds: 552/2187
Parsing feeds: 553/2187
Parsing feeds: 554/2187
Parsing feeds: 555/2187
Parsing feeds: 556/2187
Parsing feeds: 557/2187
Parsing feeds: 558/2187
Parsing feeds: 559/2187
Parsing feeds: 560/2187
Parsing feeds: 561/2187
Parsing feeds: 562/2187
Parsing feeds: 563/2187
Parsing feeds: 564/2187
Parsing feeds: 565/2187
Parsing feeds: 566/2187
Parsing feeds: 567/2187
Parsing feeds: 568/2187
Parsing feeds: 569/2187
Parsing feeds: 570/2187
Parsing feeds: 571/2187
Parsing feeds: 572/2187
Parsing feeds: 573/2187
Parsing feeds: 574/2187
Parsing feeds: 575/2187
Parsing feeds: 576/2187
Parsing feeds: 577/2187
Parsing feeds: 578/2187
Parsing feeds: 579/2187
Parsing feeds: 580/2187
Parsing feeds: 581/2187
Parsing feeds: 582/2187
Parsing feeds: 583/2187
Parsing feeds: 584/2187
Parsing feeds: 585/2187
Parsing feeds: 586/2187
Parsing feeds: 587/2187
Parsing feeds: 588/2187
Parsing feeds: 589/2187
Parsing feeds: 590/2187
Parsing feeds: 591/2187
Parsing feeds: 592/2187
Parsing feeds: 593/2187
Parsing feeds: 594/2187
Parsing feeds: 595/2187
Parsing feeds: 596/2187
Parsing feeds: 597/2187
Parsing feeds: 598/2187
Parsing feeds: 599/2187
Parsing feeds: 600/2187
Parsing feeds: 601/2187
Parsing feeds: 602/2187
Parsing feeds: 603/2187
Parsing feeds: 604/2187
Parsing feeds: 605/2187
Parsing feeds: 606/2187
Parsing feeds: 607/2187
Parsing feeds: 608/2187
Parsing feeds: 609/2187
Parsing feeds: 610/2187
Parsing feeds: 611/2187
Parsing feeds: 612/2187
Parsing feeds: 613/2187
Parsing feeds: 614/2187
Parsing feeds: 615/2187
Parsing feeds: 616/2187
Parsing feeds: 617/2187
Parsing feeds: 618/2187
Parsing feeds: 619/2187
Parsing feeds: 620/2187
Parsing feeds: 621/2187
Parsing feeds: 622/2187
Parsing feeds: 623/2187
Parsing feeds: 624/2187
Parsing feeds: 625/2187
Parsing feeds: 626/2187
Parsing feeds: 627/2187
Parsing feeds: 628/2187
Parsing feeds: 629/2187
Parsing feeds: 630/2187
Parsing feeds: 631/2187
Parsing feeds: 632/2187
Parsing feeds: 633/2187
Parsing feeds: 634/2187
Parsing feeds: 635/2187
Parsing feeds: 636/2187
Parsing feeds: 637/2187
Parsing feeds: 638/2187
Parsing feeds: 639/2187
Parsing feeds: 640/2187
Parsing feeds: 641/2187
Parsing feeds: 642/2187
Parsing feeds: 643/2187
Parsing feeds: 644/2187
Parsing feeds: 645/2187
Parsing feeds: 646/2187
Parsing feeds: 647/2187
Parsing feeds: 648/2187
Parsing feeds: 649/2187
Parsing feeds: 650/2187
Parsing feeds: 651/2187
Parsing feeds: 652/2187
Parsing feeds: 653/2187
Parsing feeds: 654/2187
Parsing feeds: 655/2187
Parsing feeds: 656/2187
Parsing feeds: 657/2187
Parsing feeds: 658/2187
Parsing feeds: 659/2187
Parsing feeds: 660/2187
Parsing feeds: 661/2187
Parsing feeds: 662/2187
Parsing feeds: 663/2187
Parsing feeds: 664/2187
Parsing feeds: 665/2187
Parsing feeds: 666/2187
Parsing feeds: 667/2187
Parsing feeds: 668/2187
Parsing feeds: 669/2187
Parsing feeds: 670/2187
Parsing feeds: 671/2187
Parsing feeds: 672/2187
Parsing feeds: 673/2187
Parsing feeds: 674/2187
Parsing feeds: 675/2187
Parsing feeds: 676/2187
Parsing feeds: 677/2187
Parsing feeds: 678/2187
Parsing feeds: 679/2187
Parsing feeds: 680/2187
Parsing feeds: 681/2187
Parsing feeds: 682/2187
Parsing feeds: 683/2187
Parsing feeds: 684/2187
Parsing feeds: 685/2187
Parsing feeds: 686/2187
Parsing feeds: 687/2187
Parsing feeds: 688/2187
Parsing feeds: 689/2187
Parsing feeds: 690/2187
Parsing feeds: 691/2187
Parsing feeds: 692/2187
Parsing feeds: 693/2187
Parsing feeds: 694/2187
Parsing feeds: 695/2187
Parsing feeds: 696/2187
Parsing feeds: 697/2187
Parsing feeds: 698/2187
Parsing feeds: 699/2187
Parsing feeds: 700/2187
Parsing feeds: 701/2187
Parsing feeds: 702/2187
Parsing feeds: 703/2187
Parsing feeds: 704/2187
Parsing feeds: 705/2187
Parsing feeds: 706/2187
Parsing feeds: 707/2187
Parsing feeds: 708/2187
Parsing feeds: 709/2187
Parsing feeds: 710/2187
Parsing feeds: 711/2187
Parsing feeds: 712/2187
Parsing feeds: 713/2187
Parsing feeds: 714/2187
Parsing feeds: 715/2187
Parsing feeds: 716/2187
Parsing feeds: 717/2187
Parsing feeds: 718/2187
Parsing feeds: 719/2187
Parsing feeds: 720/2187
Parsing feeds: 721/2187
Parsing feeds: 722/2187
Parsing feeds: 723/2187
Parsing feeds: 724/2187
Parsing feeds: 725/2187
Parsing feeds: 726/2187
Parsing feeds: 727/2187
Parsing feeds: 728/2187
Parsing feeds: 729/2187
Parsing feeds: 730/2187
Parsing feeds: 731/2187
Parsing feeds: 732/2187
Parsing feeds: 733/2187
Parsing feeds: 734/2187
Parsing feeds: 735/2187
Parsing feeds: 736/2187
Parsing feeds: 737/2187
Parsing feeds: 738/2187
Parsing feeds: 739/2187
Parsing feeds: 740/2187
Parsing feeds: 741/2187
Parsing feeds: 742/2187
Parsing feeds: 743/2187
Parsing feeds: 744/2187
Parsing feeds: 745/2187
Parsing feeds: 746/2187
Parsing feeds: 747/2187
Parsing feeds: 748/2187
Parsing feeds: 749/2187
Parsing feeds: 750/2187
Parsing feeds: 751/2187
Parsing feeds: 752/2187
Parsing feeds: 753/2187
Parsing feeds: 754/2187
Parsing feeds: 755/2187
Parsing feeds: 756/2187
Parsing feeds: 757/2187
Parsing feeds: 758/2187
Parsing feeds: 759/2187
Parsing feeds: 760/2187
Parsing feeds: 761/2187
Parsing feeds: 762/2187
Parsing feeds: 763/2187
Parsing feeds: 764/2187
Parsing feeds: 765/2187
Parsing feeds: 766/2187
Parsing feeds: 767/2187
Parsing feeds: 768/2187
Parsing feeds: 769/2187
Parsing feeds: 770/2187
Parsing feeds: 771/2187
Parsing feeds: 772/2187
Parsing feeds: 773/2187
Parsing feeds: 774/2187
Parsing feeds: 775/2187
Parsing feeds: 776/2187
Parsing feeds: 777/2187
Parsing feeds: 778/2187
Parsing feeds: 779/2187
Parsing feeds: 780/2187
Parsing feeds: 781/2187
Parsing feeds: 782/2187
Parsing feeds: 783/2187
Parsing feeds: 784/2187
Parsing feeds: 785/2187
Parsing feeds: 786/2187
Parsing feeds: 787/2187
Parsing feeds: 788/2187
Parsing feeds: 789/2187
Parsing feeds: 790/2187
Parsing feeds: 791/2187
Parsing feeds: 792/2187
Parsing feeds: 793/2187
Parsing feeds: 794/2187
Parsing feeds: 795/2187
Parsing feeds: 796/2187
Parsing feeds: 797/2187
Parsing feeds: 798/2187
Parsing feeds: 799/2187
Parsing feeds: 800/2187
Parsing feeds: 801/2187
Parsing feeds: 802/2187
Parsing feeds: 803/2187
Parsing feeds: 804/2187
Parsing feeds: 805/2187
Parsing feeds: 806/2187
Parsing feeds: 807/2187
Parsing feeds: 808/2187
Parsing feeds: 809/2187
Parsing feeds: 810/2187
Parsing feeds: 811/2187
Parsing feeds: 812/2187
Parsing feeds: 813/2187
Parsing feeds: 814/2187
Parsing feeds: 815/2187
Parsing feeds: 816/2187
Parsing feeds: 817/2187
Parsing feeds: 818/2187
Parsing feeds: 819/2187
Parsing feeds: 820/2187
Parsing feeds: 821/2187
Parsing feeds: 822/2187
Parsing feeds: 823/2187
Parsing feeds: 824/2187
Parsing feeds: 825/2187
Parsing feeds: 826/2187
Parsing feeds: 827/2187
Parsing feeds: 828/2187
Parsing feeds: 829/2187
Parsing feeds: 830/2187
Parsing feeds: 831/2187
Parsing feeds: 832/2187
Parsing feeds: 833/2187
Parsing feeds: 834/2187
Parsing feeds: 835/2187
Parsing feeds: 836/2187
Parsing feeds: 837/2187
Parsing feeds: 838/2187
Parsing feeds: 839/2187
Parsing feeds: 840/2187
Parsing feeds: 841/2187
Parsing feeds: 842/2187
Parsing feeds: 843/2187
Parsing feeds: 844/2187
Parsing feeds: 845/2187
Parsing feeds: 846/2187
Parsing feeds: 847/2187
Parsing feeds: 848/2187
Parsing feeds: 849/2187
Parsing feeds: 850/2187
Parsing feeds: 851/2187
Parsing feeds: 852/2187
Parsing feeds: 853/2187
Parsing feeds: 854/2187
Parsing feeds: 855/2187
Parsing feeds: 856/2187
Parsing feeds: 857/2187
Parsing feeds: 858/2187
Parsing feeds: 859/2187
Parsing feeds: 860/2187
Parsing feeds: 861/2187
Parsing feeds: 862/2187
Parsing feeds: 863/2187
Parsing feeds: 864/2187
Parsing feeds: 865/2187
Parsing feeds: 866/2187
Parsing feeds: 867/2187
Parsing feeds: 868/2187
Parsing feeds: 869/2187
Parsing feeds: 870/2187
Parsing feeds: 871/2187
Parsing feeds: 872/2187
Parsing feeds: 873/2187
Parsing feeds: 874/2187
Parsing feeds: 875/2187
Parsing feeds: 876/2187
Parsing feeds: 877/2187
Parsing feeds: 878/2187
Parsing feeds: 879/2187
Parsing feeds: 880/2187
Parsing feeds: 881/2187
Parsing feeds: 882/2187
Parsing feeds: 883/2187
Parsing feeds: 884/2187
Parsing feeds: 885/2187
Parsing feeds: 886/2187
Parsing feeds: 887/2187
Parsing feeds: 888/2187
Parsing feeds: 889/2187
Parsing feeds: 890/2187
Parsing feeds: 891/2187
Parsing feeds: 892/2187
Parsing feeds: 893/2187
Parsing feeds: 894/2187
Parsing feeds: 895/2187
Parsing feeds: 896/2187
Parsing feeds: 897/2187
Parsing feeds: 898/2187
Parsing feeds: 899/2187
Parsing feeds: 900/2187
Parsing feeds: 901/2187
Parsing feeds: 902/2187
Parsing feeds: 903/2187
Parsing feeds: 904/2187
Parsing feeds: 905/2187
Parsing feeds: 906/2187
Parsing feeds: 907/2187
Parsing feeds: 908/2187
Parsing feeds: 909/2187
Parsing feeds: 910/2187
Parsing feeds: 911/2187
Parsing feeds: 912/2187
Parsing feeds: 913/2187
Parsing feeds: 914/2187
Parsing feeds: 915/2187
Parsing feeds: 916/2187
Parsing feeds: 917/2187
Parsing feeds: 918/2187
Parsing feeds: 919/2187
Parsing feeds: 920/2187
Parsing feeds: 921/2187
Parsing feeds: 922/2187
Parsing feeds: 923/2187
Parsing feeds: 924/2187
Parsing feeds: 925/2187
Parsing feeds: 926/2187
Parsing feeds: 927/2187
Parsing feeds: 928/2187
Parsing feeds: 929/2187
Parsing feeds: 930/2187
Parsing feeds: 931/2187
Parsing feeds: 932/2187
Parsing feeds: 933/2187
Parsing feeds: 934/2187
Parsing feeds: 935/2187
Parsing feeds: 936/2187
Parsing feeds: 937/2187
Parsing feeds: 938/2187
Parsing feeds: 939/2187
Parsing feeds: 940/2187
Parsing feeds: 941/2187
Parsing feeds: 942/2187
Parsing feeds: 943/2187
Parsing feeds: 944/2187
Parsing feeds: 945/2187
Parsing feeds: 946/2187
Parsing feeds: 947/2187
Parsing feeds: 948/2187
Parsing feeds: 949/2187
Parsing feeds: 950/2187
Parsing feeds: 951/2187
Parsing feeds: 952/2187
Parsing feeds: 953/2187
Parsing feeds: 954/2187
Parsing feeds: 955/2187
Parsing feeds: 956/2187
Parsing feeds: 957/2187
Parsing feeds: 958/2187
Parsing feeds: 959/2187
Parsing feeds: 960/2187
Parsing feeds: 961/2187
Parsing feeds: 962/2187
Parsing feeds: 963/2187
Parsing feeds: 964/2187
Parsing feeds: 965/2187
Parsing feeds: 966/2187
Parsing feeds: 967/2187
Parsing feeds: 968/2187
Parsing feeds: 969/2187
Parsing feeds: 970/2187
Parsing feeds: 971/2187
Parsing feeds: 972/2187
Parsing feeds: 973/2187
Parsing feeds: 974/2187
Parsing feeds: 975/2187
Parsing feeds: 976/2187
Parsing feeds: 977/2187
Parsing feeds: 978/2187
Parsing feeds: 979/2187
Parsing feeds: 980/2187
Parsing feeds: 981/2187
Parsing feeds: 982/2187
Parsing feeds: 983/2187
Parsing feeds: 984/2187
Parsing feeds: 985/2187
Parsing feeds: 986/2187
Parsing feeds: 987/2187
Parsing feeds: 988/2187
Parsing feeds: 989/2187
Parsing feeds: 990/2187
Parsing feeds: 991/2187
Parsing feeds: 992/2187
Parsing feeds: 993/2187
Parsing feeds: 994/2187
Parsing feeds: 995/2187
Parsing feeds: 996/2187
Parsing feeds: 997/2187
Parsing feeds: 998/2187
Parsing feeds: 999/2187
Parsing feeds: 1000/2187
Parsing feeds: 1001/2187
Parsing feeds: 1002/2187
Parsing feeds: 1003/2187
Parsing feeds: 1004/2187
Parsing feeds: 1005/2187
Parsing feeds: 1006/2187
Parsing feeds: 1007/2187
Parsing feeds: 1008/2187
Parsing feeds: 1009/2187
Parsing feeds: 1010/2187
Parsing feeds: 1011/2187
Parsing feeds: 1012/2187
Parsing feeds: 1013/2187
Parsing feeds: 1014/2187
Parsing feeds: 1015/2187
Parsing feeds: 1016/2187
Parsing feeds: 1017/2187
Parsing feeds: 1018/2187
Parsing feeds: 1019/2187
Parsing feeds: 1020/2187
Parsing feeds: 1021/2187
Parsing feeds: 1022/2187
Parsing feeds: 1023/2187
Parsing feeds: 1024/2187
Parsing feeds: 1025/2187
Parsing feeds: 1026/2187
Parsing feeds: 1027/2187
Parsing feeds: 1028/2187
Parsing feeds: 1029/2187
Parsing feeds: 1030/2187
Parsing feeds: 1031/2187
Parsing feeds: 1032/2187
Parsing feeds: 1033/2187
Parsing feeds: 1034/2187
Parsing feeds: 1035/2187
Parsing feeds: 1036/2187
Parsing feeds: 1037/2187
Parsing feeds: 1038/2187
Parsing feeds: 1039/2187
Parsing feeds: 1040/2187
Parsing feeds: 1041/2187
Parsing feeds: 1042/2187
Parsing feeds: 1043/2187
Parsing feeds: 1044/2187
Parsing feeds: 1045/2187
Parsing feeds: 1046/2187
Parsing feeds: 1047/2187
Parsing feeds: 1048/2187
Parsing feeds: 1049/2187
Parsing feeds: 1050/2187
Parsing feeds: 1051/2187
Parsing feeds: 1052/2187
Parsing feeds: 1053/2187
Parsing feeds: 1054/2187
Parsing feeds: 1055/2187
Parsing feeds: 1056/2187
Parsing feeds: 1057/2187
Parsing feeds: 1058/2187
Parsing feeds: 1059/2187
Parsing feeds: 1060/2187
Parsing feeds: 1061/2187
Parsing feeds: 1062/2187
Parsing feeds: 1063/2187
Parsing feeds: 1064/2187
Parsing feeds: 1065/2187
Parsing feeds: 1066/2187
Parsing feeds: 1067/2187
Parsing feeds: 1068/2187
Parsing feeds: 1069/2187
Parsing feeds: 1070/2187
Parsing feeds: 1071/2187
Parsing feeds: 1072/2187
Parsing feeds: 1073/2187
Parsing feeds: 1074/2187
Parsing feeds: 1075/2187
Parsing feeds: 1076/2187
Parsing feeds: 1077/2187
Parsing feeds: 1078/2187
Parsing feeds: 1079/2187
Parsing feeds: 1080/2187
Parsing feeds: 1081/2187
Parsing feeds: 1082/2187
Parsing feeds: 1083/2187
Parsing feeds: 1084/2187
Parsing feeds: 1085/2187
Parsing feeds: 1086/2187
Parsing feeds: 1087/2187
Parsing feeds: 1088/2187
Parsing feeds: 1089/2187
Parsing feeds: 1090/2187
Parsing feeds: 1091/2187
Parsing feeds: 1092/2187
Parsing feeds: 1093/2187
Parsing feeds: 1094/2187
Parsing feeds: 1095/2187
Parsing feeds: 1096/2187
Parsing feeds: 1097/2187
Parsing feeds: 1098/2187
Parsing feeds: 1099/2187
Parsing feeds: 1100/2187
Parsing feeds: 1101/2187
Parsing feeds: 1102/2187
Parsing feeds: 1103/2187
Parsing feeds: 1104/2187
Parsing feeds: 1105/2187
Parsing feeds: 1106/2187
Parsing feeds: 1107/2187
Parsing feeds: 1108/2187
Parsing feeds: 1109/2187
Parsing feeds: 1110/2187
Parsing feeds: 1111/2187
Parsing feeds: 1112/2187
Parsing feeds: 1113/2187
Parsing feeds: 1114/2187
Parsing feeds: 1115/2187
Parsing feeds: 1116/2187
Parsing feeds: 1117/2187
Parsing feeds: 1118/2187
Parsing feeds: 1119/2187
Parsing feeds: 1120/2187
Parsing feeds: 1121/2187
Parsing feeds: 1122/2187
Parsing feeds: 1123/2187
Parsing feeds: 1124/2187
Parsing feeds: 1125/2187
Parsing feeds: 1126/2187
Parsing feeds: 1127/2187
Parsing feeds: 1128/2187
Parsing feeds: 1129/2187
Parsing feeds: 1130/2187
Parsing feeds: 1131/2187
Parsing feeds: 1132/2187
Parsing feeds: 1133/2187
Parsing feeds: 1134/2187
Parsing feeds: 1135/2187
Parsing feeds: 1136/2187
Parsing feeds: 1137/2187
Parsing feeds: 1138/2187
Parsing feeds: 1139/2187
Parsing feeds: 1140/2187
Parsing feeds: 1141/2187
Parsing feeds: 1142/2187
Parsing feeds: 1143/2187
Parsing feeds: 1144/2187
Parsing feeds: 1145/2187
Parsing feeds: 1146/2187
Parsing feeds: 1147/2187
Parsing feeds: 1148/2187
Parsing feeds: 1149/2187
Parsing feeds: 1150/2187
Parsing feeds: 1151/2187
Parsing feeds: 1152/2187
Parsing feeds: 1153/2187
Parsing feeds: 1154/2187
Parsing feeds: 1155/2187
Parsing feeds: 1156/2187
Parsing feeds: 1157/2187
Parsing feeds: 1158/2187
Parsing feeds: 1159/2187
Parsing feeds: 1160/2187
Parsing feeds: 1161/2187
Parsing feeds: 1162/2187
Parsing feeds: 1163/2187
Parsing feeds: 1164/2187
Parsing feeds: 1165/2187
Parsing feeds: 1166/2187
Parsing feeds: 1167/2187
Parsing feeds: 1168/2187
Parsing feeds: 1169/2187
Parsing feeds: 1170/2187
Parsing feeds: 1171/2187
Parsing feeds: 1172/2187
Parsing feeds: 1173/2187
Parsing feeds: 1174/2187
Parsing feeds: 1175/2187
Parsing feeds: 1176/2187
Parsing feeds: 1177/2187
Parsing feeds: 1178/2187
Parsing feeds: 1179/2187
Parsing feeds: 1180/2187
Parsing feeds: 1181/2187
Parsing feeds: 1182/2187
Parsing feeds: 1183/2187
Parsing feeds: 1184/2187
Parsing feeds: 1185/2187
Parsing feeds: 1186/2187
Parsing feeds: 1187/2187
Parsing feeds: 1188/2187
Parsing feeds: 1189/2187
Parsing feeds: 1190/2187
Parsing feeds: 1191/2187
Parsing feeds: 1192/2187
Parsing feeds: 1193/2187
Parsing feeds: 1194/2187
Parsing feeds: 1195/2187
Parsing feeds: 1196/2187
Parsing feeds: 1197/2187
Parsing feeds: 1198/2187
Parsing feeds: 1199/2187
Parsing feeds: 1200/2187
Parsing feeds: 1201/2187
Parsing feeds: 1202/2187
Parsing feeds: 1203/2187
Parsing feeds: 1204/2187
Parsing feeds: 1205/2187
Parsing feeds: 1206/2187
Parsing feeds: 1207/2187
Parsing feeds: 1208/2187
Parsing feeds: 1209/2187
Parsing feeds: 1210/2187
Parsing feeds: 1211/2187
Parsing feeds: 1212/2187
Parsing feeds: 1213/2187
Parsing feeds: 1214/2187
Parsing feeds: 1215/2187
Parsing feeds: 1216/2187
Parsing feeds: 1217/2187
Parsing feeds: 1218/2187
Parsing feeds: 1219/2187
Parsing feeds: 1220/2187
Parsing feeds: 1221/2187
Parsing feeds: 1222/2187
Parsing feeds: 1223/2187
Parsing feeds: 1224/2187
Parsing feeds: 1225/2187
Parsing feeds: 1226/2187
Parsing feeds: 1227/2187
Parsing feeds: 1228/2187
Parsing feeds: 1229/2187
Parsing feeds: 1230/2187
Parsing feeds: 1231/2187
Parsing feeds: 1232/2187
Parsing feeds: 1233/2187
Parsing feeds: 1234/2187
Parsing feeds: 1235/2187
Parsing feeds: 1236/2187
Parsing feeds: 1237/2187
Parsing feeds: 1238/2187
Parsing feeds: 1239/2187
Parsing feeds: 1240/2187
Parsing feeds: 1241/2187
Parsing feeds: 1242/2187
Parsing feeds: 1243/2187
Parsing feeds: 1244/2187
Parsing feeds: 1245/2187
Parsing feeds: 1246/2187
Parsing feeds: 1247/2187
Parsing feeds: 1248/2187
Parsing feeds: 1249/2187
Parsing feeds: 1250/2187
Parsing feeds: 1251/2187
Parsing feeds: 1252/2187
Parsing feeds: 1253/2187
Parsing feeds: 1254/2187
Parsing feeds: 1255/2187
Parsing feeds: 1256/2187
Parsing feeds: 1257/2187
Parsing feeds: 1258/2187
Parsing feeds: 1259/2187
Parsing feeds: 1260/2187
Parsing feeds: 1261/2187
Parsing feeds: 1262/2187
Parsing feeds: 1263/2187
Parsing feeds: 1264/2187
Parsing feeds: 1265/2187
Parsing feeds: 1266/2187
Parsing feeds: 1267/2187
Parsing feeds: 1268/2187
Parsing feeds: 1269/2187
Parsing feeds: 1270/2187
Parsing feeds: 1271/2187
Parsing feeds: 1272/2187
Parsing feeds: 1273/2187
Parsing feeds: 1274/2187
Parsing feeds: 1275/2187
Parsing feeds: 1276/2187
Parsing feeds: 1277/2187
Parsing feeds: 1278/2187
Parsing feeds: 1279/2187
Parsing feeds: 1280/2187
Parsing feeds: 1281/2187
Parsing feeds: 1282/2187
Parsing feeds: 1283/2187
Parsing feeds: 1284/2187
Parsing feeds: 1285/2187
Parsing feeds: 1286/2187
Parsing feeds: 1287/2187
Parsing feeds: 1288/2187
Parsing feeds: 1289/2187
Parsing feeds: 1290/2187
Parsing feeds: 1291/2187
Parsing feeds: 1292/2187
Parsing feeds: 1293/2187
Parsing feeds: 1294/2187
Parsing feeds: 1295/2187
Parsing feeds: 1296/2187
Parsing feeds: 1297/2187
Parsing feeds: 1298/2187
Parsing feeds: 1299/2187
Parsing feeds: 1300/2187
Parsing feeds: 1301/2187
Parsing feeds: 1302/2187
Parsing feeds: 1303/2187
Parsing feeds: 1304/2187
Parsing feeds: 1305/2187
Parsing feeds: 1306/2187
Parsing feeds: 1307/2187
Parsing feeds: 1308/2187
Parsing feeds: 1309/2187
Parsing feeds: 1310/2187
Parsing feeds: 1311/2187
Parsing feeds: 1312/2187
Parsing feeds: 1313/2187
Parsing feeds: 1314/2187
Parsing feeds: 1315/2187
Parsing feeds: 1316/2187
Parsing feeds: 1317/2187
Parsing feeds: 1318/2187
Parsing feeds: 1319/2187
Parsing feeds: 1320/2187
Parsing feeds: 1321/2187
Parsing feeds: 1322/2187
Parsing feeds: 1323/2187
Parsing feeds: 1324/2187
Parsing feeds: 1325/2187
Parsing feeds: 1326/2187
Parsing feeds: 1327/2187
Parsing feeds: 1328/2187
Parsing feeds: 1329/2187
Parsing feeds: 1330/2187
Parsing feeds: 1331/2187
Parsing feeds: 1332/2187
Parsing feeds: 1333/2187
Parsing feeds: 1334/2187
Parsing feeds: 1335/2187
Parsing feeds: 1336/2187
Parsing feeds: 1337/2187
Parsing feeds: 1338/2187
Parsing feeds: 1339/2187
Parsing feeds: 1340/2187
Parsing feeds: 1341/2187
Parsing feeds: 1342/2187
Parsing feeds: 1343/2187
Parsing feeds: 1344/2187
Parsing feeds: 1345/2187
Parsing feeds: 1346/2187
Parsing feeds: 1347/2187
Parsing feeds: 1348/2187
Parsing feeds: 1349/2187
Parsing feeds: 1350/2187
Parsing feeds: 1351/2187
Parsing feeds: 1352/2187
Parsing feeds: 1353/2187
Parsing feeds: 1354/2187
Parsing feeds: 1355/2187
Parsing feeds: 1356/2187
Parsing feeds: 1357/2187
Parsing feeds: 1358/2187
Parsing feeds: 1359/2187
Parsing feeds: 1360/2187
Parsing feeds: 1361/2187
Parsing feeds: 1362/2187
Parsing feeds: 1363/2187
Parsing feeds: 1364/2187
Parsing feeds: 1365/2187
Parsing feeds: 1366/2187
Parsing feeds: 1367/2187
Parsing feeds: 1368/2187
Parsing feeds: 1369/2187
Parsing feeds: 1370/2187
Parsing feeds: 1371/2187
Parsing feeds: 1372/2187
Parsing feeds: 1373/2187
Parsing feeds: 1374/2187
Parsing feeds: 1375/2187
Parsing feeds: 1376/2187
Parsing feeds: 1377/2187
Parsing feeds: 1378/2187
Parsing feeds: 1379/2187
Parsing feeds: 1380/2187
Parsing feeds: 1381/2187
Parsing feeds: 1382/2187
Parsing feeds: 1383/2187
Parsing feeds: 1384/2187
Parsing feeds: 1385/2187
Parsing feeds: 1386/2187
Parsing feeds: 1387/2187
Parsing feeds: 1388/2187
Parsing feeds: 1389/2187
Parsing feeds: 1390/2187
Parsing feeds: 1391/2187
Parsing feeds: 1392/2187
Parsing feeds: 1393/2187
Parsing feeds: 1394/2187
Parsing feeds: 1395/2187
Parsing feeds: 1396/2187
Parsing feeds: 1397/2187
Parsing feeds: 1398/2187
Parsing feeds: 1399/2187
Parsing feeds: 1400/2187
Parsing feeds: 1401/2187
Parsing feeds: 1402/2187
Parsing feeds: 1403/2187
Parsing feeds: 1404/2187
Parsing feeds: 1405/2187
Parsing feeds: 1406/2187
Parsing feeds: 1407/2187
Parsing feeds: 1408/2187
Parsing feeds: 1409/2187
Parsing feeds: 1410/2187
Parsing feeds: 1411/2187
Parsing feeds: 1412/2187
Parsing feeds: 1413/2187
Parsing feeds: 1414/2187
Parsing feeds: 1415/2187
Parsing feeds: 1416/2187
Parsing feeds: 1417/2187
Parsing feeds: 1418/2187
Parsing feeds: 1419/2187
Parsing feeds: 1420/2187
Parsing feeds: 1421/2187
Parsing feeds: 1422/2187
Parsing feeds: 1423/2187
Parsing feeds: 1424/2187
Parsing feeds: 1425/2187
Parsing feeds: 1426/2187
Parsing feeds: 1427/2187
Parsing feeds: 1428/2187
Parsing feeds: 1429/2187
Parsing feeds: 1430/2187
Parsing feeds: 1431/2187
Parsing feeds: 1432/2187
Parsing feeds: 1433/2187
Parsing feeds: 1434/2187
Parsing feeds: 1435/2187
Parsing feeds: 1436/2187
Parsing feeds: 1437/2187
Parsing feeds: 1438/2187
Parsing feeds: 1439/2187
Parsing feeds: 1440/2187
Parsing feeds: 1441/2187
Parsing feeds: 1442/2187
Parsing feeds: 1443/2187
Parsing feeds: 1444/2187
Parsing feeds: 1445/2187
Parsing feeds: 1446/2187
Parsing feeds: 1447/2187
Parsing feeds: 1448/2187
Parsing feeds: 1449/2187
Parsing feeds: 1450/2187
Parsing feeds: 1451/2187
Parsing feeds: 1452/2187
Parsing feeds: 1453/2187
Parsing feeds: 1454/2187
Parsing feeds: 1455/2187
Parsing feeds: 1456/2187
Parsing feeds: 1457/2187
Parsing feeds: 1458/2187
Parsing feeds: 1459/2187
Parsing feeds: 1460/2187
Parsing feeds: 1461/2187
Parsing feeds: 1462/2187
Parsing feeds: 1463/2187
Parsing feeds: 1464/2187
Parsing feeds: 1465/2187
Parsing feeds: 1466/2187
Parsing feeds: 1467/2187
Parsing feeds: 1468/2187
Parsing feeds: 1469/2187
Parsing feeds: 1470/2187
Parsing feeds: 1471/2187
Parsing feeds: 1472/2187
Parsing feeds: 1473/2187
Parsing feeds: 1474/2187
Parsing feeds: 1475/2187
Parsing feeds: 1476/2187
Parsing feeds: 1477/2187
Parsing feeds: 1478/2187
Parsing feeds: 1479/2187
Parsing feeds: 1480/2187
Parsing feeds: 1481/2187
Parsing feeds: 1482/2187
Parsing feeds: 1483/2187
Parsing feeds: 1484/2187
Parsing feeds: 1485/2187
Parsing feeds: 1486/2187
Parsing feeds: 1487/2187
Parsing feeds: 1488/2187
Parsing feeds: 1489/2187
Parsing feeds: 1490/2187
Parsing feeds: 1491/2187
Parsing feeds: 1492/2187
Parsing feeds: 1493/2187
Parsing feeds: 1494/2187
Parsing feeds: 1495/2187
Parsing feeds: 1496/2187
Parsing feeds: 1497/2187
Parsing feeds: 1498/2187
Parsing feeds: 1499/2187
Parsing feeds: 1500/2187
Parsing feeds: 1501/2187
Parsing feeds: 1502/2187
Parsing feeds: 1503/2187
Parsing feeds: 1504/2187
Parsing feeds: 1505/2187
Parsing feeds: 1506/2187
Parsing feeds: 1507/2187
Parsing feeds: 1508/2187
Parsing feeds: 1509/2187
Parsing feeds: 1510/2187
Parsing feeds: 1511/2187
Parsing feeds: 1512/2187
Parsing feeds: 1513/2187
Parsing feeds: 1514/2187
Parsing feeds: 1515/2187
Parsing feeds: 1516/2187
Parsing feeds: 1517/2187
Parsing feeds: 1518/2187
Parsing feeds: 1519/2187
Parsing feeds: 1520/2187
Parsing feeds: 1521/2187
Parsing feeds: 1522/2187
Parsing feeds: 1523/2187
Parsing feeds: 1524/2187
Parsing feeds: 1525/2187
Parsing feeds: 1526/2187
Parsing feeds: 1527/2187
Parsing feeds: 1528/2187
Parsing feeds: 1529/2187
Parsing feeds: 1530/2187
Parsing feeds: 1531/2187
Parsing feeds: 1532/2187
Parsing feeds: 1533/2187
Parsing feeds: 1534/2187
Parsing feeds: 1535/2187
Parsing feeds: 1536/2187
Parsing feeds: 1537/2187
Parsing feeds: 1538/2187
Parsing feeds: 1539/2187
Parsing feeds: 1540/2187
Parsing feeds: 1541/2187
Parsing feeds: 1542/2187
Parsing feeds: 1543/2187
Parsing feeds: 1544/2187
Parsing feeds: 1545/2187
Parsing feeds: 1546/2187
Parsing feeds: 1547/2187
Parsing feeds: 1548/2187
Parsing feeds: 1549/2187
Parsing feeds: 1550/2187
Parsing feeds: 1551/2187
Parsing feeds: 1552/2187
Parsing feeds: 1553/2187
Parsing feeds: 1554/2187
Parsing feeds: 1555/2187
Parsing feeds: 1556/2187
Parsing feeds: 1557/2187
Parsing feeds: 1558/2187
Parsing feeds: 1559/2187
Parsing feeds: 1560/2187
Parsing feeds: 1561/2187
Parsing feeds: 1562/2187
Parsing feeds: 1563/2187
Parsing feeds: 1564/2187
Parsing feeds: 1565/2187
Parsing feeds: 1566/2187
Parsing feeds: 1567/2187
Parsing feeds: 1568/2187
Parsing feeds: 1569/2187
Parsing feeds: 1570/2187
Parsing feeds: 1571/2187
Parsing feeds: 1572/2187
Parsing feeds: 1573/2187
Parsing feeds: 1574/2187
Parsing feeds: 1575/2187
Parsing feeds: 1576/2187
Parsing feeds: 1577/2187
Parsing feeds: 1578/2187
Parsing feeds: 1579/2187
Parsing feeds: 1580/2187
Parsing feeds: 1581/2187
Parsing feeds: 1582/2187
Parsing feeds: 1583/2187
Parsing feeds: 1584/2187
Parsing feeds: 1585/2187
Parsing feeds: 1586/2187
Parsing feeds: 1587/2187
Parsing feeds: 1588/2187
Parsing feeds: 1589/2187
Parsing feeds: 1590/2187
Parsing feeds: 1591/2187
Parsing feeds: 1592/2187
Parsing feeds: 1593/2187
Parsing feeds: 1594/2187
Parsing feeds: 1595/2187
Parsing feeds: 1596/2187
Parsing feeds: 1597/2187
Parsing feeds: 1598/2187
Parsing feeds: 1599/2187
Parsing feeds: 1600/2187
Parsing feeds: 1601/2187
Parsing feeds: 1602/2187
Parsing feeds: 1603/2187
Parsing feeds: 1604/2187
Parsing feeds: 1605/2187
Parsing feeds: 1606/2187
Parsing feeds: 1607/2187
Parsing feeds: 1608/2187
Parsing feeds: 1609/2187
Parsing feeds: 1610/2187
Parsing feeds: 1611/2187
Parsing feeds: 1612/2187
Parsing feeds: 1613/2187
Parsing feeds: 1614/2187
Parsing feeds: 1615/2187
Parsing feeds: 1616/2187
Parsing feeds: 1617/2187
Parsing feeds: 1618/2187
Parsing feeds: 1619/2187
Parsing feeds: 1620/2187
Parsing feeds: 1621/2187
Parsing feeds: 1622/2187
Parsing feeds: 1623/2187
Parsing feeds: 1624/2187
Parsing feeds: 1625/2187
Parsing feeds: 1626/2187
Parsing feeds: 1627/2187
Parsing feeds: 1628/2187
Parsing feeds: 1629/2187
Parsing feeds: 1630/2187
Parsing feeds: 1631/2187
Parsing feeds: 1632/2187
Parsing feeds: 1633/2187
Parsing feeds: 1634/2187
Parsing feeds: 1635/2187
Parsing feeds: 1636/2187
Parsing feeds: 1637/2187
Parsing feeds: 1638/2187
Parsing feeds: 1639/2187
Parsing feeds: 1640/2187
Parsing feeds: 1641/2187
Parsing feeds: 1642/2187
Parsing feeds: 1643/2187
Parsing feeds: 1644/2187
Parsing feeds: 1645/2187
Parsing feeds: 1646/2187
Parsing feeds: 1647/2187
Parsing feeds: 1648/2187
Parsing feeds: 1649/2187
Parsing feeds: 1650/2187
Parsing feeds: 1651/2187
Parsing feeds: 1652/2187
Parsing feeds: 1653/2187
Parsing feeds: 1654/2187
Parsing feeds: 1655/2187
Parsing feeds: 1656/2187
Parsing feeds: 1657/2187
Parsing feeds: 1658/2187
Parsing feeds: 1659/2187
Parsing feeds: 1660/2187
Parsing feeds: 1661/2187
Parsing feeds: 1662/2187
Parsing feeds: 1663/2187
Parsing feeds: 1664/2187
Parsing feeds: 1665/2187
Parsing feeds: 1666/2187
Parsing feeds: 1667/2187
Parsing feeds: 1668/2187
Parsing feeds: 1669/2187
Parsing feeds: 1670/2187
Parsing feeds: 1671/2187
Parsing feeds: 1672/2187
Parsing feeds: 1673/2187
Parsing feeds: 1674/2187
Parsing feeds: 1675/2187
Parsing feeds: 1676/2187
Parsing feeds: 1677/2187
Parsing feeds: 1678/2187
Parsing feeds: 1679/2187
Parsing feeds: 1680/2187
Parsing feeds: 1681/2187
Parsing feeds: 1682/2187
Parsing feeds: 1683/2187
Parsing feeds: 1684/2187
Parsing feeds: 1685/2187
Parsing feeds: 1686/2187
Parsing feeds: 1687/2187
Parsing feeds: 1688/2187
Parsing feeds: 1689/2187
Parsing feeds: 1690/2187
Parsing feeds: 1691/2187
Parsing feeds: 1692/2187
Parsing feeds: 1693/2187
Parsing feeds: 1694/2187
Parsing feeds: 1695/2187
Parsing feeds: 1696/2187
Parsing feeds: 1697/2187
Parsing feeds: 1698/2187
Parsing feeds: 1699/2187
Parsing feeds: 1700/2187
Parsing feeds: 1701/2187
Parsing feeds: 1702/2187
Parsing feeds: 1703/2187
Parsing feeds: 1704/2187
Parsing feeds: 1705/2187
Parsing feeds: 1706/2187
Parsing feeds: 1707/2187
Parsing feeds: 1708/2187
Parsing feeds: 1709/2187
Parsing feeds: 1710/2187
Parsing feeds: 1711/2187
Parsing feeds: 1712/2187
Parsing feeds: 1713/2187
Parsing feeds: 1714/2187
Parsing feeds: 1715/2187
Parsing feeds: 1716/2187
Parsing feeds: 1717/2187
Parsing feeds: 1718/2187
Parsing feeds: 1719/2187
Parsing feeds: 1720/2187
Parsing feeds: 1721/2187
Parsing feeds: 1722/2187
Parsing feeds: 1723/2187
Parsing feeds: 1724/2187
Parsing feeds: 1725/2187
Parsing feeds: 1726/2187
Parsing feeds: 1727/2187
Parsing feeds: 1728/2187
Parsing feeds: 1729/2187
Parsing feeds: 1730/2187
Parsing feeds: 1731/2187
Parsing feeds: 1732/2187
Parsing feeds: 1733/2187
Parsing feeds: 1734/2187
Parsing feeds: 1735/2187
Parsing feeds: 1736/2187
Parsing feeds: 1737/2187
Parsing feeds: 1738/2187
Parsing feeds: 1739/2187
Parsing feeds: 1740/2187
Parsing feeds: 1741/2187
Parsing feeds: 1742/2187
Parsing feeds: 1743/2187
Parsing feeds: 1744/2187
Parsing feeds: 1745/2187
Parsing feeds: 1746/2187
Parsing feeds: 1747/2187
Parsing feeds: 1748/2187
Parsing feeds: 1749/2187
Parsing feeds: 1750/2187
Parsing feeds: 1751/2187
Parsing feeds: 1752/2187
Parsing feeds: 1753/2187
Parsing feeds: 1754/2187
Parsing feeds: 1755/2187
Parsing feeds: 1756/2187
Parsing feeds: 1757/2187
Parsing feeds: 1758/2187
Parsing feeds: 1759/2187
Parsing feeds: 1760/2187
Parsing feeds: 1761/2187
Parsing feeds: 1762/2187
Parsing feeds: 1763/2187
Parsing feeds: 1764/2187
Parsing feeds: 1765/2187
Parsing feeds: 1766/2187
Parsing feeds: 1767/2187
Parsing feeds: 1768/2187
Parsing feeds: 1769/2187
Parsing feeds: 1770/2187
Parsing feeds: 1771/2187
Parsing feeds: 1772/2187
Parsing feeds: 1773/2187
Parsing feeds: 1774/2187
Parsing feeds: 1775/2187
Parsing feeds: 1776/2187
Parsing feeds: 1777/2187
Parsing feeds: 1778/2187
Parsing feeds: 1779/2187
Parsing feeds: 1780/2187
Parsing feeds: 1781/2187
Parsing feeds: 1782/2187
Parsing feeds: 1783/2187
Parsing feeds: 1784/2187
Parsing feeds: 1785/2187
Parsing feeds: 1786/2187
Parsing feeds: 1787/2187
Parsing feeds: 1788/2187
Parsing feeds: 1789/2187
Parsing feeds: 1790/2187
Parsing feeds: 1791/2187
Parsing feeds: 1792/2187
Parsing feeds: 1793/2187
Parsing feeds: 1794/2187
Parsing feeds: 1795/2187
Parsing feeds: 1796/2187
Parsing feeds: 1797/2187
Parsing feeds: 1798/2187
Parsing feeds: 1799/2187
Parsing feeds: 1800/2187
Parsing feeds: 1801/2187
Parsing feeds: 1802/2187
Parsing feeds: 1803/2187
Parsing feeds: 1804/2187
Parsing feeds: 1805/2187
Parsing feeds: 1806/2187
Parsing feeds: 1807/2187
Parsing feeds: 1808/2187
Parsing feeds: 1809/2187
Parsing feeds: 1810/2187
Parsing feeds: 1811/2187
Parsing feeds: 1812/2187
Parsing feeds: 1813/2187
Parsing feeds: 1814/2187
Parsing feeds: 1815/2187
Parsing feeds: 1816/2187
Parsing feeds: 1817/2187
Parsing feeds: 1818/2187
Parsing feeds: 1819/2187
Parsing feeds: 1820/2187
Parsing feeds: 1821/2187
Parsing feeds: 1822/2187
Parsing feeds: 1823/2187
Parsing feeds: 1824/2187
Parsing feeds: 1825/2187
Parsing feeds: 1826/2187
Parsing feeds: 1827/2187
Parsing feeds: 1828/2187
Parsing feeds: 1829/2187
Parsing feeds: 1830/2187
Parsing feeds: 1831/2187
Parsing feeds: 1832/2187
Parsing feeds: 1833/2187
Parsing feeds: 1834/2187
Parsing feeds: 1835/2187
Parsing feeds: 1836/2187
Parsing feeds: 1837/2187
Parsing feeds: 1838/2187
Parsing feeds: 1839/2187
Parsing feeds: 1840/2187
Parsing feeds: 1841/2187
Parsing feeds: 1842/2187
Parsing feeds: 1843/2187
Parsing feeds: 1844/2187
Parsing feeds: 1845/2187
Parsing feeds: 1846/2187
Parsing feeds: 1847/2187
Parsing feeds: 1848/2187
Parsing feeds: 1849/2187
Parsing feeds: 1850/2187
Parsing feeds: 1851/2187
Parsing feeds: 1852/2187
Parsing feeds: 1853/2187
Parsing feeds: 1854/2187
Parsing feeds: 1855/2187
Parsing feeds: 1856/2187
Parsing feeds: 1857/2187
Parsing feeds: 1858/2187
Parsing feeds: 1859/2187
Parsing feeds: 1860/2187
Parsing feeds: 1861/2187
Parsing feeds: 1862/2187
Parsing feeds: 1863/2187
Parsing feeds: 1864/2187
Parsing feeds: 1865/2187
Parsing feeds: 1866/2187
Parsing feeds: 1867/2187
Parsing feeds: 1868/2187
Parsing feeds: 1869/2187
Parsing feeds: 1870/2187
Parsing feeds: 1871/2187
Parsing feeds: 1872/2187
Parsing feeds: 1873/2187
Parsing feeds: 1874/2187
Parsing feeds: 1875/2187
Parsing feeds: 1876/2187
Parsing feeds: 1877/2187
Parsing feeds: 1878/2187
Parsing feeds: 1879/2187
Parsing feeds: 1880/2187
Parsing feeds: 1881/2187
Parsing feeds: 1882/2187
Parsing feeds: 1883/2187
Parsing feeds: 1884/2187
Parsing feeds: 1885/2187
Parsing feeds: 1886/2187
Parsing feeds: 1887/2187
Parsing feeds: 1888/2187
Parsing feeds: 1889/2187
Parsing feeds: 1890/2187
Parsing feeds: 1891/2187
Parsing feeds: 1892/2187
Parsing feeds: 1893/2187
Parsing feeds: 1894/2187
Parsing feeds: 1895/2187
Parsing feeds: 1896/2187
Parsing feeds: 1897/2187
Parsing feeds: 1898/2187
Parsing feeds: 1899/2187
Parsing feeds: 1900/2187
Parsing feeds: 1901/2187
Parsing feeds: 1902/2187
Parsing feeds: 1903/2187
Parsing feeds: 1904/2187
Parsing feeds: 1905/2187
Parsing feeds: 1906/2187
Parsing feeds: 1907/2187
Parsing feeds: 1908/2187
Parsing feeds: 1909/2187
Parsing feeds: 1910/2187
Parsing feeds: 1911/2187
Parsing feeds: 1912/2187
Parsing feeds: 1913/2187
Parsing feeds: 1914/2187
Parsing feeds: 1915/2187
Parsing feeds: 1916/2187
Parsing feeds: 1917/2187
Parsing feeds: 1918/2187
Parsing feeds: 1919/2187
Parsing feeds: 1920/2187
Parsing feeds: 1921/2187
Parsing feeds: 1922/2187
Parsing feeds: 1923/2187
Parsing feeds: 1924/2187
Parsing feeds: 1925/2187
Parsing feeds: 1926/2187
Parsing feeds: 1927/2187
Parsing feeds: 1928/2187
Parsing feeds: 1929/2187
Parsing feeds: 1930/2187
Parsing feeds: 1931/2187
Parsing feeds: 1932/2187
Parsing feeds: 1933/2187
Parsing feeds: 1934/2187
Parsing feeds: 1935/2187
Parsing feeds: 1936/2187
Parsing feeds: 1937/2187
Parsing feeds: 1938/2187
Parsing feeds: 1939/2187
Parsing feeds: 1940/2187
Parsing feeds: 1941/2187
Parsing feeds: 1942/2187
Parsing feeds: 1943/2187
Parsing feeds: 1944/2187
Parsing feeds: 1945/2187
Parsing feeds: 1946/2187
Parsing feeds: 1947/2187
Parsing feeds: 1948/2187
Parsing feeds: 1949/2187
Parsing feeds: 1950/2187
Parsing feeds: 1951/2187
Parsing feeds: 1952/2187
Parsing feeds: 1953/2187
Parsing feeds: 1954/2187
Parsing feeds: 1955/2187
Parsing feeds: 1956/2187
Parsing feeds: 1957/2187
Parsing feeds: 1958/2187
Parsing feeds: 1959/2187
Parsing feeds: 1960/2187
Parsing feeds: 1961/2187
Parsing feeds: 1962/2187
Parsing feeds: 1963/2187
Parsing feeds: 1964/2187
Parsing feeds: 1965/2187
Parsing feeds: 1966/2187
Parsing feeds: 1967/2187
Parsing feeds: 1968/2187
Parsing feeds: 1969/2187
Parsing feeds: 1970/2187
Parsing feeds: 1971/2187
Parsing feeds: 1972/2187
Parsing feeds: 1973/2187
Parsing feeds: 1974/2187
Parsing feeds: 1975/2187
Parsing feeds: 1976/2187
Parsing feeds: 1977/2187
Parsing feeds: 1978/2187
Parsing feeds: 1979/2187
Parsing feeds: 1980/2187
Parsing feeds: 1981/2187
Parsing feeds: 1982/2187
Parsing feeds: 1983/2187
Parsing feeds: 1984/2187
Parsing feeds: 1985/2187
Parsing feeds: 1986/2187
Parsing feeds: 1987/2187
Parsing feeds: 1988/2187
Parsing feeds: 1989/2187
Parsing feeds: 1990/2187
Parsing feeds: 1991/2187
Parsing feeds: 1992/2187
Parsing feeds: 1993/2187
Parsing feeds: 1994/2187
Parsing feeds: 1995/2187
Parsing feeds: 1996/2187
Parsing feeds: 1997/2187
Parsing feeds: 1998/2187
Parsing feeds: 1999/2187
Parsing feeds: 2000/2187
Parsing feeds: 2001/2187
Parsing feeds: 2002/2187
Parsing feeds: 2003/2187
Parsing feeds: 2004/2187
Parsing feeds: 2005/2187
Parsing feeds: 2006/2187
Parsing feeds: 2007/2187
Parsing feeds: 2008/2187
Parsing feeds: 2009/2187
Parsing feeds: 2010/2187
Parsing feeds: 2011/2187
Parsing feeds: 2012/2187
Parsing feeds: 2013/2187
Parsing feeds: 2014/2187
Parsing feeds: 2015/2187
Parsing feeds: 2016/2187
Parsing feeds: 2017/2187
Parsing feeds: 2018/2187
Parsing feeds: 2019/2187
Parsing feeds: 2020/2187
Parsing feeds: 2021/2187
Parsing feeds: 2022/2187
Parsing feeds: 2023/2187
Parsing feeds: 2024/2187
Parsing feeds: 2025/2187
Parsing feeds: 2026/2187
Parsing feeds: 2027/2187
Parsing feeds: 2028/2187
Parsing feeds: 2029/2187
Parsing feeds: 2030/2187
Parsing feeds: 2031/2187
Parsing feeds: 2032/2187
Parsing feeds: 2033/2187
Parsing feeds: 2034/2187
Parsing feeds: 2035/2187
Parsing feeds: 2036/2187
Parsing feeds: 2037/2187
Parsing feeds: 2038/2187
Parsing feeds: 2039/2187
Parsing feeds: 2040/2187
Parsing feeds: 2041/2187
Parsing feeds: 2042/2187
Parsing feeds: 2043/2187
Parsing feeds: 2044/2187
Parsing feeds: 2045/2187
Parsing feeds: 2046/2187
Parsing feeds: 2047/2187
Parsing feeds: 2048/2187
Parsing feeds: 2049/2187
Parsing feeds: 2050/2187
Parsing feeds: 2051/2187
Parsing feeds: 2052/2187
Parsing feeds: 2053/2187
Parsing feeds: 2054/2187
Parsing feeds: 2055/2187
Parsing feeds: 2056/2187
Parsing feeds: 2057/2187
Parsing feeds: 2058/2187
Parsing feeds: 2059/2187
Parsing feeds: 2060/2187
Parsing feeds: 2061/2187
Parsing feeds: 2062/2187
Parsing feeds: 2063/2187
Parsing feeds: 2064/2187
Parsing feeds: 2065/2187
Parsing feeds: 2066/2187
Parsing feeds: 2067/2187
Parsing feeds: 2068/2187
Parsing feeds: 2069/2187
Parsing feeds: 2070/2187
Parsing feeds: 2071/2187
Parsing feeds: 2072/2187
Parsing feeds: 2073/2187
Parsing feeds: 2074/2187
Parsing feeds: 2075/2187
Parsing feeds: 2076/2187
Parsing feeds: 2077/2187
Parsing feeds: 2078/2187
Parsing feeds: 2079/2187
Parsing feeds: 2080/2187
Parsing feeds: 2081/2187
Parsing feeds: 2082/2187
Parsing feeds: 2083/2187
Parsing feeds: 2084/2187
Parsing feeds: 2085/2187
Parsing feeds: 2086/2187
Parsing feeds: 2087/2187
Parsing feeds: 2088/2187
Parsing feeds: 2089/2187
Parsing feeds: 2090/2187
Parsing feeds: 2091/2187
Parsing feeds: 2092/2187
Parsing feeds: 2093/2187
Parsing feeds: 2094/2187
Parsing feeds: 2095/2187
Parsing feeds: 2096/2187
Parsing feeds: 2097/2187
Parsing feeds: 2098/2187
Parsing feeds: 2099/2187
Parsing feeds: 2100/2187
Parsing feeds: 2101/2187
Parsing feeds: 2102/2187
Parsing feeds: 2103/2187
Parsing feeds: 2104/2187
Parsing feeds: 2105/2187
Parsing feeds: 2106/2187
Parsing feeds: 2107/2187
Parsing feeds: 2108/2187
Parsing feeds: 2109/2187
Parsing feeds: 2110/2187
Parsing feeds: 2111/2187
Parsing feeds: 2112/2187
Parsing feeds: 2113/2187
Parsing feeds: 2114/2187
Parsing feeds: 2115/2187
Parsing feeds: 2116/2187
Parsing feeds: 2117/2187
Parsing feeds: 2118/2187
Parsing feeds: 2119/2187
Parsing feeds: 2120/2187
Parsing feeds: 2121/2187
Parsing feeds: 2122/2187
Parsing feeds: 2123/2187
Parsing feeds: 2124/2187
Parsing feeds: 2125/2187
Parsing feeds: 2126/2187
Parsing feeds: 2127/2187
Parsing feeds: 2128/2187
Parsing feeds: 2129/2187
Parsing feeds: 2130/2187
Parsing feeds: 2131/2187
Parsing feeds: 2132/2187
Parsing feeds: 2133/2187
Parsing feeds: 2134/2187
Parsing feeds: 2135/2187
Parsing feeds: 2136/2187
Parsing feeds: 2137/2187
Parsing feeds: 2138/2187
Parsing feeds: 2139/2187
Parsing feeds: 2140/2187
Parsing feeds: 2141/2187
Parsing feeds: 2142/2187
Parsing feeds: 2143/2187
Parsing feeds: 2144/2187
Parsing feeds: 2145/2187
Parsing feeds: 2146/2187
Parsing feeds: 2147/2187
Parsing feeds: 2148/2187
Parsing feeds: 2149/2187
Parsing feeds: 2150/2187
Parsing feeds: 2151/2187
Parsing feeds: 2152/2187
Parsing feeds: 2153/2187
Parsing feeds: 2154/2187
Parsing feeds: 2155/2187
Parsing feeds: 2156/2187
Parsing feeds: 2157/2187
Parsing feeds: 2158/2187
Parsing feeds: 2159/2187
Parsing feeds: 2160/2187
Parsing feeds: 2161/2187
Parsing feeds: 2162/2187
Parsing feeds: 2163/2187
Parsing feeds: 2164/2187
Parsing feeds: 2165/2187
Parsing feeds: 2166/2187
Parsing feeds: 2167/2187
Parsing feeds: 2168/2187
Parsing feeds: 2169/2187
Parsing feeds: 2170/2187
Parsing feeds: 2171/2187
Parsing feeds: 2172/2187
Parsing feeds: 2173/2187
Parsing feeds: 2174/2187
Parsing feeds: 2175/2187
Parsing feeds: 2176/2187
Parsing feeds: 2177/2187
Parsing feeds: 2178/2187
Parsing feeds: 2179/2187
Parsing feeds: 2180/2187
Parsing feeds: 2181/2187
Parsing feeds: 2182/2187
Parsing feeds: 2183/2187
Parsing feeds: 2184/2187
Parsing feeds: 2185/2187
Parsing feeds: 2186/2187
Parsing feeds: 2187/2187
Finished parsing feeds: 2187/2187
INFO:root:Saved season data to data/20232024.csv
INFO:root:Finished _season: feeds=2187, records=593339
Loading season data for 20252026...
Loaded season dataframe from data/20252026/20252026.csv -> shape=(126497, 23)
INFO:root:Loaded cached shifts for game 2025020429 from data/20252026/shifts/shifts_2025020429.pkl
Ensuring xG predictions...
Found 32 teams: ['ANA', 'BOS', 'BUF', 'CAR', 'CBJ', 'CGY', 'CHI', 'COL', 'DAL', 'DET', 'EDM', 'FLA', 'LAK', 'MIN', 'MTL', 'NJD', 'NSH', 'NYI', 'NYR', 'OTT', 'PHI', 'PIT', 'SEA', 'SJS', 'STL', 'TBL', 'TOR', 'UTA', 'VAN', 'VGK', 'WPG', 'WSH']
--- PASS 1: Calculating Player Stats (Game-Centric) ---
Found 463 games to process.
Processing game 10/463: 2025010082...
Processing game 20/463: 2025010092...
Processing game 30/463: 2025020002...
Processing game 40/463: 2025020012...
Processing game 50/463: 2025020022...
Processing game 60/463: 2025020032...
Processing game 70/463: 2025020042...
Processing game 80/463: 2025020052...
Processing game 90/463: 2025020062...
Processing game 100/463: 2025020072...
Processing game 110/463: 2025020082...
Processing game 120/463: 2025020092...
Processing game 130/463: 2025020102...
Processing game 140/463: 2025020112...
Processing game 150/463: 2025020122...
Processing game 160/463: 2025020132...
Processing game 170/463: 2025020142...
Processing game 180/463: 2025020152...
Processing game 190/463: 2025020162...
Processing game 200/463: 2025020172...
Processing game 210/463: 2025020182...
Processing game 220/463: 2025020192...
Processing game 230/463: 2025020202...
Processing game 240/463: 2025020212...
Processing game 250/463: 2025020222...
Processing game 260/463: 2025020232...
Processing game 270/463: 2025020242...
Processing game 280/463: 2025020252...
Processing game 290/463: 2025020262...
Processing game 300/463: 2025020272...
Processing game 310/463: 2025020282...
Processing game 320/463: 2025020292...
Processing game 330/463: 2025020302...
Processing game 340/463: 2025020312...
Processing game 350/463: 2025020322...
Processing game 360/463: 2025020332...
Processing game 370/463: 2025020342...
Processing game 380/463: 2025020352...
Processing game 390/463: 2025020362...
Processing game 400/463: 2025020372...
Processing game 410/463: 2025020382...
Processing game 420/463: 2025020392...
Processing game 430/463: 2025020402...
Processing game 440/463: 2025020412...
Processing game 450/463: 2025020422...
Failed to load cache for 2025020429, recalculating: Expecting value: line 1 column 14896 (char 14895)
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 52 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 39 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=19 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 85 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 45 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=15 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 42 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=10 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 177 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 64 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 45 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 63 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=13 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 47 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=10 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 177 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 52 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=16 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 57 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=23 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 62 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=13 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 40 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 52 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 43 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=24 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 73 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=15 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 55 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 51 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=19 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 64 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 32 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=10 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 35 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 67 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=15 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 40 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=11 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 29 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 47 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=1 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
_apply_intervals debug: no rows matched any intervals
intervals_obj per_game count = 1
game 2025020429 intervals_parsed= 1
skipped_games (sample): [('2025020429', 'no_matches')]
df_in shape: (294, 24) columns_count= 24
Warning: condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} (team=18) matched 0 rows; producing an empty plot without training/loading model
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 48 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 46 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 40 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=19 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 59 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=16 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 50 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 53 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=9 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 40 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [18 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 51 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=10 team_for_game=18
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 50 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18} team=18
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=18 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 18}
xgs_map: using provided DataFrame (in-memory) -> rows= 294
_apply_intervals: intervals per_game count=1
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=13 team_for_game=13
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 52 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13} team=13
DEBUG: xgs_map df_filtered unique teams: [13 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=13 condition={'game_state': ['5v5'], 'is_net_empty': [0], 'team': 13}
Failed to save cache for 2025020429: Object of type int64 is not JSON serializable
Processing game 460/463: 2025020432...
Aggregating stats per player...
Saved master stats to analysis/players/20252026/league/league_player_stats.csv
--- Calculating Percentiles ---
--- PASS 2: Generating Maps ---
Generating maps for 797 qualified players (>= 5 games).
Processing ANA (Plotting)...
Generating maps for 1 players (skipped 23 up-to-date).
players: Starting analysis. Scope=season, Team=ANA, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025010073 from data/20252026/shifts/shifts_2025010073.pkl
INFO:root:Loaded cached shifts for game 2025020091 from data/20252026/shifts/shifts_2025020091.pkl
INFO:root:Loaded cached shifts for game 2025020129 from data/20252026/shifts/shifts_2025020129.pkl
INFO:root:Loaded cached shifts for game 2025020153 from data/20252026/shifts/shifts_2025020153.pkl
INFO:root:Loaded cached shifts for game 2025020180 from data/20252026/shifts/shifts_2025020180.pkl
INFO:root:Loaded cached shifts for game 2025020197 from data/20252026/shifts/shifts_2025020197.pkl
INFO:root:Loaded cached shifts for game 2025020211 from data/20252026/shifts/shifts_2025020211.pkl
INFO:root:Loaded cached shifts for game 2025020224 from data/20252026/shifts/shifts_2025020224.pkl
INFO:root:Loaded cached shifts for game 2025020242 from data/20252026/shifts/shifts_2025020242.pkl
INFO:root:Loaded cached shifts for game 2025020251 from data/20252026/shifts/shifts_2025020251.pkl
INFO:root:Loaded cached shifts for game 2025020262 from data/20252026/shifts/shifts_2025020262.pkl
INFO:root:Loaded cached shifts for game 2025020272 from data/20252026/shifts/shifts_2025020272.pkl
INFO:root:Loaded cached shifts for game 2025020284 from data/20252026/shifts/shifts_2025020284.pkl
INFO:root:Loaded cached shifts for game 2025020306 from data/20252026/shifts/shifts_2025020306.pkl
INFO:root:Loaded cached shifts for game 2025020318 from data/20252026/shifts/shifts_2025020318.pkl
INFO:root:Loaded cached shifts for game 2025020329 from data/20252026/shifts/shifts_2025020329.pkl
INFO:root:Loaded cached shifts for game 2025020409 from data/20252026/shifts/shifts_2025020409.pkl
INFO:root:Loaded cached shifts for game 2025020424 from data/20252026/shifts/shifts_2025020424.pkl
players: Ensuring xG predictions...
players: Found 29 players for team ANA
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 29 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 5076
_apply_intervals: intervals per_game count=18
_apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025010073 df_game_rows=224
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 1068 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482178, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 28 16 14 13 17 1 25 54 52 21 30 68 6 9 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482178, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482178, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025010090 from data/20252026/shifts/shifts_2025010090.pkl
INFO:root:Loaded cached shifts for game 2025020021 from data/20252026/shifts/shifts_2025020021.pkl
INFO:root:Loaded cached shifts for game 2025020036 from data/20252026/shifts/shifts_2025020036.pkl
INFO:root:Loaded cached shifts for game 2025020056 from data/20252026/shifts/shifts_2025020056.pkl
INFO:root:Loaded cached shifts for game 2025020070 from data/20252026/shifts/shifts_2025020070.pkl
INFO:root:Loaded cached shifts for game 2025020105 from data/20252026/shifts/shifts_2025020105.pkl
INFO:root:Loaded cached shifts for game 2025020111 from data/20252026/shifts/shifts_2025020111.pkl
INFO:root:Loaded cached shifts for game 2025020346 from data/20252026/shifts/shifts_2025020346.pkl
INFO:root:Loaded cached shifts for game 2025020374 from data/20252026/shifts/shifts_2025020374.pkl
INFO:root:Loaded cached shifts for game 2025020384 from data/20252026/shifts/shifts_2025020384.pkl
INFO:root:Loaded cached shifts for game 2025020403 from data/20252026/shifts/shifts_2025020403.pkl
Saved plot to analysis/players/20252026/ANA/8482178_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8020
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=12 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 1485 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473986, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473986, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473986, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8473986_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2946
_apply_intervals: intervals per_game count=10
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=5 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
Filtered season dataframe to 492 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475798, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 18 6 14 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475798, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475798, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8475798_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8244
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025010073 df_game_rows=224
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 1561 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478873, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [28 24 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478873, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478873, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8478873_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8244
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025010073 df_game_rows=224
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=28 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=29 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=25 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 1955 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481563, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [28 24 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481563, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481563, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8481563_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8244
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=12 team_for_game=ANA
_apply_intervals: game 2025010073 df_game_rows=224
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 1841 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484762, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 28 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484762, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484762, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8484762_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7948
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025010073 df_game_rows=224
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=12 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=12 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 1396 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478366, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 28 26 55 5 16 18 6 14 13 17 1 25 54 52 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478366, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478366, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8478366_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7389
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025010073 df_game_rows=224
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=27 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 1599 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483490, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [28 24 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 23 19 68] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483490, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483490, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8483490_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2549
_apply_intervals: intervals per_game count=9
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
Filtered season dataframe to 447 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476458, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 26 17 30 68 6 54 23 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476458, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476458, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8476458_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6554
_apply_intervals: intervals per_game count=23
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 1218 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475184, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 17 1 13 25 54 52 21 68 6 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475184, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475184, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8475184_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8244
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025010073 df_game_rows=224
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 1648 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484153, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [28 24 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484153, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484153, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8484153_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8020
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 1731 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482745, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482745, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482745, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8482745_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5332
_apply_intervals: intervals per_game count=19
_apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025010073 df_game_rows=224
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=8 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=11 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 846 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480068, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 28 26 55 5 16 18 14 13 17 1 25 52 21 19 68] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480068, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480068, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8480068_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8020
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=25 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=28 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=26 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=28 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=26 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=25 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 1940 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481605, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481605, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481605, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8481605_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2007
_apply_intervals: intervals per_game count=7
_apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025010073 df_game_rows=224
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=11 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=11 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
Filtered season dataframe to 327 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482118, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [28 24 55 16 18 6 13 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482118, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482118, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8482118_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4867
_apply_intervals: intervals per_game count=17
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=26 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=6 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=26 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 1104 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475462, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 18 6 68 9 54 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475462, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475462, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8475462_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1454
_apply_intervals: intervals per_game count=5
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=10 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=7 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=5 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=11 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=8 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
Filtered season dataframe to 1091 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475852, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [28 24 6 54 23 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475852, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475852, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8475852_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8020
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=25 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=25 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=34 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=28 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=25 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=28 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=25 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=26 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 2213 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476885, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 26 55 28 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476885, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476885, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8476885_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6177
_apply_intervals: intervals per_game count=22
_apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025010073 df_game_rows=224
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=11 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=12 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=10 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=12 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=11 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=12 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=9 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 908 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477527, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 28 55 5 18 6 14 13 17 1 25 54 52 30 68 9 26 16 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477527, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477527, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8477527_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3406
_apply_intervals: intervals per_game count=12
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=12 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=10 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 518 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478424, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [24 1 13 25 52 21 30 68 6 9 54 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478424, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478424, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8478424_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6210
_apply_intervals: intervals per_game count=22
_apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025010073 df_game_rows=224
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=10 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=13 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=12 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=12 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=12 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=11 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
Filtered season dataframe to 1038 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481754, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [28 24 5 18 6 14 17 1 13 25 54 52 21 30 68 9 23 26 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481754, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481754, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8481754_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8244
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025010073 df_game_rows=224
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=27 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=26 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=27 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=27 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=24 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=11 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 2143 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482803, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [28 24 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482803, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482803, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8482803_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8244
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010073 rows_in_game=224 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025010073 df_game_rows=224
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020021 rows_in_game=310 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020021 df_game_rows=310
_apply_intervals: game 2025020036 rows_in_game=294 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020036 df_game_rows=294
_apply_intervals: game 2025020056 rows_in_game=261 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020056 df_game_rows=261
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=ANA
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020129 rows_in_game=316 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020129 df_game_rows=316
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020180 rows_in_game=286 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020180 df_game_rows=286
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020242 rows_in_game=298 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020242 df_game_rows=298
_apply_intervals: game 2025020251 rows_in_game=278 parsed_intervals=17 team_for_game=ANA
_apply_intervals: game 2025020251 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=19 team_for_game=ANA
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020272 rows_in_game=297 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020272 df_game_rows=297
_apply_intervals: game 2025020284 rows_in_game=259 parsed_intervals=12 team_for_game=ANA
_apply_intervals: game 2025020284 df_game_rows=259
_apply_intervals: game 2025020306 rows_in_game=254 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020306 df_game_rows=254
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=20 team_for_game=ANA
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020329 rows_in_game=280 parsed_intervals=21 team_for_game=ANA
_apply_intervals: game 2025020329 df_game_rows=280
_apply_intervals: game 2025020346 rows_in_game=296 parsed_intervals=23 team_for_game=ANA
_apply_intervals: game 2025020346 df_game_rows=296
_apply_intervals: game 2025020374 rows_in_game=304 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020374 df_game_rows=304
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=18 team_for_game=ANA
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=15 team_for_game=ANA
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020409 rows_in_game=256 parsed_intervals=16 team_for_game=ANA
_apply_intervals: game 2025020409 df_game_rows=256
_apply_intervals: game 2025020424 rows_in_game=292 parsed_intervals=22 team_for_game=ANA
_apply_intervals: game 2025020424 df_game_rows=292
Filtered season dataframe to 1788 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483445, 'team': 'ANA'} team='ANA'
DEBUG: xgs_map df_filtered unique teams: [28 24 26 55 5 16 18 6 14 13 17 1 25 54 52 21 30 68 9 23 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483445, 'team': 'ANA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=ANA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483445, 'team': 'ANA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/ANA/8483445_map.png
players: Saved stats to analysis/players/20252026/ANA/player_stats.csv
players: Scatter plot includes 23 players (min_games=5)
players: Saved scatter plot to analysis/players/20252026/ANA/player_scatter.png
players: Analysis complete.
Processing BOS (Plotting)...
Generating maps for 3 players (skipped 24 up-to-date).
players: Starting analysis. Scope=season, Team=BOS, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025010078 from data/20252026/shifts/shifts_2025010078.pkl
INFO:root:Loaded cached shifts for game 2025010095 from data/20252026/shifts/shifts_2025010095.pkl
INFO:root:Loaded cached shifts for game 2025020005 from data/20252026/shifts/shifts_2025020005.pkl
INFO:root:Loaded cached shifts for game 2025020008 from data/20252026/shifts/shifts_2025020008.pkl
INFO:root:Loaded cached shifts for game 2025020024 from data/20252026/shifts/shifts_2025020024.pkl
INFO:root:Loaded cached shifts for game 2025020040 from data/20252026/shifts/shifts_2025020040.pkl
INFO:root:Loaded cached shifts for game 2025020092 from data/20252026/shifts/shifts_2025020092.pkl
INFO:root:Loaded cached shifts for game 2025020149 from data/20252026/shifts/shifts_2025020149.pkl
INFO:root:Loaded cached shifts for game 2025020167 from data/20252026/shifts/shifts_2025020167.pkl
INFO:root:Loaded cached shifts for game 2025020181 from data/20252026/shifts/shifts_2025020181.pkl
INFO:root:Loaded cached shifts for game 2025020205 from data/20252026/shifts/shifts_2025020205.pkl
INFO:root:Loaded cached shifts for game 2025020218 from data/20252026/shifts/shifts_2025020218.pkl
INFO:root:Loaded cached shifts for game 2025020234 from data/20252026/shifts/shifts_2025020234.pkl
INFO:root:Loaded cached shifts for game 2025020256 from data/20252026/shifts/shifts_2025020256.pkl
INFO:root:Loaded cached shifts for game 2025020271 from data/20252026/shifts/shifts_2025020271.pkl
INFO:root:Loaded cached shifts for game 2025020285 from data/20252026/shifts/shifts_2025020285.pkl
INFO:root:Loaded cached shifts for game 2025020301 from data/20252026/shifts/shifts_2025020301.pkl
INFO:root:Loaded cached shifts for game 2025020334 from data/20252026/shifts/shifts_2025020334.pkl
INFO:root:Loaded cached shifts for game 2025020351 from data/20252026/shifts/shifts_2025020351.pkl
INFO:root:Loaded cached shifts for game 2025020365 from data/20252026/shifts/shifts_2025020365.pkl
INFO:root:Loaded cached shifts for game 2025020376 from data/20252026/shifts/shifts_2025020376.pkl
INFO:root:Loaded cached shifts for game 2025020394 from data/20252026/shifts/shifts_2025020394.pkl
INFO:root:Loaded cached shifts for game 2025020412 from data/20252026/shifts/shifts_2025020412.pkl
players: Ensuring xG predictions...
players: Found 35 players for team BOS
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 35 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 6974
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025010078 df_game_rows=257
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
Filtered season dataframe to 1272 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482177, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 15 3 16 7 14 68 9 12 2 10 8 24 26 28 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482177, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482177, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020069 from data/20252026/shifts/shifts_2025020069.pkl
INFO:root:Loaded cached shifts for game 2025020085 from data/20252026/shifts/shifts_2025020085.pkl
INFO:root:Loaded cached shifts for game 2025020103 from data/20252026/shifts/shifts_2025020103.pkl
INFO:root:Loaded cached shifts for game 2025020128 from data/20252026/shifts/shifts_2025020128.pkl
INFO:root:Loaded cached shifts for game 2025020154 from data/20252026/shifts/shifts_2025020154.pkl
Saved plot to analysis/players/20252026/BOS/8482177_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7582
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
Filtered season dataframe to 1572 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477956, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477956, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477956, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020426 from data/20252026/shifts/shifts_2025020426.pkl
Saved plot to analysis/players/20252026/BOS/8477956_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8723
_apply_intervals: intervals per_game count=30
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=26 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=27 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 2204 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479369, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479369, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479369, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8479369_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3305
_apply_intervals: intervals per_game count=5
_apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025010078 df_game_rows=257
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=11 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
Filtered season dataframe to 154 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481556, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 15 68 12 2] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481556, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481556, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8481556_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8426
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 1606 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483489, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 7 14 68 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483489, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483489, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8483489_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7547
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025010078 df_game_rows=257
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=26 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=24 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
Filtered season dataframe to 1657 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480035, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 15 3 16 7 14 68 13 24 21 9 2 10 12 26 28] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480035, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480035, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8480035_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8723
_apply_intervals: intervals per_game count=30
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 1631 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479661, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479661, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479661, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8479661_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1428
_apply_intervals: intervals per_game count=5
_apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025010078 df_game_rows=257
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=2 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
Filtered season dataframe to 215 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481712, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 15 12 24 26 2] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481712, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481712, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8481712_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6349
_apply_intervals: intervals per_game count=22
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=6 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=24 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=24 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=24 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=24 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=26 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=24 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 1492 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476854, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 2 7 12 9 10 8 24 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476854, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476854, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8476854_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5500
_apply_intervals: intervals per_game count=19
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=9 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 1040 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477496, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477496, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477496, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8477496_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1715
_apply_intervals: intervals per_game count=6
_apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025010078 df_game_rows=257
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=24 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=5 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
Filtered season dataframe to 312 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480828, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 15 24 21 9 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480828, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480828, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8480828_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8446
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=11 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 1372 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478401, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478401, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478401, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8478401_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4845
_apply_intervals: intervals per_game count=17
_apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025010078 df_game_rows=257
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 1181 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481219, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 15 2 7 12 9 10 8 24 26 28 3 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481219, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481219, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8481219_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8482
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=26 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=24 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=26 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=24 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=24 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=24 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 2131 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477507, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 10 8 12 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477507, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477507, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8477507_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4087
_apply_intervals: intervals per_game count=14
_apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025010078 df_game_rows=257
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=10 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 663 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482634, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 15 10 9 8 12 24 26 28 2 3 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482634, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482634, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8482634_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7646
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025010078 df_game_rows=257
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=26 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 1697 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482511, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 15 3 16 7 14 68 13 24 21 9 10 8 12 26 28 2 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482511, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482511, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8482511_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8723
_apply_intervals: intervals per_game count=30
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=8 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=11 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 1403 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476374, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476374, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476374, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8476374_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1797
_apply_intervals: intervals per_game count=6
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=11 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
Filtered season dataframe to 279 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479705, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 13 24 9 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479705, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479705, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8479705_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6692
_apply_intervals: intervals per_game count=23
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=9 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 1065 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478042, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 7 14 68 13 24 21 9 2 12 10 8 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478042, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478042, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8478042_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5797
_apply_intervals: intervals per_game count=20
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=28 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=26 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=27 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=24 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=23 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=25 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=9 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
Filtered season dataframe to 1337 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479325, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 7 14 68 13 24 21 9 2 12 10 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479325, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479325, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8479325_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8384
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025010078 df_game_rows=257
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=10 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=10 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 1457 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480355, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 3 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480355, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480355, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8480355_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8723
_apply_intervals: intervals per_game count=30
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=11 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=10 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 1418 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479591, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479591, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479591, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8479591_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8723
_apply_intervals: intervals per_game count=30
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=22 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=13 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020234 rows_in_game=323 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020234 df_game_rows=323
_apply_intervals: game 2025020256 rows_in_game=307 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020256 df_game_rows=307
_apply_intervals: game 2025020271 rows_in_game=269 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020271 df_game_rows=269
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=12 team_for_game=BOS
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020318 rows_in_game=321 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020318 df_game_rows=321
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020351 rows_in_game=291 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020351 df_game_rows=291
_apply_intervals: game 2025020365 rows_in_game=256 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020365 df_game_rows=256
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 1721 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479987, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 3 6 15 16 7 14 68 13 24 21 9 2 12 10 8 26 28 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479987, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479987, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8479987_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1759
_apply_intervals: intervals per_game count=6
_apply_intervals: game 2025010078 rows_in_game=257 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025010078 df_game_rows=257
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020092 rows_in_game=296 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020092 df_game_rows=296
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=21 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
Filtered season dataframe to 335 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480887, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 15 7 14 68 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480887, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480887, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8480887_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5738
_apply_intervals: intervals per_game count=20
_apply_intervals: game 2025010095 rows_in_game=287 parsed_intervals=14 team_for_game=BOS
_apply_intervals: game 2025010095 df_game_rows=287
_apply_intervals: game 2025020005 rows_in_game=328 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020005 df_game_rows=328
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020040 rows_in_game=309 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020040 df_game_rows=309
_apply_intervals: game 2025020069 rows_in_game=309 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=BOS
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=20 team_for_game=BOS
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020111 rows_in_game=309 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020111 df_game_rows=309
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020149 rows_in_game=277 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020149 df_game_rows=277
_apply_intervals: game 2025020154 rows_in_game=240 parsed_intervals=15 team_for_game=BOS
_apply_intervals: game 2025020154 df_game_rows=240
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020205 rows_in_game=283 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020205 df_game_rows=283
_apply_intervals: game 2025020218 rows_in_game=270 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020218 df_game_rows=270
_apply_intervals: game 2025020376 rows_in_game=277 parsed_intervals=18 team_for_game=BOS
_apply_intervals: game 2025020376 df_game_rows=277
_apply_intervals: game 2025020394 rows_in_game=292 parsed_intervals=17 team_for_game=BOS
_apply_intervals: game 2025020394 df_game_rows=292
_apply_intervals: game 2025020412 rows_in_game=294 parsed_intervals=16 team_for_game=BOS
_apply_intervals: game 2025020412 df_game_rows=294
_apply_intervals: game 2025020426 rows_in_game=278 parsed_intervals=19 team_for_game=BOS
_apply_intervals: game 2025020426 df_game_rows=278
Filtered season dataframe to 975 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479999, 'team': 'BOS'} team='BOS'
DEBUG: xgs_map df_filtered unique teams: [ 6 3 15 16 7 14 13 24 21 9 2 12 17 19] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479999, 'team': 'BOS'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BOS condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479999, 'team': 'BOS'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BOS/8479999_map.png
players: Saved stats to analysis/players/20252026/BOS/player_stats.csv
players: Scatter plot includes 25 players (min_games=5)
players: Saved scatter plot to analysis/players/20252026/BOS/player_scatter.png
players: Analysis complete.
Processing BUF (Plotting)...
Generating maps for 5 players (skipped 24 up-to-date).
players: Starting analysis. Scope=season, Team=BUF, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025010076 from data/20252026/shifts/shifts_2025010076.pkl
INFO:root:Loaded cached shifts for game 2025010085 from data/20252026/shifts/shifts_2025010085.pkl
INFO:root:Loaded cached shifts for game 2025020009 from data/20252026/shifts/shifts_2025020009.pkl
INFO:root:Loaded cached shifts for game 2025020039 from data/20252026/shifts/shifts_2025020039.pkl
INFO:root:Loaded cached shifts for game 2025020057 from data/20252026/shifts/shifts_2025020057.pkl
INFO:root:Loaded cached shifts for game 2025020076 from data/20252026/shifts/shifts_2025020076.pkl
INFO:root:Loaded cached shifts for game 2025020095 from data/20252026/shifts/shifts_2025020095.pkl
INFO:root:Loaded cached shifts for game 2025020109 from data/20252026/shifts/shifts_2025020109.pkl
INFO:root:Loaded cached shifts for game 2025020123 from data/20252026/shifts/shifts_2025020123.pkl
INFO:root:Loaded cached shifts for game 2025020132 from data/20252026/shifts/shifts_2025020132.pkl
INFO:root:Loaded cached shifts for game 2025020152 from data/20252026/shifts/shifts_2025020152.pkl
INFO:root:Loaded cached shifts for game 2025020186 from data/20252026/shifts/shifts_2025020186.pkl
players: Ensuring xG predictions...
players: Found 32 players for team BUF
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 32 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 4005
_apply_intervals: intervals per_game count=14
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=27 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
Filtered season dataframe to 720 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483468, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483468, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483468, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020267 from data/20252026/shifts/shifts_2025020267.pkl
INFO:root:Loaded cached shifts for game 2025020302 from data/20252026/shifts/shifts_2025020302.pkl
INFO:root:Loaded cached shifts for game 2025020399 from data/20252026/shifts/shifts_2025020399.pkl
INFO:root:Loaded cached shifts for game 2025020423 from data/20252026/shifts/shifts_2025020423.pkl
Saved plot to analysis/players/20252026/BUF/8483468_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1695
_apply_intervals: intervals per_game count=5
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=8 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=5 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=5 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=6 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=9 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 1091 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481551, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 17 68 22 30 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481551, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481551, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8481551_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1407
_apply_intervals: intervals per_game count=5
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=13 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
Filtered season dataframe to 191 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481564, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 21] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481564, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481564, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020203 from data/20252026/shifts/shifts_2025020203.pkl
INFO:root:Loaded cached shifts for game 2025020219 from data/20252026/shifts/shifts_2025020219.pkl
INFO:root:Loaded cached shifts for game 2025020238 from data/20252026/shifts/shifts_2025020238.pkl
INFO:root:Loaded cached shifts for game 2025020275 from data/20252026/shifts/shifts_2025020275.pkl
INFO:root:Loaded cached shifts for game 2025020287 from data/20252026/shifts/shifts_2025020287.pkl
INFO:root:Loaded cached shifts for game 2025020316 from data/20252026/shifts/shifts_2025020316.pkl
INFO:root:Loaded cached shifts for game 2025020331 from data/20252026/shifts/shifts_2025020331.pkl
INFO:root:Loaded cached shifts for game 2025020347 from data/20252026/shifts/shifts_2025020347.pkl
INFO:root:Loaded cached shifts for game 2025020366 from data/20252026/shifts/shifts_2025020366.pkl
INFO:root:Loaded cached shifts for game 2025020379 from data/20252026/shifts/shifts_2025020379.pkl
INFO:root:Loaded cached shifts for game 2025020408 from data/20252026/shifts/shifts_2025020408.pkl
Saved plot to analysis/players/20252026/BUF/8481564_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7145
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=11 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 1412 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480802, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 10 29 15 68 19 12 17 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480802, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480802, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8480802_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6927
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=26 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=25 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=25 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 1936 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480807, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 3 6 8 17 10 29 15 68 19 12 21 22 20 16 5 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480807, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480807, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8480807_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4566
_apply_intervals: intervals per_game count=17
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=13 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=13 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=13 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 775 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483500, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 17 10 29 68 19 21 22 20 16 12 5 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483500, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483500, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8483500_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8036
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 1451 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482097, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482097, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482097, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8482097_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3906
_apply_intervals: intervals per_game count=14
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 683 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484145, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 8 7 17 10 29 6 12 5 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484145, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484145, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8484145_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8036
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=13 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 1585 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479420, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479420, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479420, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8479420_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4945
_apply_intervals: intervals per_game count=18
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=9 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=8 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=13 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=9 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=11 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=11 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=10 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=10 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 771 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482623, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [21 7 8 10 29 6 15 68 19 12 17 22 20 5 30 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482623, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482623, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8482623_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1350
_apply_intervals: intervals per_game count=5
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 228 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480064, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480064, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480064, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8480064_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4268
_apply_intervals: intervals per_game count=15
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=13 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=13 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
Filtered season dataframe to 674 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480196, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 12 68 22 16 1 30 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480196, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480196, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8480196_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6890
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=26 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=25 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=27 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=28 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=26 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=25 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=25 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 1922 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480839, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 22 20 16 12 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480839, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480839, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8480839_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5861
_apply_intervals: intervals per_game count=21
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=8 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 932 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475722, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 16 12 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475722, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475722, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8475722_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3020
_apply_intervals: intervals per_game count=11
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
Filtered season dataframe to 638 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478413, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 6 19 12 68 21 17 22 20 16 1 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478413, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478413, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8478413_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2723
_apply_intervals: intervals per_game count=10
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=13 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
Filtered season dataframe to 494 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482765, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 15 68 19 12 21 17 22 20 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482765, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482765, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8482765_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4747
_apply_intervals: intervals per_game count=17
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=10 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
Filtered season dataframe to 830 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482896, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 6 21 8 17 19 12 68 22 20 16 5 1 30] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482896, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482896, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8482896_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8036
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 1515 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482659, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482659, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482659, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8482659_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8036
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=25 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=25 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 1810 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479982, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479982, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479982, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8479982_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7212
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=25 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=26 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=25 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=26 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=25 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 1767 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482671, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 6 21 8 17 10 29 15 68 19 12 22 20 16 5 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482671, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482671, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8482671_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7743
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=13 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=13 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=11 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=11 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 1487 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481522, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 10 29 15 68 19 12 17 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481522, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481522, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8481522_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7786
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=26 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=27 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=25 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=26 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 1963 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481524, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481524, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481524, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8481524_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2745
_apply_intervals: intervals per_game count=10
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=13 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
Filtered season dataframe to 615 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480891, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 29 6 15 68 19 12 21 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480891, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480891, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8480891_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8036
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020024 rows_in_game=291 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020024 df_game_rows=291
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020057 rows_in_game=291 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=BUF
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=15 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=19 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=23 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020267 rows_in_game=272 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020267 df_game_rows=272
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=24 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=20 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=21 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 1552 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477949, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 6 21 8 17 10 29 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477949, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477949, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8477949_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6583
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010076 rows_in_game=250 parsed_intervals=9 team_for_game=BUF
_apply_intervals: game 2025010076 df_game_rows=250
_apply_intervals: game 2025010085 rows_in_game=276 parsed_intervals=10 team_for_game=BUF
_apply_intervals: game 2025010085 df_game_rows=276
_apply_intervals: game 2025020009 rows_in_game=298 parsed_intervals=10 team_for_game=BUF
_apply_intervals: game 2025020009 df_game_rows=298
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=13 team_for_game=BUF
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020109 rows_in_game=293 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020109 df_game_rows=293
_apply_intervals: game 2025020123 rows_in_game=278 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020123 df_game_rows=278
_apply_intervals: game 2025020132 rows_in_game=265 parsed_intervals=18 team_for_game=BUF
_apply_intervals: game 2025020132 df_game_rows=265
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=22 team_for_game=BUF
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020167 rows_in_game=300 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025020167 df_game_rows=300
_apply_intervals: game 2025020186 rows_in_game=288 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020186 df_game_rows=288
_apply_intervals: game 2025020203 rows_in_game=243 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025020203 df_game_rows=243
_apply_intervals: game 2025020219 rows_in_game=229 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025020219 df_game_rows=229
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020287 rows_in_game=281 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020287 df_game_rows=281
_apply_intervals: game 2025020302 rows_in_game=281 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020302 df_game_rows=281
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=16 team_for_game=BUF
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020366 rows_in_game=226 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025020366 df_game_rows=226
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020399 rows_in_game=271 parsed_intervals=17 team_for_game=BUF
_apply_intervals: game 2025020399 df_game_rows=271
_apply_intervals: game 2025020408 rows_in_game=239 parsed_intervals=14 team_for_game=BUF
_apply_intervals: game 2025020408 df_game_rows=239
_apply_intervals: game 2025020423 rows_in_game=287 parsed_intervals=12 team_for_game=BUF
_apply_intervals: game 2025020423 df_game_rows=287
Filtered season dataframe to 1114 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479359, 'team': 'BUF'} team='BUF'
DEBUG: xgs_map df_filtered unique teams: [ 7 5 3 21 17 10 29 6 15 68 19 12 22 20 16 1 30 52 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479359, 'team': 'BUF'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=BUF condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479359, 'team': 'BUF'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/BUF/8479359_map.png
players: Saved stats to analysis/players/20252026/BUF/player_stats.csv
players: Scatter plot includes 25 players (min_games=5)
players: Saved scatter plot to analysis/players/20252026/BUF/player_scatter.png
players: Analysis complete.
Processing CAR (Plotting)...
Generating maps for 2 players (skipped 23 up-to-date).
players: Starting analysis. Scope=season, Team=CAR, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025010091 from data/20252026/shifts/shifts_2025010091.pkl
INFO:root:Loaded cached shifts for game 2025020055 from data/20252026/shifts/shifts_2025020055.pkl
INFO:root:Loaded cached shifts for game 2025020086 from data/20252026/shifts/shifts_2025020086.pkl
INFO:root:Loaded cached shifts for game 2025020097 from data/20252026/shifts/shifts_2025020097.pkl
INFO:root:Loaded cached shifts for game 2025020121 from data/20252026/shifts/shifts_2025020121.pkl
INFO:root:Loaded cached shifts for game 2025020138 from data/20252026/shifts/shifts_2025020138.pkl
INFO:root:Loaded cached shifts for game 2025020171 from data/20252026/shifts/shifts_2025020171.pkl
INFO:root:Loaded cached shifts for game 2025020206 from data/20252026/shifts/shifts_2025020206.pkl
INFO:root:Loaded cached shifts for game 2025020222 from data/20252026/shifts/shifts_2025020222.pkl
INFO:root:Loaded cached shifts for game 2025020246 from data/20252026/shifts/shifts_2025020246.pkl
INFO:root:Loaded cached shifts for game 2025020259 from data/20252026/shifts/shifts_2025020259.pkl
INFO:root:Loaded cached shifts for game 2025020279 from data/20252026/shifts/shifts_2025020279.pkl
INFO:root:Loaded cached shifts for game 2025020289 from data/20252026/shifts/shifts_2025020289.pkl
INFO:root:Loaded cached shifts for game 2025020317 from data/20252026/shifts/shifts_2025020317.pkl
INFO:root:Loaded cached shifts for game 2025020333 from data/20252026/shifts/shifts_2025020333.pkl
INFO:root:Loaded cached shifts for game 2025020431 from data/20252026/shifts/shifts_2025020431.pkl
players: Ensuring xG predictions...
players: Found 28 players for team CAR
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 28 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 6063
_apply_intervals: intervals per_game count=21
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=25 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=30 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=7 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1174 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476422, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 28 54 21 25 2 6 3 30 7 10 15 23 22 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476422, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476422, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020014 from data/20252026/shifts/shifts_2025020014.pkl
INFO:root:Loaded cached shifts for game 2025020030 from data/20252026/shifts/shifts_2025020030.pkl
INFO:root:Loaded cached shifts for game 2025020155 from data/20252026/shifts/shifts_2025020155.pkl
INFO:root:Loaded cached shifts for game 2025020368 from data/20252026/shifts/shifts_2025020368.pkl
INFO:root:Loaded cached shifts for game 2025020387 from data/20252026/shifts/shifts_2025020387.pkl
INFO:root:Loaded cached shifts for game 2025020404 from data/20252026/shifts/shifts_2025020404.pkl
Saved plot to analysis/players/20252026/CAR/8476422_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7832
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1461 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482702, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [18 12 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482702, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482702, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8482702_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7832
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=12 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1384 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475791, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475791, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475791, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8475791_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5443
_apply_intervals: intervals per_game count=19
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=12 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 941 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477478, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 7 10 23 22 6 30 52 3 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477478, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477478, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8477478_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7832
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=12 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=2 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1448 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482093, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482093, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482093, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8482093_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5529
_apply_intervals: intervals per_game count=19
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=26 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=25 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=26 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=27 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=25 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=25 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=26 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=26 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
Filtered season dataframe to 1424 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480817, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 1 4 28 54 30 7 10 15 23 22 6 52 3 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480817, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480817, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8480817_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7559
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=27 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=26 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=25 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=25 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1835 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482100, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482100, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482100, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8482100_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6961
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=12 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=12 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1304 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473533, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473533, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473533, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8473533_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7832
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=11 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1503 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480830, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [18 12 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480830, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480830, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8480830_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4210
_apply_intervals: intervals per_game count=14
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=12 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=11 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=12 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=11 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
Filtered season dataframe to 635 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480829, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [ 1 12 4 21 25 54 2 6 3 30 7 10 15 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480829, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480829, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8480829_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4544
_apply_intervals: intervals per_game count=16
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=11 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=11 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 702 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476873, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 28 25 2 6 3 30 22 7 52 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476873, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476873, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8476873_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2587
_apply_intervals: intervals per_game count=9
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=31 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=9 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
Filtered season dataframe to 515 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484428, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 54 21 25 2 6 3 7 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484428, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484428, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8484428_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7832
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=27 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=28 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=25 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=25 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=29 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=31 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=27 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=27 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=26 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 2021 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480336, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480336, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480336, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8480336_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7832
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=12 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1544 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478427, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478427, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478427, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8478427_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7250
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1350 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482809, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [18 12 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482809, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482809, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8482809_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5808
_apply_intervals: intervals per_game count=20
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=25 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=26 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=27 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=25 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1356 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482911, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [21 12 25 54 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482911, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482911, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8482911_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5183
_apply_intervals: intervals per_game count=18
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=9 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=31 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=26 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=25 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=25 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1199 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476906, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 15 23 22 6 30 52 7 3 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476906, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476906, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8476906_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5792
_apply_intervals: intervals per_game count=20
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=25 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=26 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=27 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=26 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=5 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=23 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=24 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=21 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1389 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478970, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 52 7 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478970, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478970, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8478970_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2303
_apply_intervals: intervals per_game count=8
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=8 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=7 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=4 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=5 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=8 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=8 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=7 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
Filtered season dataframe to 1496 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475883, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [ 4 12 54 6 30 15 7 3] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475883, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475883, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8475883_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1758
_apply_intervals: intervals per_game count=6
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=11 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
Filtered season dataframe to 298 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484203, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 25 54 2 6 3 30] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484203, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484203, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8484203_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7832
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=12 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=12 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1360 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477940, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477940, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477940, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8477940_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7832
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=12 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020155 rows_in_game=299 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020155 df_game_rows=299
_apply_intervals: game 2025020171 rows_in_game=321 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020171 df_game_rows=321
_apply_intervals: game 2025020181 rows_in_game=241 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020181 df_game_rows=241
_apply_intervals: game 2025020206 rows_in_game=268 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020206 df_game_rows=268
_apply_intervals: game 2025020222 rows_in_game=304 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020222 df_game_rows=304
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=22 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020246 rows_in_game=284 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020246 df_game_rows=284
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=20 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020333 rows_in_game=273 parsed_intervals=19 team_for_game=CAR
_apply_intervals: game 2025020333 df_game_rows=273
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=17 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=16 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 1470 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476921, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 25 2 6 3 30 7 10 15 23 22 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476921, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476921, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8476921_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5517
_apply_intervals: intervals per_game count=19
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=10 team_for_game=CAR
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020030 rows_in_game=315 parsed_intervals=11 team_for_game=CAR
_apply_intervals: game 2025020030 df_game_rows=315
_apply_intervals: game 2025020055 rows_in_game=285 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020055 df_game_rows=285
_apply_intervals: game 2025020070 rows_in_game=291 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=CAR
_apply_intervals: game 2025020097 rows_in_game=264 parsed_intervals=11 team_for_game=CAR
_apply_intervals: game 2025020097 df_game_rows=264
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=10 team_for_game=CAR
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020238 rows_in_game=307 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020238 df_game_rows=307
_apply_intervals: game 2025020259 rows_in_game=296 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020259 df_game_rows=296
_apply_intervals: game 2025020279 rows_in_game=288 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020279 df_game_rows=288
_apply_intervals: game 2025020289 rows_in_game=282 parsed_intervals=10 team_for_game=CAR
_apply_intervals: game 2025020289 df_game_rows=282
_apply_intervals: game 2025020301 rows_in_game=309 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020301 df_game_rows=309
_apply_intervals: game 2025020317 rows_in_game=274 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020317 df_game_rows=274
_apply_intervals: game 2025020347 rows_in_game=284 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020347 df_game_rows=284
_apply_intervals: game 2025020368 rows_in_game=308 parsed_intervals=18 team_for_game=CAR
_apply_intervals: game 2025020368 df_game_rows=308
_apply_intervals: game 2025020387 rows_in_game=279 parsed_intervals=15 team_for_game=CAR
_apply_intervals: game 2025020387 df_game_rows=279
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=14 team_for_game=CAR
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020431 rows_in_game=272 parsed_intervals=13 team_for_game=CAR
_apply_intervals: game 2025020431 df_game_rows=272
Filtered season dataframe to 800 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480762, 'team': 'CAR'} team='CAR'
DEBUG: xgs_map df_filtered unique teams: [12 18 1 4 28 54 21 7 15 23 22 6 30 3 52 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480762, 'team': 'CAR'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CAR condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480762, 'team': 'CAR'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CAR/8480762_map.png
players: Saved stats to analysis/players/20252026/CAR/player_stats.csv
players: Scatter plot includes 23 players (min_games=5)
players: Saved scatter plot to analysis/players/20252026/CAR/player_scatter.png
players: Analysis complete.
Processing CBJ (Plotting)...
Generating maps for 3 players (skipped 21 up-to-date).
players: Starting analysis. Scope=season, Team=CBJ, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025010093 from data/20252026/shifts/shifts_2025010093.pkl
INFO:root:Loaded cached shifts for game 2025020045 from data/20252026/shifts/shifts_2025020045.pkl
INFO:root:Loaded cached shifts for game 2025020067 from data/20252026/shifts/shifts_2025020067.pkl
INFO:root:Loaded cached shifts for game 2025020082 from data/20252026/shifts/shifts_2025020082.pkl
INFO:root:Loaded cached shifts for game 2025020106 from data/20252026/shifts/shifts_2025020106.pkl
INFO:root:Loaded cached shifts for game 2025020166 from data/20252026/shifts/shifts_2025020166.pkl
INFO:root:Loaded cached shifts for game 2025020189 from data/20252026/shifts/shifts_2025020189.pkl
INFO:root:Loaded cached shifts for game 2025020215 from data/20252026/shifts/shifts_2025020215.pkl
INFO:root:Loaded cached shifts for game 2025020241 from data/20252026/shifts/shifts_2025020241.pkl
INFO:root:Loaded cached shifts for game 2025020254 from data/20252026/shifts/shifts_2025020254.pkl
INFO:root:Loaded cached shifts for game 2025020274 from data/20252026/shifts/shifts_2025020274.pkl
INFO:root:Loaded cached shifts for game 2025020290 from data/20252026/shifts/shifts_2025020290.pkl
INFO:root:Loaded cached shifts for game 2025020305 from data/20252026/shifts/shifts_2025020305.pkl
INFO:root:Loaded cached shifts for game 2025020311 from data/20252026/shifts/shifts_2025020311.pkl
INFO:root:Loaded cached shifts for game 2025020319 from data/20252026/shifts/shifts_2025020319.pkl
INFO:root:Loaded cached shifts for game 2025020335 from data/20252026/shifts/shifts_2025020335.pkl
INFO:root:Loaded cached shifts for game 2025020356 from data/20252026/shifts/shifts_2025020356.pkl
players: Ensuring xG predictions...
players: Found 27 players for team CBJ
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 27 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 4950
_apply_intervals: intervals per_game count=18
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=8 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=8 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=11 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
Filtered season dataframe to 787 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481161, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [15 29 1 25 7 10 19 20 23 22 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481161, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481161, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020016 from data/20252026/shifts/shifts_2025020016.pkl
INFO:root:Loaded cached shifts for game 2025020134 from data/20252026/shifts/shifts_2025020134.pkl
INFO:root:Loaded cached shifts for game 2025020195 from data/20252026/shifts/shifts_2025020195.pkl
INFO:root:Loaded cached shifts for game 2025020264 from data/20252026/shifts/shifts_2025020264.pkl
INFO:root:Loaded cached shifts for game 2025020369 from data/20252026/shifts/shifts_2025020369.pkl
INFO:root:Loaded cached shifts for game 2025020388 from data/20252026/shifts/shifts_2025020388.pkl
INFO:root:Loaded cached shifts for game 2025020406 from data/20252026/shifts/shifts_2025020406.pkl
INFO:root:Loaded cached shifts for game 2025020432 from data/20252026/shifts/shifts_2025020432.pkl
Saved plot to analysis/players/20252026/CBJ/8481161_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7219
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=24 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 1561 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479371, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [15 29 18 1 25 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479371, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479371, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020033 from data/20252026/shifts/shifts_2025020033.pkl
INFO:root:Loaded cached shifts for game 2025020125 from data/20252026/shifts/shifts_2025020125.pkl
Saved plot to analysis/players/20252026/CBJ/8479371_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4791
_apply_intervals: intervals per_game count=17
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=10 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=7 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
Filtered season dataframe to 898 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476432, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476432, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476432, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8476432_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7525
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 1567 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482705, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 55 22 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482705, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482705, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8482705_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7517
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=23 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=25 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=25 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=24 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 1848 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483485, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483485, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483485, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8483485_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7804
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=24 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=25 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=26 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=24 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=23 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=23 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=27 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=25 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=26 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=26 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=24 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=27 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=23 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=23 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=26 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=24 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=23 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 2275 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478500, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478500, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478500, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8478500_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6946
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 1183 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480806, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480806, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480806, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8480806_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6085
_apply_intervals: intervals per_game count=22
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=11 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=9 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 840 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482475, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 25 5 7 10 19 23 22 55 3 8 17 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482475, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482475, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8482475_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7804
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 1499 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481716, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481716, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481716, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8481716_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6677
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=9 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=6 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
Filtered season dataframe to 1219 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479671, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479671, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479671, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8479671_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7537
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 1499 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477497, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 18 30 1 25 15 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477497, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477497, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8477497_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1659
_apply_intervals: intervals per_game count=6
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 246 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476867, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 17 15 10 5 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476867, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476867, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8476867_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7804
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=23 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 1725 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484166, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484166, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484166, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8484166_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4700
_apply_intervals: intervals per_game count=17
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=11 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=11 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=10 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
Filtered season dataframe to 611 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479944, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 5 2 20 22 8 52 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479944, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479944, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8479944_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7541
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=11 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=23 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 1456 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475745, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475745, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475745, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8475745_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7244
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=11 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 1170 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482660, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 19 2 20 23 22 3 8 52 10 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482660, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482660, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8482660_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2226
_apply_intervals: intervals per_game count=8
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=10 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=12 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=10 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 293 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483432, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [23 29 22 55 3 52 10 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483432, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483432, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8483432_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6125
_apply_intervals: intervals per_game count=22
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=3 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=13 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=15 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 1217 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477425, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 7 10 19 2 20 23 55 22 3 8 52 17 5] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477425, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477425, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8477425_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7482
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=24 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=25 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=24 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=23 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=23 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 1925 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476923, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476923, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476923, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8476923_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7537
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=26 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=23 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=25 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=25 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=25 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=26 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=26 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=21 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=24 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=23 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020356 rows_in_game=236 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020356 df_game_rows=236
_apply_intervals: game 2025020369 rows_in_game=280 parsed_intervals=25 team_for_game=CBJ
_apply_intervals: game 2025020369 df_game_rows=280
_apply_intervals: game 2025020388 rows_in_game=264 parsed_intervals=24 team_for_game=CBJ
_apply_intervals: game 2025020388 df_game_rows=264
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=22 team_for_game=CBJ
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=23 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 2351 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478460, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 18 30 1 25 15 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478460, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478460, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8478460_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6735
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010093 rows_in_game=267 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025010093 df_game_rows=267
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020033 rows_in_game=319 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020033 df_game_rows=319
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020082 rows_in_game=297 parsed_intervals=0 team_for_game=CBJ
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020125 rows_in_game=266 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020125 df_game_rows=266
_apply_intervals: game 2025020134 rows_in_game=296 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020134 df_game_rows=296
_apply_intervals: game 2025020152 rows_in_game=284 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020152 df_game_rows=284
_apply_intervals: game 2025020166 rows_in_game=286 parsed_intervals=14 team_for_game=CBJ
_apply_intervals: game 2025020166 df_game_rows=286
_apply_intervals: game 2025020189 rows_in_game=269 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020189 df_game_rows=269
_apply_intervals: game 2025020195 rows_in_game=263 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020195 df_game_rows=263
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020241 rows_in_game=265 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020241 df_game_rows=265
_apply_intervals: game 2025020254 rows_in_game=279 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020254 df_game_rows=279
_apply_intervals: game 2025020264 rows_in_game=274 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020264 df_game_rows=274
_apply_intervals: game 2025020274 rows_in_game=251 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020274 df_game_rows=251
_apply_intervals: game 2025020290 rows_in_game=322 parsed_intervals=19 team_for_game=CBJ
_apply_intervals: game 2025020290 df_game_rows=322
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=16 team_for_game=CBJ
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020311 rows_in_game=252 parsed_intervals=17 team_for_game=CBJ
_apply_intervals: game 2025020311 df_game_rows=252
_apply_intervals: game 2025020319 rows_in_game=289 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020319 df_game_rows=289
_apply_intervals: game 2025020335 rows_in_game=296 parsed_intervals=18 team_for_game=CBJ
_apply_intervals: game 2025020335 df_game_rows=296
_apply_intervals: game 2025020432 rows_in_game=294 parsed_intervals=20 team_for_game=CBJ
_apply_intervals: game 2025020432 df_game_rows=294
Filtered season dataframe to 1464 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480893, 'team': 'CBJ'} team='CBJ'
DEBUG: xgs_map df_filtered unique teams: [29 15 18 30 1 25 5 7 10 19 2 20 23 22 55 3 8 52 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480893, 'team': 'CBJ'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CBJ condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480893, 'team': 'CBJ'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CBJ/8480893_map.png
players: Saved stats to analysis/players/20252026/CBJ/player_stats.csv
players: Scatter plot includes 21 players (min_games=5)
players: Saved scatter plot to analysis/players/20252026/CBJ/player_scatter.png
players: Analysis complete.
Processing CGY (Plotting)...
Generating maps for 1 players (skipped 24 up-to-date).
players: Starting analysis. Scope=season, Team=CGY, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025010077 from data/20252026/shifts/shifts_2025010077.pkl
INFO:root:Loaded cached shifts for game 2025020006 from data/20252026/shifts/shifts_2025020006.pkl
INFO:root:Loaded cached shifts for game 2025020019 from data/20252026/shifts/shifts_2025020019.pkl
INFO:root:Loaded cached shifts for game 2025020023 from data/20252026/shifts/shifts_2025020023.pkl
INFO:root:Loaded cached shifts for game 2025020060 from data/20252026/shifts/shifts_2025020060.pkl
INFO:root:Loaded cached shifts for game 2025020183 from data/20252026/shifts/shifts_2025020183.pkl
INFO:root:Loaded cached shifts for game 2025020196 from data/20252026/shifts/shifts_2025020196.pkl
INFO:root:Loaded cached shifts for game 2025020229 from data/20252026/shifts/shifts_2025020229.pkl
INFO:root:Loaded cached shifts for game 2025020249 from data/20252026/shifts/shifts_2025020249.pkl
INFO:root:Loaded cached shifts for game 2025020260 from data/20252026/shifts/shifts_2025020260.pkl
INFO:root:Loaded cached shifts for game 2025020276 from data/20252026/shifts/shifts_2025020276.pkl
INFO:root:Loaded cached shifts for game 2025020294 from data/20252026/shifts/shifts_2025020294.pkl
INFO:root:Loaded cached shifts for game 2025020312 from data/20252026/shifts/shifts_2025020312.pkl
INFO:root:Loaded cached shifts for game 2025020345 from data/20252026/shifts/shifts_2025020345.pkl
INFO:root:Loaded cached shifts for game 2025020352 from data/20252026/shifts/shifts_2025020352.pkl
INFO:root:Loaded cached shifts for game 2025020362 from data/20252026/shifts/shifts_2025020362.pkl
INFO:root:Loaded cached shifts for game 2025020380 from data/20252026/shifts/shifts_2025020380.pkl
INFO:root:Loaded cached shifts for game 2025020416 from data/20252026/shifts/shifts_2025020416.pkl
players: Ensuring xG predictions...
players: Found 30 players for team CGY
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 30 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 5633
_apply_intervals: intervals per_game count=20
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=10 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=22 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
Filtered season dataframe to 1076 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481167, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 22 19 18 4 29 16 30 28 52 7 25 14 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481167, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481167, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020433 from data/20252026/shifts/shifts_2025020433.pkl
Saved plot to analysis/players/20252026/CGY/8481167_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3305
_apply_intervals: intervals per_game count=7
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=10 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=10 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 271 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481556, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 7 25 23 13 12 18 30] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481556, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481556, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025010089 from data/20252026/shifts/shifts_2025010089.pkl
INFO:root:Loaded cached shifts for game 2025020053 from data/20252026/shifts/shifts_2025020053.pkl
INFO:root:Loaded cached shifts for game 2025020087 from data/20252026/shifts/shifts_2025020087.pkl
INFO:root:Loaded cached shifts for game 2025020096 from data/20252026/shifts/shifts_2025020096.pkl
INFO:root:Loaded cached shifts for game 2025020110 from data/20252026/shifts/shifts_2025020110.pkl
INFO:root:Loaded cached shifts for game 2025020126 from data/20252026/shifts/shifts_2025020126.pkl
INFO:root:Loaded cached shifts for game 2025020146 from data/20252026/shifts/shifts_2025020146.pkl
INFO:root:Loaded cached shifts for game 2025020168 from data/20252026/shifts/shifts_2025020168.pkl
Saved plot to analysis/players/20252026/CGY/8481556_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8190
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=10 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=8 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=10 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=9 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=8 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 1203 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483609, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 52 22 23 19 54 8 3 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483609, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483609, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020151 from data/20252026/shifts/shifts_2025020151.pkl
Saved plot to analysis/players/20252026/CGY/8483609_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8165
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 1442 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482074, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 4 29 16 30 28 7 25 14 13 12 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482074, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482074, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8482074_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8450
_apply_intervals: intervals per_game count=30
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 1446 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480028, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480028, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480028, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8480028_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8731
_apply_intervals: intervals per_game count=31
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 1729 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480797, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480797, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480797, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8480797_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2249
_apply_intervals: intervals per_game count=8
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=7 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=3 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=6 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=5 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=7 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=4 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=8 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
Filtered season dataframe to 1538 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481692, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [22 20 54 4 16 19 28 52 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481692, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481692, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8481692_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3656
_apply_intervals: intervals per_game count=13
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=6 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
Filtered season dataframe to 609 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484768, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 52 19 54 8 3 10 4 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484768, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484768, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8484768_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8731
_apply_intervals: intervals per_game count=31
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=22 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=28 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=28 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=31 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=22 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=33 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=28 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=30 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=26 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=26 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=30 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=29 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=26 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=26 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 2374 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477346, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477346, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477346, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8477346_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8731
_apply_intervals: intervals per_game count=31
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=22 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=25 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=26 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 1925 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475172, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475172, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475172, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8475172_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8731
_apply_intervals: intervals per_game count=31
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=25 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=22 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=25 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=22 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 1669 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474150, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474150, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474150, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8474150_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6691
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=22 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=22 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 1381 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476456, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 54 52 8 3 10 9 18 4 29 16 30 19 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476456, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476456, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8476456_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2893
_apply_intervals: intervals per_game count=10
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=9 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
Filtered season dataframe to 352 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477993, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [52 20 22 23 8 3 10 9 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477993, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477993, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8477993_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4538
_apply_intervals: intervals per_game count=16
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=26 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=28 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=30 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=22 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 1114 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479402, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 52 22 23 54 8 3 10 9 18 28 16 12 30] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479402, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479402, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8479402_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7630
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=10 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=10 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 1341 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481068, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 3 10 9 18 4 29 16 30 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481068, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481068, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8481068_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8474
_apply_intervals: intervals per_game count=30
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=29 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=26 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=30 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=25 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=29 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=25 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=32 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=29 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=28 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=26 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=33 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=29 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=25 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=34 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=29 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 2186 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478397, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 52 22 23 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478397, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478397, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8478397_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4434
_apply_intervals: intervals per_game count=16
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
Filtered season dataframe to 722 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484180, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [19 20 54 52 8 3 10 9 18 4 29 16 30 28] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484180, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484180, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8484180_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6512
_apply_intervals: intervals per_game count=23
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=10 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=9 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=10 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=10 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=8 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 943 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479066, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [52 20 22 23 54 8 3 10 9 18 4 16 30 19 28 14 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479066, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479066, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8479066_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8173
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=30 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=28 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=28 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=26 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=30 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=26 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=25 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=29 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=30 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=25 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=32 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=28 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 2099 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480860, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 30 28 16 7 25 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480860, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480860, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8480860_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8731
_apply_intervals: intervals per_game count=31
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=22 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=26 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 1728 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476399, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476399, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476399, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8476399_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7598
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=28 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=25 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=28 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020146 rows_in_game=281 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020146 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=26 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=29 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=29 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=22 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=22 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 1701 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477810, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 3 10 9 18 4 29 16 30 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477810, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477810, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8477810_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4183
_apply_intervals: intervals per_game count=15
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=30 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=25 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=23 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=28 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=27 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=26 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=25 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=28 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=29 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=24 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 1127 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482165, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [29 20 16 30 19 28 52 7 25 23 14 13 12 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482165, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482165, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8482165_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8450
_apply_intervals: intervals per_game count=30
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
_apply_intervals: game 2025020060 rows_in_game=280 parsed_intervals=0 team_for_game=CGY
_apply_intervals: game 2025020087 rows_in_game=268 parsed_intervals=12 team_for_game=CGY
_apply_intervals: game 2025020087 df_game_rows=268
_apply_intervals: game 2025020096 rows_in_game=279 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020096 df_game_rows=279
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020126 rows_in_game=281 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020126 df_game_rows=281
_apply_intervals: game 2025020151 rows_in_game=284 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020151 df_game_rows=284
_apply_intervals: game 2025020168 rows_in_game=300 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020168 df_game_rows=300
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=11 team_for_game=CGY
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020196 rows_in_game=260 parsed_intervals=18 team_for_game=CGY
_apply_intervals: game 2025020196 df_game_rows=260
_apply_intervals: game 2025020215 rows_in_game=287 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020215 df_game_rows=287
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020249 rows_in_game=279 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020249 df_game_rows=279
_apply_intervals: game 2025020260 rows_in_game=266 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020260 df_game_rows=266
_apply_intervals: game 2025020276 rows_in_game=243 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020276 df_game_rows=243
_apply_intervals: game 2025020294 rows_in_game=304 parsed_intervals=22 team_for_game=CGY
_apply_intervals: game 2025020294 df_game_rows=304
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=20 team_for_game=CGY
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020316 rows_in_game=271 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020316 df_game_rows=271
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020352 rows_in_game=262 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025020352 df_game_rows=262
_apply_intervals: game 2025020362 rows_in_game=275 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020362 df_game_rows=275
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020404 rows_in_game=259 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020404 df_game_rows=259
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=CGY
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020433 rows_in_game=265 parsed_intervals=17 team_for_game=CGY
_apply_intervals: game 2025020433 df_game_rows=265
Filtered season dataframe to 1586 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482679, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54 8 10 9 18 4 29 16 30 28 7 25 14 13 12] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482679, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482679, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8482679_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1774
_apply_intervals: intervals per_game count=6
_apply_intervals: game 2025010077 rows_in_game=257 parsed_intervals=19 team_for_game=CGY
_apply_intervals: game 2025010077 df_game_rows=257
_apply_intervals: game 2025010089 rows_in_game=319 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025010089 df_game_rows=319
_apply_intervals: game 2025020006 rows_in_game=325 parsed_intervals=21 team_for_game=CGY
_apply_intervals: game 2025020006 df_game_rows=325
_apply_intervals: game 2025020019 rows_in_game=284 parsed_intervals=16 team_for_game=CGY
_apply_intervals: game 2025020019 df_game_rows=284
_apply_intervals: game 2025020023 rows_in_game=302 parsed_intervals=14 team_for_game=CGY
_apply_intervals: game 2025020023 df_game_rows=302
_apply_intervals: game 2025020053 rows_in_game=287 parsed_intervals=15 team_for_game=CGY
_apply_intervals: game 2025020053 df_game_rows=287
Filtered season dataframe to 326 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484860, 'team': 'CGY'} team='CGY'
DEBUG: xgs_map df_filtered unique teams: [20 23 52 22 19 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484860, 'team': 'CGY'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CGY condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484860, 'team': 'CGY'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CGY/8484860_map.png
players: Saved stats to analysis/players/20252026/CGY/player_stats.csv
players: Scatter plot includes 24 players (min_games=5)
players: Saved scatter plot to analysis/players/20252026/CGY/player_scatter.png
players: Analysis complete.
Processing CHI (Plotting)...
Generating maps for 1 players (skipped 22 up-to-date).
players: Starting analysis. Scope=season, Team=CHI, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025020001 from data/20252026/shifts/shifts_2025020001.pkl
INFO:root:Loaded cached shifts for game 2025020031 from data/20252026/shifts/shifts_2025020031.pkl
INFO:root:Loaded cached shifts for game 2025020048 from data/20252026/shifts/shifts_2025020048.pkl
INFO:root:Loaded cached shifts for game 2025020059 from data/20252026/shifts/shifts_2025020059.pkl
INFO:root:Loaded cached shifts for game 2025020074 from data/20252026/shifts/shifts_2025020074.pkl
INFO:root:Loaded cached shifts for game 2025020113 from data/20252026/shifts/shifts_2025020113.pkl
INFO:root:Loaded cached shifts for game 2025020144 from data/20252026/shifts/shifts_2025020144.pkl
INFO:root:Loaded cached shifts for game 2025020160 from data/20252026/shifts/shifts_2025020160.pkl
INFO:root:Loaded cached shifts for game 2025020174 from data/20252026/shifts/shifts_2025020174.pkl
INFO:root:Loaded cached shifts for game 2025020192 from data/20252026/shifts/shifts_2025020192.pkl
INFO:root:Loaded cached shifts for game 2025020202 from data/20252026/shifts/shifts_2025020202.pkl
INFO:root:Loaded cached shifts for game 2025020216 from data/20252026/shifts/shifts_2025020216.pkl
INFO:root:Loaded cached shifts for game 2025020244 from data/20252026/shifts/shifts_2025020244.pkl
INFO:root:Loaded cached shifts for game 2025020268 from data/20252026/shifts/shifts_2025020268.pkl
INFO:root:Loaded cached shifts for game 2025020291 from data/20252026/shifts/shifts_2025020291.pkl
INFO:root:Loaded cached shifts for game 2025020325 from data/20252026/shifts/shifts_2025020325.pkl
INFO:root:Loaded cached shifts for game 2025020350 from data/20252026/shifts/shifts_2025020350.pkl
INFO:root:Loaded cached shifts for game 2025020370 from data/20252026/shifts/shifts_2025020370.pkl
INFO:root:Loaded cached shifts for game 2025020389 from data/20252026/shifts/shifts_2025020389.pkl
INFO:root:Loaded cached shifts for game 2025020419 from data/20252026/shifts/shifts_2025020419.pkl
INFO:root:Loaded cached shifts for game 2025020435 from data/20252026/shifts/shifts_2025020435.pkl
players: Ensuring xG predictions...
players: Found 35 players for team CHI
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 35 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 7376
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=26 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=26 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=27 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1835 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482176, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [13 16 6 8 68 24 14 26 9 52 22 55 23 20 17 1 10 7 21 30 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482176, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482176, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025010086 from data/20252026/shifts/shifts_2025010086.pkl
Saved plot to analysis/players/20252026/CHI/8482176_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6278
_apply_intervals: intervals per_game count=23
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=6 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1345 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477444, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 26 9 52 22 55 23 20 17 10 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477444, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477444, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8477444_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3822
_apply_intervals: intervals per_game count=14
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=25 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 655 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477450, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [16 30 13 68 26 9 52 21 18 24 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477450, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477450, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025010097 from data/20252026/shifts/shifts_2025010097.pkl
Saved plot to analysis/players/20252026/CHI/8477450_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7105
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010097 rows_in_game=291 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025010097 df_game_rows=291
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=10 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1276 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481806, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [19 16 6 8 68 24 14 26 9 52 22 23 20 17 1 10 55 7 21 30 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481806, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481806, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8481806_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7088
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=11 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=9 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=9 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=11 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1218 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482703, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [16 30 13 6 8 68 24 14 26 9 52 22 55 20 17 1 10 7 21 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482703, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482703, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8482703_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6835
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=26 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1746 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481568, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [16 6 8 24 14 26 9 52 22 55 23 20 17 1 10 7 21 30 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481568, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481568, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8481568_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7372
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1576 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477987, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 26 9 52 22 55 23 20 17 1 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477987, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477987, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8477987_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7078
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=6 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1386 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483493, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 26 9 52 22 55 23 20 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483493, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483493, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8483493_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6778
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1461 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477479, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 9 52 22 55 23 20 17 1 7 21 18 54 26] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477479, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477479, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8477479_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7333
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1452 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484783, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 68 24 14 26 9 52 22 55 23 20 17 1 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484783, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484783, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8484783_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7621
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1887 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484144, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 26 9 52 22 55 23 20 17 1 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484144, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484144, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8484144_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7345
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=26 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=10 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1582 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483506, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 26 9 52 22 55 23 20 17 1 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483506, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483506, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8483506_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7362
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1223 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476473, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [16 30 13 6 8 68 24 14 26 9 52 22 23 20 17 1 10 55 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476473, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476473, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8476473_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5229
_apply_intervals: intervals per_game count=7
_apply_intervals: game 2025010097 rows_in_game=291 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025010097 df_game_rows=291
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=8 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
Filtered season dataframe to 237 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482117, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [16 19 8 24 14 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482117, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482117, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8482117_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4312
_apply_intervals: intervals per_game count=16
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=11 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=9 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
Filtered season dataframe to 697 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473422, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [16 30 13 6 8 68 14 26 9 52 22 55 23 20 17 1 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473422, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473422, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8473422_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7621
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1503 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476882, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 26 9 52 22 55 23 20 17 1 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476882, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476882, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8476882_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7059
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1449 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481624, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [16 30 13 6 8 68 24 14 26 22 55 23 20 17 1 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481624, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481624, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8481624_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2233
_apply_intervals: intervals per_game count=8
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=9 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025010097 rows_in_game=291 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025010097 df_game_rows=291
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=9 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=11 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
Filtered season dataframe to 340 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478043, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [16 30 19 13 8 1 10 20 7] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478043, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478043, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8478043_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7621
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=25 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020048 rows_in_game=238 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020048 df_game_rows=238
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=23 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1687 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476891, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [30 16 13 6 8 68 24 14 26 9 52 22 55 23 20 17 1 10 7 21 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476891, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476891, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8476891_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4106
_apply_intervals: intervals per_game count=15
_apply_intervals: game 2025010097 rows_in_game=291 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025010097 df_game_rows=291
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020244 rows_in_game=278 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020244 df_game_rows=278
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=15 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=11 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 829 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484197, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [19 16 55 23 20 17 1 10 21 30 18 24 54 26] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484197, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484197, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8484197_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2739
_apply_intervals: intervals per_game count=10
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=6 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=5 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=4 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=6 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=6 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=6 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=7 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=6 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=7 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 2153 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481519, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [ 8 16 9 22 1 10 55 21 30 54 26] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481519, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481519, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8481519_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6863
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025010097 rows_in_game=291 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025010097 df_game_rows=291
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020008 rows_in_game=283 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020008 df_game_rows=283
_apply_intervals: game 2025020059 rows_in_game=261 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020074 rows_in_game=299 parsed_intervals=0 team_for_game=CHI
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=11 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020160 rows_in_game=307 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020160 df_game_rows=307
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=24 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020202 rows_in_game=259 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020202 df_game_rows=259
_apply_intervals: game 2025020216 rows_in_game=261 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020216 df_game_rows=261
_apply_intervals: game 2025020229 rows_in_game=283 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020229 df_game_rows=283
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020325 rows_in_game=236 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020325 df_game_rows=236
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020370 rows_in_game=287 parsed_intervals=21 team_for_game=CHI
_apply_intervals: game 2025020370 df_game_rows=287
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=19 team_for_game=CHI
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020403 rows_in_game=249 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020403 df_game_rows=249
_apply_intervals: game 2025020419 rows_in_game=272 parsed_intervals=22 team_for_game=CHI
_apply_intervals: game 2025020419 df_game_rows=272
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=20 team_for_game=CHI
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1367 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483450, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [16 19 13 6 24 14 26 9 52 22 55 23 20 1 10 7 21 30 18 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483450, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483450, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8483450_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2964
_apply_intervals: intervals per_game count=11
_apply_intervals: game 2025010086 rows_in_game=245 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025010086 df_game_rows=245
_apply_intervals: game 2025010097 rows_in_game=291 parsed_intervals=12 team_for_game=CHI
_apply_intervals: game 2025010097 df_game_rows=291
_apply_intervals: game 2025020091 rows_in_game=296 parsed_intervals=8 team_for_game=CHI
_apply_intervals: game 2025020091 df_game_rows=296
_apply_intervals: game 2025020113 rows_in_game=265 parsed_intervals=17 team_for_game=CHI
_apply_intervals: game 2025020113 df_game_rows=265
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=18 team_for_game=CHI
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020174 rows_in_game=255 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020174 df_game_rows=255
_apply_intervals: game 2025020192 rows_in_game=244 parsed_intervals=13 team_for_game=CHI
_apply_intervals: game 2025020192 df_game_rows=244
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=14 team_for_game=CHI
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020291 rows_in_game=276 parsed_intervals=11 team_for_game=CHI
_apply_intervals: game 2025020291 df_game_rows=276
_apply_intervals: game 2025020312 rows_in_game=305 parsed_intervals=10 team_for_game=CHI
_apply_intervals: game 2025020312 df_game_rows=305
_apply_intervals: game 2025020331 rows_in_game=260 parsed_intervals=16 team_for_game=CHI
_apply_intervals: game 2025020331 df_game_rows=260
Filtered season dataframe to 456 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482172, 'team': 'CHI'} team='CHI'
DEBUG: xgs_map df_filtered unique teams: [16 30 19 24 14 26 52 22 1 10 20 7] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482172, 'team': 'CHI'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=CHI condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482172, 'team': 'CHI'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/CHI/8482172_map.png
players: Saved stats to analysis/players/20252026/CHI/player_stats.csv
players: Scatter plot includes 23 players (min_games=5)
players: Saved scatter plot to analysis/players/20252026/CHI/player_scatter.png
players: Analysis complete.
Processing COL (Plotting)...
Generating maps for 2 players (skipped 22 up-to-date).
players: Starting analysis. Scope=season, Team=COL, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025010074 from data/20252026/shifts/shifts_2025010074.pkl
INFO:root:Loaded cached shifts for game 2025010092 from data/20252026/shifts/shifts_2025010092.pkl
INFO:root:Loaded cached shifts for game 2025020107 from data/20252026/shifts/shifts_2025020107.pkl
INFO:root:Loaded cached shifts for game 2025020140 from data/20252026/shifts/shifts_2025020140.pkl
INFO:root:Loaded cached shifts for game 2025020161 from data/20252026/shifts/shifts_2025020161.pkl
INFO:root:Loaded cached shifts for game 2025020178 from data/20252026/shifts/shifts_2025020178.pkl
INFO:root:Loaded cached shifts for game 2025020184 from data/20252026/shifts/shifts_2025020184.pkl
INFO:root:Loaded cached shifts for game 2025020240 from data/20252026/shifts/shifts_2025020240.pkl
INFO:root:Loaded cached shifts for game 2025020250 from data/20252026/shifts/shifts_2025020250.pkl
INFO:root:Loaded cached shifts for game 2025020326 from data/20252026/shifts/shifts_2025020326.pkl
INFO:root:Loaded cached shifts for game 2025020343 from data/20252026/shifts/shifts_2025020343.pkl
INFO:root:Loaded cached shifts for game 2025020371 from data/20252026/shifts/shifts_2025020371.pkl
INFO:root:Loaded cached shifts for game 2025020392 from data/20252026/shifts/shifts_2025020392.pkl
INFO:root:Loaded cached shifts for game 2025020417 from data/20252026/shifts/shifts_2025020417.pkl
INFO:root:Loaded cached shifts for game 2025020430 from data/20252026/shifts/shifts_2025020430.pkl
players: Ensuring xG predictions...
players: Found 32 players for team COL
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 33 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 5924
_apply_intervals: intervals per_game count=21
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=8 team_for_game=COL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=9 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=5 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=9 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=10 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=6 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=8 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=7 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=10 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=10 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=9 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=9 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=11 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=7 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 687 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482947, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [21 54 25 68 12 6 1 28 22 23 24 7 3 18 16 8 2] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482947, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482947, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020003 from data/20252026/shifts/shifts_2025020003.pkl
INFO:root:Loaded cached shifts for game 2025020018 from data/20252026/shifts/shifts_2025020018.pkl
INFO:root:Loaded cached shifts for game 2025020034 from data/20252026/shifts/shifts_2025020034.pkl
INFO:root:Loaded cached shifts for game 2025020209 from data/20252026/shifts/shifts_2025020209.pkl
INFO:root:Loaded cached shifts for game 2025020300 from data/20252026/shifts/shifts_2025020300.pkl
INFO:root:Loaded cached shifts for game 2025020378 from data/20252026/shifts/shifts_2025020378.pkl
Saved plot to analysis/players/20252026/COL/8482947_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7942
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=27 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=25 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 1831 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476312, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [21 54 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476312, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476312, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8476312_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2249
_apply_intervals: intervals per_game count=8
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=9 team_for_game=COL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=11 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=13 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
Filtered season dataframe to 385 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482072, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [54 21 25 1 14 22 23 24] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482072, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482072, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8482072_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8228
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=8 team_for_game=COL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=7 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=11 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=13 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 1254 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478109, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [54 21 25 26 68 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478109, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478109, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8478109_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1956
_apply_intervals: intervals per_game count=7
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=9 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=9 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=8 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=6 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=3 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=3 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
Filtered season dataframe to 1276 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475809, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [21 68 7 54 16 30 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475809, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475809, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8475809_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8228
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=10 team_for_game=COL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 1809 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484258, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [21 54 25 26 68 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484258, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484258, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8484258_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7942
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 1730 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477476, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477476, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477476, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8477476_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7673
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=13 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 1416 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479525, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [26 21 68 25 7 12 6 1 54 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479525, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479525, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8479525_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3682
_apply_intervals: intervals per_game count=13
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=11 team_for_game=COL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 912 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479398, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [25 21 26 68 7 2 3 18 16 28 30 8 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479398, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479398, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8479398_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7942
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=27 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=13 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 1861 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480039, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480039, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480039, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8480039_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7942
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 1475 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476455, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [21 54 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476455, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476455, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8476455_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2583
_apply_intervals: intervals per_game count=9
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=13 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=11 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
Filtered season dataframe to 369 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482470, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [21 25 7 68 12 6 54 28] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482470, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482470, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8482470_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7942
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=27 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 1855 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477492, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477492, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477492, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8477492_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5143
_apply_intervals: intervals per_game count=18
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=COL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=13 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=9 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=10 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=11 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=5 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=7 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=3 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
Filtered season dataframe to 617 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484149, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [54 21 25 26 7 12 6 1 22 23 24 2 3] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484149, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484149, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8484149_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5711
_apply_intervals: intervals per_game count=20
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=13 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 1013 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477501, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [21 54 26 68 25 7 12 6 1 28 14 22 23 24 2] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477501, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477501, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8477501_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7664
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=COL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=13 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=10 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=10 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=8 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=13 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=13 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 1165 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480448, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [21 54 25 26 68 7 12 6 1 28 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480448, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480448, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8480448_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7676
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=14 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 1344 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480835, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 22 23 24 3 18 16 30 8 2] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480835, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480835, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8480835_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7942
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=27 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=29 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=25 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=26 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=25 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 2073 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480069, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480069, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480069, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8480069_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7942
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=25 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=28 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=25 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=27 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=29 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=25 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 1915 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8470613, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8470613, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8470613, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8470613_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7683
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=25 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=29 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=31 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=25 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=26 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=27 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=25 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=26 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=26 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 2111 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478038, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [54 21 26 68 25 7 12 6 1 28 14 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478038, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478038, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8478038_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2833
_apply_intervals: intervals per_game count=10
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=COL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=13 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=12 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 396 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481641, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [21 54 25 26 68 28 8 23 2] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481641, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481641, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8481641_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7942
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010074 rows_in_game=269 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025010074 df_game_rows=269
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020018 rows_in_game=318 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020018 df_game_rows=318
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020039 rows_in_game=292 parsed_intervals=11 team_for_game=COL
_apply_intervals: game 2025020039 df_game_rows=292
_apply_intervals: game 2025020067 rows_in_game=267 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020085 rows_in_game=287 parsed_intervals=0 team_for_game=COL
_apply_intervals: game 2025020107 rows_in_game=289 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020107 df_game_rows=289
_apply_intervals: game 2025020121 rows_in_game=335 parsed_intervals=16 team_for_game=COL
_apply_intervals: game 2025020121 df_game_rows=335
_apply_intervals: game 2025020128 rows_in_game=286 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020128 df_game_rows=286
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=23 team_for_game=COL
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020178 rows_in_game=271 parsed_intervals=24 team_for_game=COL
_apply_intervals: game 2025020178 df_game_rows=271
_apply_intervals: game 2025020184 rows_in_game=271 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020184 df_game_rows=271
_apply_intervals: game 2025020209 rows_in_game=275 parsed_intervals=20 team_for_game=COL
_apply_intervals: game 2025020209 df_game_rows=275
_apply_intervals: game 2025020240 rows_in_game=259 parsed_intervals=15 team_for_game=COL
_apply_intervals: game 2025020240 df_game_rows=259
_apply_intervals: game 2025020250 rows_in_game=278 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020250 df_game_rows=278
_apply_intervals: game 2025020262 rows_in_game=296 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020262 df_game_rows=296
_apply_intervals: game 2025020275 rows_in_game=291 parsed_intervals=17 team_for_game=COL
_apply_intervals: game 2025020275 df_game_rows=291
_apply_intervals: game 2025020300 rows_in_game=266 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020300 df_game_rows=266
_apply_intervals: game 2025020326 rows_in_game=282 parsed_intervals=22 team_for_game=COL
_apply_intervals: game 2025020326 df_game_rows=282
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020350 rows_in_game=266 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020350 df_game_rows=266
_apply_intervals: game 2025020371 rows_in_game=284 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020371 df_game_rows=284
_apply_intervals: game 2025020378 rows_in_game=294 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020378 df_game_rows=294
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=19 team_for_game=COL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020417 rows_in_game=248 parsed_intervals=21 team_for_game=COL
_apply_intervals: game 2025020417 df_game_rows=248
_apply_intervals: game 2025020430 rows_in_game=292 parsed_intervals=18 team_for_game=COL
_apply_intervals: game 2025020430 df_game_rows=292
Filtered season dataframe to 1607 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475754, 'team': 'COL'} team='COL'
DEBUG: xgs_map df_filtered unique teams: [21 54 26 68 25 7 12 6 1 28 14 22 23 24 2 3 18 16 30 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475754, 'team': 'COL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=COL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475754, 'team': 'COL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/COL/8475754_map.png
players: Saved stats to analysis/players/20252026/COL/player_stats.csv
players: Scatter plot includes 22 players (min_games=5)
players: Saved scatter plot to analysis/players/20252026/COL/player_scatter.png
players: Analysis complete.
Processing DAL (Plotting)...
Generating maps for 1 players (skipped 23 up-to-date).
players: Starting analysis. Scope=season, Team=DAL, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025020310 from data/20252026/shifts/shifts_2025020310.pkl
INFO:root:Loaded cached shifts for game 2025020328 from data/20252026/shifts/shifts_2025020328.pkl
INFO:root:Loaded cached shifts for game 2025020360 from data/20252026/shifts/shifts_2025020360.pkl
INFO:root:Loaded cached shifts for game 2025020375 from data/20252026/shifts/shifts_2025020375.pkl
INFO:root:Loaded cached shifts for game 2025020390 from data/20252026/shifts/shifts_2025020390.pkl
INFO:root:Loaded cached shifts for game 2025020405 from data/20252026/shifts/shifts_2025020405.pkl
INFO:root:Loaded cached shifts for game 2025020415 from data/20252026/shifts/shifts_2025020415.pkl
INFO:root:Loaded cached shifts for game 2025020421 from data/20252026/shifts/shifts_2025020421.pkl
players: Ensuring xG predictions...
players: Found 27 players for team DAL
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 27 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 2305
_apply_intervals: intervals per_game count=9
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 417 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473994, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [ 2 25 23 20 22 55 68 9 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473994, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473994, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020159 from data/20252026/shifts/shifts_2025020159.pkl
INFO:root:Loaded cached shifts for game 2025020169 from data/20252026/shifts/shifts_2025020169.pkl
INFO:root:Loaded cached shifts for game 2025020207 from data/20252026/shifts/shifts_2025020207.pkl
INFO:root:Loaded cached shifts for game 2025020293 from data/20252026/shifts/shifts_2025020293.pkl
Saved plot to analysis/players/20252026/DAL/8473994_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3361
_apply_intervals: intervals per_game count=13
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=7 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=10 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=10 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 575 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478476, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [25 15 14 22 4 2 23 20 55 68 9 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478476, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478476, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020068 from data/20252026/shifts/shifts_2025020068.pkl
INFO:root:Loaded cached shifts for game 2025020083 from data/20252026/shifts/shifts_2025020083.pkl
INFO:root:Loaded cached shifts for game 2025020119 from data/20252026/shifts/shifts_2025020119.pkl
INFO:root:Loaded cached shifts for game 2025020145 from data/20252026/shifts/shifts_2025020145.pkl
INFO:root:Loaded cached shifts for game 2025020185 from data/20252026/shifts/shifts_2025020185.pkl
INFO:root:Loaded cached shifts for game 2025020233 from data/20252026/shifts/shifts_2025020233.pkl
INFO:root:Loaded cached shifts for game 2025020248 from data/20252026/shifts/shifts_2025020248.pkl
INFO:root:Loaded cached shifts for game 2025020258 from data/20252026/shifts/shifts_2025020258.pkl
Saved plot to analysis/players/20252026/DAL/8478476_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4008
_apply_intervals: intervals per_game count=15
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=5 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=11 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=11 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=11 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=11 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
Filtered season dataframe to 550 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477454, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [21 25 29 26 12 18 15 14 13 22 24 55 9] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477454, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477454, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020017 from data/20252026/shifts/shifts_2025020017.pkl
INFO:root:Loaded cached shifts for game 2025020054 from data/20252026/shifts/shifts_2025020054.pkl
INFO:root:Loaded cached shifts for game 2025020270 from data/20252026/shifts/shifts_2025020270.pkl
Saved plot to analysis/players/20252026/DAL/8477454_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7145
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=4 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=2 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
Filtered season dataframe to 1338 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475794, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [21 25 52 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475794, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475794, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8475794_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7690
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=10 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1698 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480027, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [25 21 52 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480027, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480027, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8480027_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7404
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=26 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1886 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480036, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [52 25 21 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480036, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480036, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8480036_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5130
_apply_intervals: intervals per_game count=19
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=25 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
Filtered season dataframe to 1270 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481581, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [21 25 52 30 29 26 12 18 15 14 13 22 24 55 9 8] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481581, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481581, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8481581_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7690
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=8 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1690 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482740, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [25 21 52 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482740, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482740, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8482740_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5114
_apply_intervals: intervals per_game count=19
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=8 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=25 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=25 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1153 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480950, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [25 21 52 29 26 12 18 15 14 13 22 24 55 9 4 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480950, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480950, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8480950_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3825
_apply_intervals: intervals per_game count=14
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=5 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=5 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=11 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=11 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=10 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 435 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479414, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [21 25 52 29 26 12 15 14 22 4 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479414, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479414, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8479414_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3889
_apply_intervals: intervals per_game count=15
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
Filtered season dataframe to 639 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480840, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [18 25 13 22 24 55 9 8 4 2 23 20 68 3] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480840, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480840, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8480840_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1282
_apply_intervals: intervals per_game count=5
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 254 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481609, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [23 25 55 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481609, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481609, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8481609_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7145
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=25 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1661 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478420, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [52 25 21 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478420, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478420, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8478420_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6584
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=11 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=10 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=9 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 888 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476889, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [21 25 52 30 29 26 15 14 13 24 55 9 8 4 2 23 20 22 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476889, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476889, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8476889_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6698
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=5 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=11 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=11 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=10 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=11 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 986 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484829, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [21 25 52 30 26 12 18 15 14 13 22 24 55 8 4 2 23 20 68 9 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484829, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484829, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8484829_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6337
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=9 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=25 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
Filtered season dataframe to 1375 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483425, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [25 21 52 30 29 26 18 15 14 22 24 55 9 8 4 2 23 20 68] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483425, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483425, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8483425_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7404
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1293 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482145, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [52 25 21 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482145, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482145, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8482145_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7690
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=9 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=25 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=25 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1892 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476902, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [25 21 52 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476902, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476902, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8476902_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7106
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=6 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=28 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1623 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475755, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [25 21 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 23 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475755, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475755, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8475755_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1914
_apply_intervals: intervals per_game count=7
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=8 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=6 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=11 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=8 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=6 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=11 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
Filtered season dataframe to 1262 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479979, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [25 21 52 12 24 18 9 22] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479979, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479979, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8479979_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1421
_apply_intervals: intervals per_game count=5
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
Filtered season dataframe to 254 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480878, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [21 25 52 30] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480878, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480878, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8480878_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6066
_apply_intervals: intervals per_game count=23
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=24 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=23 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1122 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478449, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [52 25 21 30 29 26 12 24 18 55 9 8 4 2 23 20 22 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478449, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478449, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8478449_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6350
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=7 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=10 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=10 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=10 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=11 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020328 rows_in_game=274 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020328 df_game_rows=274
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=12 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 923 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476278, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [21 25 29 26 12 18 15 14 13 22 24 55 8 4 2 23 20 68 9 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476278, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476278, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8476278_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7416
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010092 rows_in_game=286 parsed_intervals=6 team_for_game=DAL
_apply_intervals: game 2025010092 df_game_rows=286
_apply_intervals: game 2025020017 rows_in_game=299 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020017 df_game_rows=299
_apply_intervals: game 2025020034 rows_in_game=285 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020034 df_game_rows=285
_apply_intervals: game 2025020054 rows_in_game=283 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020054 df_game_rows=283
_apply_intervals: game 2025020068 rows_in_game=268 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020083 rows_in_game=245 parsed_intervals=0 team_for_game=DAL
_apply_intervals: game 2025020106 rows_in_game=274 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020106 df_game_rows=274
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020138 rows_in_game=325 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020138 df_game_rows=325
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020159 rows_in_game=267 parsed_intervals=22 team_for_game=DAL
_apply_intervals: game 2025020159 df_game_rows=267
_apply_intervals: game 2025020169 rows_in_game=269 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020169 df_game_rows=269
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020207 rows_in_game=265 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020207 df_game_rows=265
_apply_intervals: game 2025020224 rows_in_game=264 parsed_intervals=19 team_for_game=DAL
_apply_intervals: game 2025020224 df_game_rows=264
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=21 team_for_game=DAL
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020248 rows_in_game=259 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020248 df_game_rows=259
_apply_intervals: game 2025020258 rows_in_game=241 parsed_intervals=20 team_for_game=DAL
_apply_intervals: game 2025020258 df_game_rows=241
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020293 rows_in_game=255 parsed_intervals=18 team_for_game=DAL
_apply_intervals: game 2025020293 df_game_rows=255
_apply_intervals: game 2025020310 rows_in_game=229 parsed_intervals=15 team_for_game=DAL
_apply_intervals: game 2025020310 df_game_rows=229
_apply_intervals: game 2025020345 rows_in_game=281 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020345 df_game_rows=281
_apply_intervals: game 2025020360 rows_in_game=259 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020360 df_game_rows=259
_apply_intervals: game 2025020375 rows_in_game=232 parsed_intervals=13 team_for_game=DAL
_apply_intervals: game 2025020375 df_game_rows=232
_apply_intervals: game 2025020390 rows_in_game=241 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020390 df_game_rows=241
_apply_intervals: game 2025020405 rows_in_game=254 parsed_intervals=14 team_for_game=DAL
_apply_intervals: game 2025020405 df_game_rows=254
_apply_intervals: game 2025020415 rows_in_game=275 parsed_intervals=17 team_for_game=DAL
_apply_intervals: game 2025020415 df_game_rows=275
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=16 team_for_game=DAL
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1398 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479351, 'team': 'DAL'} team='DAL'
DEBUG: xgs_map df_filtered unique teams: [21 25 52 30 29 26 12 18 15 14 13 22 24 55 9 8 4 2 20 68 3 1] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479351, 'team': 'DAL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=DAL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479351, 'team': 'DAL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/DAL/8479351_map.png
players: Saved stats to analysis/players/20252026/DAL/player_stats.csv
players: Scatter plot includes 24 players (min_games=5)
players: Saved scatter plot to analysis/players/20252026/DAL/player_scatter.png
players: Analysis complete.
Processing DET (Plotting)...
All players up to date for DET.
Processing EDM (Plotting)...
All players up to date for EDM.
Processing FLA (Plotting)...
Generating maps for 1 players (skipped 23 up-to-date).
players: Starting analysis. Scope=season, Team=FLA, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025010080 from data/20252026/shifts/shifts_2025010080.pkl
INFO:root:Loaded cached shifts for game 2025010099 from data/20252026/shifts/shifts_2025010099.pkl
INFO:root:Loaded cached shifts for game 2025020027 from data/20252026/shifts/shifts_2025020027.pkl
INFO:root:Loaded cached shifts for game 2025020044 from data/20252026/shifts/shifts_2025020044.pkl
INFO:root:Loaded cached shifts for game 2025020058 from data/20252026/shifts/shifts_2025020058.pkl
INFO:root:Loaded cached shifts for game 2025020064 from data/20252026/shifts/shifts_2025020064.pkl
INFO:root:Loaded cached shifts for game 2025020114 from data/20252026/shifts/shifts_2025020114.pkl
INFO:root:Loaded cached shifts for game 2025020130 from data/20252026/shifts/shifts_2025020130.pkl
INFO:root:Loaded cached shifts for game 2025020226 from data/20252026/shifts/shifts_2025020226.pkl
INFO:root:Loaded cached shifts for game 2025020243 from data/20252026/shifts/shifts_2025020243.pkl
INFO:root:Loaded cached shifts for game 2025020255 from data/20252026/shifts/shifts_2025020255.pkl
INFO:root:Loaded cached shifts for game 2025020283 from data/20252026/shifts/shifts_2025020283.pkl
INFO:root:Loaded cached shifts for game 2025020303 from data/20252026/shifts/shifts_2025020303.pkl
INFO:root:Loaded cached shifts for game 2025020323 from data/20252026/shifts/shifts_2025020323.pkl
INFO:root:Loaded cached shifts for game 2025020338 from data/20252026/shifts/shifts_2025020338.pkl
INFO:root:Loaded cached shifts for game 2025020357 from data/20252026/shifts/shifts_2025020357.pkl
INFO:root:Loaded cached shifts for game 2025020363 from data/20252026/shifts/shifts_2025020363.pkl
INFO:root:Loaded cached shifts for game 2025020413 from data/20252026/shifts/shifts_2025020413.pkl
players: Ensuring xG predictions...
players: Found 27 players for team FLA
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 27 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 7497
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025010099 df_game_rows=372
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=11 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1178 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480003, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [13 14 16 9 4 6 5 54 24 25 26 28 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480003, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480003, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020012 from data/20252026/shifts/shifts_2025020012.pkl
INFO:root:Loaded cached shifts for game 2025020273 from data/20252026/shifts/shifts_2025020273.pkl
Saved plot to analysis/players/20252026/FLA/8480003_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8063
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025010099 df_game_rows=372
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=28 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=31 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=28 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=26 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=26 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1900 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478859, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478859, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478859, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8478859_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8063
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=5 team_for_game=FLA
_apply_intervals: game 2025010099 df_game_rows=372
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1308 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482713, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [13 14 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482713, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482713, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8482713_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3744
_apply_intervals: intervals per_game count=13
_apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=7 team_for_game=FLA
_apply_intervals: game 2025010099 df_game_rows=372
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=11 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=11 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 441 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479393, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [14 13 24 25 26 23 1 22 18 4 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479393, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479393, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8479393_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7769
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025010099 df_game_rows=372
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
Filtered season dataframe to 1461 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473507, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [13 14 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473507, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473507, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8473507_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1919
_apply_intervals: intervals per_game count=7
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=6 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=7 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=6 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=7 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=5 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=5 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
Filtered season dataframe to 1535 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475683, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [13 4 9 5 24 26 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475683, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475683, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8475683_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8063
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=4 team_for_game=FLA
_apply_intervals: game 2025010099 df_game_rows=372
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=26 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=28 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=26 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=27 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=26 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1799 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477495, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477495, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477495, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8477495_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5786
_apply_intervals: intervals per_game count=20
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=7 team_for_game=FLA
_apply_intervals: game 2025010099 df_game_rows=372
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
Filtered season dataframe to 914 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480185, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480185, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480185, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8480185_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7691
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=6 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1354 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482113, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482113, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482113, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8482113_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7394
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1372 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473419, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 25 24 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473419, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8473419, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8473419_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 8063
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025010099 df_game_rows=372
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1467 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478542, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478542, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478542, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8478542_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4942
_apply_intervals: intervals per_game count=17
_apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025010099 df_game_rows=372
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 862 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484304, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [13 14 9 4 6 5 54 24 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484304, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484304, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8484304_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3641
_apply_intervals: intervals per_game count=10
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 646 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482131, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [13 9 25 24 26 28 54 15 14 22 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482131, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482131, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8482131_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5451
_apply_intervals: intervals per_game count=19
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=11 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=11 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=9 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=8 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=9 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=9 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=11 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 669 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479316, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [16 13 4 9 6 5 24 54 15 14 23 1 22 20 10 18] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479316, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479316, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8479316_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6837
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=11 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=9 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=11 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=11 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=15 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1104 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478421, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [16 13 4 9 6 5 54 24 25 28 15 14 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478421, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478421, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8478421_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7796
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=1 team_for_game=FLA
_apply_intervals: game 2025010099 df_game_rows=372
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1508 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477409, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477409, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477409, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8477409_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7382
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=28 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=26 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=26 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1796 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478055, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478055, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478055, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8478055_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1408
_apply_intervals: intervals per_game count=5
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=11 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=11 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
Filtered season dataframe to 190 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483433, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [13 1 22 4 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483433, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483433, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8483433_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7382
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=9 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=26 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1662 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477932, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477932, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477932, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8477932_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7691
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=23 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1436 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477933, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477933, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477933, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8477933_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2672
_apply_intervals: intervals per_game count=9
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=11 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=10 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=8 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=9 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
Filtered season dataframe to 310 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479981, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [13 14 16 4 9 6 5 54] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479981, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479981, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8479981_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7691
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010080 rows_in_game=328 parsed_intervals=8 team_for_game=FLA
_apply_intervals: game 2025010080 df_game_rows=328
_apply_intervals: game 2025020001 rows_in_game=303 parsed_intervals=25 team_for_game=FLA
_apply_intervals: game 2025020001 df_game_rows=303
_apply_intervals: game 2025020012 rows_in_game=275 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020012 df_game_rows=275
_apply_intervals: game 2025020027 rows_in_game=291 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020027 df_game_rows=291
_apply_intervals: game 2025020044 rows_in_game=248 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020044 df_game_rows=248
_apply_intervals: game 2025020058 rows_in_game=283 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020076 rows_in_game=326 parsed_intervals=0 team_for_game=FLA
_apply_intervals: game 2025020103 rows_in_game=297 parsed_intervals=24 team_for_game=FLA
_apply_intervals: game 2025020103 df_game_rows=297
_apply_intervals: game 2025020114 rows_in_game=289 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020114 df_game_rows=289
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=16 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=17 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020283 rows_in_game=286 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020283 df_game_rows=286
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=20 team_for_game=FLA
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020338 rows_in_game=309 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020338 df_game_rows=309
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=19 team_for_game=FLA
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020363 rows_in_game=265 parsed_intervals=21 team_for_game=FLA
_apply_intervals: game 2025020363 df_game_rows=265
_apply_intervals: game 2025020380 rows_in_game=322 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020380 df_game_rows=322
_apply_intervals: game 2025020413 rows_in_game=267 parsed_intervals=22 team_for_game=FLA
_apply_intervals: game 2025020413 df_game_rows=267
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=FLA
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1445 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477935, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [14 13 16 4 9 6 5 54 24 25 26 28 15 23 1 22 18 20 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477935, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477935, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8477935_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2905
_apply_intervals: intervals per_game count=9
_apply_intervals: game 2025010099 rows_in_game=372 parsed_intervals=7 team_for_game=FLA
_apply_intervals: game 2025010099 df_game_rows=372
_apply_intervals: game 2025020130 rows_in_game=281 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020130 df_game_rows=281
_apply_intervals: game 2025020153 rows_in_game=297 parsed_intervals=7 team_for_game=FLA
_apply_intervals: game 2025020153 df_game_rows=297
_apply_intervals: game 2025020185 rows_in_game=261 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020185 df_game_rows=261
_apply_intervals: game 2025020211 rows_in_game=294 parsed_intervals=13 team_for_game=FLA
_apply_intervals: game 2025020211 df_game_rows=294
_apply_intervals: game 2025020243 rows_in_game=277 parsed_intervals=12 team_for_game=FLA
_apply_intervals: game 2025020243 df_game_rows=277
_apply_intervals: game 2025020255 rows_in_game=262 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020255 df_game_rows=262
_apply_intervals: game 2025020273 rows_in_game=291 parsed_intervals=14 team_for_game=FLA
_apply_intervals: game 2025020273 df_game_rows=291
_apply_intervals: game 2025020303 rows_in_game=301 parsed_intervals=4 team_for_game=FLA
_apply_intervals: game 2025020303 df_game_rows=301
Filtered season dataframe to 305 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481655, 'team': 'FLA'} team='FLA'
DEBUG: xgs_map df_filtered unique teams: [14 13 54 24 25 28 15 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481655, 'team': 'FLA'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=FLA condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481655, 'team': 'FLA'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/FLA/8481655_map.png
players: Saved stats to analysis/players/20252026/FLA/player_stats.csv
players: Scatter plot includes 23 players (min_games=5)
players: Saved scatter plot to analysis/players/20252026/FLA/player_scatter.png
players: Analysis complete.
Processing LAK (Plotting)...
Generating maps for 1 players (skipped 21 up-to-date).
players: Starting analysis. Scope=season, Team=LAK, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025010081 from data/20252026/shifts/shifts_2025010081.pkl
INFO:root:Loaded cached shifts for game 2025020007 from data/20252026/shifts/shifts_2025020007.pkl
INFO:root:Loaded cached shifts for game 2025020022 from data/20252026/shifts/shifts_2025020022.pkl
INFO:root:Loaded cached shifts for game 2025020047 from data/20252026/shifts/shifts_2025020047.pkl
INFO:root:Loaded cached shifts for game 2025020137 from data/20252026/shifts/shifts_2025020137.pkl
INFO:root:Loaded cached shifts for game 2025020165 from data/20252026/shifts/shifts_2025020165.pkl
INFO:root:Loaded cached shifts for game 2025020177 from data/20252026/shifts/shifts_2025020177.pkl
INFO:root:Loaded cached shifts for game 2025020191 from data/20252026/shifts/shifts_2025020191.pkl
INFO:root:Loaded cached shifts for game 2025020212 from data/20252026/shifts/shifts_2025020212.pkl
INFO:root:Loaded cached shifts for game 2025020245 from data/20252026/shifts/shifts_2025020245.pkl
INFO:root:Loaded cached shifts for game 2025020269 from data/20252026/shifts/shifts_2025020269.pkl
INFO:root:Loaded cached shifts for game 2025020286 from data/20252026/shifts/shifts_2025020286.pkl
INFO:root:Loaded cached shifts for game 2025020304 from data/20252026/shifts/shifts_2025020304.pkl
INFO:root:Loaded cached shifts for game 2025020330 from data/20252026/shifts/shifts_2025020330.pkl
INFO:root:Loaded cached shifts for game 2025020359 from data/20252026/shifts/shifts_2025020359.pkl
INFO:root:Loaded cached shifts for game 2025020401 from data/20252026/shifts/shifts_2025020401.pkl
INFO:root:Loaded cached shifts for game 2025020420 from data/20252026/shifts/shifts_2025020420.pkl
players: Ensuring xG predictions...
players: Found 23 players for team LAK
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 23 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 6487
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1283 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8471685, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 18 16 28 17 1 13 5 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8471685, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8471685, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020071 from data/20252026/shifts/shifts_2025020071.pkl
INFO:root:Loaded cached shifts for game 2025020104 from data/20252026/shifts/shifts_2025020104.pkl
INFO:root:Loaded cached shifts for game 2025020257 from data/20252026/shifts/shifts_2025020257.pkl
Saved plot to analysis/players/20252026/LAK/8471685_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7799
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1514 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477960, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477960, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477960, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8477960_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7567
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=24 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=23 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=24 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=27 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=30 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1701 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476441, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476441, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476441, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8476441_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7799
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=23 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=24 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=23 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=25 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=23 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1872 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482730, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482730, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482730, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8482730_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5478
_apply_intervals: intervals per_game count=20
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 982 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477998, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 5 8 10 9 15 28 6 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477998, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477998, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8477998_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1303
_apply_intervals: intervals per_game count=5
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=7 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=6 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=5 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=10 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=7 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
Filtered season dataframe to 966 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475311, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [52 26 19 1 9] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475311, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475311, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8475311_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7561
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=10 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=11 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1269 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476469, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [68 26 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476469, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476469, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8476469_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7266
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1387 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479675, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 25 18 16 28 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479675, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479675, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8479675_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2094
_apply_intervals: intervals per_game count=8
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=2 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
Filtered season dataframe to 372 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479421, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 17 15 28 6 9 24] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479421, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479421, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8479421_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7571
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1510 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476479, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476479, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476479, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8476479_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5982
_apply_intervals: intervals per_game count=22
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=24 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=24 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=26 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=24 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=23 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=24 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1516 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474563, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474563, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474563, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8474563_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7799
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=23 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=23 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=24 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=26 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=23 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1929 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475208, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475208, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475208, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8475208_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7799
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1580 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482124, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482124, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482124, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8482124_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7799
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=23 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=24 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1816 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476879, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476879, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476879, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8476879_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5475
_apply_intervals: intervals per_game count=21
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=11 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=11 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=10 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=10 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=9 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=11 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 945 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8470621, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 19 25 18 16 28 17 1 52 13 5 8 10 9 15 6 24 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8470621, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8470621, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8470621_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7061
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=11 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=9 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=4 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=9 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1088 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483808, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 6 9 23 15] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483808, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483808, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8483808_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5157
_apply_intervals: intervals per_game count=19
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=9 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=10 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=9 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=11 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=8 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=10 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=11 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=11 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=11 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=8 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
Filtered season dataframe to 648 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482408, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 24 21 54 52 30 25 28 17 1 13 10 9 15 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482408, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482408, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8482408_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7512
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1499 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482155, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 24 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482155, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482155, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8482155_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7799
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=11 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020359 rows_in_game=230 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020359 df_game_rows=230
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1628 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477942, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477942, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477942, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8477942_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6397
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=10 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=13 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=14 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020165 rows_in_game=233 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020165 df_game_rows=233
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020245 rows_in_game=256 parsed_intervals=8 team_for_game=LAK
_apply_intervals: game 2025020245 df_game_rows=256
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=10 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=12 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=10 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=8 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=11 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 982 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481532, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [68 26 24 21 52 30 19 25 18 16 28 17 1 13 5 8 10 9 15] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481532, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481532, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8481532_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7080
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010081 rows_in_game=232 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025010081 df_game_rows=232
_apply_intervals: game 2025010090 rows_in_game=287 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025010090 df_game_rows=287
_apply_intervals: game 2025020003 rows_in_game=307 parsed_intervals=16 team_for_game=LAK
_apply_intervals: game 2025020003 df_game_rows=307
_apply_intervals: game 2025020007 rows_in_game=322 parsed_intervals=23 team_for_game=LAK
_apply_intervals: game 2025020007 df_game_rows=322
_apply_intervals: game 2025020022 rows_in_game=317 parsed_intervals=15 team_for_game=LAK
_apply_intervals: game 2025020022 df_game_rows=317
_apply_intervals: game 2025020047 rows_in_game=313 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020047 df_game_rows=313
_apply_intervals: game 2025020071 rows_in_game=228 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020086 rows_in_game=318 parsed_intervals=0 team_for_game=LAK
_apply_intervals: game 2025020104 rows_in_game=241 parsed_intervals=24 team_for_game=LAK
_apply_intervals: game 2025020104 df_game_rows=241
_apply_intervals: game 2025020119 rows_in_game=268 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020119 df_game_rows=268
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=24 team_for_game=LAK
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020144 rows_in_game=262 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020144 df_game_rows=262
_apply_intervals: game 2025020177 rows_in_game=292 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020177 df_game_rows=292
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020212 rows_in_game=238 parsed_intervals=17 team_for_game=LAK
_apply_intervals: game 2025020212 df_game_rows=238
_apply_intervals: game 2025020226 rows_in_game=243 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020226 df_game_rows=243
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020269 rows_in_game=261 parsed_intervals=23 team_for_game=LAK
_apply_intervals: game 2025020269 df_game_rows=261
_apply_intervals: game 2025020286 rows_in_game=231 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020286 df_game_rows=231
_apply_intervals: game 2025020304 rows_in_game=246 parsed_intervals=23 team_for_game=LAK
_apply_intervals: game 2025020304 df_game_rows=246
_apply_intervals: game 2025020330 rows_in_game=280 parsed_intervals=18 team_for_game=LAK
_apply_intervals: game 2025020330 df_game_rows=280
_apply_intervals: game 2025020334 rows_in_game=285 parsed_intervals=21 team_for_game=LAK
_apply_intervals: game 2025020334 df_game_rows=285
_apply_intervals: game 2025020384 rows_in_game=282 parsed_intervals=27 team_for_game=LAK
_apply_intervals: game 2025020384 df_game_rows=282
_apply_intervals: game 2025020401 rows_in_game=247 parsed_intervals=22 team_for_game=LAK
_apply_intervals: game 2025020401 df_game_rows=247
_apply_intervals: game 2025020420 rows_in_game=247 parsed_intervals=19 team_for_game=LAK
_apply_intervals: game 2025020420 df_game_rows=247
_apply_intervals: game 2025020435 rows_in_game=298 parsed_intervals=20 team_for_game=LAK
_apply_intervals: game 2025020435 df_game_rows=298
Filtered season dataframe to 1601 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479998, 'team': 'LAK'} team='LAK'
DEBUG: xgs_map df_filtered unique teams: [26 68 24 21 54 52 30 19 25 18 16 17 1 13 8 10 9 15 28 6 23] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479998, 'team': 'LAK'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=LAK condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479998, 'team': 'LAK'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/LAK/8479998_map.png
players: Saved stats to analysis/players/20252026/LAK/player_stats.csv
players: Scatter plot includes 21 players (min_games=5)
players: Saved scatter plot to analysis/players/20252026/LAK/player_scatter.png
players: Analysis complete.
Processing MIN (Plotting)...
All players up to date for MIN.
Processing MTL (Plotting)...
Generating maps for 2 players (skipped 22 up-to-date).
players: Starting analysis. Scope=season, Team=MTL, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025010096 from data/20252026/shifts/shifts_2025010096.pkl
INFO:root:Loaded cached shifts for game 2025020004 from data/20252026/shifts/shifts_2025020004.pkl
INFO:root:Loaded cached shifts for game 2025020010 from data/20252026/shifts/shifts_2025020010.pkl
INFO:root:Loaded cached shifts for game 2025020050 from data/20252026/shifts/shifts_2025020050.pkl
INFO:root:Loaded cached shifts for game 2025020062 from data/20252026/shifts/shifts_2025020062.pkl
INFO:root:Loaded cached shifts for game 2025020080 from data/20252026/shifts/shifts_2025020080.pkl
INFO:root:Loaded cached shifts for game 2025020122 from data/20252026/shifts/shifts_2025020122.pkl
INFO:root:Loaded cached shifts for game 2025020136 from data/20252026/shifts/shifts_2025020136.pkl
INFO:root:Loaded cached shifts for game 2025020164 from data/20252026/shifts/shifts_2025020164.pkl
INFO:root:Loaded cached shifts for game 2025020187 from data/20252026/shifts/shifts_2025020187.pkl
INFO:root:Loaded cached shifts for game 2025020204 from data/20252026/shifts/shifts_2025020204.pkl
INFO:root:Loaded cached shifts for game 2025020220 from data/20252026/shifts/shifts_2025020220.pkl
INFO:root:Loaded cached shifts for game 2025020235 from data/20252026/shifts/shifts_2025020235.pkl
INFO:root:Loaded cached shifts for game 2025020320 from data/20252026/shifts/shifts_2025020320.pkl
INFO:root:Loaded cached shifts for game 2025020337 from data/20252026/shifts/shifts_2025020337.pkl
INFO:root:Loaded cached shifts for game 2025020372 from data/20252026/shifts/shifts_2025020372.pkl
INFO:root:Loaded cached shifts for game 2025020383 from data/20252026/shifts/shifts_2025020383.pkl
INFO:root:Loaded cached shifts for game 2025020411 from data/20252026/shifts/shifts_2025020411.pkl
INFO:root:Loaded cached shifts for game 2025020422 from data/20252026/shifts/shifts_2025020422.pkl
players: Ensuring xG predictions...
players: Found 29 players for team MTL
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 29 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 7261
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=25 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=25 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=24 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=24 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=23 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=25 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=24 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=25 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=27 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1906 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483457, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 8 9 10 17 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483457, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483457, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8483457_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6752
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=24 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=23 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=24 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1558 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478851, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [10 8 17 16 55 7 20 22 23 9 4 1 68 26 25 6 29 15 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478851, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478851, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8478851_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7261
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1477 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481540, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 8 9 10 17 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481540, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481540, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8481540_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1455
_apply_intervals: intervals per_game count=5
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=10 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=10 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 219 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483728, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 6 8 29 15 10 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483728, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483728, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8483728_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7261
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1534 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480018, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 8 9 10 17 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480018, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480018, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8480018_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6484
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=11 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=11 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=10 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=11 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=10 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1182 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482964, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 17 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482964, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482964, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8482964_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1982
_apply_intervals: intervals per_game count=2
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
Filtered season dataframe to 77 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478104, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 8 9 10] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478104, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478104, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8478104_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1600
_apply_intervals: intervals per_game count=6
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=23 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
Filtered season dataframe to 402 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482087, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 8 9 10 17 16 55] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482087, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482087, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8482087_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5074
_apply_intervals: intervals per_game count=19
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=11 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=11 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=11 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 850 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480813, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 9 8 7 20 22 23 55 1 68 26 25 6 29 15 10 54 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480813, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480813, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8480813_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7006
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=9 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1218 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482737, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [10 8 17 16 55 7 20 22 23 9 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482737, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482737, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8482737_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1341
_apply_intervals: intervals per_game count=5
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
Filtered season dataframe to 222 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484403, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 8 9 10 68 54 21] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484403, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484403, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8484403_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6771
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=6 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1193 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478133, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478133, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478133, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8478133_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6138
_apply_intervals: intervals per_game count=23
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1146 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476981, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 17 16 55 7 20 22 23 4 1 68 26 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476981, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476981, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8476981_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5874
_apply_intervals: intervals per_game count=22
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=23 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=11 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1265 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481593, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 9 8 7 20 22 23 55 4 1 68 26 25 6 29 15 10 54 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481593, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481593, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8481593_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7261
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1454 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483515, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 8 9 10 17 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483515, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483515, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8483515_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7006
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1341 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475848, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475848, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475848, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8475848_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3170
_apply_intervals: intervals per_game count=4
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 242 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480074, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [54 8 21 9 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480074, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480074, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8480074_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6753
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=23 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=28 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=30 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=24 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=27 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=26 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=25 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=27 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=28 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=23 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=26 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1845 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476875, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 8 10 17 16 55 7 20 22 23 9 4 1 26 25 6 29 15 68 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476875, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476875, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8476875_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3951
_apply_intervals: intervals per_game count=15
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=11 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=6 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
Filtered season dataframe to 597 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481618, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [10 8 16 55 7 22 23 9 4 1 68 26 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481618, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481618, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8481618_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6458
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=10 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=10 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 998 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482775, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [10 8 17 16 7 20 23 55 9 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482775, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482775, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8482775_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7261
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=24 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=25 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=24 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=26 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=21 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=23 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=25 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=24 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=24 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=28 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=24 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1871 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480865, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 17 16 55 7 20 22 23 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480865, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480865, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8480865_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1600
_apply_intervals: intervals per_game count=6
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=10 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
Filtered season dataframe to 212 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479339, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 17 16 55] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479339, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479339, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8479339_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4260
_apply_intervals: intervals per_game count=16
_apply_intervals: game 2025010096 rows_in_game=255 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025010096 df_game_rows=255
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=19 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
Filtered season dataframe to 824 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481523, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [ 9 8 10 17 16 55 22 23 4 1 68 26 25 6] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481523, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481523, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8481523_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7006
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025020004 rows_in_game=279 parsed_intervals=20 team_for_game=MTL
_apply_intervals: game 2025020004 df_game_rows=279
_apply_intervals: game 2025020010 rows_in_game=255 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020010 df_game_rows=255
_apply_intervals: game 2025020031 rows_in_game=288 parsed_intervals=10 team_for_game=MTL
_apply_intervals: game 2025020031 df_game_rows=288
_apply_intervals: game 2025020050 rows_in_game=288 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020050 df_game_rows=288
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020080 rows_in_game=256 parsed_intervals=0 team_for_game=MTL
_apply_intervals: game 2025020095 rows_in_game=273 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020095 df_game_rows=273
_apply_intervals: game 2025020110 rows_in_game=275 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020110 df_game_rows=275
_apply_intervals: game 2025020122 rows_in_game=260 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020122 df_game_rows=260
_apply_intervals: game 2025020136 rows_in_game=270 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020136 df_game_rows=270
_apply_intervals: game 2025020164 rows_in_game=235 parsed_intervals=11 team_for_game=MTL
_apply_intervals: game 2025020164 df_game_rows=235
_apply_intervals: game 2025020187 rows_in_game=266 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020187 df_game_rows=266
_apply_intervals: game 2025020204 rows_in_game=299 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020204 df_game_rows=299
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020235 rows_in_game=253 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020235 df_game_rows=253
_apply_intervals: game 2025020257 rows_in_game=257 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020257 df_game_rows=257
_apply_intervals: game 2025020270 rows_in_game=255 parsed_intervals=13 team_for_game=MTL
_apply_intervals: game 2025020270 df_game_rows=255
_apply_intervals: game 2025020285 rows_in_game=328 parsed_intervals=11 team_for_game=MTL
_apply_intervals: game 2025020285 df_game_rows=328
_apply_intervals: game 2025020305 rows_in_game=240 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020305 df_game_rows=240
_apply_intervals: game 2025020320 rows_in_game=287 parsed_intervals=14 team_for_game=MTL
_apply_intervals: game 2025020320 df_game_rows=287
_apply_intervals: game 2025020337 rows_in_game=290 parsed_intervals=12 team_for_game=MTL
_apply_intervals: game 2025020337 df_game_rows=290
_apply_intervals: game 2025020372 rows_in_game=265 parsed_intervals=16 team_for_game=MTL
_apply_intervals: game 2025020372 df_game_rows=265
_apply_intervals: game 2025020383 rows_in_game=254 parsed_intervals=17 team_for_game=MTL
_apply_intervals: game 2025020383 df_game_rows=254
_apply_intervals: game 2025020392 rows_in_game=277 parsed_intervals=15 team_for_game=MTL
_apply_intervals: game 2025020392 df_game_rows=277
_apply_intervals: game 2025020411 rows_in_game=274 parsed_intervals=18 team_for_game=MTL
_apply_intervals: game 2025020411 df_game_rows=274
_apply_intervals: game 2025020422 rows_in_game=310 parsed_intervals=22 team_for_game=MTL
_apply_intervals: game 2025020422 df_game_rows=310
Filtered season dataframe to 1077 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484984, 'team': 'MTL'} team='MTL'
DEBUG: xgs_map df_filtered unique teams: [10 8 17 16 55 7 20 22 23 9 4 1 68 26 25 6 29 15 54 21 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484984, 'team': 'MTL'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=MTL condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484984, 'team': 'MTL'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/MTL/8484984_map.png
players: Saved stats to analysis/players/20252026/MTL/player_stats.csv
players: Scatter plot includes 24 players (min_games=5)
players: Saved scatter plot to analysis/players/20252026/MTL/player_scatter.png
players: Analysis complete.
Processing NJD (Plotting)...
Generating maps for 2 players (skipped 23 up-to-date).
players: Starting analysis. Scope=season, Team=NJD, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025010082 from data/20252026/shifts/shifts_2025010082.pkl
INFO:root:Loaded cached shifts for game 2025020026 from data/20252026/shifts/shifts_2025020026.pkl
INFO:root:Loaded cached shifts for game 2025020078 from data/20252026/shifts/shifts_2025020078.pkl
INFO:root:Loaded cached shifts for game 2025020098 from data/20252026/shifts/shifts_2025020098.pkl
INFO:root:Loaded cached shifts for game 2025020108 from data/20252026/shifts/shifts_2025020108.pkl
INFO:root:Loaded cached shifts for game 2025020124 from data/20252026/shifts/shifts_2025020124.pkl
INFO:root:Loaded cached shifts for game 2025020176 from data/20252026/shifts/shifts_2025020176.pkl
INFO:root:Loaded cached shifts for game 2025020231 from data/20252026/shifts/shifts_2025020231.pkl
INFO:root:Loaded cached shifts for game 2025020252 from data/20252026/shifts/shifts_2025020252.pkl
INFO:root:Loaded cached shifts for game 2025020288 from data/20252026/shifts/shifts_2025020288.pkl
INFO:root:Loaded cached shifts for game 2025020309 from data/20252026/shifts/shifts_2025020309.pkl
INFO:root:Loaded cached shifts for game 2025020339 from data/20252026/shifts/shifts_2025020339.pkl
INFO:root:Loaded cached shifts for game 2025020354 from data/20252026/shifts/shifts_2025020354.pkl
INFO:root:Loaded cached shifts for game 2025020364 from data/20252026/shifts/shifts_2025020364.pkl
INFO:root:Loaded cached shifts for game 2025020395 from data/20252026/shifts/shifts_2025020395.pkl
players: Ensuring xG predictions...
players: Found 40 players for team NJD
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 40 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 7608
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1737 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480002, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480002, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8480002, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8480002_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7049
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1184 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476292, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476292, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476292, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025010094 from data/20252026/shifts/shifts_2025010094.pkl
Saved plot to analysis/players/20252026/NJD/8476292_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7354
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025010094 rows_in_game=272 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025010094 df_game_rows=272
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=10 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1411 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481032, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 4 12 14 29 10 30 28 21 26 24 5 2 16 15 13 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481032, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481032, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8481032_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6401
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025010094 rows_in_game=272 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025010094 df_game_rows=272
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=11 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=13 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=11 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=11 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=13 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 839 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476822, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 4 14 29 10 30 28 21 26 24 8 5 2 16 13 17 19 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476822, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476822, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8476822_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4863
_apply_intervals: intervals per_game count=18
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=13 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
Filtered season dataframe to 1073 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481559, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481559, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481559, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8481559_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3172
_apply_intervals: intervals per_game count=12
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 681 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479395, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [26 1 24 8 5 2 16 15 14 13 4 29 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479395, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479395, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8479395_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1603
_apply_intervals: intervals per_game count=6
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=13 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=13 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
Filtered season dataframe to 257 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474149, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 13 4 17] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474149, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474149, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8474149_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7608
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=27 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=26 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 2045 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483495, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483495, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483495, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8483495_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2987
_apply_intervals: intervals per_game count=11
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=11 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=13 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=13 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=9 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=11 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=13 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 455 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477996, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 21 28 26 24 8 5 15 19 7 4 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477996, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477996, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8477996_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6551
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=27 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=10 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=26 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1607 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476462, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476462, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476462, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8476462_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7608
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1579 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479407, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479407, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479407, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8479407_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 2460
_apply_intervals: intervals per_game count=9
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
Filtered season dataframe to 521 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477488, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477488, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477488, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8477488_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7880
_apply_intervals: intervals per_game count=29
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025010094 rows_in_game=272 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025010094 df_game_rows=272
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1623 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481721, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 4 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481721, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481721, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8481721_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5682
_apply_intervals: intervals per_game count=21
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=11 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=9 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 890 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476474, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 30 28 21 26 24 8 5 2 16 15 14 13 4 17 19 7 29 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476474, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476474, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8476474_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7608
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=13 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1531 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482110, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482110, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482110, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8482110_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7608
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=28 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1768 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475455, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475455, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475455, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8475455_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6735
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=26 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=27 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=26 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1735 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478399, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 29 10 30 28 21 26 24 8 5 2 16 15 14 13 4 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478399, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478399, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8478399_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1639
_apply_intervals: intervals per_game count=6
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=11 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=10 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=12 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=10 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
Filtered season dataframe to 108 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483531, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 30 28 21 26] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483531, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8483531, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8483531_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7608
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1776 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478414, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478414, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478414, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8478414_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5487
_apply_intervals: intervals per_game count=20
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 1028 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477015, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 30 28 21 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477015, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477015, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8477015_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7398
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=26 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=21 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020108 rows_in_game=274 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020108 df_game_rows=274
_apply_intervals: game 2025020124 rows_in_game=260 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020124 df_game_rows=260
_apply_intervals: game 2025020140 rows_in_game=285 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020140 df_game_rows=285
_apply_intervals: game 2025020161 rows_in_game=301 parsed_intervals=26 team_for_game=NJD
_apply_intervals: game 2025020161 df_game_rows=301
_apply_intervals: game 2025020176 rows_in_game=269 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020176 df_game_rows=269
_apply_intervals: game 2025020191 rows_in_game=277 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020191 df_game_rows=277
_apply_intervals: game 2025020197 rows_in_game=268 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020197 df_game_rows=268
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=27 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020309 rows_in_game=250 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020309 df_game_rows=250
_apply_intervals: game 2025020323 rows_in_game=245 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020323 df_game_rows=245
_apply_intervals: game 2025020339 rows_in_game=289 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020339 df_game_rows=289
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=22 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=25 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=24 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=23 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 2155 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482684, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 12 14 29 10 30 28 21 26 24 8 5 2 16 15 13 4 17 19 7 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482684, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482684, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8482684_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 1889
_apply_intervals: intervals per_game count=7
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020288 rows_in_game=291 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020288 df_game_rows=291
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
Filtered season dataframe to 327 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478841, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 5 1 2 16 15 17 19 4] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478841, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478841, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8478841_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4599
_apply_intervals: intervals per_game count=17
_apply_intervals: game 2025010082 rows_in_game=210 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025010082 df_game_rows=210
_apply_intervals: game 2025020014 rows_in_game=309 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020014 df_game_rows=309
_apply_intervals: game 2025020026 rows_in_game=284 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020026 df_game_rows=284
_apply_intervals: game 2025020045 rows_in_game=289 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020045 df_game_rows=289
_apply_intervals: game 2025020064 rows_in_game=282 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020078 rows_in_game=261 parsed_intervals=0 team_for_game=NJD
_apply_intervals: game 2025020098 rows_in_game=291 parsed_intervals=14 team_for_game=NJD
_apply_intervals: game 2025020098 df_game_rows=291
_apply_intervals: game 2025020220 rows_in_game=237 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020220 df_game_rows=237
_apply_intervals: game 2025020231 rows_in_game=263 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020231 df_game_rows=263
_apply_intervals: game 2025020252 rows_in_game=238 parsed_intervals=18 team_for_game=NJD
_apply_intervals: game 2025020252 df_game_rows=238
_apply_intervals: game 2025020268 rows_in_game=265 parsed_intervals=7 team_for_game=NJD
_apply_intervals: game 2025020268 df_game_rows=265
_apply_intervals: game 2025020354 rows_in_game=300 parsed_intervals=15 team_for_game=NJD
_apply_intervals: game 2025020354 df_game_rows=300
_apply_intervals: game 2025020364 rows_in_game=250 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020364 df_game_rows=250
_apply_intervals: game 2025020379 rows_in_game=289 parsed_intervals=20 team_for_game=NJD
_apply_intervals: game 2025020379 df_game_rows=289
_apply_intervals: game 2025020395 rows_in_game=282 parsed_intervals=19 team_for_game=NJD
_apply_intervals: game 2025020395 df_game_rows=282
_apply_intervals: game 2025020406 rows_in_game=289 parsed_intervals=17 team_for_game=NJD
_apply_intervals: game 2025020406 df_game_rows=289
_apply_intervals: game 2025020421 rows_in_game=260 parsed_intervals=16 team_for_game=NJD
_apply_intervals: game 2025020421 df_game_rows=260
Filtered season dataframe to 695 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479996, 'team': 'NJD'} team='NJD'
DEBUG: xgs_map df_filtered unique teams: [ 1 3 12 14 29 10 8 5 2 16 17 19 7 4 25] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479996, 'team': 'NJD'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NJD condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479996, 'team': 'NJD'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NJD/8479996_map.png
players: Saved stats to analysis/players/20252026/NJD/player_stats.csv
players: Scatter plot includes 23 players (min_games=5)
players: Saved scatter plot to analysis/players/20252026/NJD/player_scatter.png
players: Analysis complete.
Processing NSH (Plotting)...
Generating maps for 2 players (skipped 21 up-to-date).
players: Starting analysis. Scope=season, Team=NSH, Condition={'game_state': ['5v5'], 'is_net_empty': [0]}
DEBUG: analyze.players called
INFO:root:Loaded cached shifts for game 2025020032 from data/20252026/shifts/shifts_2025020032.pkl
INFO:root:Loaded cached shifts for game 2025020041 from data/20252026/shifts/shifts_2025020041.pkl
INFO:root:Loaded cached shifts for game 2025020049 from data/20252026/shifts/shifts_2025020049.pkl
INFO:root:Loaded cached shifts for game 2025020118 from data/20252026/shifts/shifts_2025020118.pkl
INFO:root:Loaded cached shifts for game 2025020156 from data/20252026/shifts/shifts_2025020156.pkl
INFO:root:Loaded cached shifts for game 2025020170 from data/20252026/shifts/shifts_2025020170.pkl
INFO:root:Loaded cached shifts for game 2025020201 from data/20252026/shifts/shifts_2025020201.pkl
INFO:root:Loaded cached shifts for game 2025020223 from data/20252026/shifts/shifts_2025020223.pkl
INFO:root:Loaded cached shifts for game 2025020253 from data/20252026/shifts/shifts_2025020253.pkl
INFO:root:Loaded cached shifts for game 2025020281 from data/20252026/shifts/shifts_2025020281.pkl
INFO:root:Loaded cached shifts for game 2025020296 from data/20252026/shifts/shifts_2025020296.pkl
INFO:root:Loaded cached shifts for game 2025020361 from data/20252026/shifts/shifts_2025020361.pkl
INFO:root:Loaded cached shifts for game 2025020397 from data/20252026/shifts/shifts_2025020397.pkl
players: Ensuring xG predictions...
players: Found 25 players for team NSH
players: Loading league baseline...
players: Using baseline path: analysis/league/20252026/5v5
league: loading baseline from analysis/league/20252026/5v5/20252026_league_baseline.npy
players: Analyzing 26 players...
xgs_map: using provided DataFrame (in-memory) -> rows= 6807
_apply_intervals: intervals per_game count=25
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020156 df_game_rows=253
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020253 df_game_rows=258
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=9 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1228 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477446, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 14 4 20 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477446, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8477446, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
INFO:root:Loaded cached shifts for game 2025020084 from data/20252026/shifts/shifts_2025020084.pkl
INFO:root:Loaded cached shifts for game 2025020208 from data/20252026/shifts/shifts_2025020208.pkl
Saved plot to analysis/players/20252026/NSH/8477446_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5210
_apply_intervals: intervals per_game count=19
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020208 df_game_rows=277
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020253 df_game_rows=258
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
Filtered season dataframe to 832 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479370, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 25 30 4 3 21 13 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479370, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8479370, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8479370_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 3587
_apply_intervals: intervals per_game count=13
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020156 df_game_rows=253
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=2 team_for_game=NSH
_apply_intervals: game 2025020183 df_game_rows=266
Filtered season dataframe to 555 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482062, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [29 18 68 9 10 24 23 26 25 14 4 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482062, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482062, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8482062_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5416
_apply_intervals: intervals per_game count=20
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=11 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020156 df_game_rows=253
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=9 team_for_game=NSH
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020208 df_game_rows=277
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=11 team_for_game=NSH
_apply_intervals: game 2025020253 df_game_rows=258
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=10 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=9 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=10 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=10 team_for_game=NSH
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 909 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484241, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [18 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484241, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8484241, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8484241_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7374
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020208 df_game_rows=277
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020253 df_game_rows=258
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1421 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475158, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475158, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475158, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8475158_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7321
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020156 df_game_rows=253
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020208 df_game_rows=277
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020253 df_game_rows=258
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1319 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475287, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 10 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475287, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8475287, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8475287_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7627
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020156 df_game_rows=253
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020208 df_game_rows=277
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020253 df_game_rows=258
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=23 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=11 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1466 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481056, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481056, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8481056, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8481056_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4642
_apply_intervals: intervals per_game count=17
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=23 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=26 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=25 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=23 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=25 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020253 df_game_rows=258
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 982 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482482, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 3 5 17 20 13] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482482, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482482, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8482482_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5696
_apply_intervals: intervals per_game count=21
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=10 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020156 df_game_rows=253
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020208 df_game_rows=277
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=11 team_for_game=NSH
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
Filtered season dataframe to 970 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482103, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [12 18 10 24 23 26 25 14 4 20 30 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482103, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482103, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8482103_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 5410
_apply_intervals: intervals per_game count=20
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=23 team_for_game=NSH
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=23 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=23 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020156 df_game_rows=253
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020208 df_game_rows=277
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
Filtered season dataframe to 1073 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482111, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 14 4 20 30 5] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482111, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482111, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8482111_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7385
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020156 df_game_rows=253
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020208 df_game_rows=277
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020253 df_game_rows=258
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1299 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474564, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [29 18 68 9 10 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474564, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474564, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8474564_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7627
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=23 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=23 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=25 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=25 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020156 df_game_rows=253
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025020208 df_game_rows=277
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=25 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020253 df_game_rows=258
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=26 team_for_game=NSH
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1847 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476869, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476869, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476869, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8476869_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 6574
_apply_intervals: intervals per_game count=24
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=11 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=11 team_for_game=NSH
_apply_intervals: game 2025020208 df_game_rows=277
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1028 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482768, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 4 30 25 5 21 13 17 16 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482768, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482768, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8482768_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7627
_apply_intervals: intervals per_game count=28
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020156 df_game_rows=253
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020208 df_game_rows=277
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020253 df_game_rows=258
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1576 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476887, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476887, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8476887, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8476887_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7344
_apply_intervals: intervals per_game count=27
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020156 df_game_rows=253
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020208 df_game_rows=277
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020253 df_game_rows=258
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1297 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478047, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478047, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8478047, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8478047_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 7076
_apply_intervals: intervals per_game count=26
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020137 rows_in_game=301 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020137 df_game_rows=301
_apply_intervals: game 2025020145 rows_in_game=276 parsed_intervals=13 team_for_game=NSH
_apply_intervals: game 2025020145 df_game_rows=276
_apply_intervals: game 2025020156 rows_in_game=253 parsed_intervals=12 team_for_game=NSH
_apply_intervals: game 2025020156 df_game_rows=253
_apply_intervals: game 2025020170 rows_in_game=262 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020170 df_game_rows=262
_apply_intervals: game 2025020183 rows_in_game=266 parsed_intervals=14 team_for_game=NSH
_apply_intervals: game 2025020183 df_game_rows=266
_apply_intervals: game 2025020201 rows_in_game=299 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020201 df_game_rows=299
_apply_intervals: game 2025020208 rows_in_game=277 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020208 df_game_rows=277
_apply_intervals: game 2025020223 rows_in_game=284 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020223 df_game_rows=284
_apply_intervals: game 2025020233 rows_in_game=240 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020233 df_game_rows=240
_apply_intervals: game 2025020253 rows_in_game=258 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020253 df_game_rows=258
_apply_intervals: game 2025020281 rows_in_game=232 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020281 df_game_rows=232
_apply_intervals: game 2025020296 rows_in_game=249 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020296 df_game_rows=249
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=22 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=16 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=15 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=17 team_for_game=NSH
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1222 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482146, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [68 18 9 10 24 23 26 25 14 4 20 30 3 5 21 13 17 16 52] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482146, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8482146, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
Saved plot to analysis/players/20252026/NSH/8482146_map.png
xgs_map: using provided DataFrame (in-memory) -> rows= 4430
_apply_intervals: intervals per_game count=16
_apply_intervals: game 2025010091 rows_in_game=242 parsed_intervals=25 team_for_game=NSH
_apply_intervals: game 2025010091 df_game_rows=242
_apply_intervals: game 2025020016 rows_in_game=309 parsed_intervals=23 team_for_game=NSH
_apply_intervals: game 2025020016 df_game_rows=309
_apply_intervals: game 2025020032 rows_in_game=289 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020032 df_game_rows=289
_apply_intervals: game 2025020041 rows_in_game=306 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025020041 df_game_rows=306
_apply_intervals: game 2025020049 rows_in_game=283 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025020049 df_game_rows=283
_apply_intervals: game 2025020062 rows_in_game=235 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020084 rows_in_game=262 parsed_intervals=0 team_for_game=NSH
_apply_intervals: game 2025020105 rows_in_game=285 parsed_intervals=25 team_for_game=NSH
_apply_intervals: game 2025020105 df_game_rows=285
_apply_intervals: game 2025020118 rows_in_game=260 parsed_intervals=18 team_for_game=NSH
_apply_intervals: game 2025020118 df_game_rows=260
_apply_intervals: game 2025020343 rows_in_game=271 parsed_intervals=21 team_for_game=NSH
_apply_intervals: game 2025020343 df_game_rows=271
_apply_intervals: game 2025020357 rows_in_game=274 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025020357 df_game_rows=274
_apply_intervals: game 2025020361 rows_in_game=280 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025020361 df_game_rows=280
_apply_intervals: game 2025020389 rows_in_game=280 parsed_intervals=24 team_for_game=NSH
_apply_intervals: game 2025020389 df_game_rows=280
_apply_intervals: game 2025020397 rows_in_game=279 parsed_intervals=23 team_for_game=NSH
_apply_intervals: game 2025020397 df_game_rows=279
_apply_intervals: game 2025020416 rows_in_game=281 parsed_intervals=20 team_for_game=NSH
_apply_intervals: game 2025020416 df_game_rows=281
_apply_intervals: game 2025020429 rows_in_game=294 parsed_intervals=19 team_for_game=NSH
_apply_intervals: game 2025020429 df_game_rows=294
Filtered season dataframe to 1098 events by condition {'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474600, 'team': 'NSH'} team='NSH'
DEBUG: xgs_map df_filtered unique teams: [12 18 29 68 9 10 24 23 21 13 17 16 52 20] (condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474600, 'team': 'NSH'})
DEBUG: xgs_map heatmap_mode=team_not_team team_val=NSH condition={'game_state': ['5v5'], 'is_net_empty': [0], 'player_id': 8474600, 'team': 'NSH'}
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:377: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h = ax.scatter(grp1[xcol], grp1[ycol], c=c1, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)
/home/spoon/new_puck/puck/plot.py:382: UserWarning: You passed a edgecolor/edgecolors ('none') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.
h2 = ax.scatter(grp2[xcol], grp2[ycol], c=c2, marker=m, s=s, edgecolors='none', zorder=5, alpha=0.7)