← Back season_20252026.log
Tail 1000 Full File
--- Starting Daily Update for Season 20252026 --- [1/4] Updating Game Data... _season: starting fetch for season=20252026, team=all, games=1340, workers=4, use_cache=True Fetching feeds: 1/1340 Fetching feeds: 2/1340 Fetching feeds: 3/1340 Fetching feeds: 4/1340 Fetching feeds: 5/1340 Fetching feeds: 6/1340 Fetching feeds: 7/1340 Fetching feeds: 8/1340 Fetching feeds: 9/1340 Fetching feeds: 10/1340 Fetching feeds: 11/1340 Fetching feeds: 12/1340 Fetching feeds: 13/1340 Fetching feeds: 14/1340 Fetching feeds: 15/1340 Fetching feeds: 16/1340 Fetching feeds: 17/1340 Fetching feeds: 18/1340 Fetching feeds: 19/1340 Fetching feeds: 20/1340 Fetching feeds: 21/1340 Fetching feeds: 22/1340 Fetching feeds: 23/1340 Fetching feeds: 24/1340 Fetching feeds: 25/1340 Fetching feeds: 26/1340 Fetching feeds: 27/1340 Fetching feeds: 28/1340 Fetching feeds: 29/1340 Fetching feeds: 30/1340 Fetching feeds: 31/1340 Fetching feeds: 32/1340 Fetching feeds: 33/1340 Fetching feeds: 34/1340 Fetching feeds: 35/1340 Fetching feeds: 36/1340 Fetching feeds: 37/1340 Fetching feeds: 38/1340 Fetching feeds: 39/1340 Fetching feeds: 40/1340 Fetching feeds: 41/1340 Fetching feeds: 42/1340 Fetching feeds: 43/1340 Fetching feeds: 44/1340 Fetching feeds: 45/1340 Fetching feeds: 46/1340 Fetching feeds: 47/1340 Fetching feeds: 48/1340 Fetching feeds: 49/1340 Fetching feeds: 50/1340 Fetching feeds: 51/1340 Fetching feeds: 52/1340 Fetching feeds: 53/1340 Fetching feeds: 54/1340 Fetching feeds: 55/1340 Fetching feeds: 56/1340 Fetching feeds: 57/1340 Fetching feeds: 58/1340 Fetching feeds: 59/1340 Fetching feeds: 60/1340 Fetching feeds: 61/1340 Fetching feeds: 62/1340 Fetching feeds: 63/1340 Fetching feeds: 64/1340 Fetching feeds: 65/1340 Fetching feeds: 66/1340 Fetching feeds: 67/1340 Fetching feeds: 68/1340 Fetching feeds: 69/1340 Fetching feeds: 70/1340 Fetching feeds: 71/1340 Fetching feeds: 72/1340 Fetching feeds: 73/1340 Fetching feeds: 74/1340 Fetching feeds: 75/1340 Fetching feeds: 76/1340 Fetching feeds: 77/1340 Fetching feeds: 78/1340 Fetching feeds: 79/1340 Fetching feeds: 80/1340 Fetching feeds: 81/1340 Fetching feeds: 82/1340 Fetching feeds: 83/1340 Fetching feeds: 84/1340 Fetching feeds: 85/1340 Fetching feeds: 86/1340 Fetching feeds: 87/1340 Fetching feeds: 88/1340 Fetching feeds: 89/1340 Fetching feeds: 90/1340 Fetching feeds: 91/1340 Fetching feeds: 92/1340 Fetching feeds: 93/1340 Fetching feeds: 94/1340 Fetching feeds: 95/1340 Fetching feeds: 96/1340 Fetching feeds: 97/1340 Fetching feeds: 98/1340 Fetching feeds: 99/1340 Fetching feeds: 100/1340 Fetching feeds: 101/1340 Fetching feeds: 102/1340 Fetching feeds: 103/1340 Fetching feeds: 104/1340 Fetching feeds: 105/1340 Fetching feeds: 106/1340 Fetching feeds: 107/1340 Fetching feeds: 108/1340 Fetching feeds: 109/1340 Fetching feeds: 110/1340 Fetching feeds: 111/1340 Fetching feeds: 112/1340 Fetching feeds: 113/1340 Fetching feeds: 114/1340 Fetching feeds: 115/1340 Fetching feeds: 116/1340 Fetching feeds: 117/1340 Fetching feeds: 118/1340 Fetching feeds: 119/1340 Fetching feeds: 120/1340 Fetching feeds: 121/1340 Fetching feeds: 122/1340 Fetching feeds: 123/1340 Fetching feeds: 124/1340 Fetching feeds: 125/1340 Fetching feeds: 126/1340 Fetching feeds: 127/1340 Fetching feeds: 128/1340 Fetching feeds: 129/1340 Fetching feeds: 130/1340 Fetching feeds: 131/1340 Fetching feeds: 132/1340 Fetching feeds: 133/1340 Fetching feeds: 134/1340 Fetching feeds: 135/1340 Fetching feeds: 136/1340 Fetching feeds: 137/1340 Fetching feeds: 138/1340 Fetching feeds: 139/1340 Fetching feeds: 140/1340 Fetching feeds: 141/1340 Fetching feeds: 142/1340 Fetching feeds: 143/1340 Fetching feeds: 144/1340 Fetching feeds: 145/1340 Fetching feeds: 146/1340 Fetching feeds: 147/1340 Fetching feeds: 148/1340 Fetching feeds: 149/1340 Fetching feeds: 150/1340 Fetching feeds: 151/1340 Fetching feeds: 152/1340 Fetching feeds: 153/1340 Fetching feeds: 154/1340 Fetching feeds: 155/1340 Fetching feeds: 156/1340 Fetching feeds: 157/1340 Fetching feeds: 158/1340 Fetching feeds: 159/1340 Fetching feeds: 160/1340 Fetching feeds: 161/1340 Fetching feeds: 162/1340 Fetching feeds: 163/1340 Fetching feeds: 164/1340 Fetching feeds: 165/1340 Fetching feeds: 166/1340 Fetching feeds: 167/1340 Fetching feeds: 168/1340 Fetching feeds: 169/1340 Fetching feeds: 170/1340 Fetching feeds: 171/1340 Fetching feeds: 172/1340 Fetching feeds: 173/1340 Fetching feeds: 174/1340 Fetching feeds: 175/1340 Fetching feeds: 176/1340 Fetching feeds: 177/1340 Fetching feeds: 178/1340 Fetching feeds: 179/1340 Fetching feeds: 180/1340 Fetching feeds: 181/1340 Fetching feeds: 182/1340 Fetching feeds: 183/1340 Fetching feeds: 184/1340 Fetching feeds: 185/1340 Fetching feeds: 186/1340 Fetching feeds: 187/1340 Fetching feeds: 188/1340 Fetching feeds: 189/1340 Fetching feeds: 190/1340 Fetching feeds: 191/1340 Fetching feeds: 192/1340 Fetching feeds: 193/1340 Fetching feeds: 194/1340 Fetching feeds: 195/1340 Fetching feeds: 196/1340 Fetching feeds: 197/1340 Fetching feeds: 198/1340 Fetching feeds: 199/1340 Fetching feeds: 200/1340 Fetching feeds: 201/1340 Fetching feeds: 202/1340 Fetching feeds: 203/1340 Fetching feeds: 204/1340 Fetching feeds: 205/1340 Fetching feeds: 206/1340 Fetching feeds: 207/1340 Fetching feeds: 208/1340 Fetching feeds: 209/1340 Fetching feeds: 210/1340 Fetching feeds: 211/1340 Fetching feeds: 212/1340 Fetching feeds: 213/1340 Fetching feeds: 214/1340 Fetching feeds: 215/1340 Fetching feeds: 216/1340 Fetching feeds: 217/1340 Fetching feeds: 218/1340 Fetching feeds: 219/1340 Fetching feeds: 220/1340 Fetching feeds: 221/1340 Fetching feeds: 222/1340 Fetching feeds: 223/1340 Fetching feeds: 224/1340 Fetching feeds: 225/1340 Fetching feeds: 226/1340 Fetching feeds: 227/1340 Fetching feeds: 228/1340 Fetching feeds: 229/1340 Fetching feeds: 230/1340 Fetching feeds: 231/1340 Fetching feeds: 232/1340 Fetching feeds: 233/1340 Fetching feeds: 234/1340 Fetching feeds: 235/1340 Fetching feeds: 236/1340 Fetching feeds: 237/1340 Fetching feeds: 238/1340 Fetching feeds: 239/1340 Fetching feeds: 240/1340 Fetching feeds: 241/1340 Fetching feeds: 242/1340 Fetching feeds: 243/1340 Fetching feeds: 244/1340 Fetching feeds: 245/1340 Fetching feeds: 246/1340 Fetching feeds: 247/1340 Fetching feeds: 248/1340 Fetching feeds: 249/1340 Fetching feeds: 250/1340 Fetching feeds: 251/1340 Fetching feeds: 252/1340 Fetching feeds: 253/1340 Fetching feeds: 254/1340 Fetching feeds: 255/1340 Fetching feeds: 256/1340 Fetching feeds: 257/1340 Fetching feeds: 258/1340 Fetching feeds: 259/1340 Fetching feeds: 260/1340 Fetching feeds: 261/1340 Fetching feeds: 262/1340 Fetching feeds: 263/1340 Fetching feeds: 264/1340 Fetching feeds: 265/1340 Fetching feeds: 266/1340 Fetching feeds: 267/1340 Fetching feeds: 268/1340 Fetching feeds: 269/1340 Fetching feeds: 270/1340 Fetching feeds: 271/1340 Fetching feeds: 272/1340 Fetching feeds: 273/1340 Fetching feeds: 274/1340 Fetching feeds: 275/1340 Fetching feeds: 276/1340 Fetching feeds: 277/1340 Fetching feeds: 278/1340 Fetching feeds: 279/1340 Fetching feeds: 280/1340 Fetching feeds: 281/1340 Fetching feeds: 282/1340 Fetching feeds: 283/1340 Fetching feeds: 284/1340 Fetching feeds: 285/1340 Fetching feeds: 286/1340 Fetching feeds: 287/1340 Fetching feeds: 288/1340 Fetching feeds: 289/1340 Fetching feeds: 290/1340 Fetching feeds: 291/1340 Fetching feeds: 292/1340 Fetching feeds: 293/1340 Fetching feeds: 294/1340 Fetching feeds: 295/1340 Fetching feeds: 296/1340 Fetching feeds: 297/1340 Fetching feeds: 298/1340 Fetching feeds: 299/1340 Fetching feeds: 300/1340 Fetching feeds: 301/1340 Fetching feeds: 302/1340 Fetching feeds: 303/1340 Fetching feeds: 304/1340 Fetching feeds: 305/1340 Fetching feeds: 306/1340 Fetching feeds: 307/1340 Fetching feeds: 308/1340 Fetching feeds: 309/1340 Fetching feeds: 310/1340 Fetching feeds: 311/1340 Fetching feeds: 312/1340 Fetching feeds: 313/1340 Fetching feeds: 314/1340 Fetching feeds: 315/1340 Fetching feeds: 316/1340 Fetching feeds: 317/1340 Fetching feeds: 318/1340 Fetching feeds: 319/1340 Fetching feeds: 320/1340 Fetching feeds: 321/1340 Fetching feeds: 322/1340 Fetching feeds: 323/1340 Fetching feeds: 324/1340 Fetching feeds: 325/1340 Fetching feeds: 326/1340 Fetching feeds: 327/1340 Fetching feeds: 328/1340 Fetching feeds: 329/1340 Fetching feeds: 330/1340 Fetching feeds: 331/1340 Fetching feeds: 332/1340 Fetching feeds: 333/1340 Fetching feeds: 334/1340 Fetching feeds: 335/1340 Fetching feeds: 336/1340 Fetching feeds: 337/1340 Fetching feeds: 338/1340 Fetching feeds: 339/1340 Fetching feeds: 340/1340 Fetching feeds: 341/1340 Fetching feeds: 342/1340 Fetching feeds: 343/1340 Fetching feeds: 344/1340 Fetching feeds: 345/1340 Fetching feeds: 346/1340 Fetching feeds: 347/1340 Fetching feeds: 348/1340 Fetching feeds: 349/1340 Fetching feeds: 350/1340 Fetching feeds: 351/1340 Fetching feeds: 352/1340 Fetching feeds: 353/1340 Fetching feeds: 354/1340 Fetching feeds: 355/1340 Fetching feeds: 356/1340 Fetching feeds: 357/1340 Fetching feeds: 358/1340 Fetching feeds: 359/1340 Fetching feeds: 360/1340 Fetching feeds: 361/1340 Fetching feeds: 362/1340 Fetching feeds: 363/1340 Fetching feeds: 364/1340 Fetching feeds: 365/1340 Fetching feeds: 366/1340 Fetching feeds: 367/1340 Fetching feeds: 368/1340 Fetching feeds: 369/1340 Fetching feeds: 370/1340 Fetching feeds: 371/1340 Fetching feeds: 372/1340 Fetching feeds: 373/1340 Fetching feeds: 374/1340 Fetching feeds: 375/1340 Fetching feeds: 376/1340 Fetching feeds: 377/1340 Fetching feeds: 378/1340 Fetching feeds: 379/1340 Fetching feeds: 380/1340 Fetching feeds: 381/1340 Fetching feeds: 382/1340 Fetching feeds: 383/1340 Fetching feeds: 384/1340 Fetching feeds: 385/1340 Fetching feeds: 386/1340 Fetching feeds: 387/1340 Fetching feeds: 388/1340 Fetching feeds: 389/1340 Fetching feeds: 390/1340 Fetching feeds: 391/1340 Fetching feeds: 392/1340 Fetching feeds: 393/1340 Fetching feeds: 394/1340 Fetching feeds: 395/1340 Fetching feeds: 396/1340 Fetching feeds: 397/1340 Fetching feeds: 398/1340 Fetching feeds: 399/1340 Fetching feeds: 400/1340 Fetching feeds: 401/1340 Fetching feeds: 402/1340 Fetching feeds: 403/1340 Fetching feeds: 404/1340 Fetching feeds: 405/1340 Fetching feeds: 406/1340 Fetching feeds: 407/1340 Fetching feeds: 408/1340 Fetching feeds: 409/1340 Fetching feeds: 410/1340 Fetching feeds: 411/1340 Fetching feeds: 412/1340 Fetching feeds: 413/1340 Fetching feeds: 414/1340 Fetching feeds: 415/1340 Fetching feeds: 416/1340 Fetching feeds: 417/1340 Fetching feeds: 418/1340 Fetching feeds: 419/1340 Fetching feeds: 420/1340 Fetching feeds: 421/1340 Fetching feeds: 422/1340 Fetching feeds: 423/1340 Fetching feeds: 424/1340 Fetching feeds: 425/1340 Fetching feeds: 426/1340 Fetching feeds: 427/1340 Fetching feeds: 428/1340 Fetching feeds: 429/1340 Fetching feeds: 430/1340 Fetching feeds: 431/1340 Fetching feeds: 432/1340 Fetching feeds: 433/1340 Fetching feeds: 434/1340 Fetching feeds: 435/1340 Fetching feeds: 436/1340 Fetching feeds: 437/1340 Fetching feeds: 438/1340 Fetching feeds: 439/1340 Fetching feeds: 440/1340 Fetching feeds: 441/1340 Fetching feeds: 442/1340 Fetching feeds: 443/1340 Fetching feeds: 444/1340 Fetching feeds: 445/1340 Fetching feeds: 446/1340 Fetching feeds: 447/1340 Fetching feeds: 448/1340 Fetching feeds: 449/1340 Fetching feeds: 450/1340 Fetching feeds: 451/1340 Fetching feeds: 452/1340 Fetching feeds: 453/1340 Fetching feeds: 454/1340 Fetching feeds: 455/1340 Fetching feeds: 456/1340 Fetching feeds: 457/1340 Fetching feeds: 458/1340 Fetching feeds: 459/1340 Fetching feeds: 460/1340 Fetching feeds: 461/1340 Fetching feeds: 462/1340 Fetching feeds: 463/1340 Fetching feeds: 464/1340 Fetching feeds: 465/1340 Fetching feeds: 466/1340 Fetching feeds: 467/1340 Fetching feeds: 468/1340 Fetching feeds: 469/1340 Fetching feeds: 470/1340 Fetching feeds: 471/1340 Fetching feeds: 472/1340 Fetching feeds: 473/1340 Fetching feeds: 474/1340 Fetching feeds: 475/1340 Fetching feeds: 476/1340 Fetching feeds: 477/1340 Fetching feeds: 478/1340 Fetching feeds: 479/1340 Fetching feeds: 480/1340 Fetching feeds: 481/1340 Fetching feeds: 482/1340 Fetching feeds: 483/1340 Fetching feeds: 484/1340 Fetching feeds: 485/1340 Fetching feeds: 486/1340 Fetching feeds: 487/1340 Fetching feeds: 488/1340 Fetching feeds: 489/1340 Fetching feeds: 490/1340 Fetching feeds: 491/1340 Fetching feeds: 492/1340 Fetching feeds: 493/1340 Fetching feeds: 494/1340 Fetching feeds: 495/1340 Fetching feeds: 496/1340 Fetching feeds: 497/1340 Fetching feeds: 498/1340 Fetching feeds: 499/1340 Fetching feeds: 500/1340 Fetching feeds: 501/1340 Fetching feeds: 502/1340 Fetching feeds: 503/1340 Fetching feeds: 504/1340 Fetching feeds: 505/1340 Fetching feeds: 506/1340 Fetching feeds: 507/1340 Fetching feeds: 508/1340 Fetching feeds: 509/1340 Fetching feeds: 510/1340 Fetching feeds: 511/1340 Fetching feeds: 512/1340 Fetching feeds: 513/1340 Fetching feeds: 514/1340 Fetching feeds: 515/1340 Fetching feeds: 516/1340 Fetching feeds: 517/1340 Fetching feeds: 518/1340 Fetching feeds: 519/1340 Fetching feeds: 520/1340 Fetching feeds: 521/1340 Fetching feeds: 522/1340 Fetching feeds: 523/1340 Fetching feeds: 524/1340 Fetching feeds: 525/1340 Fetching feeds: 526/1340 Fetching feeds: 527/1340 Fetching feeds: 528/1340 Fetching feeds: 529/1340 Fetching feeds: 530/1340 Fetching feeds: 531/1340 Fetching feeds: 532/1340 Fetching feeds: 533/1340 Fetching feeds: 534/1340 Fetching feeds: 535/1340 Fetching feeds: 536/1340 Fetching feeds: 537/1340 Fetching feeds: 538/1340 Fetching feeds: 539/1340 Fetching feeds: 540/1340 Fetching feeds: 541/1340 Fetching feeds: 542/1340 Fetching feeds: 543/1340 Fetching feeds: 544/1340 Fetching feeds: 545/1340 Fetching feeds: 546/1340 Fetching feeds: 547/1340 Fetching feeds: 548/1340 Fetching feeds: 549/1340 Fetching feeds: 550/1340 Fetching feeds: 551/1340 Fetching feeds: 552/1340 Fetching feeds: 553/1340 Fetching feeds: 554/1340 Fetching feeds: 555/1340 Fetching feeds: 556/1340 Fetching feeds: 557/1340 Fetching feeds: 558/1340 Fetching feeds: 559/1340 Fetching feeds: 560/1340 Fetching feeds: 561/1340 Fetching feeds: 562/1340 Fetching feeds: 563/1340 Fetching feeds: 564/1340 Fetching feeds: 565/1340 Fetching feeds: 566/1340 Fetching feeds: 567/1340 Fetching feeds: 568/1340 Fetching feeds: 569/1340 Fetching feeds: 570/1340 Fetching feeds: 571/1340 Fetching feeds: 572/1340 Fetching feeds: 573/1340 Fetching feeds: 574/1340 Fetching feeds: 575/1340 Fetching feeds: 576/1340 Fetching feeds: 577/1340 Fetching feeds: 578/1340 Fetching feeds: 579/1340 Fetching feeds: 580/1340 Fetching feeds: 581/1340 Fetching feeds: 582/1340 Fetching feeds: 583/1340 Fetching feeds: 584/1340 Fetching feeds: 585/1340 Fetching feeds: 586/1340 Fetching feeds: 587/1340 Fetching feeds: 588/1340 Fetching feeds: 589/1340 Fetching feeds: 590/1340 Fetching feeds: 591/1340 Fetching feeds: 592/1340 Fetching feeds: 593/1340 Fetching feeds: 594/1340 Fetching feeds: 595/1340 Fetching feeds: 596/1340 Fetching feeds: 597/1340 Fetching feeds: 598/1340 Fetching feeds: 599/1340 Fetching feeds: 600/1340 Fetching feeds: 601/1340 Fetching feeds: 602/1340 Fetching feeds: 603/1340 Fetching feeds: 604/1340 Fetching feeds: 605/1340 Fetching feeds: 606/1340 Fetching feeds: 607/1340 Fetching feeds: 608/1340 Fetching feeds: 609/1340 Fetching feeds: 610/1340 Fetching feeds: 611/1340 Fetching feeds: 612/1340 Fetching feeds: 613/1340 Fetching feeds: 614/1340 Fetching feeds: 615/1340 Fetching feeds: 616/1340 Fetching feeds: 617/1340 Fetching feeds: 618/1340 Fetching feeds: 619/1340 Fetching feeds: 620/1340 Fetching feeds: 621/1340 Fetching feeds: 622/1340 Fetching feeds: 623/1340 Fetching feeds: 624/1340 Fetching feeds: 625/1340 Fetching feeds: 626/1340 Fetching feeds: 627/1340 Fetching feeds: 628/1340 Fetching feeds: 629/1340 Fetching feeds: 630/1340 Fetching feeds: 631/1340 Fetching feeds: 632/1340 Fetching feeds: 633/1340 Fetching feeds: 634/1340 Fetching feeds: 635/1340 Fetching feeds: 636/1340 Fetching feeds: 637/1340 Fetching feeds: 638/1340 Fetching feeds: 639/1340 Fetching feeds: 640/1340 Fetching feeds: 641/1340 Fetching feeds: 642/1340 Fetching feeds: 643/1340 Fetching feeds: 644/1340 Fetching feeds: 645/1340 Fetching feeds: 646/1340 Fetching feeds: 647/1340 Fetching feeds: 648/1340 Fetching feeds: 649/1340 Fetching feeds: 650/1340 Fetching feeds: 651/1340 Fetching feeds: 652/1340 Fetching feeds: 653/1340 Fetching feeds: 654/1340 Fetching feeds: 655/1340 Fetching feeds: 656/1340 Fetching feeds: 657/1340 Fetching feeds: 658/1340 Fetching feeds: 659/1340 Fetching feeds: 660/1340 Fetching feeds: 661/1340 Fetching feeds: 662/1340 Fetching feeds: 663/1340 Fetching feeds: 664/1340 Fetching feeds: 665/1340 Fetching feeds: 666/1340 Fetching feeds: 667/1340 Fetching feeds: 668/1340 Fetching feeds: 669/1340 Fetching feeds: 670/1340 Fetching feeds: 671/1340 Fetching feeds: 672/1340 Fetching feeds: 673/1340 Fetching feeds: 674/1340 Fetching feeds: 675/1340 Fetching feeds: 676/1340 Fetching feeds: 677/1340 Fetching feeds: 678/1340 Fetching feeds: 679/1340 Fetching feeds: 680/1340 Fetching feeds: 681/1340 Fetching feeds: 682/1340 Fetching feeds: 683/1340 Fetching feeds: 684/1340 Fetching feeds: 685/1340 Fetching feeds: 686/1340 Fetching feeds: 687/1340 Fetching feeds: 688/1340 Fetching feeds: 689/1340 Fetching feeds: 690/1340 Fetching feeds: 691/1340 Fetching feeds: 692/1340 Fetching feeds: 693/1340 Fetching feeds: 694/1340 Fetching feeds: 695/1340 Fetching feeds: 696/1340 Fetching feeds: 697/1340 Fetching feeds: 698/1340 Fetching feeds: 699/1340 Fetching feeds: 700/1340 Fetching feeds: 701/1340 Fetching feeds: 702/1340 Fetching feeds: 703/1340 Fetching feeds: 704/1340 Fetching feeds: 705/1340 Fetching feeds: 706/1340 Fetching feeds: 707/1340 Fetching feeds: 708/1340 Fetching feeds: 709/1340 Fetching feeds: 710/1340 Fetching feeds: 711/1340 Fetching feeds: 712/1340 Fetching feeds: 713/1340 Fetching feeds: 714/1340 Fetching feeds: 715/1340 Fetching feeds: 716/1340 Fetching feeds: 717/1340 Fetching feeds: 718/1340 Fetching feeds: 719/1340 Fetching feeds: 720/1340 Fetching feeds: 721/1340 Fetching feeds: 722/1340 Fetching feeds: 723/1340 Fetching feeds: 724/1340 Fetching feeds: 725/1340 Fetching feeds: 726/1340 Fetching feeds: 727/1340 Fetching feeds: 728/1340 Fetching feeds: 729/1340 Fetching feeds: 730/1340 Fetching feeds: 731/1340 Fetching feeds: 732/1340 Fetching feeds: 733/1340 Fetching feeds: 734/1340 Fetching feeds: 735/1340 Fetching feeds: 736/1340 Fetching feeds: 737/1340 Fetching feeds: 738/1340 Fetching feeds: 739/1340 Fetching feeds: 740/1340 Fetching feeds: 741/1340 Fetching feeds: 742/1340 Fetching feeds: 743/1340 Fetching feeds: 744/1340 Fetching feeds: 745/1340 Fetching feeds: 746/1340 Fetching feeds: 747/1340 Fetching feeds: 748/1340 Fetching feeds: 749/1340 Fetching feeds: 750/1340 Fetching feeds: 751/1340 Fetching feeds: 752/1340 Fetching feeds: 753/1340 Fetching feeds: 754/1340 Fetching feeds: 755/1340 Fetching feeds: 756/1340 Fetching feeds: 757/1340 Fetching feeds: 758/1340 Fetching feeds: 759/1340 Fetching feeds: 760/1340 Fetching feeds: 761/1340 Fetching feeds: 762/1340 Fetching feeds: 763/1340 Fetching feeds: 764/1340 Fetching feeds: 765/1340 Fetching feeds: 766/1340 Fetching feeds: 767/1340 Fetching feeds: 768/1340 Fetching feeds: 769/1340 Fetching feeds: 770/1340 Fetching feeds: 771/1340 Fetching feeds: 772/1340 Fetching feeds: 773/1340 Fetching feeds: 774/1340 Fetching feeds: 775/1340 Fetching feeds: 776/1340 Fetching feeds: 777/1340 Fetching feeds: 778/1340 Fetching feeds: 779/1340 Fetching feeds: 780/1340 Fetching feeds: 781/1340 Fetching feeds: 782/1340 Fetching feeds: 783/1340 Fetching feeds: 784/1340 Fetching feeds: 785/1340 Fetching feeds: 786/1340 Fetching feeds: 787/1340 Fetching feeds: 788/1340 Fetching feeds: 789/1340 Fetching feeds: 790/1340 Fetching feeds: 791/1340 Fetching feeds: 792/1340 Fetching feeds: 793/1340 Fetching feeds: 794/1340 Fetching feeds: 795/1340 Fetching feeds: 796/1340 Fetching feeds: 797/1340 Fetching feeds: 798/1340 Fetching feeds: 799/1340 Fetching feeds: 800/1340 Fetching feeds: 801/1340 Fetching feeds: 802/1340 Fetching feeds: 803/1340 Fetching feeds: 804/1340 Fetching feeds: 805/1340 Fetching feeds: 806/1340 Fetching feeds: 807/1340 Fetching feeds: 808/1340 Fetching feeds: 809/1340 Fetching feeds: 810/1340 Fetching feeds: 811/1340 Fetching feeds: 812/1340 Fetching feeds: 813/1340 Fetching feeds: 814/1340 Fetching feeds: 815/1340 Fetching feeds: 816/1340 Fetching feeds: 817/1340 Fetching feeds: 818/1340 Fetching feeds: 819/1340 Fetching feeds: 820/1340 Fetching feeds: 821/1340 Fetching feeds: 822/1340 Fetching feeds: 823/1340 Fetching feeds: 824/1340 Fetching feeds: 825/1340 Fetching feeds: 826/1340 Fetching feeds: 827/1340 Fetching feeds: 828/1340 Fetching feeds: 829/1340 Fetching feeds: 830/1340 Fetching feeds: 831/1340 Fetching feeds: 832/1340 Fetching feeds: 833/1340 Fetching feeds: 834/1340 Fetching feeds: 835/1340 Fetching feeds: 836/1340 Fetching feeds: 837/1340 Fetching feeds: 838/1340 Fetching feeds: 839/1340 Fetching feeds: 840/1340 Fetching feeds: 841/1340 Fetching feeds: 842/1340 Fetching feeds: 843/1340 Fetching feeds: 844/1340 Fetching feeds: 845/1340 Fetching feeds: 846/1340 Fetching feeds: 847/1340 Fetching feeds: 848/1340 Fetching feeds: 849/1340 Fetching feeds: 850/1340 Fetching feeds: 851/1340 Fetching feeds: 852/1340 Fetching feeds: 853/1340 Fetching feeds: 854/1340 Fetching feeds: 855/1340 Fetching feeds: 856/1340 Fetching feeds: 857/1340 Fetching feeds: 858/1340 Fetching feeds: 859/1340 Fetching feeds: 860/1340 Fetching feeds: 861/1340 Fetching feeds: 862/1340 Fetching feeds: 863/1340 Fetching feeds: 864/1340 Fetching feeds: 865/1340 Fetching feeds: 866/1340 Fetching feeds: 867/1340 Fetching feeds: 868/1340 Fetching feeds: 869/1340 Fetching feeds: 870/1340 Fetching feeds: 871/1340 Fetching feeds: 872/1340 Fetching feeds: 873/1340 Fetching feeds: 874/1340 Fetching feeds: 875/1340 Fetching feeds: 876/1340 Fetching feeds: 877/1340 Fetching feeds: 878/1340 Fetching feeds: 879/1340 Fetching feeds: 880/1340 Fetching feeds: 881/1340 Fetching feeds: 882/1340 Fetching feeds: 883/1340 Fetching feeds: 884/1340 Fetching feeds: 885/1340 Fetching feeds: 886/1340 Fetching feeds: 887/1340 Fetching feeds: 888/1340 Fetching feeds: 889/1340 Fetching feeds: 890/1340 Fetching feeds: 891/1340 Fetching feeds: 892/1340 Fetching feeds: 893/1340 Fetching feeds: 894/1340 Fetching feeds: 895/1340 Fetching feeds: 896/1340 Fetching feeds: 897/1340 Fetching feeds: 898/1340 Fetching feeds: 899/1340 Fetching feeds: 900/1340 Fetching feeds: 901/1340 Fetching feeds: 902/1340 Fetching feeds: 903/1340 Fetching feeds: 904/1340 Fetching feeds: 905/1340 Fetching feeds: 906/1340 Fetching feeds: 907/1340 Fetching feeds: 908/1340 Fetching feeds: 909/1340 Fetching feeds: 910/1340 Fetching feeds: 911/1340 Fetching feeds: 912/1340 Fetching feeds: 913/1340 Fetching feeds: 914/1340 Fetching feeds: 915/1340 Fetching feeds: 916/1340 Fetching feeds: 917/1340 Fetching feeds: 918/1340 Fetching feeds: 919/1340 Fetching feeds: 920/1340 Fetching feeds: 921/1340 Fetching feeds: 922/1340 Fetching feeds: 923/1340 Fetching feeds: 924/1340 Fetching feeds: 925/1340 Fetching feeds: 926/1340 Fetching feeds: 927/1340 Fetching feeds: 928/1340 Fetching feeds: 929/1340 Fetching feeds: 930/1340 Fetching feeds: 931/1340 Fetching feeds: 932/1340 Fetching feeds: 933/1340 Fetching feeds: 934/1340 Fetching feeds: 935/1340 Fetching feeds: 936/1340 Fetching feeds: 937/1340 Fetching feeds: 938/1340 Fetching feeds: 939/1340 Fetching feeds: 940/1340 Fetching feeds: 941/1340 Fetching feeds: 942/1340 Fetching feeds: 943/1340 Fetching feeds: 944/1340 Fetching feeds: 945/1340 Fetching feeds: 946/1340 Fetching feeds: 947/1340 Fetching feeds: 948/1340 Fetching feeds: 949/1340 Fetching feeds: 950/1340 Fetching feeds: 951/1340 Fetching feeds: 952/1340 Fetching feeds: 953/1340 Fetching feeds: 954/1340 Fetching feeds: 955/1340 Fetching feeds: 956/1340 Fetching feeds: 957/1340 Fetching feeds: 958/1340 Fetching feeds: 959/1340 Fetching feeds: 960/1340 Fetching feeds: 961/1340 Fetching feeds: 962/1340 Fetching feeds: 963/1340 Fetching feeds: 964/1340 Fetching feeds: 965/1340 Fetching feeds: 966/1340 Fetching feeds: 967/1340 Fetching feeds: 968/1340 Fetching feeds: 969/1340 Fetching feeds: 970/1340 Fetching feeds: 971/1340 Fetching feeds: 972/1340 Fetching feeds: 973/1340 Fetching feeds: 974/1340 Fetching feeds: 975/1340 Fetching feeds: 976/1340 Fetching feeds: 977/1340 Fetching feeds: 978/1340 Fetching feeds: 979/1340 Fetching feeds: 980/1340 Fetching feeds: 981/1340 Fetching feeds: 982/1340 Fetching feeds: 983/1340 Fetching feeds: 984/1340 Fetching feeds: 985/1340 Fetching feeds: 986/1340 Fetching feeds: 987/1340 Fetching feeds: 988/1340 Fetching feeds: 989/1340 Fetching feeds: 990/1340 Fetching feeds: 991/1340 Fetching feeds: 992/1340 Fetching feeds: 993/1340 Fetching feeds: 994/1340 Fetching feeds: 995/1340 Fetching feeds: 996/1340 Fetching feeds: 997/1340 Fetching feeds: 998/1340 Fetching feeds: 999/1340 Fetching feeds: 1000/1340 Fetching feeds: 1001/1340 Fetching feeds: 1002/1340 Fetching feeds: 1003/1340 Fetching feeds: 1004/1340 Fetching feeds: 1005/1340 Fetching feeds: 1006/1340 Fetching feeds: 1007/1340 Fetching feeds: 1008/1340 Fetching feeds: 1009/1340 Fetching feeds: 1010/1340 Fetching feeds: 1011/1340 Fetching feeds: 1012/1340 Fetching feeds: 1013/1340 Fetching feeds: 1014/1340 Fetching feeds: 1015/1340 Fetching feeds: 1016/1340 Fetching feeds: 1017/1340 Fetching feeds: 1018/1340 Fetching feeds: 1019/1340 Fetching feeds: 1020/1340 Fetching feeds: 1021/1340 Fetching feeds: 1022/1340 Fetching feeds: 1023/1340 Fetching feeds: 1024/1340 Fetching feeds: 1025/1340 Fetching feeds: 1026/1340 Fetching feeds: 1027/1340 Fetching feeds: 1028/1340 Fetching feeds: 1029/1340 Fetching feeds: 1030/1340 Fetching feeds: 1031/1340 Fetching feeds: 1032/1340 Fetching feeds: 1033/1340 Fetching feeds: 1034/1340 Fetching feeds: 1035/1340 Fetching feeds: 1036/1340 Fetching feeds: 1037/1340 Fetching feeds: 1038/1340 Fetching feeds: 1039/1340 Fetching feeds: 1040/1340 Fetching feeds: 1041/1340 Fetching feeds: 1042/1340 Fetching feeds: 1043/1340 Fetching feeds: 1044/1340 Fetching feeds: 1045/1340 Fetching feeds: 1046/1340 Fetching feeds: 1047/1340 Fetching feeds: 1048/1340 Fetching feeds: 1049/1340 Fetching feeds: 1050/1340 Fetching feeds: 1051/1340 Fetching feeds: 1052/1340 Fetching feeds: 1053/1340 Fetching feeds: 1054/1340 Fetching feeds: 1055/1340 Fetching feeds: 1056/1340 Fetching feeds: 1057/1340 Fetching feeds: 1058/1340 Fetching feeds: 1059/1340 Fetching feeds: 1060/1340 Fetching feeds: 1061/1340 Fetching feeds: 1062/1340 Fetching feeds: 1063/1340 Fetching feeds: 1064/1340 Fetching feeds: 1065/1340 Fetching feeds: 1066/1340 Fetching feeds: 1067/1340 Fetching feeds: 1068/1340 Fetching feeds: 1069/1340 Fetching feeds: 1070/1340 Fetching feeds: 1071/1340 Fetching feeds: 1072/1340 Fetching feeds: 1073/1340 Fetching feeds: 1074/1340 Fetching feeds: 1075/1340 Fetching feeds: 1076/1340 Fetching feeds: 1077/1340 Fetching feeds: 1078/1340 Fetching feeds: 1079/1340 Fetching feeds: 1080/1340 Fetching feeds: 1081/1340 Fetching feeds: 1082/1340 Fetching feeds: 1083/1340 Fetching feeds: 1084/1340 Fetching feeds: 1085/1340 Fetching feeds: 1086/1340 Fetching feeds: 1087/1340 Fetching feeds: 1088/1340 Fetching feeds: 1089/1340 Fetching feeds: 1090/1340 Fetching feeds: 1091/1340 Fetching feeds: 1092/1340 Fetching feeds: 1093/1340 Fetching feeds: 1094/1340 Fetching feeds: 1095/1340 Fetching feeds: 1096/1340 Fetching feeds: 1097/1340 Fetching feeds: 1098/1340 Fetching feeds: 1099/1340 Fetching feeds: 1100/1340 Fetching feeds: 1101/1340 Fetching feeds: 1102/1340 Fetching feeds: 1103/1340 Fetching feeds: 1104/1340 Fetching feeds: 1105/1340 Fetching feeds: 1106/1340 Fetching feeds: 1107/1340 Fetching feeds: 1108/1340 Fetching feeds: 1109/1340 Fetching feeds: 1110/1340 Fetching feeds: 1111/1340 Fetching feeds: 1112/1340 Fetching feeds: 1113/1340 Fetching feeds: 1114/1340 Fetching feeds: 1115/1340 Fetching feeds: 1116/1340 Fetching feeds: 1117/1340 Fetching feeds: 1118/1340 Fetching feeds: 1119/1340 Fetching feeds: 1120/1340 Fetching feeds: 1121/1340 Fetching feeds: 1122/1340 Fetching feeds: 1123/1340 Fetching feeds: 1124/1340 Fetching feeds: 1125/1340 Fetching feeds: 1126/1340 Fetching feeds: 1127/1340 Fetching feeds: 1128/1340 Fetching feeds: 1129/1340 Fetching feeds: 1130/1340 Fetching feeds: 1131/1340 Fetching feeds: 1132/1340 Fetching feeds: 1133/1340 Fetching feeds: 1134/1340 Fetching feeds: 1135/1340 Fetching feeds: 1136/1340 Fetching feeds: 1137/1340 Fetching feeds: 1138/1340 Fetching feeds: 1139/1340 Fetching feeds: 1140/1340 Fetching feeds: 1141/1340 Fetching feeds: 1142/1340 Fetching feeds: 1143/1340 Fetching feeds: 1144/1340 Fetching feeds: 1145/1340 Fetching feeds: 1146/1340 Fetching feeds: 1147/1340 Fetching feeds: 1148/1340 Fetching feeds: 1149/1340 Fetching feeds: 1150/1340 Fetching feeds: 1151/1340 Fetching feeds: 1152/1340 Fetching feeds: 1153/1340 Fetching feeds: 1154/1340 Fetching feeds: 1155/1340 Fetching feeds: 1156/1340 Fetching feeds: 1157/1340 Fetching feeds: 1158/1340 Fetching feeds: 1159/1340 Fetching feeds: 1160/1340 Fetching feeds: 1161/1340 Fetching feeds: 1162/1340 Fetching feeds: 1163/1340 Fetching feeds: 1164/1340 Fetching feeds: 1165/1340 Fetching feeds: 1166/1340 Fetching feeds: 1167/1340 Fetching feeds: 1168/1340 Fetching feeds: 1169/1340 Fetching feeds: 1170/1340 Fetching feeds: 1171/1340 Fetching feeds: 1172/1340 Fetching feeds: 1173/1340 Fetching feeds: 1174/1340 Fetching feeds: 1175/1340 Fetching feeds: 1176/1340 Fetching feeds: 1177/1340 Fetching feeds: 1178/1340 Fetching feeds: 1179/1340 Fetching feeds: 1180/1340 Fetching feeds: 1181/1340 Fetching feeds: 1182/1340 Fetching feeds: 1183/1340 Fetching feeds: 1184/1340 Fetching feeds: 1185/1340 Fetching feeds: 1186/1340 Fetching feeds: 1187/1340 Fetching feeds: 1188/1340 Fetching feeds: 1189/1340 Fetching feeds: 1190/1340 Fetching feeds: 1191/1340 Fetching feeds: 1192/1340 Fetching feeds: 1193/1340 Fetching feeds: 1194/1340 Fetching feeds: 1195/1340 Fetching feeds: 1196/1340 Fetching feeds: 1197/1340 Fetching feeds: 1198/1340 Fetching feeds: 1199/1340 Fetching feeds: 1200/1340 Fetching feeds: 1201/1340 Fetching feeds: 1202/1340 Fetching feeds: 1203/1340 Fetching feeds: 1204/1340 Fetching feeds: 1205/1340 Fetching feeds: 1206/1340 Fetching feeds: 1207/1340 Fetching feeds: 1208/1340 Fetching feeds: 1209/1340 Fetching feeds: 1210/1340 Fetching feeds: 1211/1340 Fetching feeds: 1212/1340 Fetching feeds: 1213/1340 Fetching feeds: 1214/1340 Fetching feeds: 1215/1340 Fetching feeds: 1216/1340 Fetching feeds: 1217/1340 Fetching feeds: 1218/1340 Fetching feeds: 1219/1340 Fetching feeds: 1220/1340 Fetching feeds: 1221/1340 Fetching feeds: 1222/1340 Fetching feeds: 1223/1340 Fetching feeds: 1224/1340 Fetching feeds: 1225/1340 Fetching feeds: 1226/1340 Fetching feeds: 1227/1340 Fetching feeds: 1228/1340 Fetching feeds: 1229/1340 Fetching feeds: 1230/1340 Fetching feeds: 1231/1340 Fetching feeds: 1232/1340 Fetching feeds: 1233/1340 Fetching feeds: 1234/1340 Fetching feeds: 1235/1340 Fetching feeds: 1236/1340 Fetching feeds: 1237/1340 Fetching feeds: 1238/1340 Fetching feeds: 1239/1340 Fetching feeds: 1240/1340 Fetching feeds: 1241/1340 Fetching feeds: 1242/1340 Fetching feeds: 1243/1340 Fetching feeds: 1244/1340 Fetching feeds: 1245/1340 Fetching feeds: 1246/1340 Fetching feeds: 1247/1340 Fetching feeds: 1248/1340 Fetching feeds: 1249/1340 Fetching feeds: 1250/1340 Fetching feeds: 1251/1340 Fetching feeds: 1252/1340 Fetching feeds: 1253/1340 Fetching feeds: 1254/1340 Fetching feeds: 1255/1340 Fetching feeds: 1256/1340 Fetching feeds: 1257/1340 Fetching feeds: 1258/1340 Fetching feeds: 1259/1340 Fetching feeds: 1260/1340 Fetching feeds: 1261/1340 Fetching feeds: 1262/1340 Fetching feeds: 1263/1340 Fetching feeds: 1264/1340 Fetching feeds: 1265/1340 Fetching feeds: 1266/1340 Fetching feeds: 1267/1340 Fetching feeds: 1268/1340 Fetching feeds: 1269/1340 Fetching feeds: 1270/1340 Fetching feeds: 1271/1340 Fetching feeds: 1272/1340 Fetching feeds: 1273/1340 Fetching feeds: 1274/1340 Fetching feeds: 1275/1340 Fetching feeds: 1276/1340 Fetching feeds: 1277/1340 Fetching feeds: 1278/1340 Fetching feeds: 1279/1340 Fetching feeds: 1280/1340 Fetching feeds: 1281/1340 Fetching feeds: 1282/1340 Fetching feeds: 1283/1340 Fetching feeds: 1284/1340 Fetching feeds: 1285/1340 Fetching feeds: 1286/1340 Fetching feeds: 1287/1340 Fetching feeds: 1288/1340 Fetching feeds: 1289/1340 Fetching feeds: 1290/1340 Fetching feeds: 1291/1340 Fetching feeds: 1292/1340 Fetching feeds: 1293/1340 Fetching feeds: 1294/1340 Fetching feeds: 1295/1340 Fetching feeds: 1296/1340 Fetching feeds: 1297/1340 Fetching feeds: 1298/1340 Fetching feeds: 1299/1340 Fetching feeds: 1300/1340 Fetching feeds: 1301/1340 Fetching feeds: 1302/1340 Fetching feeds: 1303/1340 Fetching feeds: 1304/1340 Fetching feeds: 1305/1340 Fetching feeds: 1306/1340 Fetching feeds: 1307/1340 Fetching feeds: 1308/1340 Fetching feeds: 1309/1340 Fetching feeds: 1310/1340 Fetching feeds: 1311/1340 Fetching feeds: 1312/1340 Fetching feeds: 1313/1340 Fetching feeds: 1314/1340 Fetching feeds: 1315/1340 Fetching feeds: 1316/1340 Fetching feeds: 1317/1340 Fetching feeds: 1318/1340 Fetching feeds: 1319/1340 Fetching feeds: 1320/1340 Fetching feeds: 1321/1340 Fetching feeds: 1322/1340 Fetching feeds: 1323/1340 Fetching feeds: 1324/1340 Fetching feeds: 1325/1340 Fetching feeds: 1326/1340 Fetching feeds: 1327/1340 Fetching feeds: 1328/1340 Fetching feeds: 1329/1340 Fetching feeds: 1330/1340 Fetching feeds: 1331/1340 Fetching feeds: 1332/1340 Fetching feeds: 1333/1340 Fetching feeds: 1334/1340 Fetching feeds: 1335/1340 Fetching feeds: 1336/1340 Fetching feeds: 1337/1340 Fetching feeds: 1338/1340 Fetching feeds: 1339/1340 Fetching feeds: 1340/1340 Finished fetching feeds: 1340/1340 INFO:root:Saved raw game feeds JSON to data/20252026_raw_game_feeds.json INFO:root:Saved raw game feeds CSV to data/20252026_raw_game_feeds.csv Parsing feeds: 1/1340 Parsing feeds: 2/1340 Parsing feeds: 3/1340 Parsing feeds: 4/1340 Parsing feeds: 5/1340 Parsing feeds: 6/1340 Parsing feeds: 7/1340 Parsing feeds: 8/1340 Parsing feeds: 9/1340 Parsing feeds: 10/1340 Parsing feeds: 11/1340 Parsing feeds: 12/1340 Parsing feeds: 13/1340 Parsing feeds: 14/1340 Parsing feeds: 15/1340 Parsing feeds: 16/1340 Parsing feeds: 17/1340 Parsing feeds: 18/1340 Parsing feeds: 19/1340 Parsing feeds: 20/1340 Parsing feeds: 21/1340 Parsing feeds: 22/1340 Parsing feeds: 23/1340 Parsing feeds: 24/1340 Parsing feeds: 25/1340 Parsing feeds: 26/1340 Parsing feeds: 27/1340 Parsing feeds: 28/1340 Parsing feeds: 29/1340 Parsing feeds: 30/1340 Parsing feeds: 31/1340 Parsing feeds: 32/1340 Parsing feeds: 33/1340 Parsing feeds: 34/1340 Parsing feeds: 35/1340 Parsing feeds: 36/1340 Parsing feeds: 37/1340 Parsing feeds: 38/1340 Parsing feeds: 39/1340 Parsing feeds: 40/1340 Parsing feeds: 41/1340 Parsing feeds: 42/1340 Parsing feeds: 43/1340 Parsing feeds: 44/1340 Parsing feeds: 45/1340 Parsing feeds: 46/1340 Parsing feeds: 47/1340 Parsing feeds: 48/1340 Parsing feeds: 49/1340 Parsing feeds: 50/1340 Parsing feeds: 51/1340 Parsing feeds: 52/1340 Parsing feeds: 53/1340 Parsing feeds: 54/1340 Parsing feeds: 55/1340 Parsing feeds: 56/1340 Parsing feeds: 57/1340 Parsing feeds: 58/1340 Parsing feeds: 59/1340 Parsing feeds: 60/1340 Parsing feeds: 61/1340 Parsing feeds: 62/1340 Parsing feeds: 63/1340 Parsing feeds: 64/1340 Parsing feeds: 65/1340 Parsing feeds: 66/1340 Parsing feeds: 67/1340 Parsing feeds: 68/1340 Parsing feeds: 69/1340 Parsing feeds: 70/1340 Parsing feeds: 71/1340 Parsing feeds: 72/1340 Parsing feeds: 73/1340 Parsing feeds: 74/1340 Parsing feeds: 75/1340 Parsing feeds: 76/1340 Parsing feeds: 77/1340 Parsing feeds: 78/1340 Parsing feeds: 79/1340 Parsing feeds: 80/1340 Parsing feeds: 81/1340 Parsing feeds: 82/1340 Parsing feeds: 83/1340 Parsing feeds: 84/1340 Parsing feeds: 85/1340 Parsing feeds: 86/1340 Parsing feeds: 87/1340 Parsing feeds: 88/1340 Parsing feeds: 89/1340 Parsing feeds: 90/1340 Parsing feeds: 91/1340 Parsing feeds: 92/1340 Parsing feeds: 93/1340 Parsing feeds: 94/1340 Parsing feeds: 95/1340 Parsing feeds: 96/1340 Parsing feeds: 97/1340 Parsing feeds: 98/1340 Parsing feeds: 99/1340 Parsing feeds: 100/1340 Parsing feeds: 101/1340 Parsing feeds: 102/1340 Parsing feeds: 103/1340 Parsing feeds: 104/1340 Parsing feeds: 105/1340 Parsing feeds: 106/1340 Parsing feeds: 107/1340 Parsing feeds: 108/1340 Parsing feeds: 109/1340 Parsing feeds: 110/1340 Parsing feeds: 111/1340 Parsing feeds: 112/1340 Parsing feeds: 113/1340 Parsing feeds: 114/1340 Parsing feeds: 115/1340 Parsing feeds: 116/1340 Parsing feeds: 117/1340 Parsing feeds: 118/1340 Parsing feeds: 119/1340 Parsing feeds: 120/1340 Parsing feeds: 121/1340 Parsing feeds: 122/1340 Parsing feeds: 123/1340 Parsing feeds: 124/1340 Parsing feeds: 125/1340 Parsing feeds: 126/1340 Parsing feeds: 127/1340 Parsing feeds: 128/1340 Parsing feeds: 129/1340 Parsing feeds: 130/1340 Parsing feeds: 131/1340 Parsing feeds: 132/1340 Parsing feeds: 133/1340 Parsing feeds: 134/1340 Parsing feeds: 135/1340 Parsing feeds: 136/1340 Parsing feeds: 137/1340 Parsing feeds: 138/1340 Parsing feeds: 139/1340 Parsing feeds: 140/1340 Parsing feeds: 141/1340 Parsing feeds: 142/1340 Parsing feeds: 143/1340 Parsing feeds: 144/1340 Parsing feeds: 145/1340 Parsing feeds: 146/1340 Parsing feeds: 147/1340 Parsing feeds: 148/1340 Parsing feeds: 149/1340 Parsing feeds: 150/1340 Parsing feeds: 151/1340 Parsing feeds: 152/1340 Parsing feeds: 153/1340 Parsing feeds: 154/1340 Parsing feeds: 155/1340 Parsing feeds: 156/1340 Parsing feeds: 157/1340 Parsing feeds: 158/1340 Parsing feeds: 159/1340 Parsing feeds: 160/1340 Parsing feeds: 161/1340 Parsing feeds: 162/1340 Parsing feeds: 163/1340 Parsing feeds: 164/1340 Parsing feeds: 165/1340 Parsing feeds: 166/1340 Parsing feeds: 167/1340 Parsing feeds: 168/1340 Parsing feeds: 169/1340 Parsing feeds: 170/1340 Parsing feeds: 171/1340 Parsing feeds: 172/1340 Parsing feeds: 173/1340 Parsing feeds: 174/1340 Parsing feeds: 175/1340 Parsing feeds: 176/1340 Parsing feeds: 177/1340 Parsing feeds: 178/1340 Parsing feeds: 179/1340 Parsing feeds: 180/1340 Parsing feeds: 181/1340 Parsing feeds: 182/1340 Parsing feeds: 183/1340 Parsing feeds: 184/1340 Parsing feeds: 185/1340 Parsing feeds: 186/1340 Parsing feeds: 187/1340 Parsing feeds: 188/1340 Parsing feeds: 189/1340 Parsing feeds: 190/1340 Parsing feeds: 191/1340 Parsing feeds: 192/1340 Parsing feeds: 193/1340 Parsing feeds: 194/1340 Parsing feeds: 195/1340 Parsing feeds: 196/1340 Parsing feeds: 197/1340 Parsing feeds: 198/1340 Parsing feeds: 199/1340 Parsing feeds: 200/1340 Parsing feeds: 201/1340 Parsing feeds: 202/1340 Parsing feeds: 203/1340 Parsing feeds: 204/1340 Parsing feeds: 205/1340 Parsing feeds: 206/1340 Parsing feeds: 207/1340 Parsing feeds: 208/1340 Parsing feeds: 209/1340 Parsing feeds: 210/1340 Parsing feeds: 211/1340 Parsing feeds: 212/1340 Parsing feeds: 213/1340 Parsing feeds: 214/1340 Parsing feeds: 215/1340 Parsing feeds: 216/1340 Parsing feeds: 217/1340 Parsing feeds: 218/1340 Parsing feeds: 219/1340 Parsing feeds: 220/1340 Parsing feeds: 221/1340 Parsing feeds: 222/1340 Parsing feeds: 223/1340 Parsing feeds: 224/1340 Parsing feeds: 225/1340 Parsing feeds: 226/1340 Parsing feeds: 227/1340 Parsing feeds: 228/1340 Parsing feeds: 229/1340 Parsing feeds: 230/1340 Parsing feeds: 231/1340 Parsing feeds: 232/1340 Parsing feeds: 233/1340 Parsing feeds: 234/1340 Parsing feeds: 235/1340 Parsing feeds: 236/1340 Parsing feeds: 237/1340 Parsing feeds: 238/1340 Parsing feeds: 239/1340 Parsing feeds: 240/1340 Parsing feeds: 241/1340 Parsing feeds: 242/1340 Parsing feeds: 243/1340 Parsing feeds: 244/1340 Parsing feeds: 245/1340 Parsing feeds: 246/1340 Parsing feeds: 247/1340 Parsing feeds: 248/1340 Parsing feeds: 249/1340 Parsing feeds: 250/1340 Parsing feeds: 251/1340 Parsing feeds: 252/1340 Parsing feeds: 253/1340 Parsing feeds: 254/1340 Parsing feeds: 255/1340 Parsing feeds: 256/1340 Parsing feeds: 257/1340 Parsing feeds: 258/1340 Parsing feeds: 259/1340 Parsing feeds: 260/1340 Parsing feeds: 261/1340 Parsing feeds: 262/1340 Parsing feeds: 263/1340 Parsing feeds: 264/1340 Parsing feeds: 265/1340 Parsing feeds: 266/1340 Parsing feeds: 267/1340 Parsing feeds: 268/1340 Parsing feeds: 269/1340 Parsing feeds: 270/1340 Parsing feeds: 271/1340 Parsing feeds: 272/1340 Parsing feeds: 273/1340 Parsing feeds: 274/1340 Parsing feeds: 275/1340 Parsing feeds: 276/1340 Parsing feeds: 277/1340 Parsing feeds: 278/1340 Parsing feeds: 279/1340 Parsing feeds: 280/1340 Parsing feeds: 281/1340 Parsing feeds: 282/1340 Parsing feeds: 283/1340 Parsing feeds: 284/1340 Parsing feeds: 285/1340 Parsing feeds: 286/1340 Parsing feeds: 287/1340 Parsing feeds: 288/1340 Parsing feeds: 289/1340 Parsing feeds: 290/1340 Parsing feeds: 291/1340 Parsing feeds: 292/1340 Parsing feeds: 293/1340 Parsing feeds: 294/1340 Parsing feeds: 295/1340 Parsing feeds: 296/1340 Parsing feeds: 297/1340 Parsing feeds: 298/1340 Parsing feeds: 299/1340 Parsing feeds: 300/1340 Parsing feeds: 301/1340 Parsing feeds: 302/1340 Parsing feeds: 303/1340 Parsing feeds: 304/1340 Parsing feeds: 305/1340 Parsing feeds: 306/1340 Parsing feeds: 307/1340 Parsing feeds: 308/1340 Parsing feeds: 309/1340 Parsing feeds: 310/1340 Parsing feeds: 311/1340 Parsing feeds: 312/1340 Parsing feeds: 313/1340 Parsing feeds: 314/1340 Parsing feeds: 315/1340 Parsing feeds: 316/1340 Parsing feeds: 317/1340 Parsing feeds: 318/1340 Parsing feeds: 319/1340 Parsing feeds: 320/1340 Parsing feeds: 321/1340 Parsing feeds: 322/1340 Parsing feeds: 323/1340 Parsing feeds: 324/1340 Parsing feeds: 325/1340 Parsing feeds: 326/1340 Parsing feeds: 327/1340 Parsing feeds: 328/1340 Parsing feeds: 329/1340 Parsing feeds: 330/1340 Parsing feeds: 331/1340 Parsing feeds: 332/1340 Parsing feeds: 333/1340 Parsing feeds: 334/1340 Parsing feeds: 335/1340 Parsing feeds: 336/1340 Parsing feeds: 337/1340 Parsing feeds: 338/1340 Parsing feeds: 339/1340 Parsing feeds: 340/1340 Parsing feeds: 341/1340 Parsing feeds: 342/1340 Parsing feeds: 343/1340 Parsing feeds: 344/1340 Parsing feeds: 345/1340 Parsing feeds: 346/1340 Parsing feeds: 347/1340 Parsing feeds: 348/1340 Parsing feeds: 349/1340 Parsing feeds: 350/1340 Parsing feeds: 351/1340 Parsing feeds: 352/1340 Parsing feeds: 353/1340 Parsing feeds: 354/1340 Parsing feeds: 355/1340 Parsing feeds: 356/1340 Parsing feeds: 357/1340 Parsing feeds: 358/1340 Parsing feeds: 359/1340 Parsing feeds: 360/1340 Parsing feeds: 361/1340 Parsing feeds: 362/1340 Parsing feeds: 363/1340 Parsing feeds: 364/1340 Parsing feeds: 365/1340 Parsing feeds: 366/1340 Parsing feeds: 367/1340 Parsing feeds: 368/1340 Parsing feeds: 369/1340 Parsing feeds: 370/1340 Parsing feeds: 371/1340 Parsing feeds: 372/1340 Parsing feeds: 373/1340 Parsing feeds: 374/1340 Parsing feeds: 375/1340 Parsing feeds: 376/1340 Parsing feeds: 377/1340 Parsing feeds: 378/1340 Parsing feeds: 379/1340 Parsing feeds: 380/1340 Parsing feeds: 381/1340 Parsing feeds: 382/1340 Parsing feeds: 383/1340 Parsing feeds: 384/1340 Parsing feeds: 385/1340 Parsing feeds: 386/1340 Parsing feeds: 387/1340 Parsing feeds: 388/1340 Parsing feeds: 389/1340 Parsing feeds: 390/1340 Parsing feeds: 391/1340 Parsing feeds: 392/1340 Parsing feeds: 393/1340 Parsing feeds: 394/1340 Parsing feeds: 395/1340 Parsing feeds: 396/1340 Parsing feeds: 397/1340 Parsing feeds: 398/1340 Parsing feeds: 399/1340 Parsing feeds: 400/1340 Parsing feeds: 401/1340 Parsing feeds: 402/1340 Parsing feeds: 403/1340 Parsing feeds: 404/1340 Parsing feeds: 405/1340 Parsing feeds: 406/1340 Parsing feeds: 407/1340 Parsing feeds: 408/1340 Parsing feeds: 409/1340 Parsing feeds: 410/1340 Parsing feeds: 411/1340 Parsing feeds: 412/1340 Parsing feeds: 413/1340 Parsing feeds: 414/1340 Parsing feeds: 415/1340 Parsing feeds: 416/1340 Parsing feeds: 417/1340 Parsing feeds: 418/1340 Parsing feeds: 419/1340 Parsing feeds: 420/1340 Parsing feeds: 421/1340 Parsing feeds: 422/1340 Parsing feeds: 423/1340 Parsing feeds: 424/1340 Parsing feeds: 425/1340 Parsing feeds: 426/1340 Parsing feeds: 427/1340 Parsing feeds: 428/1340 Parsing feeds: 429/1340 Parsing feeds: 430/1340 Parsing feeds: 431/1340 Parsing feeds: 432/1340 Parsing feeds: 433/1340 Parsing feeds: 434/1340 Parsing feeds: 435/1340 Parsing feeds: 436/1340 Parsing feeds: 437/1340 Parsing feeds: 438/1340 Parsing feeds: 439/1340 Parsing feeds: 440/1340 Parsing feeds: 441/1340 Parsing feeds: 442/1340 Parsing feeds: 443/1340 Parsing feeds: 444/1340 Parsing feeds: 445/1340 Parsing feeds: 446/1340 Parsing feeds: 447/1340 Parsing feeds: 448/1340 Parsing feeds: 449/1340 Parsing feeds: 450/1340 Parsing feeds: 451/1340 Parsing feeds: 452/1340 Parsing feeds: 453/1340 Parsing feeds: 454/1340 Parsing feeds: 455/1340 Parsing feeds: 456/1340 Parsing feeds: 457/1340 Parsing feeds: 458/1340 Parsing feeds: 459/1340 Parsing feeds: 460/1340 Parsing feeds: 461/1340 Parsing feeds: 462/1340 Parsing feeds: 463/1340 Parsing feeds: 464/1340 Parsing feeds: 465/1340 Parsing feeds: 466/1340 Parsing feeds: 467/1340 Parsing feeds: 468/1340 Parsing feeds: 469/1340 Parsing feeds: 470/1340 Parsing feeds: 471/1340 Parsing feeds: 472/1340 Parsing feeds: 473/1340 Parsing feeds: 474/1340 Parsing feeds: 475/1340 Parsing feeds: 476/1340 Parsing feeds: 477/1340 Parsing feeds: 478/1340 Parsing feeds: 479/1340 Parsing feeds: 480/1340 Parsing feeds: 481/1340 Parsing feeds: 482/1340 Parsing feeds: 483/1340 Parsing feeds: 484/1340 Parsing feeds: 485/1340 Parsing feeds: 486/1340 Parsing feeds: 487/1340 Parsing feeds: 488/1340 Parsing feeds: 489/1340 Parsing feeds: 490/1340 Parsing feeds: 491/1340 Parsing feeds: 492/1340 Parsing feeds: 493/1340 Parsing feeds: 494/1340 Parsing feeds: 495/1340 Parsing feeds: 496/1340 Parsing feeds: 497/1340 Parsing feeds: 498/1340 Parsing feeds: 499/1340 Parsing feeds: 500/1340 Parsing feeds: 501/1340 Parsing feeds: 502/1340 Parsing feeds: 503/1340 Parsing feeds: 504/1340 Parsing feeds: 505/1340 Parsing feeds: 506/1340 Parsing feeds: 507/1340 Parsing feeds: 508/1340 Parsing feeds: 509/1340 Parsing feeds: 510/1340 Parsing feeds: 511/1340 Parsing feeds: 512/1340 Parsing feeds: 513/1340 Parsing feeds: 514/1340 Parsing feeds: 515/1340 Parsing feeds: 516/1340 Parsing feeds: 517/1340 Parsing feeds: 518/1340 Parsing feeds: 519/1340 Parsing feeds: 520/1340 Parsing feeds: 521/1340 Parsing feeds: 522/1340 Parsing feeds: 523/1340 Parsing feeds: 524/1340 Parsing feeds: 525/1340 Parsing feeds: 526/1340 Parsing feeds: 527/1340 Parsing feeds: 528/1340 Parsing feeds: 529/1340 Parsing feeds: 530/1340 Parsing feeds: 531/1340 Parsing feeds: 532/1340 Parsing feeds: 533/1340 Parsing feeds: 534/1340 Parsing feeds: 535/1340 Parsing feeds: 536/1340 Parsing feeds: 537/1340 Parsing feeds: 538/1340 Parsing feeds: 539/1340 Parsing feeds: 540/1340 Parsing feeds: 541/1340 Parsing feeds: 542/1340 Parsing feeds: 543/1340 Parsing feeds: 544/1340 Parsing feeds: 545/1340 Parsing feeds: 546/1340 Parsing feeds: 547/1340 Parsing feeds: 548/1340 Parsing feeds: 549/1340 Parsing feeds: 550/1340 Parsing feeds: 551/1340 Parsing feeds: 552/1340 Parsing feeds: 553/1340 Parsing feeds: 554/1340 Parsing feeds: 555/1340 Parsing feeds: 556/1340 Parsing feeds: 557/1340 Parsing feeds: 558/1340 Parsing feeds: 559/1340 Parsing feeds: 560/1340 Parsing feeds: 561/1340 Parsing feeds: 562/1340 Parsing feeds: 563/1340 Parsing feeds: 564/1340 Parsing feeds: 565/1340 Parsing feeds: 566/1340 Parsing feeds: 567/1340 Parsing feeds: 568/1340 Parsing feeds: 569/1340 Parsing feeds: 570/1340 Parsing feeds: 571/1340 Parsing feeds: 572/1340 Parsing feeds: 573/1340 Parsing feeds: 574/1340 Parsing feeds: 575/1340 Parsing feeds: 576/1340 Parsing feeds: 577/1340 Parsing feeds: 578/1340 Parsing feeds: 579/1340 Parsing feeds: 580/1340 Parsing feeds: 581/1340 Parsing feeds: 582/1340 Parsing feeds: 583/1340 Parsing feeds: 584/1340 Parsing feeds: 585/1340 Parsing feeds: 586/1340 Parsing feeds: 587/1340 Parsing feeds: 588/1340 Parsing feeds: 589/1340 Parsing feeds: 590/1340 Parsing feeds: 591/1340 Parsing feeds: 592/1340 Parsing feeds: 593/1340 Parsing feeds: 594/1340 Parsing feeds: 595/1340 Parsing feeds: 596/1340 Parsing feeds: 597/1340 Parsing feeds: 598/1340 Parsing feeds: 599/1340 Parsing feeds: 600/1340 Parsing feeds: 601/1340 Parsing feeds: 602/1340 Parsing feeds: 603/1340 Parsing feeds: 604/1340 Parsing feeds: 605/1340 Parsing feeds: 606/1340 Parsing feeds: 607/1340 Parsing feeds: 608/1340 Parsing feeds: 609/1340 Parsing feeds: 610/1340 Parsing feeds: 611/1340 Parsing feeds: 612/1340 Parsing feeds: 613/1340 Parsing feeds: 614/1340 Parsing feeds: 615/1340 Parsing feeds: 616/1340 Parsing feeds: 617/1340 Parsing feeds: 618/1340 Parsing feeds: 619/1340 Parsing feeds: 620/1340 Parsing feeds: 621/1340 Parsing feeds: 622/1340 Parsing feeds: 623/1340 Parsing feeds: 624/1340 Parsing feeds: 625/1340 Parsing feeds: 626/1340 Parsing feeds: 627/1340 Parsing feeds: 628/1340 Parsing feeds: 629/1340 Parsing feeds: 630/1340 Parsing feeds: 631/1340 Parsing feeds: 632/1340 Parsing feeds: 633/1340 Parsing feeds: 634/1340 Parsing feeds: 635/1340 Parsing feeds: 636/1340 Parsing feeds: 637/1340 Parsing feeds: 638/1340 Parsing feeds: 639/1340 Parsing feeds: 640/1340 Parsing feeds: 641/1340 Parsing feeds: 642/1340 Parsing feeds: 643/1340 Parsing feeds: 644/1340 Parsing feeds: 645/1340 Parsing feeds: 646/1340 Parsing feeds: 647/1340 Parsing feeds: 648/1340 Parsing feeds: 649/1340 Parsing feeds: 650/1340 Parsing feeds: 651/1340 Parsing feeds: 652/1340 Parsing feeds: 653/1340 Parsing feeds: 654/1340 Parsing feeds: 655/1340 Parsing feeds: 656/1340 Parsing feeds: 657/1340 Parsing feeds: 658/1340 Parsing feeds: 659/1340 Parsing feeds: 660/1340 Parsing feeds: 661/1340 Parsing feeds: 662/1340 Parsing feeds: 663/1340 Parsing feeds: 664/1340 Parsing feeds: 665/1340 Parsing feeds: 666/1340 Parsing feeds: 667/1340 Parsing feeds: 668/1340 Parsing feeds: 669/1340 Parsing feeds: 670/1340 Parsing feeds: 671/1340 Parsing feeds: 672/1340 Parsing feeds: 673/1340 Parsing feeds: 674/1340 Parsing feeds: 675/1340 Parsing feeds: 676/1340 Parsing feeds: 677/1340 Parsing feeds: 678/1340 Parsing feeds: 679/1340 Parsing feeds: 680/1340 Parsing feeds: 681/1340 Parsing feeds: 682/1340 Parsing feeds: 683/1340 Parsing feeds: 684/1340 Parsing feeds: 685/1340 Parsing feeds: 686/1340 Parsing feeds: 687/1340 Parsing feeds: 688/1340 Parsing feeds: 689/1340 Parsing feeds: 690/1340 Parsing feeds: 691/1340 Parsing feeds: 692/1340 Parsing feeds: 693/1340 Parsing feeds: 694/1340 Parsing feeds: 695/1340 Parsing feeds: 696/1340 Parsing feeds: 697/1340 Parsing feeds: 698/1340 Parsing feeds: 699/1340 Parsing feeds: 700/1340 Parsing feeds: 701/1340 Parsing feeds: 702/1340 Parsing feeds: 703/1340 Parsing feeds: 704/1340 Parsing feeds: 705/1340 Parsing feeds: 706/1340 Parsing feeds: 707/1340 Parsing feeds: 708/1340 Parsing feeds: 709/1340 Parsing feeds: 710/1340 Parsing feeds: 711/1340 Parsing feeds: 712/1340 Parsing feeds: 713/1340 Parsing feeds: 714/1340 Parsing feeds: 715/1340 Parsing feeds: 716/1340 Parsing feeds: 717/1340 Parsing feeds: 718/1340 Parsing feeds: 719/1340 Parsing feeds: 720/1340 Parsing feeds: 721/1340 Parsing feeds: 722/1340 Parsing feeds: 723/1340 Parsing feeds: 724/1340 Parsing feeds: 725/1340 Parsing feeds: 726/1340 Parsing feeds: 727/1340 Parsing feeds: 728/1340 Parsing feeds: 729/1340 Parsing feeds: 730/1340 Parsing feeds: 731/1340 Parsing feeds: 732/1340 Parsing feeds: 733/1340 Parsing feeds: 734/1340 Parsing feeds: 735/1340 Parsing feeds: 736/1340 Parsing feeds: 737/1340 Parsing feeds: 738/1340 Parsing feeds: 739/1340 Parsing feeds: 740/1340 Parsing feeds: 741/1340 Parsing feeds: 742/1340 Parsing feeds: 743/1340 Parsing feeds: 744/1340 Parsing feeds: 745/1340 Parsing feeds: 746/1340 Parsing feeds: 747/1340 Parsing feeds: 748/1340 Parsing feeds: 749/1340 Parsing feeds: 750/1340 Parsing feeds: 751/1340 Parsing feeds: 752/1340 Parsing feeds: 753/1340 Parsing feeds: 754/1340 Parsing feeds: 755/1340 Parsing feeds: 756/1340 Parsing feeds: 757/1340 Parsing feeds: 758/1340 Parsing feeds: 759/1340 Parsing feeds: 760/1340 Parsing feeds: 761/1340 Parsing feeds: 762/1340 Parsing feeds: 763/1340 Parsing feeds: 764/1340 Parsing feeds: 765/1340 Parsing feeds: 766/1340 Parsing feeds: 767/1340 Parsing feeds: 768/1340 Parsing feeds: 769/1340 Parsing feeds: 770/1340 Parsing feeds: 771/1340 Parsing feeds: 772/1340 Parsing feeds: 773/1340 Parsing feeds: 774/1340 Parsing feeds: 775/1340 Parsing feeds: 776/1340 Parsing feeds: 777/1340 Parsing feeds: 778/1340 Parsing feeds: 779/1340 Parsing feeds: 780/1340 Parsing feeds: 781/1340 Parsing feeds: 782/1340 Parsing feeds: 783/1340 Parsing feeds: 784/1340 Parsing feeds: 785/1340 Parsing feeds: 786/1340 Parsing feeds: 787/1340 Parsing feeds: 788/1340 Parsing feeds: 789/1340 Parsing feeds: 790/1340 Parsing feeds: 791/1340 Parsing feeds: 792/1340 Parsing feeds: 793/1340 Parsing feeds: 794/1340 Parsing feeds: 795/1340 Parsing feeds: 796/1340 Parsing feeds: 797/1340 Parsing feeds: 798/1340 Parsing feeds: 799/1340 Parsing feeds: 800/1340 Parsing feeds: 801/1340 Parsing feeds: 802/1340 Parsing feeds: 803/1340 Parsing feeds: 804/1340 Parsing feeds: 805/1340 Parsing feeds: 806/1340 Parsing feeds: 807/1340 Parsing feeds: 808/1340 Parsing feeds: 809/1340 Parsing feeds: 810/1340 Parsing feeds: 811/1340 Parsing feeds: 812/1340 Parsing feeds: 813/1340 Parsing feeds: 814/1340 Parsing feeds: 815/1340 Parsing feeds: 816/1340 Parsing feeds: 817/1340 Parsing feeds: 818/1340 Parsing feeds: 819/1340 Parsing feeds: 820/1340 Parsing feeds: 821/1340 Parsing feeds: 822/1340 Parsing feeds: 823/1340 Parsing feeds: 824/1340 Parsing feeds: 825/1340 Parsing feeds: 826/1340 Parsing feeds: 827/1340 Parsing feeds: 828/1340 Parsing feeds: 829/1340 Parsing feeds: 830/1340 Parsing feeds: 831/1340 Parsing feeds: 832/1340 Parsing feeds: 833/1340 Parsing feeds: 834/1340 Parsing feeds: 835/1340 Parsing feeds: 836/1340 Parsing feeds: 837/1340 Parsing feeds: 838/1340 Parsing feeds: 839/1340 Parsing feeds: 840/1340 Parsing feeds: 841/1340 Parsing feeds: 842/1340 Parsing feeds: 843/1340 Parsing feeds: 844/1340 Parsing feeds: 845/1340 Parsing feeds: 846/1340 Parsing feeds: 847/1340 Parsing feeds: 848/1340 Parsing feeds: 849/1340 Parsing feeds: 850/1340 Parsing feeds: 851/1340 Parsing feeds: 852/1340 Parsing feeds: 853/1340 Parsing feeds: 854/1340 Parsing feeds: 855/1340 Parsing feeds: 856/1340 Parsing feeds: 857/1340 Parsing feeds: 858/1340 Parsing feeds: 859/1340 Parsing feeds: 860/1340 Parsing feeds: 861/1340 Parsing feeds: 862/1340 Parsing feeds: 863/1340 Parsing feeds: 864/1340 Parsing feeds: 865/1340 Parsing feeds: 866/1340 Parsing feeds: 867/1340 Parsing feeds: 868/1340 Parsing feeds: 869/1340 Parsing feeds: 870/1340 Parsing feeds: 871/1340 Parsing feeds: 872/1340 Parsing feeds: 873/1340 Parsing feeds: 874/1340 Parsing feeds: 875/1340 Parsing feeds: 876/1340 Parsing feeds: 877/1340 Parsing feeds: 878/1340 Parsing feeds: 879/1340 Parsing feeds: 880/1340 Parsing feeds: 881/1340 Parsing feeds: 882/1340 Parsing feeds: 883/1340 Parsing feeds: 884/1340 Parsing feeds: 885/1340 Parsing feeds: 886/1340 Parsing feeds: 887/1340 Parsing feeds: 888/1340 Parsing feeds: 889/1340 Parsing feeds: 890/1340 Parsing feeds: 891/1340 Parsing feeds: 892/1340 Parsing feeds: 893/1340 Parsing feeds: 894/1340 Parsing feeds: 895/1340 Parsing feeds: 896/1340 Parsing feeds: 897/1340 Parsing feeds: 898/1340 Parsing feeds: 899/1340 Parsing feeds: 900/1340 Parsing feeds: 901/1340 Parsing feeds: 902/1340 Parsing feeds: 903/1340 Parsing feeds: 904/1340 Parsing feeds: 905/1340 Parsing feeds: 906/1340 Parsing feeds: 907/1340 Parsing feeds: 908/1340 Parsing feeds: 909/1340 Parsing feeds: 910/1340 Parsing feeds: 911/1340 Parsing feeds: 912/1340 Parsing feeds: 913/1340 Parsing feeds: 914/1340 Parsing feeds: 915/1340 Parsing feeds: 916/1340 Parsing feeds: 917/1340 Parsing feeds: 918/1340 Parsing feeds: 919/1340 Parsing feeds: 920/1340 Parsing feeds: 921/1340 Parsing feeds: 922/1340 Parsing feeds: 923/1340 Parsing feeds: 924/1340 Parsing feeds: 925/1340 Parsing feeds: 926/1340 Parsing feeds: 927/1340 Parsing feeds: 928/1340 Parsing feeds: 929/1340 Parsing feeds: 930/1340 Parsing feeds: 931/1340 Parsing feeds: 932/1340 Parsing feeds: 933/1340 Parsing feeds: 934/1340 Parsing feeds: 935/1340 Parsing feeds: 936/1340 Parsing feeds: 937/1340 Parsing feeds: 938/1340 Parsing feeds: 939/1340 Parsing feeds: 940/1340 Parsing feeds: 941/1340 Parsing feeds: 942/1340 Parsing feeds: 943/1340 Parsing feeds: 944/1340 Parsing feeds: 945/1340 Parsing feeds: 946/1340 Parsing feeds: 947/1340 Parsing feeds: 948/1340 Parsing feeds: 949/1340 Parsing feeds: 950/1340 Parsing feeds: 951/1340 Parsing feeds: 952/1340 Parsing feeds: 953/1340 Parsing feeds: 954/1340 Parsing feeds: 955/1340 Parsing feeds: 956/1340 Parsing feeds: 957/1340 Parsing feeds: 958/1340 Parsing feeds: 959/1340 Parsing feeds: 960/1340 Parsing feeds: 961/1340 Parsing feeds: 962/1340 Parsing feeds: 963/1340 Parsing feeds: 964/1340 Parsing feeds: 965/1340 Parsing feeds: 966/1340 Parsing feeds: 967/1340 Parsing feeds: 968/1340 Parsing feeds: 969/1340 Parsing feeds: 970/1340 Parsing feeds: 971/1340 Parsing feeds: 972/1340 Parsing feeds: 973/1340 Parsing feeds: 974/1340 Parsing feeds: 975/1340 Parsing feeds: 976/1340 Parsing feeds: 977/1340 Parsing feeds: 978/1340 Parsing feeds: 979/1340 Parsing feeds: 980/1340 Parsing feeds: 981/1340 Parsing feeds: 982/1340 Parsing feeds: 983/1340 Parsing feeds: 984/1340 Parsing feeds: 985/1340 Parsing feeds: 986/1340 Parsing feeds: 987/1340 Parsing feeds: 988/1340 Parsing feeds: 989/1340 Parsing feeds: 990/1340 Parsing feeds: 991/1340 Parsing feeds: 992/1340 Parsing feeds: 993/1340 Parsing feeds: 994/1340 Parsing feeds: 995/1340 Parsing feeds: 996/1340 Parsing feeds: 997/1340 Parsing feeds: 998/1340 Parsing feeds: 999/1340 Parsing feeds: 1000/1340 Parsing feeds: 1001/1340 Parsing feeds: 1002/1340 Parsing feeds: 1003/1340 Parsing feeds: 1004/1340 Parsing feeds: 1005/1340 Parsing feeds: 1006/1340 Parsing feeds: 1007/1340 Parsing feeds: 1008/1340 Parsing feeds: 1009/1340 Parsing feeds: 1010/1340 Parsing feeds: 1011/1340 Parsing feeds: 1012/1340 Parsing feeds: 1013/1340 Parsing feeds: 1014/1340 Parsing feeds: 1015/1340 Parsing feeds: 1016/1340 Parsing feeds: 1017/1340 Parsing feeds: 1018/1340 Parsing feeds: 1019/1340 Parsing feeds: 1020/1340 Parsing feeds: 1021/1340 Parsing feeds: 1022/1340 Parsing feeds: 1023/1340 Parsing feeds: 1024/1340 Parsing feeds: 1025/1340 Parsing feeds: 1026/1340 Parsing feeds: 1027/1340 Parsing feeds: 1028/1340 Parsing feeds: 1029/1340 Parsing feeds: 1030/1340 Parsing feeds: 1031/1340 Parsing feeds: 1032/1340 Parsing feeds: 1033/1340 Parsing feeds: 1034/1340 Parsing feeds: 1035/1340 Parsing feeds: 1036/1340 Parsing feeds: 1037/1340 Parsing feeds: 1038/1340 Parsing feeds: 1039/1340 Parsing feeds: 1040/1340 Parsing feeds: 1041/1340 Parsing feeds: 1042/1340 Parsing feeds: 1043/1340 Parsing feeds: 1044/1340 Parsing feeds: 1045/1340 Parsing feeds: 1046/1340 Parsing feeds: 1047/1340 Parsing feeds: 1048/1340 Parsing feeds: 1049/1340 Parsing feeds: 1050/1340 Parsing feeds: 1051/1340 Parsing feeds: 1052/1340 Parsing feeds: 1053/1340 Parsing feeds: 1054/1340 Parsing feeds: 1055/1340 Parsing feeds: 1056/1340 Parsing feeds: 1057/1340 Parsing feeds: 1058/1340 Parsing feeds: 1059/1340 Parsing feeds: 1060/1340 Parsing feeds: 1061/1340 Parsing feeds: 1062/1340 Parsing feeds: 1063/1340 Parsing feeds: 1064/1340 Parsing feeds: 1065/1340 Parsing feeds: 1066/1340 Parsing feeds: 1067/1340 Parsing feeds: 1068/1340 Parsing feeds: 1069/1340 Parsing feeds: 1070/1340 Parsing feeds: 1071/1340 Parsing feeds: 1072/1340 Parsing feeds: 1073/1340 Parsing feeds: 1074/1340 Parsing feeds: 1075/1340 Parsing feeds: 1076/1340 Parsing feeds: 1077/1340 Parsing feeds: 1078/1340 Parsing feeds: 1079/1340 Parsing feeds: 1080/1340 Parsing feeds: 1081/1340 Parsing feeds: 1082/1340 Parsing feeds: 1083/1340 Parsing feeds: 1084/1340 Parsing feeds: 1085/1340 Parsing feeds: 1086/1340 Parsing feeds: 1087/1340 Parsing feeds: 1088/1340 Parsing feeds: 1089/1340 Parsing feeds: 1090/1340 Parsing feeds: 1091/1340 Parsing feeds: 1092/1340 Parsing feeds: 1093/1340 Parsing feeds: 1094/1340 Parsing feeds: 1095/1340 Parsing feeds: 1096/1340 Parsing feeds: 1097/1340 Parsing feeds: 1098/1340 Parsing feeds: 1099/1340 Parsing feeds: 1100/1340 Parsing feeds: 1101/1340 Parsing feeds: 1102/1340 Parsing feeds: 1103/1340 Parsing feeds: 1104/1340 Parsing feeds: 1105/1340 Parsing feeds: 1106/1340 Parsing feeds: 1107/1340 Parsing feeds: 1108/1340 Parsing feeds: 1109/1340 Parsing feeds: 1110/1340 Parsing feeds: 1111/1340 Parsing feeds: 1112/1340 Parsing feeds: 1113/1340 Parsing feeds: 1114/1340 Parsing feeds: 1115/1340 Parsing feeds: 1116/1340 Parsing feeds: 1117/1340 Parsing feeds: 1118/1340 Parsing feeds: 1119/1340 Parsing feeds: 1120/1340 Parsing feeds: 1121/1340 Parsing feeds: 1122/1340 Parsing feeds: 1123/1340 Parsing feeds: 1124/1340 Parsing feeds: 1125/1340 Parsing feeds: 1126/1340 Parsing feeds: 1127/1340 Parsing feeds: 1128/1340 Parsing feeds: 1129/1340 Parsing feeds: 1130/1340 Parsing feeds: 1131/1340 Parsing feeds: 1132/1340 Parsing feeds: 1133/1340 Parsing feeds: 1134/1340 Parsing feeds: 1135/1340 Parsing feeds: 1136/1340 Parsing feeds: 1137/1340 Parsing feeds: 1138/1340 Parsing feeds: 1139/1340 Parsing feeds: 1140/1340 Parsing feeds: 1141/1340 Parsing feeds: 1142/1340 Parsing feeds: 1143/1340 Parsing feeds: 1144/1340 Parsing feeds: 1145/1340 Parsing feeds: 1146/1340 Parsing feeds: 1147/1340 Parsing feeds: 1148/1340 Parsing feeds: 1149/1340 Parsing feeds: 1150/1340 Parsing feeds: 1151/1340 Parsing feeds: 1152/1340 Parsing feeds: 1153/1340 Parsing feeds: 1154/1340 Parsing feeds: 1155/1340 Parsing feeds: 1156/1340 Parsing feeds: 1157/1340 Parsing feeds: 1158/1340 Parsing feeds: 1159/1340 Parsing feeds: 1160/1340 Parsing feeds: 1161/1340 Parsing feeds: 1162/1340 Parsing feeds: 1163/1340 Parsing feeds: 1164/1340 Parsing feeds: 1165/1340 Parsing feeds: 1166/1340 Parsing feeds: 1167/1340 Parsing feeds: 1168/1340 Parsing feeds: 1169/1340 Parsing feeds: 1170/1340 Parsing feeds: 1171/1340 Parsing feeds: 1172/1340 Parsing feeds: 1173/1340 Parsing feeds: 1174/1340 Parsing feeds: 1175/1340 Parsing feeds: 1176/1340 Parsing feeds: 1177/1340 Parsing feeds: 1178/1340 Parsing feeds: 1179/1340 Parsing feeds: 1180/1340 Parsing feeds: 1181/1340 Parsing feeds: 1182/1340 Parsing feeds: 1183/1340 Parsing feeds: 1184/1340 Parsing feeds: 1185/1340 Parsing feeds: 1186/1340 Parsing feeds: 1187/1340 Parsing feeds: 1188/1340 Parsing feeds: 1189/1340 Parsing feeds: 1190/1340 Parsing feeds: 1191/1340 Parsing feeds: 1192/1340 Parsing feeds: 1193/1340 Parsing feeds: 1194/1340 Parsing feeds: 1195/1340 Parsing feeds: 1196/1340 Parsing feeds: 1197/1340 Parsing feeds: 1198/1340 Parsing feeds: 1199/1340 Parsing feeds: 1200/1340 Parsing feeds: 1201/1340 Parsing feeds: 1202/1340 Parsing feeds: 1203/1340 Parsing feeds: 1204/1340 Parsing feeds: 1205/1340 Parsing feeds: 1206/1340 Parsing feeds: 1207/1340 Parsing feeds: 1208/1340 Parsing feeds: 1209/1340 Parsing feeds: 1210/1340 Parsing feeds: 1211/1340 Parsing feeds: 1212/1340 Parsing feeds: 1213/1340 Parsing feeds: 1214/1340 Parsing feeds: 1215/1340 Parsing feeds: 1216/1340 Parsing feeds: 1217/1340 Parsing feeds: 1218/1340 Parsing feeds: 1219/1340 Parsing feeds: 1220/1340 Parsing feeds: 1221/1340 Parsing feeds: 1222/1340 Parsing feeds: 1223/1340 Parsing feeds: 1224/1340 Parsing feeds: 1225/1340 Parsing feeds: 1226/1340 Parsing feeds: 1227/1340 Parsing feeds: 1228/1340 Parsing feeds: 1229/1340 Parsing feeds: 1230/1340 Parsing feeds: 1231/1340 Parsing feeds: 1232/1340 Parsing feeds: 1233/1340 Parsing feeds: 1234/1340 Parsing feeds: 1235/1340 Parsing feeds: 1236/1340 Parsing feeds: 1237/1340 Parsing feeds: 1238/1340 Parsing feeds: 1239/1340 Parsing feeds: 1240/1340 Parsing feeds: 1241/1340 Parsing feeds: 1242/1340 Parsing feeds: 1243/1340 Parsing feeds: 1244/1340 Parsing feeds: 1245/1340 Parsing feeds: 1246/1340 Parsing feeds: 1247/1340 Parsing feeds: 1248/1340 Parsing feeds: 1249/1340 Parsing feeds: 1250/1340 Parsing feeds: 1251/1340 Parsing feeds: 1252/1340 Parsing feeds: 1253/1340 Parsing feeds: 1254/1340 Parsing feeds: 1255/1340 Parsing feeds: 1256/1340 Parsing feeds: 1257/1340 Parsing feeds: 1258/1340 Parsing feeds: 1259/1340 Parsing feeds: 1260/1340 Parsing feeds: 1261/1340 Parsing feeds: 1262/1340 Parsing feeds: 1263/1340 Parsing feeds: 1264/1340 Parsing feeds: 1265/1340 Parsing feeds: 1266/1340 Parsing feeds: 1267/1340 Parsing feeds: 1268/1340 Parsing feeds: 1269/1340 Parsing feeds: 1270/1340 Parsing feeds: 1271/1340 Parsing feeds: 1272/1340 Parsing feeds: 1273/1340 Parsing feeds: 1274/1340 Parsing feeds: 1275/1340 Parsing feeds: 1276/1340 Parsing feeds: 1277/1340 Parsing feeds: 1278/1340 Parsing feeds: 1279/1340 Parsing feeds: 1280/1340 Parsing feeds: 1281/1340 Parsing feeds: 1282/1340 Parsing feeds: 1283/1340 Parsing feeds: 1284/1340 Parsing feeds: 1285/1340 Parsing feeds: 1286/1340 Parsing feeds: 1287/1340 Parsing feeds: 1288/1340 Parsing feeds: 1289/1340 Parsing feeds: 1290/1340 Parsing feeds: 1291/1340 Parsing feeds: 1292/1340 Parsing feeds: 1293/1340 Parsing feeds: 1294/1340 Parsing feeds: 1295/1340 Parsing feeds: 1296/1340 Parsing feeds: 1297/1340 Parsing feeds: 1298/1340 Parsing feeds: 1299/1340 Parsing feeds: 1300/1340 Parsing feeds: 1301/1340 Parsing feeds: 1302/1340 Parsing feeds: 1303/1340 Parsing feeds: 1304/1340 Parsing feeds: 1305/1340 Parsing feeds: 1306/1340 Parsing feeds: 1307/1340 Parsing feeds: 1308/1340 Parsing feeds: 1309/1340 Parsing feeds: 1310/1340 Parsing feeds: 1311/1340 Parsing feeds: 1312/1340 Parsing feeds: 1313/1340 Parsing feeds: 1314/1340 Parsing feeds: 1315/1340 Parsing feeds: 1316/1340 Parsing feeds: 1317/1340 Parsing feeds: 1318/1340 Parsing feeds: 1319/1340 Parsing feeds: 1320/1340 Parsing feeds: 1321/1340 Parsing feeds: 1322/1340 Parsing feeds: 1323/1340 Parsing feeds: 1324/1340 Parsing feeds: 1325/1340 Parsing feeds: 1326/1340 Parsing feeds: 1327/1340 Parsing feeds: 1328/1340 Parsing feeds: 1329/1340 Parsing feeds: 1330/1340 Parsing feeds: 1331/1340 Parsing feeds: 1332/1340 Parsing feeds: 1333/1340 Parsing feeds: 1334/1340 Parsing feeds: 1335/1340 Parsing feeds: 1336/1340 Parsing feeds: 1337/1340 Parsing feeds: 1338/1340 Parsing feeds: 1339/1340 Parsing feeds: 1340/1340 Finished parsing feeds: 1340/1340 INFO:root:Saved season data to data/20252026.csv INFO:root:Finished _season: feeds=1340, records=132324 INFO:root:Loaded cached shifts for game 2025020441 from data/20252026/shifts/shifts_2025020441.pkl INFO:root:Loaded cached shifts for game 2025020442 from data/20252026/shifts/shifts_2025020442.pkl INFO:root:Loaded cached shifts for game 2025020443 from data/20252026/shifts/shifts_2025020443.pkl INFO:root:Loaded cached shifts for game 2025020444 from data/20252026/shifts/shifts_2025020444.pkl INFO:root:Loaded cached shifts for game 2025020445 from data/20252026/shifts/shifts_2025020445.pkl INFO:root:Loaded cached shifts for game 2025020446 from data/20252026/shifts/shifts_2025020446.pkl INFO:root:Loaded cached shifts for game 2025020447 from data/20252026/shifts/shifts_2025020447.pkl INFO:root:Loaded cached shifts for game 2025020448 from data/20252026/shifts/shifts_2025020448.pkl INFO:root:Loaded cached shifts for game 2025020449 from data/20252026/shifts/shifts_2025020449.pkl INFO:root:Loaded cached shifts for game 2025020450 from data/20252026/shifts/shifts_2025020450.pkl INFO:root:Loaded cached shifts for game 2025020451 from data/20252026/shifts/shifts_2025020451.pkl INFO:root:Loaded cached shifts for game 2025020452 from data/20252026/shifts/shifts_2025020452.pkl INFO:root:Loaded cached shifts for game 2025020453 from data/20252026/shifts/shifts_2025020453.pkl INFO:root:Loaded cached shifts for game 2025020454 from data/20252026/shifts/shifts_2025020454.pkl INFO:root:Loaded cached shifts for game 2025020455 from data/20252026/shifts/shifts_2025020455.pkl INFO:root:Loaded cached shifts for game 2025020456 from data/20252026/shifts/shifts_2025020456.pkl INFO:root:Loaded cached shifts for game 2025020457 from data/20252026/shifts/shifts_2025020457.pkl INFO:root:Loaded cached shifts for game 2025020458 from data/20252026/shifts/shifts_2025020458.pkl INFO:root:Loaded cached shifts for game 2025020459 from data/20252026/shifts/shifts_2025020459.pkl 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)